<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

ðÕYfxE  ã               @   sH  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Td Z e j d e ƒ Z e j d e e f ƒ Z	 e
 j d d ƒ Z Gd	 d
 „  d
 ƒ Z d d „  Z d d „  e j Dƒ Z d d „  Z d d „  Z Gd d „  d ƒ Z e d k rDd Z xK d d d d f D]7 Z e d e ƒ e d j e e e ƒ ƒ ƒ e ƒ  q	Wd S)a6  distutils.fancy_getopt

Wrapper around the standard getopt module that provides the following
additional features:
  * short and long options are tied together
  * options have help strings, so fancy_getopt could potentially
    create a complete usage summary
  * options set attributes of a passed-in object
é    N)Ú*z[a-zA-Z](?:[a-zA-Z0-9-]*)z^%s$z^(%s)=!(%s)$ú-Ú_c               @   sÖ   e  Z d  Z d Z d d d „ Z d d „  Z d d „  Z d d d	 d
 „ Z d d „  Z d d „  Z	 d d „  Z
 d d „  Z d d „  Z d d „  Z d d d d „ Z d d „  Z d d d „ Z d d d d „ Z d S)ÚFancyGetoptaÕ  Wrapper around the standard 'getopt()' module that provides some
    handy extra functionality:
      * short and long options are tied together
      * options have help strings, and help text can be assembled
        from them
      * options set attributes of a passed-in object
      * boolean options can have "negative aliases" -- eg. if
        --quiet is the "negative alias" of --verbose, then "--quiet"
        on the command line sets 'verbose' to false
    Nc             C   sq   | |  _  i  |  _ |  j  r% |  j ƒ  i  |  _ i  |  _ g  |  _ g  |  _ i  |  _ i  |  _ i  |  _	 g  |  _
 d  S)N)Úoption_tableÚoption_indexÚ_build_indexÚaliasÚnegative_aliasÚ
short_optsÚ	long_optsÚ
short2longÚ	attr_nameÚ	takes_argÚoption_order)Úselfr   © r   ú;/opt/alt/python35/lib64/python3.5/distutils/fancy_getopt.pyÚ__init__)   s    				
							zFancyGetopt.__init__c             C   s6   |  j  j ƒ  x" |  j D] } | |  j  | d <q Wd  S)Nr   )r   Úclearr   )r   Úoptionr   r   r   r   Q   s    zFancyGetopt._build_indexc             C   s   | |  _  |  j ƒ  d  S)N)r   r   )r   r   r   r   r   Úset_option_tableV   s    	zFancyGetopt.set_option_tablec             C   sR   | |  j  k r" t d | ƒ ‚ n, | | | f } |  j j | ƒ | |  j  | <d  S)Nz'option conflict: already an option '%s')r   ÚDistutilsGetoptErrorr   Úappend)r   Úlong_optionZshort_optionZhelp_stringr   r   r   r   Ú
add_optionZ   s    zFancyGetopt.add_optionc             C   s   | |  j  k S)zcReturn true if the option table for this parser has an
        option with long name 'long_option'.)r   )r   r   r   r   r   Ú
has_optionc   s    zFancyGetopt.has_optionc             C   s   | j  t ƒ S)z’Translate long option name 'long_option' to the form it
        has as an attribute of some object: ie., translate hyphens
        to underscores.)Ú	translateÚlongopt_xlate)r   r   r   r   r   Úget_attr_nameh   s    zFancyGetopt.get_attr_namec             C   sq   xj | j  ƒ  D]\ \ } } | |  j k rA t d | | | f ƒ ‚ | |  j k r t d | | | f ƒ ‚ q Wd  S)Nz(invalid %s '%s': option '%s' not definedz0invalid %s '%s': aliased option '%s' not defined)Úitemsr   r   )r   ÚaliasesZwhatr	   Úoptr   r   r   Ú_check_alias_dictn   s    zFancyGetopt._check_alias_dictc             C   s   |  j  | d ƒ | |  _ d S)z'Set the aliases for this option parser.r	   N)r#   r	   )r   r	   r   r   r   Úset_aliasesx   s    zFancyGetopt.set_aliasesc             C   s   |  j  | d ƒ | |  _ d S)zÚSet the negative aliases for this option parser.
        'negative_alias' should be a dictionary mapping option names to
        option names, both the key and value must already be defined
        in the option table.znegative aliasN)r#   r
   )r   r
   r   r   r   Úset_negative_aliases}   s    z FancyGetopt.set_negative_aliasesc             C   su  g  |  _  g  |  _ |  j j ƒ  i  |  _ xF|  j D];} t | ƒ d k rb | \ } } } d } n: t | ƒ d k r‰ | \ } } } } n t d | f ƒ ‚ t | t	 ƒ s¾ t | ƒ d k  rÎ t
 d | ƒ ‚ | d k pø t | t	 ƒ oø t | ƒ d k st
 d	 | ƒ ‚ | |  j | <|  j  j | ƒ | d d
 k rh| rH| d } | d d … } d |  j | <n[ |  j j | ƒ } | d k	 r¶|  j | r©t
 d | | f ƒ ‚ | |  j  d <d |  j | <|  j j | ƒ } | d k	 r|  j | |  j | k rt
 d | | f ƒ ‚ t j | ƒ s0t
 d | ƒ ‚ |  j | ƒ |  j | <| r2 |  j j | ƒ | |  j | d <q2 Wd S)zPopulate the various data structures that keep tabs on the
        option table.  Called by 'getopt()' before it can do anything
        worthwhile.
        é   r   é   zinvalid option tuple: %ré   z9invalid long option '%s': must be a string of length >= 2Né   z:invalid short option '%s': must a single character or Noneú=ú:z>invalid negative alias '%s': aliased option '%s' takes a valuezginvalid alias '%s': inconsistent with aliased option '%s' (one of them takes a value, the other doesn'tzEinvalid long option name '%s' (must be letters, numbers, hyphens onlyéÿÿÿÿr,   r,   )r   r   r   r   Úrepeatr   ÚlenÚ
ValueErrorÚ
isinstanceÚstrr   r   r   r
   Úgetr	   Ú
longopt_reÚmatchr   r   )r   r   ÚlongÚshortÚhelpr-   Zalias_tor   r   r   Ú_grok_option_table…   s^    				"
!
 

zFancyGetopt._grok_option_tablec             C   sì  | d k r t  j d d … } | d k r= t ƒ  } d } n d } |  j ƒ  d j |  j ƒ } y" t j | | |  j ƒ \ } } Wn4 t j k
 r· } z t	 | ƒ ‚ WYd d } ~ Xn Xx| D]\ } } t
 | ƒ d k r| d d k r|  j | d } n | d d … } |  j j | ƒ }	 |	 r/|	 } |  j | si|  j j | ƒ }	 |	 rc|	 } d } n d } |  j | }
 | rª|  j j |
 ƒ d k	 rªt | |
 d ƒ d } t | |
 | ƒ |  j j | | f ƒ q¿ W| rä| | f S| Sd S)	a  Parse command-line options in args. Store as attributes on object.

        If 'args' is None or not supplied, uses 'sys.argv[1:]'.  If
        'object' is None or not supplied, creates a new OptionDummy
        object, stores option values there, and returns a tuple (args,
        object).  If 'object' is supplied, it is modified in place and
        'getopt()' just returns 'args'; in both cases, the returned
        'args' is a modified copy of the passed-in 'args' list, which
        is left untouched.
        Nr)   TFú r(   r   r   )ÚsysÚargvÚOptionDummyr8   Újoinr   Úgetoptr   ÚerrorZDistutilsArgErrorr.   r   r	   r2   r   r
   r   r-   ÚgetattrÚsetattrr   r   )r   ÚargsÚobjectZcreated_objectr   ZoptsÚmsgr"   Úvalr	   Úattrr   r   r   r>   Ò   sB    		
""	
zFancyGetopt.getoptc             C   s)   |  j  d k r t d ƒ ‚ n |  j  Sd S)z«Returns the list of (option, value) tuples processed by the
        previous run of 'getopt()'.  Raises RuntimeError if
        'getopt()' hasn't been called yet.
        Nz!'getopt()' hasn't been called yet)r   ÚRuntimeError)r   r   r   r   Úget_option_order  s    zFancyGetopt.get_option_orderc             C   sä  d } xs |  j  D]h } | d } | d } t | ƒ } | d d k rP | d } | d k	 rf | d } | | k r | } q W| d d d } d } | | }	 d | }
 | rº | g } n	 d	 g } x|  j  D]} | d d
 … \ } } } t | |	 ƒ } | d d k r| d d … } | d k rh| rN| j d | | | d f ƒ q°| j d | | f ƒ nH d | | f } | rŸ| j d | | | d f ƒ n | j d | ƒ x) | d d … D] } | j |
 | ƒ qÁWqÍ W| S)zŒGenerate help text (a list of strings, one per suggested line of
        output) from the option table for this FancyGetopt object.
        r   r)   r*   Né   r(   éN   r9   zOption summary:r&   z  --%-*s  %sz
  --%-*s  z%s (-%s)z  --%-*sr,   r,   r,   )r   r.   Ú	wrap_textr   )r   ÚheaderZmax_optr   r5   r6   ÚlZ	opt_widthZ
line_widthZ
text_widthZ
big_indentÚlinesr7   ÚtextZ	opt_namesr   r   r   Úgenerate_help  sF    






	!	zFancyGetopt.generate_helpc             C   sD   | d  k r t  j } x( |  j | ƒ D] } | j | d ƒ q% Wd  S)NÚ
)r:   ÚstdoutrP   Úwrite)r   rL   ÚfileÚliner   r   r   Ú
print_helph  s    	zFancyGetopt.print_help)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r#   r$   r%   r8   r>   rH   rP   rV   r   r   r   r   r      s   
(	
M=
Or   c             C   s)   t  |  ƒ } | j | ƒ | j | | ƒ S)N)r   r%   r>   )ÚoptionsZnegative_optrC   rB   Úparserr   r   r   Úfancy_getopto  s    r]   c             C   s   i  |  ] } d  t  | ƒ “ q S)r9   )Úord)Ú.0Z_wscharr   r   r   ú
<dictcomp>u  s   	 r`   c             C   sv  |  d k r g  St  |  ƒ | k r) |  g S|  j ƒ  }  |  j t ƒ }  t j d |  ƒ } d d „  | Dƒ } g  } x | rqg  } d } xq | r÷ t  | d ƒ } | | | k rÒ | j | d ƒ | d =| | } q‡ | ró | d	 d d k ró | d
 =Pq‡ W| rX| d k r=| j | d d | … ƒ | d | d … | d <| d d d k rX| d =| j d j | ƒ ƒ qr W| S)z¶wrap_text(text : string, width : int) -> [string]

    Split 'text' into multiple lines of no more than 'width' characters
    each, and return the list of strings that results.
    Nz( +|-+)c             S   s   g  |  ] } | r | ‘ q Sr   r   )r_   Zchr   r   r   ú
<listcomp>…  s   	 zwrap_text.<locals>.<listcomp>r   r)   r9   Ú r,   r,   )r.   Ú
expandtabsr   ÚWS_TRANSÚreÚsplitr   r=   )rO   ÚwidthZchunksrN   Zcur_lineZcur_lenrM   r   r   r   rK   w  s:    		rK   c             C   s   |  j  t ƒ S)zXConvert a long option name to a valid Python identifier by
    changing "-" to "_".
    )r   r   )r"   r   r   r   Útranslate_longopt­  s    rh   c               @   s%   e  Z d  Z d Z g  d d „ Z d S)r<   z_Dummy class just used as a place to hold command-line option
    values as instance attributes.c             C   s%   x | D] } t  |  | d ƒ q Wd S)zkCreate a new OptionDummy instance.  The attributes listed in
        'options' will be initialized to None.N)rA   )r   r[   r"   r   r   r   r   ¸  s    zOptionDummy.__init__N)rW   rX   rY   rZ   r   r   r   r   r   r<   ´  s   r<   Ú__main__z¢Tra-la-la, supercalifragilisticexpialidocious.
How *do* you spell that odd word, anyways?
(Someone ask Mary -- she'll know [or she'll
say, "How should I know?"].)é
   é   é   é(   z	width: %drQ   )rZ   r:   Ústringre   r>   Zdistutils.errorsZlongopt_patÚcompiler3   Zneg_alias_rer1   Ú	maketransr   r   r]   Z
whitespacerd   rK   rh   r<   rW   rO   ÚwÚprintr=   r   r   r   r   Ú<module>	   s(   $
ÿ S6