ó
¯™xTc           @   s–  d  d l  m Z d  d l m Z d  d l Z d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d	 „  ƒ  YZ d
 e j f d „  ƒ  YZ	 d e j f d „  ƒ  YZ
 d e j f d „  ƒ  YZ e j ƒ  j e ƒ Z e j ƒ  j e ƒ Z e j ƒ  j e ƒ Z e j ƒ  j e	 ƒ Z e j ƒ  j e
 ƒ Z e j ƒ  j e ƒ Z e j e e e e e e g ƒ Z d „  Z e d k r’e j d d ƒ j e ƒ n  d S(   iÿÿÿÿ(   t   division(   t   topologyNt   TestAtomc           B   s   e  Z d  „  Z RS(   c         C   sT   t  ƒ  } t  ƒ  } t j d | d | ƒ } |  j | j | ƒ |  j | j | ƒ d  S(   Nt   foot   bar(   t   objectR   t   Atomt   assertEqualR   R   (   t   selfR   R   t   a(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyt   test_1	   s
    		(   t   __name__t
   __module__R
   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyR      s   t   TestMoleculec           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s�   t  j ƒ  } |  j | j ƒ  d ƒ |  j | j g  ƒ |  j | j i  ƒ |  j | j i  ƒ |  j t | j j	 ƒ  ƒ g  ƒ |  j t | j j
 ƒ  ƒ g  ƒ d  S(   Ni    (   R   t   MoleculeR   t   sizet   atomst   atom_fort   descriptor_fort   listt   grapht   verticest   edges(   R   t   m(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyt   test_0   s    c         C   s  t  j ƒ  } t  j ƒ  } | j d | d d ƒ |  j | j ƒ  d ƒ |  j | j | g ƒ |  j t | j ƒ d ƒ |  j	 | | j j
 ƒ  k ƒ |  j t | j ƒ d ƒ |  j	 | | j k ƒ |  j t t | j j ƒ  ƒ ƒ d ƒ |  j t | j j ƒ  ƒ g  ƒ d  S(   Nt   atomt   xyzi    i   (   i    i    i    (   R   R   R   t   addR   R   R   t   lenR   t
   assertTruet   valuesR   R   R   R   R   (   R   R   R	   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyR
       s    %c         C   s¦  t  j ƒ  } t  j ƒ  } t  j ƒ  } | j d | d d	 ƒ | j d | d d
 ƒ |  j | j ƒ  d ƒ |  j t | j ƒ t | | g ƒ ƒ |  j t | j	 ƒ d ƒ |  j
 | | j	 j ƒ  k ƒ |  j
 | | j	 j ƒ  k ƒ |  j t | j ƒ d ƒ |  j
 | | j k ƒ |  j
 | | j k ƒ |  j t t | j j ƒ  ƒ ƒ d ƒ |  j t t | j j ƒ  ƒ ƒ d ƒ | j j ƒ  j ƒ  } |  j | j j d | ƒ d d ƒ d  S(   NR   R   i    i   i   t   edgeg¼–�z¶û?i   (   i    i    i    (   i   i   i   (   R   R   R   R   R   R   t   setR   R   R   R   R   R   R   R   R   R   t   nextt   assertAlmostEqualt   edge_weight(   R   R   t   a1t   a2R   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyt   test_2/   s"    %%%(   R   R   R   R
   R&   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyR      s   		t   TestCompoundc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   sŠ   t  j j ƒ  } |  j | j g  ƒ |  j | j i  ƒ |  j | j i  ƒ |  j t | j j	 ƒ  ƒ g  ƒ |  j t | j j
 ƒ  ƒ g  ƒ d  S(   N(   R   t   Compoundt   createR   R   R   R   R   R   R   R   (   R   R   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyR   F   s    c         C   s,  t  j j ƒ  } t  j ƒ  } | j d | ƒ |  j | j | g ƒ |  j t | j ƒ d ƒ |  j	 | | j j
 ƒ  k ƒ |  j t | j ƒ d ƒ |  j	 | | j k ƒ |  j t t | j j ƒ  ƒ ƒ d ƒ |  j t | j j ƒ  ƒ g  ƒ |  j | j d | ƒ i d | 6ƒ |  j | j ƒ  | g g ƒ d  S(   NR   i   i    (   R   R(   R)   R   t   add_atomR   R   R   R   R   R   R   R   R   R   R   t   distances_fromt   connected_segments(   R   R   R	   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyR
   O   s    %#c         C   s]  t  j j ƒ  } t  j ƒ  } t  j ƒ  } | j d | ƒ | j d | ƒ |  j t | j ƒ t | | g ƒ ƒ |  j t | j	 ƒ d ƒ |  j
 | | j	 j ƒ  k ƒ |  j
 | | j	 j ƒ  k ƒ |  j t | j ƒ d ƒ |  j
 | | j k ƒ |  j
 | | j k ƒ |  j t t | j j ƒ  ƒ ƒ d ƒ |  j t t | j j ƒ  ƒ ƒ d ƒ |  j | j d | ƒ i d | 6d  | 6ƒ |  j | j d | ƒ i d | 6d  | 6ƒ |  j t d „  | j ƒ  Dƒ ƒ t t | g ƒ t | g ƒ g ƒ ƒ | j d | d | ƒ |  j t t | j j ƒ  ƒ ƒ d ƒ |  j t t | j j ƒ  ƒ ƒ d ƒ |  j | j d | ƒ i d | 6d | 6ƒ |  j | j d | ƒ i d | 6d | 6ƒ |  j t d „  | j ƒ  Dƒ ƒ t t | | g ƒ g ƒ ƒ | j d	 | g ƒ } |  j t | j	 ƒ d ƒ |  j
 | | j	 j ƒ  k ƒ |  j t | j ƒ d ƒ |  j
 | | j k ƒ |  j t t | j j ƒ  ƒ ƒ d ƒ |  j t t | j j ƒ  ƒ ƒ d ƒ | j d	 | g ƒ } |  j t | j	 ƒ d ƒ |  j
 | | j	 j ƒ  k ƒ |  j t | j ƒ d ƒ |  j
 | | j k ƒ |  j t t | j j ƒ  ƒ ƒ d ƒ |  j t t | j j ƒ  ƒ ƒ d ƒ d  S(
   NR   i   i    c         s   s   |  ] } t  | ƒ Vq d  S(   N(   t	   frozenset(   t   .0t   s(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pys	   <genexpr>r   s    t   leftt   righti   c         s   s   |  ] } t  | ƒ Vq d  S(   N(   R-   (   R.   R/   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pys	   <genexpr>|   s    R   (   R   R(   R)   R   R*   R   R    R   R   R   R   R   R   R   R   R   R   R+   t   NoneR,   R-   t   add_bondt   subset(   R   R   R$   R%   t   ss1t   ss2(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyR&   _   sR    %%%**%%%**%%%c         C   s�  t  j d d d d d d( ƒ t  j d d d d	 d d) ƒ t  j d d	 d d	 d d* ƒ t  j d d d d d d+ ƒ t  j d d d d	 d d, ƒ t  j d d d d	 d d- ƒ t  j d d d d	 d d. ƒ t  j d d  d d	 d d/ ƒ g } t  j j d$ | d% d& ƒ } |  j t d' „  | j Dƒ ƒ t t d d g ƒ t d d	 g ƒ t d	 d g ƒ t d d g ƒ t d d g ƒ t d d g ƒ t d d  g ƒ g ƒ ƒ d  S(0   Nt   namet   Nt   elementR   gåÐ"Ûùþ&@g…ëQ¸%@gƒÀÊ¡Ev$@t   CAt   Cgö(\�Âu)@gL7‰A`%&@g}?5^º‰%@g+‡Y+@g;ßO�—î#@gþÔxé&q&@t   Ogî|?5^z+@gçû©ñÒÍ!@gö(\�Â5%@t   CBgd;ßO�×(@g5^ºI(@gÙÎ÷Sã'@t   CGgÛù~j¼ô&@gÏ÷Sã¥[*@gßO�—nR'@t   CD1g¼t“&@g^ºI«+@g“Ví)@t   CD2g�—nƒ@(@gôýÔxéf,@gF¶óýÔx%@R   t	   tolerancegš™™™™™¹?c         s   s-   |  ]# \ } } t  | j | j g ƒ Vq d  S(   N(   R-   R7   (   R.   t   lt   r(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pys	   <genexpr>    s    (   gåÐ"Ûùþ&@g…ëQ¸%@gƒÀÊ¡Ev$@(   gö(\�Âu)@gL7‰A`%&@g}?5^º‰%@(   g+‡Y+@g;ßO�—î#@gþÔxé&q&@(   gî|?5^z+@gçû©ñÒÍ!@gö(\�Â5%@(   gd;ßO�×(@g5^ºI(@gÙÎ÷Sã'@(   gÛù~j¼ô&@gÏ÷Sã¥[*@gßO�—nR'@(   g¼t“&@g^ºI«+@g“Ví)@(   g�—nƒ@(@gôýÔxéf,@gF¶óýÔx%@(   R   R   R(   t   from_structureR   R    t   bondsR-   (   R   R   t   compound(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyt   test_3‘   s     !(   R   R   R   R
   R&   RG   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyR'   D   s   				2t   TestMcGregorMatchc           B   s   e  Z d  „  Z RS(   c         C   se  t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j ƒ  } | j d | d d- ƒ | j d | d d. ƒ | j d | d d/ ƒ | j d | d d0 ƒ | j d | d d1 ƒ t  j d d ƒ } t  j d d ƒ } t  j d d ƒ }	 t  j d d ƒ }
 t  j d d ƒ } t  j ƒ  } | j d | d d2 ƒ | j d | d d3 ƒ | j d |	 d d4 ƒ | j d |
 d d5 ƒ | j d | d d6 ƒ t  j d$ | d% | d& d' „  d( d) „  d* d+ „  ƒ } |  j | j ƒ  d, ƒ | j ƒ  } |  j | | f | k ƒ |  j | | f | k ƒ |  j | |	 f | k ƒ |  j | |
 f | k ƒ d  S(7   Nt   labelR:   R;   R   R   g‰A`åÐ"ð¿gŒƒKÇœçâ¿giQŸäê?g)\�Âõ(œ?gð2ÃFÙá¿gªó¨ø¿#Ô¿g#Ûù~j¼ó?gªî‘ÍUó×?g™�EïTÀÁ¿gÁÊ¡E¶s@gýfbº«§?g­C9Ñ®ò¿gw¾Ÿ/Ýê?gç�½Þ}ý?gÆOãÞü†Í¿g¸ŸFˆð¿g†“4Lká¿gŽç3 ÞŒë?gc—¨ÞØº?g¦±ú#Œá¿gññ	ÙyÅ¿gÛ$¶ï?gˆœ¾ž¯Ùå?g,d®ª²¿g‹¦³“ÁQö?g¥ƒõóó?gÚr.ÅUeñ¿gŠcîZÂô?g§?û‘"²ñ?g«[='½oò?t	   molecule1t	   molecule2t   is_validc         S   s   t  d „  |  Dƒ ƒ S(   Nc         s   s   |  ] } | j  d  k Vq d S(   R:   N(   RI   (   R.   R   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pys	   <genexpr>Ê   s    (   t   any(   t   match(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyt   <lambda>Ê   s    t   vertex_equalityc         S   s   |  j  | j  k S(   N(   RI   (   RB   RC   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyRO   Ë   s    t   edge_equalityc         S   s   t  |  | ƒ d k  S(   Ngš™™™™™¹?(   t   abs(   RB   RC   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyRO   Ì   s    i   (   g‰A`åÐ"ð¿gŒƒKÇœçâ¿giQŸäê?(   g)\�Âõ(œ?gð2ÃFÙá¿gªó¨ø¿#Ô¿(   g#Ûù~j¼ó?gªî‘ÍUó×?g™�EïTÀÁ¿(   gÁÊ¡E¶s@gýfbº«§?g­C9Ñ®ò¿(   gw¾Ÿ/Ýê?gç�½Þ}ý?gÆOãÞü†Í¿(   g¸ŸFˆð¿g†“4Lká¿gŽç3 ÞŒë?(   gc—¨ÞØº?g¦±ú#Œá¿gññ	ÙyÅ¿(   gÛ$¶ï?gˆœ¾ž¯Ùå?g,d®ª²¿(   g‹¦³“ÁQö?g¥ƒõóó?gÚr.ÅUeñ¿(   gŠcîZÂô?g§?û‘"²ñ?g«[='½oò?(	   R   R   R   R   t   McGregorMatchR   t   lengtht   remappedR   (   R   t   l_cat   l_cbt   l_cgt   l_cd1t   l_cd2t   leut   a_cat   a_cbt   a_cgt   a_od1t   a_nd2t   asnt   rest   mapping(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyt   test_asn_leu­   sD    			(   R   R   Rd   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyRH   «   s   t   TestRascalMatchc           B   s   e  Z d  „  Z RS(   c      	   C   sŒ  t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j ƒ  } | j d | d d- ƒ | j d | d d. ƒ | j d | d d/ ƒ | j d | d d0 ƒ | j d | d d1 ƒ t  j d d ƒ } t  j d d ƒ } t  j d d ƒ }	 t  j d d ƒ }
 t  j d d ƒ } t  j ƒ  } | j d | d d2 ƒ | j d | d d3 ƒ | j d |	 d d4 ƒ | j d |
 d d5 ƒ | j d | d d6 ƒ t  j d$ | d% | d& d' „  d( d) „  ƒ } |  j | j ƒ  d* ƒ |  j | j ƒ  d+ ƒ | j ƒ  d, } |  j t	 | ƒ d+ ƒ |  j
 | | f | k ƒ |  j
 | | f | k ƒ |  j
 | |	 f | k ƒ |  j
 | |
 f | k ƒ d  S(7   NRI   R:   R;   R   R   g‰A`åÐ"ð¿gŒƒKÇœçâ¿giQŸäê?g)\�Âõ(œ?gð2ÃFÙá¿gªó¨ø¿#Ô¿g#Ûù~j¼ó?gªî‘ÍUó×?g™�EïTÀÁ¿gÁÊ¡E¶s@gýfbº«§?g­C9Ñ®ò¿gw¾Ÿ/Ýê?gç�½Þ}ý?gÆOãÞü†Í¿g¸ŸFˆð¿g†“4Lká¿gŽç3 ÞŒë?gc—¨ÞØº?g¦±ú#Œá¿gññ	ÙyÅ¿gÛ$¶ï?gˆœ¾ž¯Ùå?g,d®ª²¿g‹¦³“ÁQö?g¥ƒõóó?gÚr.ÅUeñ¿gŠcîZÂô?g§?û‘"²ñ?g«[='½oò?RJ   RK   RP   c         S   s   |  j  | j  k S(   N(   RI   (   RB   RC   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyRO   õ   s    RQ   c         S   s   t  |  | ƒ d k S(   Ngš™™™™™¹?(   RR   (   RB   RC   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyRO   ö   s    i   i   i    (   g‰A`åÐ"ð¿gŒƒKÇœçâ¿giQŸäê?(   g)\�Âõ(œ?gð2ÃFÙá¿gªó¨ø¿#Ô¿(   g#Ûù~j¼ó?gªî‘ÍUó×?g™�EïTÀÁ¿(   gÁÊ¡E¶s@gýfbº«§?g­C9Ñ®ò¿(   gw¾Ÿ/Ýê?gç�½Þ}ý?gÆOãÞü†Í¿(   g¸ŸFˆð¿g†“4Lká¿gŽç3 ÞŒë?(   gc—¨ÞØº?g¦±ú#Œá¿gññ	ÙyÅ¿(   gÛ$¶ï?gˆœ¾ž¯Ùå?g,d®ª²¿(   g‹¦³“ÁQö?g¥ƒõóó?gÚr.ÅUeñ¿(   gŠcîZÂô?g§?û‘"²ñ?g«[='½oò?(   R   R   R   R   t   RascalMatchR   t   countRT   RU   R   R   (   R   RV   RW   RX   RY   RZ   R[   R\   R]   R^   R_   R`   Ra   R   Rc   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyRd   Ø   sF    		(   R   R   Rd   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyRe   Ö   s   t   TestGreedyMatchc           B   s   e  Z d  „  Z RS(   c      	   C   sŒ  t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j d d ƒ } t  j ƒ  } | j d | d d- ƒ | j d | d d. ƒ | j d | d d/ ƒ | j d | d d0 ƒ | j d | d d1 ƒ t  j d d ƒ } t  j d d ƒ } t  j d d ƒ }	 t  j d d ƒ }
 t  j d d ƒ } t  j ƒ  } | j d | d d2 ƒ | j d | d d3 ƒ | j d |	 d d4 ƒ | j d |
 d d5 ƒ | j d | d d6 ƒ t  j d$ | d% | d& d' „  d( d) „  ƒ } |  j | j ƒ  d* ƒ |  j | j ƒ  d+ ƒ | j ƒ  d, } |  j t	 | ƒ d+ ƒ |  j
 | | f | k ƒ |  j
 | | f | k ƒ |  j
 | |	 f | k ƒ |  j
 | |
 f | k ƒ d  S(7   NRI   R:   R;   R   R   g‰A`åÐ"ð¿gŒƒKÇœçâ¿giQŸäê?g)\�Âõ(œ?gð2ÃFÙá¿gªó¨ø¿#Ô¿g#Ûù~j¼ó?gªî‘ÍUó×?g™�EïTÀÁ¿gÁÊ¡E¶s@gýfbº«§?g­C9Ñ®ò¿gw¾Ÿ/Ýê?gç�½Þ}ý?gÆOãÞü†Í¿g¸ŸFˆð¿g†“4Lká¿gŽç3 ÞŒë?gc—¨ÞØº?g¦±ú#Œá¿gññ	ÙyÅ¿gÛ$¶ï?gˆœ¾ž¯Ùå?g,d®ª²¿g‹¦³“ÁQö?g¥ƒõóó?gÚr.ÅUeñ¿gŠcîZÂô?g§?û‘"²ñ?g«[='½oò?RJ   RK   RP   c         S   s   |  j  | j  k S(   N(   RI   (   RB   RC   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyRO   !  s    RQ   c         S   s   t  |  | ƒ d k S(   Ngš™™™™™¹?(   RR   (   RB   RC   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyRO   "  s    i   i   i    (   g‰A`åÐ"ð¿gŒƒKÇœçâ¿giQŸäê?(   g)\�Âõ(œ?gð2ÃFÙá¿gªó¨ø¿#Ô¿(   g#Ûù~j¼ó?gªî‘ÍUó×?g™�EïTÀÁ¿(   gÁÊ¡E¶s@gýfbº«§?g­C9Ñ®ò¿(   gw¾Ÿ/Ýê?gç�½Þ}ý?gÆOãÞü†Í¿(   g¸ŸFˆð¿g†“4Lká¿gŽç3 ÞŒë?(   gc—¨ÞØº?g¦±ú#Œá¿gññ	ÙyÅ¿(   gÛ$¶ï?gˆœ¾ž¯Ùå?g,d®ª²¿(   g‹¦³“ÁQö?g¥ƒõóó?gÚr.ÅUeñ¿(   gŠcîZÂô?g§?û‘"²ñ?g«[='½oò?(   R   R   R   R   t   GreedyMatchR   Rg   RT   RU   R   R   (   R   RV   RW   RX   RY   RZ   R[   R\   R]   R^   R_   R`   Ra   R   Rc   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyRd     sF    		(   R   R   Rd   (    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyRh     s   c         C   s   t  S(   N(   t   alltests(   t   loadert   testst   pattern(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyt
   load_testsN  s    t   __main__t	   verbosityi   (   t
   __future__R    t   mmtbx.geometryR   t   unittestt   TestCaseR   R   R'   RH   Re   Rh   t
   TestLoadert   loadTestsFromTestCaset
   suite_atomt   suite_moleculet   suite_compoundt   suite_mcgregor_matcht   suite_rascal_matcht   suite_greedy_matcht	   TestSuiteRj   Rn   R   t   TextTestRunnert   run(    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry/tests/tst_topology.pyt   <module>   s<   1g+,,							