ó
Y_Sc           @  sú   d  Z  d d l m Z d d l Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m	 Z	 d d l
 Z
 d	 „  Z d
 „  Z d e f d „  ƒ  YZ d „  Z d „  Z d „  Z d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   sB   Custom extensions to OptionParse for parsing command line options.iÿÿÿÿ(   t   print_functionN(   t   copy(   t   Option(   t   OptionParser(   t   IndentedHelpFormatter(   t   OptionValueErrorc         C  s6   |  s | s | s | r n  t  | j ƒ t j ƒ  d  S(   N(   t   printt	   copyrightt   syst   exit(   t   optiont   optt   valuet   parser(    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyt   _copyright_callback8   s     c         C  s6   |  s | s | s | r n  t  | j ƒ t j ƒ  d  S(   N(   R   t   long_descriptionR   R	   (   R
   R   R   R   (    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyt   _doc_callback=   s     t   DeHelpFormatterc           B  s&   e  Z d  d d d d „ Z d „  Z RS(   i   i    iN   i   c         C  s   t  j |  | | | | ƒ d  S(   N(   R   t   __init__(   t   selft   indent_incrementt   max_help_positiont   widtht   short_first(    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyR   D   s    	c         C  s¥   | j  ƒ  rT | j p! | j j ƒ  } | j } g  | j D] } | d | ^ q7 } n | j } | j } | sx d g } n  |  j rŽ | | } n
 | | } d j | ƒ S(   s@   Return a comma-separated list of option strings & metavariables.t    s     (   t   takes_valuet   metavart   destt   uppert   _short_optst
   _long_optsR   t   join(   R   R
   R   t
   short_optst   loptt	   long_optst   opts(    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyt   format_option_stringsM   s    	'		 	
(   t   __name__t
   __module__R   R$   (    (    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyR   C   s
   c         C  sT   |  s | s | r n  y t  | d ƒ SWn' t k
 rO t d | | f ƒ ‚ n Xd  S(   Nt   rs   option %s: cannot open file: %s(   t   opent   IOErrorR   (   R
   R   R   (    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyt   _check_file_inb   s     c         C  sT   |  s | s | r n  y t  | d ƒ SWn' t k
 rO t d | | f ƒ ‚ n Xd  S(   Ns   w+s   option %s: cannot open file: %s(   R(   R)   R   (   R
   R   R   (    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyt   _check_file_outj   s     c         C  s‹   |  s | s | r n  | j  ƒ  } i t d 6t d 6t d 6t d 6t d 6t d 6} y | | SWn' t k
 r† t d | | f ƒ ‚ n Xd  S(   Nt   not   falset   0t   yest   truet   1sN   option %s: invalid choice: '%s' (choose from 'yes' or 'no', 'true' or 'false')(   t   lowert   Falset   Truet   KeyErrorR   (   R
   R   R   t   vt   choices(    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyt   _check_booleanr   s     c         C  sp   |  s | s | r n  | j  ƒ  } |  j } y | | SWn3 t k
 rk t d | | d j | ƒ f ƒ ‚ n Xd  S(   Ns2   option %s: invalid choice: '%s' (choose from '%s')s   ', '(   R2   R7   R5   R   R   (   R
   R   R   R6   R7   (    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyt   _check_dict~   s     	t   DeOptionc           B  sn   e  Z e j d Z e e j ƒ Z e e d  <e e d <e e d <e	 e d <d Z d „  Z e j Z e e d <RS(   t   file_int   file_outt   booleant   dictc         C  s€   |  j  d k rr |  j d  k r- t d ƒ ‚ nA t |  j t ƒ sn t d t t  |  j ƒ ƒ j d ƒ d ƒ ‚ n  d  S|  j ƒ  d  S(   NR>   s3   must supply a dictionary of choices for type 'dict's,   choices must be a dictionary ('%s' supplied)t   'i   (	   t   typeR7   t   NoneR   t
   isinstanceR>   t   strt   splitt   _check_choice(   R   (    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyt   _new_check_choice”   s    )i   (   R;   R<   R=   s   dictN(   R%   R&   R   t   TYPESR   t   TYPE_CHECKERR*   R+   R8   R9   RA   R7   RF   t   CHECK_METHODS(    (    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyR:   ‹   s   



		t   DeOptionParserc           B  sG   e  Z d d e d d  d d e ƒ  e d d e e d „ Z d d „ Z RS(   t   errorc         C  sX  t  j |  | | | | | | | |	 |
 ƒ
 | rY | |  _ |  j d d d d t d d ƒn  | rŠ | |  _ |  j d d d d t d d ƒn  | rã |  j d d	 d d
 d d d t d d ƒ|  j d d d d d d d t d d ƒn  t |  _ | rTt	 |  _ |  j d d d d d d d d d d d ƒ|  j d d d d d d d d d d d ƒn  d  S(    Ns   --doct   actiont   callbackt   helps   Detailed documentations   --copyrightt    s   -qs   --quitet   store_falseR   t   verboset   defaults   Run quietly (default)s   -vs	   --verboset
   store_trues   Verbose output (Not quite)s   --seedt   storeR@   t   intt   random_seedsG   Initial seed for pseudo-random number generator. (default: System time)R   t   INTEGERs   --generatort   random_generatort   MersenneTwistersO   Select MersenneTwister (default) or WichmannHill pseudo-random number generatort   TYPE(
   R   R   R   t
   add_optionR   R   R   R3   t   random_optionsR4   (   R   t   usaget   option_listt   option_classt   versiont   conflict_handlert   descriptionR   t	   formattert   add_help_optiont   progR   t   add_verbose_optionst   add_random_options(    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyR   ª   s`    		
	

		c         C  s²   t  j |  | | ƒ \ } } |  j r¨ | j d  k sB | j d k rQ t j ƒ  } n+ | j d k ro t j ƒ  } n |  j d ƒ | j	 r˜ | j
 | j	 ƒ n  | | j d <n  | | f S(   NRY   t   WichmannHillsC   Acceptible generators are MersenneTwister (default) or WichmannHillt   random(   R   t
   parse_argsR\   RX   RA   Ri   t   RandomRh   RK   RV   t   seedt   __dict__(   R   t   argst   valuest   optionsR'   (    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyRj   ñ   s    		N(	   R%   R&   RA   R:   R   R4   R3   R   Rj   (    (    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyRJ   ©   s   :(   t   __doc__t
   __future__R    R   R   t   optparseR   R   R   R   Ri   R   R   R   R*   R+   R8   R9   R:   RJ   (    (    (    sB   /home/psgendb/BIRCHDEV/pkg/weblogo-3.4/corebio/utils/deoptparse.pyt   <module>   s"   						