ó
á™xTc           @   s7  d  Z  d d l m Z d d l Z d d l Z d d l m Z m Z m Z	 d g Z
 y e e f Wn e k
 r€ d \ Z Z n Xd e j d Z d	 „  Z d
 „  Z d „  Z d „  Z i e e	 d ƒ f d 6e e	 d ƒ f d 6e e	 d ƒ f d 6e e	 d ƒ f d 6Z d „  Z d „  Z d Z d d d „  ƒ  YZ d S(   sS   optik.option

Defines the Option class and some standard value-checking functions.
iÿÿÿÿ(   t   divisionN(   t   OptionErrort   OptionValueErrort   gettextt   Optioni   i    l    c         C   s!   d |  j  j t |  ƒ t @|  f S(   Ns   <%s at 0x%x: %s>(   t	   __class__t   __name__t   idt   _idmax(   t   self(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   _repr   s    c         C   sz   |  d  j  ƒ  d k r d } nN |  d  j  ƒ  d k rN d } |  d pH d }  n |  d  d k rg d } n d } | |  | ƒ S(	   Ni   t   0xi   t   0bt   0i   i   i
   (   t   lower(   t   valt   typet   radix(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt
   _parse_num   s    		c         C   s   t  |  t ƒ S(   N(   R   t   int(   R   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt
   _parse_int*   s    c         C   s   t  |  t ƒ S(   N(   R   t   long(   R   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   _parse_long-   s    t   integerR   s   long integerR   s   floating-pointt   floatt   complexc         C   sX   t  |  j \ } } y | | ƒ SWn0 t k
 rS t t d ƒ | | | f ƒ ‚ n Xd  S(   Ns   option %s: invalid %s value: %r(   t   _builtin_cvtR   t
   ValueErrorR   t   _(   t   optiont   optt   valuet   cvtt   what(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   check_builtin5   s    c         C   sQ   | |  j  k r | Sd j t t |  j  ƒ ƒ } t t d ƒ | | | f ƒ ‚ d  S(   Ns   , s.   option %s: invalid choice: %r (choose from %s)(   t   choicest   joint   mapt   reprR   R   (   R   R   R   R#   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   check_choice=   s    	t   NOt   DEFAULTc           B   sN  e  Z d  Z d d d d d d d d d	 d
 d d g Z d- Z d. Z d/ Z d0 Z d1 Z d2 Z	 i e
 d 6e
 d 6e
 d 6e
 d 6e d 6Z d3 Z d „  Z d „  Z d „  Z d „  Z d „  Z d  „  Z d! „  Z d" „  Z d# „  Z d$ „  Z d% „  Z e e e e e e e g Z d& „  Z e Z d' „  Z d( „  Z d) „  Z d* „  Z  d+ „  Z! d, „  Z" RS(4   sr  
    Instance attributes:
      _short_opts : [string]
      _long_opts : [string]

      action : string
      type : string
      dest : string
      default : any
      nargs : int
      const : any
      choices : [string]
      callback : function
      callback_args : (any*)
      callback_kwargs : { string : any }
      help : string
      metavar : string
    t   actionR   t   destt   defaultt   nargst   constR#   t   callbackt   callback_argst   callback_kwargst   helpt   metavart   storet   store_constt
   store_truet   store_falset   appendt   append_constt   countt   versiont   stringR   R   R   R   t   choicec         O   sf   g  |  _  g  |  _ t |  _ |  j | ƒ } |  j | ƒ |  j | ƒ x |  j D] } | |  ƒ qN Wd  S(   N(   t   _short_optst
   _long_optst   Falset   _long_opts_had_minust   _check_opt_stringst   _set_opt_stringst
   _set_attrst   CHECK_METHODS(   R	   t   optst   attrst   checker(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   __init__¾   s    			c         C   s(   t  d  | ƒ } | s$ t d ƒ ‚ n  | S(   Ns+   at least one option string must be supplied(   t   filtert   Nonet	   TypeError(   R	   RF   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyRB   Ò   s    c         C   s  x| D]} t  | ƒ d k  r5 t d | |  ƒ ‚ q t  | ƒ d k r� | d d k od | d d k s} t d | |  ƒ ‚ n  |  j j | ƒ q | d d !d k o° | d d k sÉ t d | |  ƒ ‚ n  |  j j d | d j d	 d ƒ ƒ |  j s | d j d ƒ d k |  _ q q Wd  S(
   Ni   s>   invalid option string %r: must be at least two characters longi    t   -i   sM   invalid short option string %r: must be of the form -x, (x any non-dash char)s   --sG   invalid long option string %r: must start with --, followed by non-dashR   (   t   lenR   R>   R8   R?   t   replaceRA   t   find(   R	   RF   R   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyRC   Û   s(     #$	c         C   sŸ   xm |  j  D]b } | j | ƒ r= t |  | | | ƒ | | =q
 | d k r\ t |  | t ƒ q
 t |  | d  ƒ q
 W| r› t d d j | j ƒ  ƒ |  ƒ ‚ n  d  S(   NR,   s   invalid keyword arguments: %ss   , (   t   ATTRSt   has_keyt   setattrt
   NO_DEFAULTRK   R   R$   t   keys(   R	   RG   t   attr(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyRD   ò   s    
c         C   sJ   |  j  d  k r d |  _  n+ |  j  |  j k rF t d |  j  |  ƒ ‚ n  d  S(   NR4   s   invalid action: %r(   R*   RK   t   ACTIONSR   (   R	   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   _check_action  s    c         C   s)  |  j  d  k rK |  j |  j k r%|  j d  k	 r< d |  _  qH d |  _  q%nÚ d d  l } t  |  j  ƒ t j k s¢ t |  j  d ƒ r´ t	 | |  j  j
 d  ƒ |  j  k r´ |  j  j
 |  _  n  |  j  d k rÏ d |  _  n  |  j  |  j k rú t d |  j  |  ƒ ‚ n  |  j |  j k r%t d |  j |  ƒ ‚ n  d  S(   NR=   R<   iÿÿÿÿR   t   strs   invalid option type: %rs$   must not supply a type for action %r(   R   RK   R*   t   ALWAYS_TYPED_ACTIONSR#   t   __builtin__t   typest   TypeTypet   hasattrt   getattrR   t   TYPESR   t   TYPED_ACTIONS(   R	   R[   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   _check_type
  s"    !c         C   s²   |  j  d k r† |  j d  k r0 t d |  ƒ ‚ q® t  |  j ƒ t j t j f k r® t d t t  |  j ƒ ƒ j d ƒ d |  ƒ ‚ q® n( |  j d  k	 r® t d |  j  |  ƒ ‚ n  d  S(   NR=   s/   must supply a list of choices for type 'choice's1   choices must be a list of strings ('%s' supplied)t   'i   s#   must not supply choices for type %r(	   R   R#   RK   R   R\   t	   TupleTypet   ListTypeRY   t   split(   R	   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   _check_choice(  s    !/c         C   s˜   |  j  |  j k p |  j d  k	 } |  j d  k r” | r” |  j r} |  j d d j d d ƒ |  _ |  j r‘ t d |  ƒ ‚ q‘ q” |  j	 d d |  _ n  d  S(   Ni    i   RM   R   sh   If dest is not specified explicitly, long options must be given with underscores instead of minus signs.i   (
   R*   t   STORE_ACTIONSR   RK   R+   R?   RO   RA   R   R>   (   R	   t   takes_value(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   _check_dest5  s    	 	c         C   s>   |  j  |  j k r: |  j d  k	 r: t d |  j  |  ƒ ‚ n  d  S(   Ns*   'const' must not be supplied for action %r(   R*   t   CONST_ACTIONSR.   RK   R   (   R	   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   _check_constI  s    !
c         C   s\   |  j  |  j k r0 |  j d  k rX d |  _ qX n( |  j d  k	 rX t d |  j  |  ƒ ‚ n  d  S(   Ni   s*   'nargs' must not be supplied for action %r(   R*   Ra   R-   RK   R   (   R	   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   _check_nargsO  s    
c         C   s(  |  j  d k rº t |  j ƒ s7 t d |  j |  ƒ ‚ n  |  j d  k	 rw t |  j ƒ t j k	 rw t d |  j |  ƒ ‚ n  |  j	 d  k	 r$t |  j	 ƒ t j
 k	 r$t d |  j	 |  ƒ ‚ q$nj |  j d  k	 râ t d |  j |  ƒ ‚ n  |  j d  k	 rt d |  ƒ ‚ n  |  j	 d  k	 r$t d |  ƒ ‚ n  d  S(   NR/   s   callback not callable: %rs3   callback_args, if supplied, must be a tuple: not %rs4   callback_kwargs, if supplied, must be a dict: not %rs.   callback supplied (%r) for non-callback options.   callback_args supplied for non-callback options0   callback_kwargs supplied for non-callback option(   R*   t   callableR/   R   R0   RK   R   R\   Rd   R1   t   DictType(   R	   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   _check_callbackX  s0    c         C   s   d j  |  j |  j ƒ S(   Nt   /(   R$   R>   R?   (   R	   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   __str__  s    c         C   s   |  j  d  k	 S(   N(   R   RK   (   R	   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyRi   „  s    c         C   s#   |  j  r |  j  d S|  j d Sd  S(   Ni    (   R?   R>   (   R	   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   get_opt_string‡  s    	c         C   s9   |  j  j |  j ƒ } | d  k r% | S| |  | | ƒ Sd  S(   N(   t   TYPE_CHECKERt   getR   RK   (   R	   R   R   RH   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   check_value�  s    c         C   s[   | d  k	 rW |  j d k r+ |  j | | ƒ St g  | D] } |  j | | ƒ ^ q5 ƒ Sn  d  S(   Ni   (   RK   R-   Rv   t   tuple(   R	   R   R   t   v(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   convert_value—  s    c         C   s4   |  j  | | ƒ } |  j |  j |  j | | | | ƒ S(   N(   Ry   t   take_actionR*   R+   (   R	   R   R   t   valuest   parser(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   processž  s    c   	      C   sÑ  | d k r t  | | | ƒ n®| d k rA t  | | |  j ƒ nŒ| d k r` t  | | t ƒ nm| d k r t  | | t ƒ nN| d k r§ | j | g  ƒ j | ƒ n&| d k rÒ | j | g  ƒ j |  j ƒ nû | d k rt  | | | j | d ƒ d	 ƒ nÌ | d
 k rw|  j pd } |  j p(i  } | d  d k rXd | d j d d ƒ } n  |  j	 |  | | | | | Ž nV | d k rš| j
 ƒ  | j ƒ  n3 | d k r½| j ƒ  | j ƒ  n t d |  j ‚ d	 S(   NR4   R5   R6   R7   R8   R9   R:   i    i   R/   i   s   --RM   R   R2   R;   s   unknown action %r(    (   RS   R.   t   TrueR@   t   ensure_valueR8   R0   R1   RO   R/   t
   print_helpt   exitt   print_versiont   RuntimeErrorR*   (	   R	   R*   R+   R   R   R{   R|   t   argst   kwargs(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyRz   ª  s8    # 

(
   s   stores   store_consts
   store_trues   store_falses   appends   append_consts   counts   callbacks   helps   version(   s   stores   store_consts
   store_trues   store_falses   appends   append_consts   count(   s   stores   appends   callback(   s   stores   append(   s   store_consts   append_const(   s   strings   ints   longs   floats   complexs   choiceN(#   R   t
   __module__t   __doc__RQ   RW   Rh   Ra   RZ   Rk   R`   R"   R'   Rt   RK   RE   RI   RB   RC   RD   RX   Rb   Rg   Rj   Rl   Rm   Rp   Rr   R
   t   __repr__Ri   Rs   Rv   Ry   R}   Rz   (    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyR   K   sŒ   	                   

																					(   i   i    (   R(   R)   (    (   R‡   t
   __future__R    t   sysR\   t   optik.errorsR   R   R   R   t   __all__R~   R@   t	   NameErrort   maxintR   R
   R   R   R   R   R   R   R"   R'   RT   R   (    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/option.pyt   <module>   s,   							