ó
“™xTc           @   se  d  d l  m Z d  d l m Z d  d l m Z m Z m Z d  d l Z	 d  d l	 m
 Z
 d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z d f  d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d Z e e e e e e d „ Z e e d „ Z d e j f d „  ƒ  YZ d f  d „  ƒ  YZ d e j e f d „  ƒ  YZ d e j e f d „  ƒ  YZ  d S(   iÿÿÿÿ(   t   division(   t   flex(   t   builderst   modelt   errorsN(   t
   smart_open(   t   urlopent   ErrorHandlerc           B   sS   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e	 d d „ Z RS(	   sw   An error handler for the validator. This class can be subclassed by clients
  that want to use their own error handlersc         C   s   |  j  ƒ  d  S(   N(   t   reset(   t   self(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   __init__   s    c         C   s   |  j  | ƒ d  S(   N(   t   _add_warning(   R	   t   w(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   warning   s    c         C   s   |  j  | ƒ d  S(   N(   t
   _add_error(   R	   t   e(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   error   s    c         C   s(   d |  _  d |  _ i  |  _ i  |  _ d  S(   Ni    (   t   warning_countt   error_countR   t   warnings(   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR      s    			c         C   sX   |  j  d 7_  | j |  j k r; |  j | j j | ƒ n |  j j | j | g ƒ d  S(   Ni   (   R   t   codeR   t   appendt
   setdefault(   R	   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR   !   s    c         C   sX   |  j  d 7_  | j |  j k r; |  j | j j | ƒ n |  j j | j | g ƒ d  S(   Ni   (   R   R   R   R   R   (   R	   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR   (   s    c   	      C   sÛ   | d  k r t j } n  |  j j ƒ  } |  j j ƒ  } | rk | j |  j j ƒ  ƒ | j |  j j ƒ  ƒ n  xi t | | ƒ D]X \ } } t	 ƒ  } x@ | D]8 } t
 | ƒ | k r— | j t
 | ƒ ƒ | | IJq— q— Wq{ Wd  S(   N(   t   Nonet   syst   stdoutR   t   keyst   valuest   extendR   t   zipt   sett   strt   add(	   R	   t   show_warningst   outt   codesR   R   t   errst   printed_messagesR   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   show/   s    	N(   t   __name__t
   __module__t   __doc__R
   R   R   R   R   R   t   TrueR   R&   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR      s   						t   ValidationErrorc           B   s   e  Z d  „  Z d „  Z RS(   c         K   s   | |  _  | |  _ | |  _ d  S(   N(   R   t   format_stringt   kwds(   R	   R   R,   R-   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR
   @   s    		c         C   s   |  j  |  j S(   N(   R,   R-   (   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   __str__E   s    (   R'   R(   R
   R.   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR+   ?   s   	s.   ftp://ftp.iucr.org/pub/cifdics/cifdic.registerc         C   sš  d d l  m } |  | | g j d  ƒ d k  s4 t ‚ d  } | d  k rd t j j d d d d ƒ } n  |  d  k	 rR| | g j d  ƒ d k rR| d  k rRt j	 j
 |  ƒ r² |  } n t j	 j | |  ƒ } t j	 j
 | ƒ sO| d	 } t j	 j
 | ƒ rL| r@t j | ƒ }	 t j | ƒ }
 t j |	 |
 ƒ |	 j ƒ  |
 j ƒ  qI| } qLqOqRn  | d  k	 rªt j	 j
 | ƒ rªt j | ƒ } t | j d
 | ƒ j ƒ  ƒ } | j ƒ  nÚ | d  k rËt |  d | ƒ} n  t | ƒ } | rf|  d  k rþt j	 j | ƒ }  n  t t j	 j | |  ƒ d ƒ }
 t j | |
 ƒ |
 j ƒ  t | j d t j	 j | |  ƒ ƒ j ƒ  ƒ } n t | j d
 | ƒ j ƒ  ƒ } | d  k	 s–t ‚ | S(   Niÿÿÿÿ(   t   cifi   t   module_namet   iotbxt   paths   cif/dictionariesi   s   .gzt   file_objectt   registry_locationt   wbt	   file_path(   R1   R/   t   countR   t   AssertionErrort   libtbxt   envt
   under_distt   osR2   t   isfilet   joinR   t   for_readingt   for_writingt   shutilt   copyfileobjt   closet
   dictionaryt   readerR   t   locate_dictionaryR   t   basenamet   open(   t   nameR6   t   urlR4   t
   save_localt	   store_dirR/   t   cif_dict	   gzip_patht   gzt   fR3   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   smart_load_dictionaryL   sP    $'	


$c   	      C   s¥   d d l  m } | j d t | ƒ ƒ j ƒ  } | d  k rC d } n  | d } xQ t | d | d | d ƒ D]1 \ } } } | |  k rl | t | ƒ k rl | Sql Wd  S(	   Niÿÿÿÿ(   R/   R3   t   .t   validation_dictionariess   _cifdic_dictionary.names   _cifdic_dictionary.versions   _cifdic_dictionary.URL(   R1   R/   RE   R   R   R   R   R   (	   RI   t   versionR4   R/   t   cmt   regt   nt   vRJ   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRF   |   s     	
RD   c           B   s�   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d d „ Z d „  Z e Z d „  Z RS(   c         C   s  t  j j |  | j ƒ i  |  _ i  |  _ i  |  _ |  j d ƒ r  d |  _ x- |  j j	 ƒ  D] \ } } t
 | ƒ |  | <qY W|  d } | d |  _ | d |  _ n;d |  _ |  j ƒ  d } | d |  _ | d |  _ | j d	 ƒ } | j d
 ƒ } x9 t | | ƒ D]( \ } }	 |  j j | t j |	 ƒ ƒ qWx« | j j	 ƒ  D]š \ } }
 t |
 ƒ | | <|
 j d ƒ } |
 j d ƒ } | d  k	 r=| d  k	 r=t | t ƒ s×x3 t | | ƒ D] \ } } |  j j | | ƒ q®Wq×q=q=Wt ƒ  |  _ d } t j | |  _ d  S(   Nt   on_this_dictionaryi   t   _dictionary_namet   _dictionary_versioni   i    s   _dictionary.titles   _dictionary.versions   _item_type_list.codes   _item_type_list.constructs   _item_linked.child_names   _item_linked.parent_namet   en(   R   R/   R
   t   blockst   item_type_listt   child_parent_relationst   look_up_tablet   has_keyt   DDL_versiont	   iteritemst   DDL1_definitionRI   RT   R   t   getR   R   t   ret   compilet   savest   DDL2_definitionR   t
   isinstancet
   basestringR   t   errR   t   error_dicts(   R	   t   othert   keyt   valuet   on_this_dictt   master_blockt
   type_codest   type_constructsR   t	   constructt   savet   childrent   parentst   childt   parentt   language(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR
   Š   s<    				
	 !c         C   s   | |  _  d  S(   N(   Rl   (   R	   t   handler(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   set_error_handler«   s    c         K   sg   |  j  | } | d k  r8 |  j j t | | | � ƒ n+ | d k  rc |  j j t | | | � ƒ n  d  S(   NiÐ  i¸  (   R   Rl   R   R+   R   (   R	   t   numberR-   t   message(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   report_error®   s
    c         C   sÓ  |  j  d k r–| |  j k r) |  j | S| j d ƒ } |  j | ƒ } xw | d	 k rÀ | | j d d d ƒ d  } | | k rƒ Pn  |  j | ƒ } | d	 k	 r· | | d k r· d	 } n  | } qJ W| d	 k	 rä |  j j | | ƒ | Sx� |  j ƒ  D]‚ \ } } | d k rqñ qñ t | d t	 ƒ rL| d | k rs|  j j | | ƒ | Sqñ | | d k rñ |  j j | | ƒ | Sqñ W|  j
 d d | ƒt | ‚ n9 | |  j ƒ  d k rË|  j
 d d | ƒt | ‚ n | Sd	 S(
   s|   Returns the name of the data block containing the definition for the
       given key.  Raises a KeyError if item not found.i   t   _i    iÿÿÿÿt   _nameRY   ié  Ro   N(   Rb   R`   t   lstripRe   R   t   rfindR   Rc   Rj   Rk   R€   t   KeyErrorR   (   R	   Ro   t   key_t   datat   new_keyt   kRX   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   find_definitionµ   s@     	
 c         C   sN   |  j  d k r  |  |  j | ƒ S|  j  d k rJ |  j ƒ  d |  j | ƒ Sd  S(   Ni   i   i    (   Rb   RŠ   R   (   R	   Ro   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   get_definitionÜ   s    c         C   s©   y |  j  | ƒ } Wn t k
 r' d  SX|  j | | | ƒ |  j | | | ƒ |  j | | | ƒ |  j | | | ƒ | j d ƒ } | d k r¥ |  j d d | ƒn  d  S(   Nt   _listt   yesiÊ	  Ro   (   R‹   R…   t   validate_typet   validate_enumerationt   validate_relatedt   validate_dependentRe   R€   (   R	   Ro   Rp   t   blockt
   definitionRŒ   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   validate_single_itemâ   s     c         C   s  | d k r d  S| j  } | |  j k rr t j |  j | | ƒ } | d  k r|  j d d | d | d | ƒqn§ | d k ry t j | ƒ Wn5 t k
 rÆ } |  j d d | d | d | j  ƒqX| j	 } | d k ry t
 | ƒ Wqt k
 r} |  j d
 d | ƒqXqn  d  S(   Nt   ?RR   iÑ  Ro   Rp   t	   item_typet   numbt   esdt   suiÒ  (   R•   RR   (   R˜   R™   (   t   typeR^   Rf   t   matchR   R€   R   t   float_from_stringt	   Exceptiont   type_conditionst   float(   R	   Ro   Rp   R“   R–   R›   R   t   type_condition(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRŽ   î   s$     	%&	c         C   sq   | j  } | d  k r d  St | t ƒ r4 | g } n  x6 | D]. } | | k r; |  j d d | d | ƒq; q; Wd  S(   Niý  t	   dependentRo   (   R¡   R   Rj   Rk   R€   (   R	   Ro   R’   R“   t
   dependentsR¡   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR‘     s    	 c         C   sÑ  t  | t ƒ r | g } n | } | j } | j ƒ  \ } } | d  k rd | d  k rd | d  k rd d  Sxf| D]^} | d k rƒ qk n� | d  k	 r| | k rg  | D] } | j ƒ  ^ q¢ }	 | j ƒ  |	 k rè |  j d d | d | ƒq|  j d d | d | d t | ƒ ƒn  | j d k rk y t	 j
 | ƒ } Wn t k
 rFd  SX|  j d k rÁ| d  k st| t | ƒ k o�| d  k p�| t | ƒ k sÆ|  j d d | d | d d | | f ƒqÆqÉ| d  k rÝ| d  k rÝd  S| d  k rüd t | ƒ } n | d  k rd t | ƒ } n  x t | | ƒ D]n \ }
 } |
 d k sU| t |
 ƒ k rw| d k ss| t | ƒ k  rwd  S|
 | k r+| t |
 ƒ k r+d  Sq+W|  j d d | d | d d |
 | f ƒqk qk Wd  S(   NRR   R•   iê  Ro   Rp   i6  t   enumR—   RŸ   t   inti   i5  s   %s:%s(   RR   R•   (   s   numbs   floats   int(   Rj   Rk   t   enumerationt   get_min_maxR   t   lowerR€   t   tupleRš   R   Rœ   R�   Rb   RŸ   t   lenR   (   R	   Ro   Rp   R“   R   t   enum_valuest   enum_mint   enum_maxRX   t
   enum_lowert   mint   max(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR�     sL    	$ ( ) c         C   sm  | j  } | j } | d  k	 ri| d  k	 rit | t ƒ r] t | t ƒ r] | g } | g } n  x	t | | ƒ D]õ \ } } | d k rÒ | j | ƒ d  k	 r¶ |  j d d | d | ƒqb|  j d d | d | ƒqm | d k r| | k r|  j d d | d | ƒqm | d k r.|  j d d | d | ƒqm | d k rm | | k rm |  j d	 d | d | ƒqm qm Wn  d  S(
   Nt   replacei™  Ro   t   related_itemië  t   alternate_exclusivet
   replacedbyt   associated_valueiš  (   t   relatedt   related_functionR   Rj   Rk   R   Re   R€   (   R	   Ro   R’   R“   t   related_itemst   related_functionsR±   R¶   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR�   ;  s(    			c      
   C   sÛ  d  } xÎ| j ƒ  D]À\ } } y |  j | ƒ } Wn t k
 rH q n X|  j | | | ƒ |  j | | | ƒ |  j | | | ƒ | j d ƒ } |  j d k rÂ | d k rÂ |  j	 d d | ƒn  | j
 } | d  k	 rt | t ƒ r| j }	 t j |	 | ƒ }
 | |
 } n  | d  k r$| } nL t | t ƒ rp| d  k	 rp| | k rp| Gt | ƒ GH|  j	 d d | ƒn  | j d k } | j d ƒ } | d  k	 r6t | t ƒ rµ| g } n  x\| D]s } |  j | ƒ } | d	 } t | t ƒ rö| g } n  x6 | D]. } | | k rý|  j	 d
 d | d | ƒqýqýWq¼WnÞ |  j d k rt | j
 t ƒ r|  j | j
 ƒ } | j d  k	 r| j } t | t ƒ rœ| g } n  x | D] } |  j | ƒ } q£W| j d k rt | j t ƒ r| j | k r|  j	 d d | j d | j
 ƒqqn  | j d |  j j | ƒ ƒ } | d  k	 r | j | | j | ƒ ƒ } | d  k	 r·xh | | D]@ } | d k rp| | k rp|  j	 d d | d | d | ƒqpqpWqÓ|  j	 d d | d | ƒq q Wd  S(   NRŒ   i   t   noiÅ	  Ro   iÆ	  R�   t   _list_referenceR‚   iÉ	  t	   referencei   i›  t   categoryt   _list_link_parentRR   iÇ	  Rp   Ry   Rz   iÈ	  (   R¹   N(   R   Rc   R‹   R…   R�   R‘   R�   Re   Rb   R€   R¼   Rj   Rk   RI   R   t   first_indext   listt	   mandatoryt   category_keyR_   (   R	   t   loopR’   t   list_categoryRo   Rp   R“   RŒ   t   definition_categoryt   definition_namet   iRÀ   t
   referencesR»   t   ref_datat	   ref_namesRI   t   category_deft   category_keyst   cat_keyt   cat_key_deft   link_parentt   parent_valuesRX   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   validate_loopR  sz     			
'	")t   strictc   	      C   sh  | d k s t  ‚ |  j | j k s* t  ‚ |  j d k rCx(| j ƒ  D]ö \ } } | d k rd qF n  | j } y |  j | ƒ } Wn t k
 r™ d  } n X| d k rÑ | d  k r¾ | | k sÄ t  ‚ | |  | <qF | d k r| d  k	 rö | |  | <q<| |  | <qF | d k rF | d  k	 r/|  | j | ƒ q<| |  | <qF qF Wn!|  j d k rd|  j ƒ  d } xÿ | j ƒ  d j	 j ƒ  D]á \ } } | } y |  j | ƒ } Wn t k
 rºd  } n X| d k rò| d  k rß| | k såt  ‚ | | | <q|| d k r$| d  k	 r| | | <q]| | | <q|| d k r|| d  k	 rP| | j | ƒ q]| | | <q|q|Wn  d  S(	   NRÑ   R°   t   overlayi   RY   i   i    (   s   stricts   replaceRÒ   (
   R8   Rb   Rc   RI   RŠ   R…   R   t   updateR   Rh   (	   R	   Rn   t   modeR‰   RX   RI   t   block_name_selfRr   t   save_name_self(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRÓ   “  sR     	
&
c         C   s   t  t j j |  ƒ ƒ S(   N(   RD   R   R/   t   copy(   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   __copy__Á  s    c         C   s   t  t j j |  | ƒ ƒ S(   N(   RD   R   R/   t   __deepcopy__(   R	   t   memo(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRÙ   Æ  s    (   R'   R(   R
   R}   R€   RŠ   R‹   R”   RŽ   R‘   R�   R�   RÐ   RÓ   RØ   R×   RÙ   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRD   ˆ   s   	!			'						+		A.	t   definition_basec           B   sÚ   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z e e ƒ Z e e ƒ Z e e ƒ Z e e ƒ Z e e ƒ Z e e ƒ Z e e ƒ Z e e	 ƒ Z	 e e
 ƒ Z
 e e ƒ Z RS(
   c         C   s   |  j  |  j d ƒ S(   NRI   (   Re   t   aliases(   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRI   Ë  s    c         C   s   |  j  |  j d ƒ S(   NRš   (   Re   RÜ   (   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRš   Î  s    c         C   s   |  j  |  j d ƒ S(   NRž   (   Re   RÜ   (   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRž   Ñ  s    c         C   s   |  j  |  j d ƒ S(   NR¼   (   Re   RÜ   (   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR¼   Ô  s    c         C   s   |  j  |  j d ƒ S(   NRÁ   (   Re   RÜ   (   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRÁ   ×  s    c         C   s   |  j  |  j d ƒ S(   NRÀ   (   Re   RÜ   (   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRÀ   Ú  s    c         C   s   |  j  |  j d ƒ S(   NR¥   (   Re   RÜ   (   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR¥   Ý  s    c         C   s   |  j  |  j d ƒ S(   NR¡   (   Re   RÜ   (   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR¡   à  s    c         C   s   |  j  |  j d ƒ S(   NRµ   (   Re   RÜ   (   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRµ   ã  s    c         C   s   |  j  |  j d ƒ S(   NR¶   (   Re   RÜ   (   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR¶   æ  s    (   R'   R(   RI   Rš   Rž   R¼   RÁ   RÀ   R¥   R¡   Rµ   R¶   t   property(    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRÛ   É  s(   										Rd   c           B   sw   e  Z i	 d  d 6d d 6d d 6d d 6d d	 6d
 d 6d d 6d d 6d d 6Z d d „ Z d „  Z e e ƒ Z d „  Z RS(   R‚   RI   t   _typeRš   t   _type_conditionsRž   t	   _categoryR¼   t   XXXRÁ   t   _list_mandatoryRÀ   t   _enumerationR¥   t   _related_itemRµ   t   _related_functionR¶   c         C   s_   t  j j |  ƒ | d  k	 r[ | j |  _ | j |  _ | j |  _ | j |  _ | j |  _ n  d  S(   N(	   R   R’   R
   R   t   _itemst   loopsRh   t   _sett
   keys_lower(   R	   Rn   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR
     s    c         C   s   d  S(   N(   R   (   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR¡     s    c         C   sl   |  j  d ƒ } | d  k	 rd | j d ƒ \ } } | d k rE d  } n  | d k rZ d  } n  | | f Sd Sd  S(   Nt   _enumeration_ranget   :t    (   NN(   Re   R   t   split(   R	   t
   enum_rangeR«   R¬   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR¦     s     	 	
N(   R'   R(   RÜ   R   R
   R¡   RÝ   R¦   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRd   ô  s   
		Ri   c           B   si   e  Z i
 d  d 6d d 6d d 6d d 6d d	 6d
 d 6d d 6d d 6d d 6d d 6Z d d „ Z d „  Z RS(   s
   _item.nameRI   s   _item_type.codeRš   s   _item_type_conditions.codeRž   s   _item.category_idR¼   s   _category_key.nameRÁ   s   _item.mandatory_codeRÀ   s   _item_enumeration.valueR¥   s   _item_dependent.dependent_nameR¡   s   _item_related.related_nameRµ   s   _item_related.function_codeR¶   c         C   sS   t  j j |  ƒ | d  k	 rO | j |  _ | j |  _ | j |  _ | j |  _ n  d  S(   N(   R   Rv   R
   R   Ræ   Rç   Rè   Ré   (   R	   Rn   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR
   (  s    c         C   s   |  j  d ƒ |  j  d ƒ f S(   Ns   _item_range.minimums   _item_range.maximum(   Re   (   R	   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyR¦   0  s    N(   R'   R(   RÜ   R   R
   R¦   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyRi     s   
(!   t
   __future__R    t   cctbx.array_familyR   t	   iotbx.cifR   R   R   t   libtbx.load_envR9   R   R×   R<   RA   Rf   R   t   urllib2R   R   R�   R+   t   cifdic_register_urlR   t   FalseRQ   RF   R/   RD   RÛ   R’   Rd   Rv   Ri   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cif/validation.pyt   <module>   s,   1	.ÿ B+%