ó
Ý™xTc           @`  s¡  d  d l  m Z m Z d  d l Z d  d l Z d  d d „ Z d  d d „ Z d d d „ Z d	 „  Z e	 a
 d
 „  a d „  Z d „  Z d „  Z e d „ Z e d „ Z d d d „ Z d d d d „ Z d d „ Z d „  Z d „  Z d „  Z e d d d d „ Z d „  Z d „  Z d „  Z d e f d „  ƒ  YZ d e f d  „  ƒ  YZ d! d" „ Z  d# e f d$ „  ƒ  YZ! d% „  Z" d d d& d' „ Z# d( e f d) „  ƒ  YZ$ d S(*   i    (   t   divisiont   absolute_importNt   Nonec         C`  sD   t  | t ƒ s t ‚ t | ƒ } d t d t |  | ƒ | ƒ | S(   Nt    i    (   t
   isinstancet   strt   AssertionErrort   lent   max(   t   formatt
   null_valuet   replace_witht   value_width(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   format_none   s    c         C`  sC   |  d  k r t | ƒ S| d  k r; t d |  d | d | ƒ S|  | S(   NR	   R
   R   (   R   R   R   (   R	   t   valueR
   t   replace_none_with(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   format_value   s     
iH   t   |c         C`  s2   | t  | ƒ d t  |  ƒ } | |  d | | S(   Ni   R   (   R   (   t   linet   widtht   bordert   n_spaces(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt
   pad_string   s    c         C`  s<  | } | | k rE |  j  | ƒ d k rE |  j  | ƒ d k  rE | } n  | g } | j } xË |  D]Ã } | | k s| | d k r“ | d ƒ | | ƒ q^ | d k r¬ | d ƒ q^ | d k rÅ | d ƒ q^ | d k rÞ | d ƒ q^ | d	 k  sü | t d
 ƒ k r| d t | ƒ d @ƒ q^ | | ƒ q^ W| | ƒ d j | ƒ S(   s%   based on stringobject.c, Python 2.7.2i    s   \s   	s   \ts   
s   \ns   s   \rR   i   s   \x%02xiÿ   t    (   t   findt   appendt   chrt   ordt   join(   t   stringt   preferred_quotet   alternative_quotet   quotet   resultt   rappt   c(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   py_string_representation   s,    			

c         C`  sV   t  sF t a  y d d l m } | j a WqF t k
 rB t a qF Xn  t |  | | ƒ S(   Ni    (   t   ext(   t   _have_string_representationt   Truet   boost.pythonR%   t   string_representationt	   ExceptionR$   (   R   R   R   t   _(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyR)   1   s    c         C`  s±   g  } g  } d } xm |  D]e } | d k | d k k rk t  | ƒ d k rk | j d j | ƒ ƒ g  } qk n  | j | ƒ | } q Wt  | ƒ d k r­ | j d j | ƒ ƒ n  | S(   NR   i    R   (   R   R   R   (   t   sR!   t   fieldt   prevR#   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   split_keeping_spaces=   s    
c         C`  s¬   |  d  k r d S|  d k  r, |  }  d } n d } g  } x` t rš |  d k r‚ | j d d |  d ƒ |  d }  |  d k r— Pq— q; | j d d |  ƒ Pq; W| d j | ƒ S(	   Nt   unknowni    t   -R   iè  s   %03ds   %dt   ,(   R   R'   t   insertR   (   t   szt   signR!   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   size_as_string_with_commasL   s      		
 c         C`  sj   |  d  k r d  S|  j d ƒ d k  r1 d |  d S|  j d ƒ d k  rR d |  d Sd |  j d d ƒ d S(   Nt   "i    t   's   \"(   R   R   t   replace(   R,   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   show_string^   s       c         C`  s[   d „  } d „  } | r! | } n | } d j  g  | j ƒ  D] } | |  | | ƒ ^ q: ƒ S(   Nc         S`  s
   |  j  ƒ  S(   N(   t   rstrip(   R,   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   do_rstipe   s    c         S`  s   |  S(   N(    (   R,   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt
   do_nothingf   s    s   
(   R   t
   splitlines(   t   prefixt   lines_as_one_stringt   suffixR;   R<   R=   t   doR   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   prefix_each_line_suffixd   s    		 		c      	   C`  s   t  d |  d | d d d | ƒ S(   NR?   R@   RA   R   R;   (   RC   (   R?   R@   R;   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   prefix_each_linel   s
    iP   c   	      C`  sê   | d  k r t j } n  t |  ƒ } | | } | d } | } | } | d | k ra | d 7} n  d d | d d |  d d | d d } t | ƒ d k rÒ d d | d d |  d d | d d } n  | | IJ| j ƒ  d  S(   Ni   i   s   
t   =R   iP   (   R   t   syst   stdoutR   t   flush(	   R   t   outt
   header_lent   line_lent   fill_lent   fill_rlt   fill_rt   fill_lt
   out_string(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   make_headers   s     

.1
R1   c         C`  s  | d k r t j } n  t | t ƒ s- t ‚ | d } | |  | } t | ƒ } | | } | d } | }	 | }
 | d | k rŽ |	 d 7}	 n  d d |
 d d | d d |	 d d } t | ƒ d k rÿ d d |
 d d | d d |	 d d } n  | | IJ| j ƒ  d S(   sR  
  Prints a subheader to an output location.

  Parameters
  ----------
  text : str
  out : file, optional
  header_len : int, optional
  sep : str, optional

  Examples
  --------
  >>> from libtbx.str_utils import make_sub_header
  >>> make_sub_header("Predicted ions", header_len=20)

     ----------Predicted ions----------

  >>>
  i
   i   i   s   
R   iP   N(   R   RF   RG   R   t
   basestringR   R   RH   (   t   textRI   RJ   t   sepR   R   RK   RL   RM   RN   RO   RP   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   make_sub_headerƒ   s"     


.1
c         C`  sƒ   |  j  ƒ  } g  } d } xN | D]F } t | ƒ t | ƒ | k rW | j | ƒ | } q | d | 7} q W| j | ƒ d j | ƒ S(   NR   R   s   
(   t   splitR   R   R   (   RS   t	   max_charst   wordst   linest   current_linet   word(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   wordwrap©   s    	c         C`  s—   |  j  ƒ  |  j ƒ  } d } d } xn t | ƒ D]` \ } } | d k r` | d k r` | d 7} n) | d k ry | d 7} n  | | j  ƒ  7} | } q/ W| S(   NR   i    s   
R   (   t   stripR>   t	   enumerate(   RS   RY   t   newtextt   lastlinet   iR   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   reformat_terminal_text¶   s    

c         C`  s=   g  } x' |  j  ƒ  D] } | j | j ƒ  ƒ q Wd j | ƒ S(   Ns   
(   R>   R   R;   R   (   RS   t   newR   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   rstrip_linesÅ   s    c         C`  s=   g  } x' |  j  ƒ  D] } | j | j ƒ  ƒ q Wd j | ƒ S(   Ns   
(   R>   R   R]   R   (   RS   Rc   R   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   strip_linesË   s    R   c      	   `  s£  | d  k s* t | ƒ t |  ƒ k s* t ‚ | d  k rB t j } n  t |  ƒ d k rX t S‡  f d †  } | d  k r‰ d  g t |  ƒ } n  g  t |  | ƒ D]' \ \ } } } t | ƒ | | f ^ q™ }	 |	 j | ƒ d t	 g  |	 D] \ } } } t | ƒ ^ qà ƒ t	 g  d d g D]  }
 t t
 |	 |
 d ƒ ƒ ^ qƒ f } x^ |	 D]V \ } } } | | | | | f I| d  k	 r—t | ƒ d k r—| | In  | JqEWt S(   Ni    c         `  s~   ˆ  r9 |  d | d k r d S|  d | d k  ri d Sn0 |  d | d k rQ d S|  d | d k  ri d St  |  d | d ƒ S(   Ni   iÿÿÿÿi    (   t   cmp(   t   at   b(   t   reverse(    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   sort_functionÚ   s        s   %%-%ds %%%ddiÿÿÿÿi   (   R   R   R   RF   RG   t   Falset   zipR:   t   sortR   R   R'   (   t   label_count_pairsRi   RI   R?   t   annotationsRj   t   lR#   Rg   t   lcaRa   t   fmt(    (   Ri   s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   show_sorted_by_countsÑ   s(    *  :+= c         C`  s   |  |  | |  | t  | ƒ S(   N(   R   (   R,   t   offsett   replacement(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   overwrite_atð   s    c         C`  s.   x' | D] } |  j  | ƒ d k r t Sq Wt S(   Ni    (   R   R'   Rk   (   t   labelt   patternst   pattern(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   contains_one_ofó   s    c         c`  sÁ   | d k s t  |  ƒ d k r& |  Vn— d } d  } xj t |  ƒ D]\ \ } } | d k r` | } n  | | | k r? | d  k	 r? |  | | !V| d } d  } q? q? W| t  |  ƒ k  r½ |  | Vn  d  S(   Ni    R   i   (   R   R   R^   (   R   R   t   i_block_startt   i_last_spaceRa   R#   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   line_breakerù   s    	
t   line_feederc           B`  s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C`  s   t  | ƒ |  _ t |  _ d  S(   N(   t   itert   fRk   t   eof(   t   selfR€   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   __init__  s    c         C`  s   |  S(   N(    (   R‚   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   __iter__  s    c         C`  sB   |  j  s> y |  j j ƒ  d  SWq> t k
 r: t |  _  q> Xn  d S(   NiÿÿÿÿR   (   R�   R€   t   nextt   StopIterationR'   (   R‚   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyR…     s    	c         C`  s;   x4 |  j  ƒ  } |  j s0 t | j ƒ  ƒ d k r | Sq d  S(   Ni    (   R…   R�   R   R]   (   R‚   R!   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   next_non_empty  s    !(   t   __name__t
   __module__Rƒ   R„   R…   R‡   (    (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyR~   	  s   			t   StringIOc           B`  s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         O`  s   t  j | | Ž  |  _ d  S(   N(   t	   cStringIORŠ   t   _buffer(   R‚   t   argst   kwds(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyRƒ   "  s    c         O`  s   t  |  j | | Ž S(   N(   t   getattrRŒ   (   R‚   R�   RŽ   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   __getattr__%  s    c         C`  s+   t  |  j ƒ j d k } |  j j ƒ  | f S(   Nt   StringO(   t   typeRŒ   Rˆ   t   getvalue(   R‚   t   is_output_object(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   __getstate__(  s    c         C`  s@   | \ } } | r/ |  j  ƒ  |  j j | ƒ n |  j  | ƒ d  S(   N(   Rƒ   RŒ   t   write(   R‚   t   statet   buffer_valueR”   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   __setstate__,  s
    
(   Rˆ   R‰   Rƒ   R�   R•   R™   (    (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyRŠ   !  s   			i   c         C`  sÞ   g  } g  } d } x¶ t  |  ƒ D]¨ \ } } | d k r‚ | d k rÇ | | | } | j d g | ƒ | j | ƒ | | 7} qÇ q | j | ƒ | j | ƒ | d k s´ | d k r½ d } q | d 7} q Wd j | ƒ | f S(   Ni    s   	R   s   
s   i   R   (   R^   t   extendR   R   (   R,   t   tabsizet   result_et   result_jt   jRa   R#   t   n(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   expandtabs_track_columns4  s     	t   framed_outputc           B`  sb   e  Z d  Z d
 d
 d e d
 d d
 d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z RS(   s³  
  Pseudo-output file wrapper for drawing a box around arbitrary content, for
  example:

    |----------Refinement stats--------|
    | r_free = 0.1234  r_work = 0.1567 |
    |----------------------------------|

  The actual content will be buffered until the close() method is called or
  the object is deleted, at which point the formatted text will be printed to
  the actual filehandle.

  :param out: actual output filehandle
  R1   iP   c	   	      C`  s—   | |  _  | d  k	 r$ | j ƒ  } n  | |  _ | d  k rB | } n  | |  _ | |  _ | |  _ | |  _ | |  _ | |  _	 g  |  _
 d  |  _ t |  _ d  S(   N(   RI   R   R]   t   titlet   center_titleR   t   framet   centert	   max_widthR?   t   contentt   _current_lineRk   t   _closed(	   R‚   RI   R¢   R   R¤   R¥   R£   R¦   R?   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyRƒ   W  s    
											c         C`  s   |  j  d S(   Ni   (   R   (   R‚   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   get_best_text_widthr  s    c         C`  sŠ   d } |  j  d  k	 r. | |  j  7} d  |  _  n  x= | D]5 } | d k r` |  j j | ƒ d } q5 | | 7} q5 W| d k r† | |  _  n  d  S(   NR   s   
(   R¨   R   R§   R   (   R‚   RS   t   current_textt   char(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyR–   u  s    	c         C`  s   d  S(   N(    (   R‚   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyRH   ƒ  s    c         C`  sB   |  j  d  k	 r. |  j j |  j  ƒ d  |  _  n  |  j j d  ƒ d  S(   N(   R¨   R   R§   R   (   R‚   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   add_separator†  s    c   
      `  sK  ˆ j  s t ‚ t ˆ _  ˆ j d k r> ˆ j j ˆ j ƒ n  ˆ j ‰  ˆ j } g  | D] } | d  k	 rW | ^ qW } ˆ j ‰ ˆ d k r“ d ‰ n  ˆ j	 ‰ ˆ d  k rà t
 ˆ j d t g  | D] } t | ƒ ^ q¾ ƒ ƒ ‰ n  d ˆ j ‡ f d † } ‡  ‡ ‡ f d †  } ‡  ‡ ‡ ‡ f d	 †  } ˆ  j d
 ƒ ˆ j d  k	 rTˆ  j ˆ j ƒ n  | ƒ  ˆ j d  k	 rì| ˆ j d d d ˆ j ƒ\ } } | d 7} | d 8} ˆ  j ˆ j | ƒ ˆ  j ˆ j ƒ | d k rˆ  j ˆ j | ƒ qn ˆ  j ˆ j ˆ d ƒ | ƒ  ˆ  j d
 ƒ xÔ | D]Ì }	 |	 d  k r;| ƒ  qˆ j d  k	 r]ˆ  j ˆ j ƒ n  ˆ  j ˆ d ƒ | |	 ƒ \ } } | d k r ˆ  j d | ƒ n  ˆ  j |	 ƒ | d k rÍˆ  j d | ƒ n  ˆ  j d ˆ ƒ ˆ  j d
 ƒ qWˆ j d  k	 rˆ  j ˆ j ƒ n  | ƒ  ˆ j j ˆ j ˆ d ƒ | ƒ  ˆ  j d
 ƒ d  S(   NR   R1   R+   R   i   i   c         `  sv   d d l  m } m } t d ˆ  t |  ƒ | d ƒ } | r` | | d ƒ } | | d ƒ } n d } | } | | f S(   Ni    (   t   ifloort   iceili   (   t   libtbx.math_utilsR®   R¯   R   R   (   RS   t   marginR¥   R®   R¯   t   fillt   rfillt   lfill(   R   (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   get_padding›  s    !c           `  s0   ˆ j  d k r ˆ  j ˆ ƒ n ˆ  j d ƒ d  S(   NR+   (   R¤   R–   (    (   RI   R‚   t
   side_frame(    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   write_corner¥  s    c           `  s\   ˆ j  d  k	 r" ˆ  j ˆ j  ƒ n  ˆ  j ˆ ƒ ˆ  j ˆ j ˆ d ƒ ˆ  j ˆ d ƒ d  S(   Ni   s   
(   R?   R   R–   R¤   (    (   RI   R‚   R¶   R   (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt	   write_sepª  s
    s   
R±   i   R¥   i    R   (   NR   (   R1   R+   (   R©   R   R'   R¨   R   R§   R   RI   R¤   R   t   minR¦   R   R   R¥   R–   R?   R¢   R£   (
   R‚   RY   R,   t
   text_linesRµ   R·   R¸   t   rft   lfR   (    (   RI   R‚   R¶   R   s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   closeŒ  sf    			%			8
$


c         C`  s   |  j  s |  j ƒ  n  d  S(   N(   R©   R½   (   R‚   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   __del__Ù  s    	N(   Rˆ   R‰   t   __doc__R   Rk   Rƒ   Rª   R–   RH   R­   R½   R¾   (    (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyR¡   H  s   					Mc         K`  s=   t  | �  } x' t |  | j ƒ  ƒ D] } | | IJq" W~ d  S(   N(   R¡   R}   Rª   (   t   messageRŽ   t   boxR   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   print_message_in_boxÝ  s    t   #c         C`  sA   | d k r t j } n  t d | d |  d | d | d t ƒ d S(   sP   
  Alternate API for print_message_in_box, for compatibility with make_header
  RI   RÀ   R   R¤   R¥   N(   R   RF   RG   RÂ   R'   (   R   RI   RJ   t   border_char(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   make_big_headerã  s     t   find_matching_closing_symbolc           B`  s    e  Z d  Z d „  Z d „  Z RS(   s   This functor deals with a pair of symbol, an opening symbol and a closing one,
      the archetypical example being parentheses. Given the position of an opening
      symbol, it returns the position of the matching closing symbol, or -1 if it does not
      exist.
  c         C`  sQ   d d l  } | | |  _ |  _ | j d | j | ƒ | j | ƒ f ƒ |  _ d S(   s€    Initialise the functor to work with the given pair. Each of `opening` and `closing`
        may be several character long.
    i    Ns	   (%s)|(%s)(   t   ret   openingt   closingt   compilet   escapet   _regex(   R‚   RÈ   RÉ   RÇ   (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyRƒ   ö  s    c         C`  sx   d } d d 
d f } x[ |  j j | | t |  j ƒ ƒ D]7 } | sI d S| | | j 7} | d k r9 | j ƒ  Sq9 Wd S(   sL    An opening symbol shall start at position `pos` of the given `string`.
    i   iÿÿÿÿi    N(   R   RÌ   t   finditerR   RÈ   t	   lastindext   start(   R‚   R   t   post   levelt   deltat   m(    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   __call__þ  s    )(   Rˆ   R‰   R¿   Rƒ   RÔ   (    (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyRÆ   ï  s   	(%   t
   __future__R    R   R‹   RF   R   R   R   R$   Rk   R&   R)   R/   R6   R:   R'   RC   RD   R   RQ   RU   R\   Rb   Rd   Re   Rs   Rv   Rz   R}   t   objectR~   RŠ   R    R¡   RÂ   RÅ   RÆ   (    (    (    s>   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/str_utils.pyt   <module>   sB   					&						•	