ó
á™xTc           @   s    d  Z  d d l m Z d d l Z d d l Z d d l m Z d d l m Z	 d d d g Z
 d d d	 „  ƒ  YZ d e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d S(   sk   optik.help

Provides HelpFormatter and subclasses -- used by OptionParser
to generate formatted help text.
iÿÿÿÿ(   t   divisionN(   t
   NO_DEFAULT(   t   gettextt   HelpFormattert   IndentedHelpFormattert   TitledHelpFormatterc           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 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   sÍ  
    Abstract base class for formatting option help.  OptionParser
    instances should use one of the HelpFormatter subclasses for
    formatting help; by default IndentedHelpFormatter is used.

    Instance attributes:
      parser : OptionParser
        the controlling OptionParser instance
      indent_increment : int
        the number of columns to indent per nesting level
      max_help_position : int
        the maximum starting column for option help text
      help_position : int
        the calculated starting column for option help text;
        initially the same as the maximum
      width : int
        total number of columns for output (pass None to constructor for
        this value to be taken from the $COLUMNS environment variable)
      level : int
        current indentation level
      current_indent : int
        current indentation level (in columns)
      help_width : int
        number of columns available for option help text (calculated)
      default_tag : str
        text to replace with each option's default value, "%default"
        by default.  Set to false value to disable default value expansion.
      option_strings : { Option : str }
        maps Option instances to the snippet of help text explaining
        the syntax of that option, e.g. "-h, --help" or
        "-fFILE, --file=FILE"
      _short_opt_fmt : str
        format string controlling how short options with values are
        printed in help text.  Must be either "%s%s" ("-fFILE") or
        "%s %s" ("-f FILE"), because those are the two syntaxes that
        Optik supports.
      _long_opt_fmt : str
        similar but for long options; must be either "%s %s" ("--file FILE")
        or "%s=%s" ("--file=FILE").
    t   nonec         C   sÇ   d  |  _ | |  _ | |  _ |  _ | d  k rr y t t j d ƒ } Wn t t	 f k
 rd d } n X| d 8} n  | |  _
 d |  _ d |  _ d  |  _ | |  _ d |  _ i  |  _ d |  _ d |  _ d  S(   Nt   COLUMNSiP   i   i    s   %defaults   %s %ss   %s=%s(   t   Nonet   parsert   indent_incrementt   help_positiont   max_help_positiont   intt   ost   environt   KeyErrort
   ValueErrort   widtht   current_indentt   levelt
   help_widtht   short_firstt   default_tagt   option_stringst   _short_opt_fmtt   _long_opt_fmt(   t   selfR
   R   R   R   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   __init__?   s$    		
								c         C   s   | |  _  d  S(   N(   R	   (   R   R	   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt
   set_parserW   s    c         C   s4   | d k r t  d | ƒ ‚ n  d | d |  _ d  S(   Nt    t    s/   invalid metavar delimiter for short options: %rs   %s(   R   R   (   R   R   (   R   t   delim(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   set_short_opt_delimiterZ   s    c         C   s4   | d k r t  d | ƒ ‚ n  d | d |  _ d  S(   Nt   =R   s.   invalid metavar delimiter for long options: %rs   %s(   R"   R   (   R   R   (   R   R    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   set_long_opt_delimiter`   s    c         C   s%   |  j  |  j 7_  |  j d 7_ d  S(   Ni   (   R   R
   R   (   R   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   indentf   s    c         C   s@   |  j  |  j 8_  |  j  d k s- t d ƒ ‚ |  j d 8_ d  S(   Ni    s   Indent decreased below 0.i   (   R   R
   t   AssertionErrorR   (   R   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   dedentj   s    c         C   s   t  d ‚ d  S(   Ns   subclasses must implement(   t   NotImplementedError(   R   t   usage(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   format_usageo   s    c         C   s   t  d ‚ d  S(   Ns   subclasses must implement(   R'   (   R   t   heading(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   format_headingr   s    c         C   s9   |  j  |  j } d |  j } t j | | d | d | ƒS(   s�   
        Format a paragraph of free-form text for inclusion in the
        help output at the current indentation level.
        R   t   initial_indentt   subsequent_indent(   R   R   t   textwrapt   fill(   R   t   textt
   text_widthR$   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   _format_textu   s    	c         C   s   | r
 | Sd Sd  S(   NR   (    (   R   t   description(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   format_description�   s    c         C   s#   | r d |  j  | ƒ d Sd Sd  S(   Ns   
R   (   R2   (   R   t   epilog(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   format_epilog‡   s    c         C   sx   |  j  d  k s |  j r  | j S|  j  j j | j ƒ } | t k sP | d  k r\ |  j } n  | j j	 |  j t
 | ƒ ƒ S(   N(   R	   R   R   t   helpt   defaultst   gett   destR   t   NO_DEFAULT_VALUEt   replacet   str(   R   t   optiont   default_value(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   expand_defaultŽ   s    c   	      C   s6  g  } |  j  | } |  j |  j d } t | ƒ | k r[ d |  j d | f } |  j } n d |  j d | | f } d } | j | ƒ | j r	|  j | ƒ } t j | |  j	 ƒ } | j d | d | d f ƒ | j
 g  | d D] } d |  j d | f ^ qã ƒ n  | d d k r)| j d ƒ n  d j | ƒ S(	   Ni   s   %*s%s
R   s	   %*s%-*s  i    i   iÿÿÿÿs   
(   R   R   R   t   lent   appendR7   R@   R.   t   wrapR   t   extendt   join(	   R   R>   t   resultt   optst	   opt_widtht   indent_firstt	   help_textt
   help_linest   line(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   format_option˜   s$    		.c         C   s
  |  j  ƒ  d } xI | j D]> } |  j | ƒ } | |  j | <t | t | ƒ |  j ƒ } q W|  j  ƒ  x] | j D]R } xI | j D]> } |  j | ƒ } | |  j | <t | t | ƒ |  j ƒ } q€ Wqp W|  j ƒ  |  j ƒ  t	 | d |  j
 ƒ |  _ |  j |  j |  _ d  S(   Ni    i   (   R$   t   option_listt   format_option_stringsR   t   maxRA   R   t   option_groupsR&   t   minR   R   R   R   (   R   R	   t   max_lent   optt   stringst   group(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   store_option_strings»   s     
 
$

c         C   s¸   | j  ƒ  ry | j p! | j j ƒ  } g  | j D] } |  j | | f ^ q. } g  | j D] } |  j | | f ^ qW } n | j } | j } |  j r¡ | | } n
 | | } d j	 | ƒ S(   s@   Return a comma-separated list of option strings & metavariables.s   , (
   t   takes_valuet   metavarR:   t   uppert   _short_optsR   t
   _long_optsR   R   RE   (   R   R>   RY   t   soptt
   short_optst   loptt	   long_optsRG   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyRO   Í   s    &)			
(   t   __name__t
   __module__t   __doc__R;   R   R   R!   R#   R$   R&   R)   R+   R2   R4   R6   R@   RM   RW   RO   (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyR      s"   )												
	#	c           B   s5   e  Z d  Z d d d d d „ Z d „  Z d „  Z RS(   s.   Format help with indented section bodies.
    i   i   i   c         C   s   t  j |  | | | | ƒ d  S(   N(   R   R   (   R   R
   R   R   R   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyR   ä   s    c         C   s   t  d ƒ | S(   Ns
   Usage: %s
(   t   _(   R   R(   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyR)   ì   s    c         C   s   d |  j  d | f S(   Ns   %*s%s:
R   (   R   (   R   R*   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyR+   ï   s    N(   Ra   Rb   Rc   R   R   R)   R+   (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyR   à   s   	c           B   s5   e  Z d  Z d d d d d „ Z d „  Z d „  Z RS(   s1   Format help with underlined section headers.
    i    i   c         C   s   t  j |  | | | | ƒ d  S(   N(   R   R   (   R   R
   R   R   R   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyR   ÷   s    c         C   s   d |  j  t d ƒ ƒ | f S(   Ns   %s  %s
t   Usage(   R+   Rd   (   R   R(   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyR)   ÿ   s    c         C   s   d | d |  j  t | ƒ f S(   Ns   %s
%s
s   =-(   R   RA   (   R   R*   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyR+     s    N(   Ra   Rb   Rc   R   R   R)   R+   (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyR   ó   s   	(    (   Rc   t
   __future__R    R   R.   t   optik.optionR   t   optik.errorsR   Rd   t   __all__R   R   R   (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/pythonpath/optik/help.pyt   <module>   s   Î