a
    mߛ`ґ                     @   s  d Z dZddl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 ej	dkrhddl
mZ ddlmZ nddlmZ ddlmZ ddlZddlZddlZdd	lmZmZmZmZ ej	dkreZd
d Zdd Zd8ddZd9ddZd:ddZd;ddZd<ddZd=ddZ d>ddZ!d?ddZ"d@ddZ#dAd d!Z$dBd"d#Z%dCd$d%Z&dDd&d'Z'dEd(d)Z(d*d+ Z)d,d- Z*G d.d/ d/ej+Z+G d0d1 d1ej,Z,G d2d3 d3ej-ej.Z-G d4d5 d5eZG d6d7 d7e/Z0dS )Fau  
Command-line and common processing for Docutils front-end tools.

Exports the following classes:

* `OptionParser`: Standard Docutils command-line processing.
* `Option`: Customized version of `optparse.Option`; validation support.
* `Values`: Runtime settings; objects are simple structs
  (``object.attribute``).  Supports cumulative list settings (attributes).
* `ConfigParser`: Standard Docutils config file processing.

Also exports the following functions:

* Option callbacks: `store_multiple`, `read_config_file`.
* Setting validators: `validate_encoding`,
  `validate_encoding_error_handler`,
  `validate_encoding_and_error_handler`,
  `validate_boolean`, `validate_ternary`, `validate_threshold`,
  `validate_colon_separated_list`,
  `validate_comma_separated_list`,
  `validate_dependency_file`.
* `make_paths_absolute`.
* SettingSpec manipulation: `filter_settings_spec`.
ZreStructuredText    N)SUPPRESS_HELP   r   )RawConfigParser)getcwd)getcwdu)locale_encoding
SafeStringErrorOutputErrorStringc                 O   s<   |D ]}t |j|d q| D ]\}}t |j|| q dS )z
    Store multiple values in `parser.values`.  (Option callback.)

    Store `None` for each attribute named in `args`, and store the value for
    each key (attribute name) in `kwargs`.
    N)setattrvaluesitems)optionoptvalueparserargskwargsZ	attributekey r   0lib/python3.9/site-packages/docutils/frontend.pystore_multiple8   s    r   c              
   C   sP   z| |}W n. ty< } z|| W Y d}~n
d}~0 0 |j|| dS )zQ
    Read a configuration file during option processing.  (Option callback.)
    N)get_config_file_settings
ValueErrorerrorr   update)r   r   r   r   Znew_settingsr   r   r   r   read_config_fileD   s
     r   c                 C   s6   zt | W n" ty0   td| |f Y n0 |S )Nz$setting "%s": unknown encoding: "%s")codecslookupLookupErrorsettingr   option_parserconfig_parserconfig_sectionr   r   r   validate_encodingN   s    r&   c                 C   s2   zt | W n ty,   td| Y n0 |S )Nzunknown encoding error handler: "%s" (choices: "strict", "ignore", "replace", "backslashreplace", "xmlcharrefreplace", and possibly others; see documentation for the Python ``codecs`` module))r   lookup_errorr    r!   r   r   r   validate_encoding_error_handlerW   s    
r(   c                 C   sn   d|v rV| d\}}t| d |||| |rB||| d | qZt|j| d | n|}t| |||| |S )z
    Side-effect: if an error handler is included in the value, it is inserted
    into the appropriate place as if it was a separate setting/option.
    :Z_error_handler)splitr(   setr   r   r&   )r"   r   r#   r$   r%   encodingZhandlerr   r   r   #validate_encoding_and_error_handlerc   s     
r-   c                 C   sF   t |tr|S z|j|   W S  ty@   td| Y n0 dS )z|Check/normalize boolean settings:
         True:  '1', 'on', 'yes', 'true'
         False: '0', 'off', 'no','false', ''
    zunknown boolean value: "%s"N)
isinstanceboolbooleansstriplowerKeyErrorr    r!   r   r   r   validate_booleany   s    
r4   c                 C   sF   t |ts|du r|S z|j|   W S  ty@   | Y S 0 dS )zCheck/normalize three-value settings:
         True:  '1', 'on', 'yes', 'true'
         False: '0', 'off', 'no','false', ''
         any other value: returned as-is.
    N)r.   r/   r0   r1   r2   r3   r!   r   r   r   validate_ternary   s    r5   c                 C   s   t |}|dk rtd|S )Nr   z(negative value; must be positive or zero)intr   r!   r   r   r   validate_nonnegative_int   s    r7   c                 C   sZ   z
t |W S  tyT   z|j|  W  Y S  ttfyN   td| Y n0 Y n0 d S )Nzunknown threshold: %r.)r6   r   
thresholdsr2   r3   AttributeErrorr    r!   r   r   r   validate_threshold   s    
r:   c                 C   s2   t |ts|d}n| }||d |S )Nr)   )r.   listr*   popextend)r"   r   r#   r$   r%   lastr   r   r   $validate_colon_separated_string_list   s
    
r?   c                 C   s:   t |ts|g}| }dd |dD }|| |S )zHCheck/normalize list arguments (split at "," and strip whitespace).
    c                 S   s    g | ]}| d r| d qS )z 	
r1   ).0ir   r   r   
<listcomp>       z1validate_comma_separated_list.<locals>.<listcomp>,)r.   r;   r<   r*   r=   )r"   r   r#   r$   r%   r>   r   r   r   r   validate_comma_separated_list   s    

rF   c                 C   s"   |sdS | dr|S |d S d S )Nz.//)endswithr!   r   r   r   validate_url_trailing_slash   s
    
rI   c                 C   s2   zt j|W S  ty,   t jd  Y S 0 d S N)docutilsutilsDependencyListIOErrorr!   r   r   r   validate_dependency_file   s    rO   c                 C   sB   t | ||||}|D ](}tj|}||krtd||f q|S )Nz$Invalid class value %r (perhaps %r?))rF   rK   ZnodesZmake_idr   )r"   r   r#   r$   r%   clsZ
normalizedr   r   r   validate_strip_class   s    rQ   c           
   
   C   s   t | ||||}g }|D ]}z|dd\}}W nD tyP   || Y qY n& tyt   td|dd Y n0 | }|d}	t|	dkr|	}n t|dkrtd|dd |||f q|S )z~Check/normalize a comma separated list of smart quote definitions.

    Return a list of (language-tag, quotes) string tuples.r)      z4Invalid value "%s". Format is "<language>:<quotes>".asciibackslashreplace   z[Invalid value "%s". Please specify 4 quotes
    (primary open/close; secondary open/close).)rF   r*   r9   appendr   encoder1   len)
r"   r   r#   r$   r%   Z	lc_quotesitemZlangZquotesZmultichar_quotesr   r   r   validate_smartquotes_locales   s0    



rZ   c                    s`    du rt   |D ]H}|| v r| | }t|trD fdd|D }n|rRt |}|| |< qdS )z
    Interpret filesystem path settings relative to the `base_path` given.

    Paths are values in `pathdict` whose keys are in `keys`.  Get `keys` from
    `OptionParser.relative_path_settings`.
    Nc                    s   g | ]}t  |qS r   )make_one_path_absolute)rA   path	base_pathr   r   rC     s   z'make_paths_absolute.<locals>.<listcomp>)r   r.   r;   r[   )Zpathdictkeysr^   r   r   r   r]   r   make_paths_absolute   s    


r`   c                 C   s   t jt j| |S rJ   )osr\   abspathjoin)r^   r\   r   r   r   r[     s    r[   c                 O   s   t | }tdt|dD ]h}g }|| D ]J}dd |d D d }||v rLq(|| v rh|||  q(|| q(t|||< qt|S )a  Return a copy of `settings_spec` excluding/replacing some settings.

    `settings_spec` is a tuple of configuration settings with a structure
    described for docutils.SettingsSpec.settings_spec.

    Optional positional arguments are names of to-be-excluded settings.
    Keyword arguments are option specification replacements.
    (See the html4strict writer for an example.)
       r   c                 S   s*   g | ]"}| d r|dd ddqS )z--rd   N-_)
startswithreplace)rA   Z
opt_stringr   r   r   rC   $  s   
z(filter_settings_spec.<locals>.<listcomp>rR   r   )r;   rangerX   r_   rV   tuple)settings_specZexcluderh   settingsrB   ZnewoptsZopt_specZopt_namer   r   r   filter_settings_spec  s     
rm   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )Valuesz
    Updates list attributes by extension rather than by replacement.
    Works in conjunction with the `OptionParser.lists` instance attribute.
    c                 O   s>   t jj| g|R i | t| dr.| jd u r:tj | _d S )Nrecord_dependencies)optparsern   __init__hasattrro   rK   rL   rM   selfr   r   r   r   r   rq   9  s
    
zValues.__init__c                 C   sh   t |tr|j}| }|j D ]6}t| |r"||v r"t| |}|r"||| 7 }||= q"| | d S rJ   )	r.   rn   __dict__copylistsr_   rr   getattrZ_update_loose)rt   Z
other_dictr#   r"   r   r   r   r   r   @  s    

zValues.updatec                 C   s   | j | jdS )z Return a shallow copy of `self`.)defaults)	__class__ru   )rt   r   r   r   rv   L  s    zValues.copyc                 C   s&   t | |ddu rt| || t | |S )zUV.setdefault(n[,d]) -> getattr(V,n,d), also set D.n=d if n not in D or None.
        N)rx   r   )rt   namedefaultr   r   r   
setdefaultP  s    zValues.setdefaultN)__name__
__module____qualname____doc__rq   r   rv   r}   r   r   r   r   rn   2  s
   rn   c                   @   s$   e Zd Zejjddg Zdd ZdS )Option	validator	overridesc           	   
   C   s   t j| ||||}| j}|r| jrt||}z| |||}W n: tyz } z"t d|t|f W Y d}~n
d}~0 0 t	||| | j
rt	|| j
d |S )z
        Call the validator function on applicable settings and
        evaluate the 'overrides' option.
        Extends `optparse.Option.process`.
        zError in option "%s":
    %sN)rp   r   processdestr   rx   	ExceptionZOptionValueErrorr   r   r   )	rt   r   r   r   r   resultr"   	new_valuer   r   r   r   r   \  s"    

zOption.processN)r~   r   r   rp   r   ZATTRSr   r   r   r   r   r   X  s   r   c                8   @   sv  e Zd ZdZg dZd Zdddddd	Zd
d
d
d
dddddd	Ze	e
jddpXepXdZdZddddgi fdddgdedfddgdddfddd gd!d"d#d$fd%d&d'gd!d(d#d$fd)d*gd!dd#d$fd+d,d-gdedfd.d/gd0d1ifd2d3gd4ed5d6fd7d8gd9d!d:d:d;fd<d=gd9d!d>d?fd@dAgd9ddBfdCdDgddedEfdFdGgdHddBfdIdJgddKdedLfdMdNgddKdfdOdPgdedfdQdRgddSdfdTdUgdVdWdXedYfdZd[gdVd\dXedYfd]d^d_gedd`daedbfdcdddegd!dd`d$fdfdgdhgd!dd`d$fdidjgedkddaedlfdmdngd!ddkd$fdodpgedqddaedlfdrdsgdedfdtdugddvdfdwdxgdydzd{fd|d}gddedEfd~dgdddBfdddgdedfddgdedfdddgddedfddgdedfdeef ddgdeedfde dgeedfdddgddddfddgdzeddfddgdzdd4edfdddgddifdddgddifedgddifedgddifedgddifedgddifedgddifedgddifedgdVdedfedgddiff2fZdddddZdZdZdejejrdej p
de
j  d e
j!f Z"dddZ#ddĄ Z$ddƄ Z%ddȄ Z&ddʄ Z'dd̄ Z(dd΄ Z)ddЄ Z*dd҄ Z+ddԄ Z,dS )OptionParsera  
    Parser for command-line and library use.  The `settings_spec`
    specification here and in other Docutils components are merged to build
    the set of command-line options and runtime settings for this process.

    Common settings (defined below) and component-specific settings must not
    conflict.  Short options are reserved for common settings, and components
    are restrict to using long options.
    )z/etc/docutils.confz./docutils.confz~/.docutilsz(info 1 warning 2 error 3 severe 4 none 5rR   rd   r   rU      )infoZwarningr   ZsevereZnoneTF)	1ZonZyestrue0ZoffZnoZfalse r,   NrS   rT   zGeneral Docutils Optionsz'Specify the document title as metadata.z--titlez2Include a "Generated by Docutils" credit and link.z--generatorz-g
store_true)actionr   z"Do not include a generator credit.z--no-generatorZstore_false	generator)r   r   z2Include the date at the end of the document (UTC).z--datez-dZstore_constz%Y-%m-%dZ	datestamp)r   constr   zInclude the time & date (UTC).z--timez-tz%Y-%m-%d %H:%M UTCz'Do not include a datestamp of any kind.z--no-datestampz&Include a "View document source" link.z--source-linkz-sz3Use <URL> for a source link; implies --source-link.z--source-urlmetavarz<URL>z-Do not include a "View document source" link.z--no-source-linkcallback)Zsource_linkZ
source_url)r   r   Zcallback_argsz4Link from section headers to TOC entries.  (default)z--toc-entry-backlinksZtoc_backlinksentry)r   r   r   r|   z0Link from section headers to the top of the TOC.z--toc-top-backlinkstop)r   r   r   z+Disable backlinks to the table of contents.z--no-toc-backlinks)r   r   z6Link from footnotes/citations to references. (default)z--footnote-backlinks)r   r|   r   z/Disable backlinks from footnotes and citations.z--no-footnote-backlinksZfootnote_backlinksz0Enable section numbering by Docutils.  (default)z--section-numberingZsectnum_xform)r   r   r|   r   z&Disable section numbering by Docutils.z--no-section-numberingz/Remove comment elements from the document tree.z--strip-commentsz6Leave comment elements in the document tree. (default)z--leave-commentsZstrip_commentszRemove all elements with classes="<class>" from the document tree. Warning: potentially dangerous; use with caution. (Multiple-use option.)z--strip-elements-with-classrV   Zstrip_elements_with_classesz<class>)r   r   r   r   zRemove all classes="<class>" attributes from elements in the document tree. Warning: potentially dangerous; use with caution. (Multiple-use option.)z--strip-classZstrip_classeszReport system messages at or higher than <level>: "info" or "1", "warning"/"2" (default), "error"/"3", "severe"/"4", "none"/"5"z--reportz-rZreport_levelz<level>)choicesr|   r   r   r   z4Report all system messages.  (Same as "--report=1".)z	--verbosez-vz3Report no system messages.  (Same as "--report=5".)z--quietz-qzdHalt execution at system messages at or above <level>.  Levels as in --report.  Default: 4 (severe).z--haltZ
halt_level)r   r   r|   r   r   z6Halt at the slightest problem.  Same as "--halt=info".z--strictzjEnable a non-zero exit status for non-halting system messages at or above <level>.  Default: 5 (disabled).z--exit-statusZexit_status_levelz3Enable debug-level system messages and diagnostics.z--debugz Disable debug output.  (default)z
--no-debugdebugz-Send the output of system messages to <file>.z
--warningswarning_streamz<file>)r   r   z1Enable Python tracebacks when Docutils is halted.z--tracebackz%Disable Python tracebacks.  (default)z--no-traceback	tracebackziSpecify the encoding and optionally the error handler of input text.  Default: <locale-dependent>:strict.z--input-encodingz-iz<name[:handler]>)r   r   zlSpecify the error handler for undecodable characters.  Choices: "strict" (default), "ignore", and "replace".z--input-encoding-error-handlerstrict)r|   r   z^Specify the text encoding and optionally the error handler for output.  Default: UTF-8:strict.z--output-encodingz-outf-8)r   r|   r   zSpecify error handler for unencodable output characters; "strict" (default), "ignore", "replace", "xmlcharrefreplace", "backslashreplace".z--output-encoding-error-handlerzJSpecify text encoding and error handler for error output.  Default: %s:%s.z--error-encodingz-ezSSpecify the error handler for unencodable characters in error output.  Default: %s.z--error-encoding-error-handlerz<Specify the language (as BCP 47 language tag).  Default: en.z
--languagez-lZlanguage_codeZenz<name>)r   r|   r   z)Write output file dependencies to <file>.z--record-dependencies)r   r   r|   z6Read configuration settings from <file>, if it exists.z--configstring)r   typer   r   z,Show this program's version number and exit.z	--versionz-Vr   versionz Show this help message and exit.z--helpz-hhelpz--id-prefixr|   r   z--auto-id-prefixidz--dump-settingsz--dump-internalsz--dump-transformsz--dump-pseudo-xmlz--expose-internal-attributeZexpose_internals)r   r   r   z--strict-visitor)_disable_config_source_destination_config_files)r   generalz(%%prog (Docutils %s%s, Python %s, on %s)z [%s]r   r   c              
   O   s   i | _ g | _tjj| g|R tdtjddd| | jsD| j| _t	| j
| _
| ft| | _| | j | |pvi  |r| jd sz|  }W n2 ty } z| t| W Y d}~n
d}~0 0 | |j dS )z
        `components` is a list of Docutils components each containing a
        ``.settings_spec`` attribute.  `defaults` is a mapping of setting
        default overrides.
        NN   )width)Zoption_classZadd_help_optionZ	formatterr   )rw   config_filesrp   r   rq   r   ZTitledHelpFormatterr   version_templater;   relative_path_settingsrj   
componentspopulate_from_componentsset_defaults_from_dictry   get_standard_config_settingsr   r   r	   ru   )rt   r   ry   Zread_config_filesr   r   Zconfig_settingsr   r   r   r   rq   O  s0    
$zOptionParser.__init__c                 C   s   |D ]}|du rq|j }| j|j tdt|dD ]}|||d  \}}}|rnt| ||}| | n| }|D ]8\}	}
}|j|
d|	i|}|	ddkrvd| j
|j< qv|jr6| j|j q6q|D ]}|r|jr| j|j qdS )aE  
        For each component, first populate from the `SettingsSpec.settings_spec`
        structure, then from the `SettingsSpec.settings_defaults` dictionary.
        After all components have been processed, check for and populate from
        each component's `SettingsSpec.settings_default_overrides` dictionary.
        Nr   r   r   r   rV   T)rk   r   r=   ri   rX   rp   ZOptionGroupZadd_option_groupZ
add_optiongetrw   r   settings_defaultsry   r   Zsettings_default_overrides)rt   r   	componentrk   rB   titleZdescriptionZoption_specgroupZ	help_textZoption_stringsr   r   r   r   r   r   o  s0    
z%OptionParser.populate_from_componentsc                    s|   zt jd t j}W n ty.   | j}Y n0 t jj dt jvrjzddl}W n t	yh   dd  Y n0  fdd|D S )	z:Return list of config files, from environment or standard.ZDOCUTILSCONFIGHOMEr   Nc                 S   s   | S rJ   r   )xr   r   r   <lambda>  rD   z8OptionParser.get_standard_config_files.<locals>.<lambda>c                    s   g | ]}|  r |qS r   r@   )rA   fexpandr   r   rC     rD   z:OptionParser.get_standard_config_files.<locals>.<listcomp>)
ra   environr*   pathsepr3   standard_config_filesr\   
expanduserpwdImportError)rt   r   r   r   r   r   get_standard_config_files  s    
z&OptionParser.get_standard_config_filesc                 C   s*   t  }|  D ]}|| ||  q|S rJ   )rn   r   r   r   )rt   rl   filenamer   r   r   r     s    z)OptionParser.get_standard_config_settingsc                 C   s   t  }|||  | j|j tj|}i }t }| j	D ]J}|sFq<t
|jpPd|jf D ](}||v rjq\d||< ||||  q\q<t|j| j| |jS )zAReturns a dictionary containing appropriate config file settings.r   rR   )ConfigParserreadr   r=   _filesra   r\   dirnamern   r   rj   Zconfig_section_dependenciesr%   r   get_sectionr`   ru   r   )rt   Zconfig_filer   r^   Zappliedrl   r   sectionr   r   r   r     s(    

z%OptionParser.get_config_file_settingsc                 C   s,   |  |\|_|_t|j| j | j|_|S )z/Store positional arguments as runtime settings.)
check_argsr   r   r`   ru   r   r   r   )rt   r   r   r   r   r   check_values  s    zOptionParser.check_valuesc                 C   sh   d  }}|r"| d}|dkr"d }|r<| d}|dkr<d }|rJ| d |r`||kr`| d ||fS )Nr   re   zMaximum 2 arguments allowed.z_Do not specify the same file for both source and destination.  It will clobber the source file.)r<   r   )rt   r   sourceZdestinationr   r   r   r     s    



zOptionParser.check_argsc                 C   s   | j | d S rJ   )ry   r   rt   ry   r   r   r   r     s    z#OptionParser.set_defaults_from_dictc                 C   s   t | j}| j|_|S )z(Needed to get custom `Values` instances.)rn   ry   r   r   r   r   r   r   get_default_values  s    
zOptionParser.get_default_valuesc                 C   sD   | j | g D ]&}|jD ]}|j|kr|    S qqtd| dS )a  
        Get an option by its dest.

        If you're supplying a dest which is shared by several options,
        it is undefined which option of those is returned.

        A KeyError is raised if there is no option with the supplied
        dest.
        zNo option with dest == %r.N)Zoption_groupsZoption_listr   r3   )rt   r   r   r   r   r   r   get_option_by_dest  s
    


zOptionParser.get_option_by_dest)r   NN)-r~   r   r   r   r   r*   Zthreshold_choicesr8   r0   rx   sysstderrr   Zdefault_error_encodingZ$default_error_encoding_error_handlerr4   r   rQ   r:   r-   r(   rO   r   r   r?   rk   r   r   r%   rK   __version__Z__version_details__r   platformr   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s  s  








  *
 r   c                   @   sP   e Zd ZddddZdZdZdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )r   )pep_html writerZ
stylesheet)r   Zstylesheet_path)r   template)Zpep_stylesheetZpep_stylesheet_pathZpep_templatea  
The "[option]" section is deprecated.  Support for old-format configuration
files may be removed in a future Docutils release.  Please revise your
configuration files.  See <http://docutils.sf.net/docs/user/config.html>,
section "Old-Format Configuration Files".
zhUnable to read configuration file "%s": content not encoded as UTF-8.
Skipping "%s" configuration file.
c                 O   s*   t j| g|R i | g | _t | _d S rJ   )r   rq   r   r
   _stderrrs   r   r   r   rq     s    zConfigParser.__init__c              	   C   s   t |ttfv r|g}|D ]}zt|dd}W n tyF   Y qY n0 z,tjdk rdt	| || nt
| || W n4 ty   | j| j||f  |  Y qY n0 |  | j| | dr| | | || qd S )Nrr   r   options)r   strunicoder   openrN   r   version_infor   ZreadfpZ	read_fileUnicodeDecodeErrorr   writenot_utf8_errorcloser   rV   has_sectionhandle_old_configvalidate_settings)rt   	filenamesr#   r   fpr   r   r   r     s(    




zConfigParser.readc                 C   s   t | jt|d | d}| ds0| d | D ]X\}}|| jv rn| j| \}}| |sv| | nd}|}| 	||s8| 
||| q8| d d S )Nr   r   r   )warningswarn_explicitold_warningConfigDeprecationWarningr   r   Zadd_sectionr   old_settingsZ
has_optionr+   Zremove_section)rt   r   r   r   r   r   r"   r   r   r   r   %  s     





zConfigParser.handle_old_configc           	      C   s   |   D ]}| |D ]}z||}W n ty>   Y qY n0 |jr| ||}z|j|||| |d}W n> ty } z&td||t|||f W Y d}~n
d}~0 0 | 	||| |j
r| 	||j
d qqdS )zi
        Call the validator function and implement overrides on all applicable
        settings.
        )r$   r%   zAError in config file "%s", section "[%s]":
    %s
        %s = %sN)Zsectionsr   r   r3   r   r   r   r   r   r+   r   )	rt   r   r#   r   r"   r   r   r   r   r   r   r   r   7  s0    


zConfigParser.validate_settingsc                 C   s   |  ddS )zW
        Transform '-' to '_' so the cmdline form of option names can be used.
        re   rf   )r2   rh   )rt   Z	optionstrr   r   r   optionxformS  s    zConfigParser.optionxformc                 C   s2   i }|  |r.| |D ]}| ||||< q|S )zf
        Return a given section as a dictionary (empty if the section
        doesn't exist).
        )r   r   r   )rt   r   Zsection_dictr   r   r   r   r   Y  s
    
zConfigParser.get_sectionN)r~   r   r   r   r   r   rq   r   r   r   r   r   r   r   r   r   r     s   	r   c                   @   s   e Zd ZdZdS )r   z3Warning for deprecated configuration file features.N)r~   r   r   r   r   r   r   r   r   e  s   r   )NN)NN)NN)NN)NN)NN)NN)NN)NN)NN)NN)NN)NN)N)1r   Z__docformat__ra   os.pathr   r   r   rp   r   r   Zconfigparserr   r   r   r   rK   Zdocutils.utilsZdocutils.nodesZdocutils.utils.error_reportingr   r	   r
   r   r   r   r   r   r&   r(   r-   r4   r5   r7   r:   r?   rF   rI   rO   rQ   rZ   r`   r[   rm   rn   r   r   ZSettingsSpecDeprecationWarningr   r   r   r   r   <module>   sr   

 

 
 
 
 
 
 
 

 
 

 
 
 
#
&  ~v