ó
Ý™xTc           @   s  d  d l  m Z d  d l Z d  d l Z d  d l Z d Z d d „ Z e e d <d d d/ d d „ Z
 e
 e d <d „  Z e e d <d „  Z e e d <d e f d „  ƒ  YZ e ƒ  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z e e d d ƒ d k rFd e f d „  ƒ  YZ n d e f d  „  ƒ  YZ d0 e d! „ Z d" „  Z d# e f d$ „  ƒ  YZ d% e f d& „  ƒ  YZ e j j d' ƒ rÁd  d l Z n  e j  d( k r e d) Z! d* d  d+ „ Z" e" e d) <e" e d, <n  d- e f d. „  ƒ  YZ# d S(1   iÿÿÿÿ(   t   divisionNiÃ�2i    c         C   sD   d d  l  } | j d ƒ } d | j j | j f GH| j |  ƒ d  S(   Niÿÿÿÿi   s   STOP: %s(%d)(   t   syst	   _getframet   f_codet   co_filenamet   f_linenot   exit(   t   exit_statusR   t   f(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   _STOP   s    t   STOPs   %.6gs   , t   [t   ]c         C   sÑ   g  } x« |  D]£ } | d  k rG d t d t | d ƒ d ƒ d } n\ | d  k	 rn t | ƒ | k rn d } n  | | } | j ƒ  j d d ƒ d
 k r£ | d } n  | j | ƒ q W| d | j | ƒ | d	 S(   Nt    i    i   t   Nonet   0t    t   -s   -.i   (   R   s   -.(   R   t   maxt   lent   abst   stript   replacet   appendt   join(   t   valuest   fmtt   sept   bracketst   zero_thresholdt   fldst   vt   s(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   _numstr   s    (	
t   numstrc         C   s   t  d |  d d ƒ S(   NR   R   s   %.7g(   R"   (   R   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   _numstr7"   s    t   numstr7c         C   s   |  j  |  j f S(   N(   t   realt   imag(   t   complex_number(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt
   _real_imag%   s    t	   real_imagt   AutoTypec           B   s/   e  Z d  Z d Z d „  Z d „  Z d „  Z RS(   s§  
  Class for creating the Auto instance, which mimics the behavior of None
  with respect to the 'is' and '==' operators; this is used throughout
  CCTBX to indicate parameters that should be determined automatically.

  Examples
  --------
  >>> def f(optional=libtbx.Auto)
  ...    if optional is libtbx.Auto:
  ...        optional = 5
  ...    return optional
  ...
  >>> print f()
  5
  >>> print f(optional=10)
  10
  c         C   s   d S(   Nt   Auto(    (   t   self(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   __str__=   s    c         C   s   t  | ƒ |  j k S(   N(   t   typet	   __class__(   R,   t   other(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   __eq__>   s    c         C   s4   |  j  d  k r- t t |  ƒ j |  ƒ |  _  n  |  j  S(   N(   t	   singletonR   t   superR*   t   __new__(   t   cls(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyR4   @   s    N(   t   __name__t
   __module__t   __doc__R   R2   R-   R1   R4   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyR*   )   s
   		t   slots_getstate_setstatec           B   s&   e  Z d  Z g  Z d „  Z d „  Z RS(   sq  
  Implements getstate and setstate for classes with __slots__ defined. Allows an
  object to easily pickle only certain attributes.

  Examples
  --------
  >>> class sym_pair(libtbx.slots_getstate_setstate):
  ...     __slots__ = ["i_seq", "j_seq"]
  ...     def __init__(self, i_seq, j_seq):
  ...         self.i_seq = i_seq
  ...         self.j_seq = j_seq
  ...
  c         C   s/   t  g  |  j D] } | t |  | ƒ f ^ q ƒ S(   N(   t   dictt	   __slots__t   getattr(   R,   t   name(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   __getstate__X   s    c         C   s1   x* | j  ƒ  D] \ } } t |  | | ƒ q Wd  S(   N(   t   itemst   setattr(   R,   t   stateR=   t   value(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   __setstate__[   s     (   R6   R7   R8   R;   R>   RC   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyR9   G   s   	t   mutablec           B   s   e  Z d  g Z d „  Z RS(   RB   c         C   s   | |  _  d  S(   N(   RB   (   t   ORB   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   __init__a   s    (   R6   R7   R;   RF   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyRD   ^   s   	t+   slots_getstate_setstate_default_initializerc           B   s   e  Z d  Z d „  Z RS(   s1  
  Merges together functionality from slots_getstate_setstate with
  adopt_optional_init_args.

  Examples
  --------
  >>> class sym_pair(libtbx.slots_getstate_setstate_default_initializer):
  ...     __slots__ = ["i_seq", "j_seq"]
  ...
  >>> svm_pair(i_seq=1, j_seq=2)
  >>> print svm_pair.i_seq
  1
  c         K   s=   t  | ƒ } x* | D]" } t |  | | j | d  ƒ ƒ q Wd  S(   N(   R:   R@   t   getR   (   R,   t   kwdst   key(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyRF   r   s    (   R6   R7   R8   RF   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyRG   d   s   t   unpicklablec           B   s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   s[   
  An inheritable class that raises a runtime exception that an object is
  unpicklable.
  c         C   s   t  d |  j j ƒ ‚ d  S(   Ns#   pickling of %s objects is disabled.(   t   RuntimeErrorR/   R6   (   RE   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   _raise_error}   s    c         C   s   |  j  ƒ  d  S(   N(   RM   (   RE   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   __getinitargs__�   s    c         C   s   |  j  ƒ  d  S(   N(   RM   (   RE   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyR>   ‚   s    c         C   s   |  j  ƒ  d  S(   N(   RM   (   RE   RA   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyRC   ƒ   s    (   R6   R7   R8   RM   RN   R>   RC   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyRK   w   s
   			c         C   sS   t  |  ƒ } | d k r  |  d S| d k r5 d } n
 d | } t d | ƒ ‚ d S(   s|   
  Raises an exception if sequence contains anything other than one element.

  Parameters
  ----------
  sequence : list
  i   i    s   is emptys   contains %d elementss*   sequence %s (exactly one element expected)N(   R   RL   (   t   sequencet   nR    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   only_element…   s    	
t   api_versioniõ  t   dict_with_default_0c           B   s   e  Z d  „  Z RS(   c         C   s   d S(   Ni    (    (   R,   RJ   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   __missing__š   s    (   R6   R7   RT   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyRS   ˜   s   c           B   s   e  Z d  „  Z RS(   c         C   sE   y t  j |  | ƒ SWn t k
 r' n Xd } t  j |  | | ƒ | S(   Ni    (   R:   t   __getitem__t   KeyErrort   __setitem__(   R,   RJ   t   val(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyRU   ¡   s      (   R6   R7   RU   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyRS   Ÿ   s   c         C   sÓ   d | k r | d =n | d =x | D] } | | =q$ W| t  k r„ x- | j ƒ  D] } t |  j | ƒ sN t ‚ qN W|  j j | ƒ nK xH | j ƒ  D]: } d | } t |  j | ƒ sº t ‚ | | |  j | <q‘ Wd S(   s  
  Adopts the initial arguments passed to an object, allowing developers to skip
  the tedious task of assigning each attribute of an instance in its __init__
  method.

  Parameters
  ----------
  obj : object
  args : list
  exclude : list of str
  hide : bool, optional

  Examples
  --------
  >>> class foo(object):
  ...     def __init__(self, x, y=1, z=None):
  ...         adopt_init_args(self, locals())
  ...
  >>> a = foo('a', z=10)
  >>> assert a.x == 'a'
  >>> assert a.y == 1
  >>> assert a.z == 10
  R,   RE   t   _N(   t   Falset   keyst   hasattrt   __dict__t   AssertionErrort   update(   t   objt   argst   excludet   hidet   paramRJ   t   _key(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   adopt_init_args¨   s     

c         C   s_   xX | j  ƒ  D]J \ } } t |  j | ƒ sG t d | |  j f ƒ ‚ n  t |  | | ƒ q Wd S(   s…  
  Easy management of long list of arguments with default value
  passed to __init__.

  Parameters
  ----------
  obj : object
  kwds : dict

  Examples
  --------
  >>> class foo(object):
  ...     z = 1
  ...     def __init__(self, **kwds):
  ...       libtbx.adopt_optional_init_args(self, kwds)
  ...
  >>> a = foo()
  >>> assert a.z == 1
  >>> a = foo(z=10)
  >>> assert a.z == 10
  sh   %s must be a class attribute of %s to be adopted as optional init argument by an instance of that class.N(   t	   iteritemsR\   R/   RL   R@   (   R`   RI   t   kR   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   adopt_optional_init_argsÎ   s
    t   copy_init_argsc           B   s   e  Z d d  „ Z RS(   c         C   sP   d | k r | d =n | d =| d =x | D] } | | =q+ W|  j  j | ƒ d  S(   NR,   RE   (   R]   R_   (   R,   Ra   Rb   Rd   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyRF   î   s     
(    (   R6   R7   RF   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyRj   ì   s   t
   group_argsc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   sÓ   
  Class to build an arbitrary object from a list of keyword arguments.

  Examples
  --------
  >>> from libtbx import group_args
  >>> obj = group_args(a=1, b=2, c=3)
  >>> print obj.a, obj.b, obj.c
  1 2 3
  c         K   s   |  j  j | ƒ d  S(   N(   R]   R_   (   R,   t   keyword_arguments(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyRF     s    c         C   s   |  j  S(   N(   R]   (   R,   (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   __call__  s    c         C   s…   d } xx t  |  j j ƒ  ƒ D]a } t |  | ƒ } t | ƒ j d ƒ d k ri | d | | j ƒ  f 7} q | d | | f 7} q W| S(   NRk   s   ext.atomiÿÿÿÿs   
  %-30s : %s(   t   sortedR]   R[   R<   t   strt   findt   quote(   R,   t   outlt   attrt   tmp(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   __repr__  s    (   R6   R7   R8   RF   Rm   Ru   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyRk   ö   s   
		t   LIBTBX_PRINT_TRACEt   cygwint   opent   rc         C   s]   y t  |  | | ƒ SWn$ t k
 r* ‚  n t k
 r: n Xt j j |  ƒ }  t  |  | | ƒ S(   N(   t   builtin_opent   KeyboardInterruptt	   Exceptiont   ost   patht   realpath(   R=   t   modet	   buffering(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   open_realpath  s       t   filet   propertyc           B   s$   e  Z d  Z d e f d „  ƒ  YZ RS(   sÿ  
  Syntactic sugar for defining class properties for those poor souls
  who must stay compatible with older versions of Python which do not
  feature the @property decorator.

  Examples
  --------
  >>> class foo(object):
  ...     class bar(libtbx.property):
  ...         'documentation of the property'
  ...         # In the following, self is the object featuring the property.
  ...         def fget(self): # getter
  ...         def fset(self, value): # setter
  ...         def fdel(self): # deleter
  t   __metaclass__c           B   s   e  Z d  „  Z RS(   c      
   C   sp   | t  f k r% t j |  | | | ƒ St d d | j d ƒ d | j d ƒ d | j d ƒ d | j d ƒ ƒ Sd  S(   NR„   t   fgett   fsett   fdelt   docR8   (   t   objectR.   R4   t   __builtins__RH   (   t   metaR=   t   basest   defs(    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyR4   5  s    (   R6   R7   R4   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyR…   3  s   (   R6   R7   R8   R.   R…   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyR„   "  s   (   R   R   (    ($   t
   __future__R    t   libtbx.forward_compatibilityt   libtbxR   R}   t   manual_date_stampR	   R‹   R   R!   R#   R(   RŠ   R*   R+   R9   RD   RG   RK   RQ   R<   R:   RS   RZ   Rf   Ri   Rj   Rk   t   environt   has_keyt   libtbx.start_print_tracet   platformRz   R‚   R„   (    (    (    s=   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/__init__.pyt   <module>   sH   

	
	
			&	


