o
    f0                     @   s   d dl mZ d dlZd dlZd dlmZmZmZ ddlm	Z	 ej
dk r%eZG dd deZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZdd Zdd Zdd ZdS )    )absolute_importN)ArgumentParserActionSUPPRESS   )Options)   r   c                   @      e Zd ZdddZdS )ParseDirectivesActionNc                 C   s8   t t|| jt }tj|d|d}t|| j| d S )NT)relaxed_boolcurrent_settings)dictgetattrdestr   get_directive_defaultsparse_directive_listsetattr)selfparser	namespacevaluesoption_stringold_directives
directives r   S/var/www/html/mig_web/myenv/lib/python3.10/site-packages/Cython/Compiler/CmdLine.py__call__   s   
zParseDirectivesAction.__call__N__name__
__module____qualname__r   r   r   r   r   r
          r
   c                   @   r	   )ParseOptionsActionNc           	      C   sl   t t|| ji }|dD ]}d|v r#|dd\}}| dv}n|d}}|||< qt|| j| d S )N,=r   )falsef0noT)r   r   r   splitlowerr   )	r   r   r   r   r   optionsoptnvr   r   r   r      s   

zParseOptionsAction.__call__r   r   r   r   r   r   r#      r"   r#   c                   @   r	   )ParseCompileTimeEnvActionNc                 C   s2   t t|| ji }tj||d}t|| j| d S )N)r   )r   r   r   r   parse_compile_time_envr   )r   r   r   r   r   old_envnew_envr   r   r   r   )   s   z"ParseCompileTimeEnvAction.__call__r   r   r   r   r   r   r0   (   r"   r0   c                   @   r	   )ActivateAllWarningsActionNc                 C   s"   t |di }|tj ||_d S )Ncompiler_directives)r   updater   extra_warningsr5   )r   r   r   r   r   r   r   r   r   r   0   s   
z"ActivateAllWarningsAction.__call__r   r   r   r   r   r   r4   /   r"   r4   c                   @   r	   )SetLenientActionNc                 C   s   d|_ d|_d S )NF)error_on_unknown_nameserror_on_uninitializedr   r   r   r   r   r   r   r   r   7      
zSetLenientAction.__call__r   r   r   r   r   r   r8   6   r"   r8   c                   @   r	   )SetGDBDebugActionNc                 C   s   d|_ tj|_d S NT)	gdb_debugoscurdir
output_dirr;   r   r   r   r   =   s   zSetGDBDebugAction.__call__r   r   r   r   r   r   r=   <   r"   r=   c                   @   r	   )SetGDBDebugOutputActionNc                 C      d|_ ||_d S r>   )r?   rB   r;   r   r   r   r   C   r<   z SetGDBDebugOutputAction.__call__r   r   r   r   r   r   rC   B   r"   rC   c                   @   r	   )SetAnnotateCoverageActionNc                 C   rD   r>   )annotateannotate_coverage_xmlr;   r   r   r   r   I   r<   z"SetAnnotateCoverageAction.__call__r   r   r   r   r   r   rE   H   r"   rE   c               	   C   s@  d} t | td}|jddddddd	 |jd
dddddd	 |jdddddd |jddddtdd |jddddddd	 |jddddd d!d	 |jd"d#d$d%d&d |jd'd(d)ddd*d	 |jd+d,dtd-d |jd.d/d0dtd1d |jd2td d3d4 |jd5ttd6d7 |jd8d9d:d;d<d |jd=d>dd?d@dAdB |jdCddDd@dEdB |jdFdGttdHd |jdIdJdKdLd |jdMdNdOdddPd	 |jdQddRdSdT |jdUdVddWdXd	 |jdYdVddZd[d	 |jd\dVdd]d^d	 |jd_td d`d4 |jdadbdKdcd |jdddedKdfd |jdgdhdidKdjd |jdkdlt	d dmd4 |jdndodpdqtt
drds |jdtdudpdvttdwds |jdxdytddzd{ |jd|d}dKd~d |jddg d |jddddttd |jdddKtd |jddd;td |jdddKtd |jdddKtd ddlm} t|D ]}|dr|dd}|jd| dKtd q|S )Nz|Cython (https://cython.org/) is a compiler for code written in the Cython language.  Cython is based on Pyrex by Greg Ewing.)descriptionargument_defaultz-Vz	--versionshow_versionstore_constr   z)Display version number of cython compiler)r   actionconsthelpz-lz--create-listinguse_listing_filez&Write error messages to a listing filez-Iz--include-dirinclude_pathappendzWSearch for include files in named directory (multiple include directories are allowed).)r   rL   rN   z-oz--output-fileoutput_filestorez Specify name of generated C file)r   rL   typerN   z-tz--timestamps
timestampszOnly compile newer source filesz-fz--forcer   z/Compile all source files (overrides implied -t)z-vz	--verboseverbosecountz4Be verbose, print file names on multiple compilationz-pz--embed-positionsembed_pos_in_docstringzeIf specified, the positions in Cython files of each function definition is embedded in its docstring.z	--cleanupgenerate_cleanup_codezzRelease interned objects on python exit, for memory debugging. Level indicates aggressiveness, default 0 releases nothing.z-wz	--workingworking_pathzOSets the working directory for Cython (the directory modules are searched from)z--gdbz"Output debug information for cygdb)rL   nargsrN   z--gdb-outdirz>Specify gdb debug information output directory. Implies --gdb.)rL   rT   rN   z-Dz--no-docstrings
docstringsstore_falsez*Strip docstrings from the compiled module.z-az
--annotatedefaultrF   z/Produce a colorized HTML version of the source.)rL   rM   r   rN   z--annotate-fullcfullczZProduce a colorized HTML version of the source which includes entire generated C/C++-code.z--annotate-coveragerG   z7Annotate and include coverage information from cov.xml.z--line-directivesemit_linenums
store_truez4Produce #line directives pointing to the .pyx sourcez-+z--cpluscplusz Output a C++ rather than C file.--embedmainzwGenerate a main() function that embeds the Python interpreter. Pass --embed=<method_name> for a name other than main().)rL   rM   rN   z-2language_level   z4Compile based on Python-2 syntax and code semantics.z-3r   z4Compile based on Python-3 syntax and code semantics.z--3str3strz{Compile based on Python-3 syntax and code semantics without assuming unicode by default for string literals under Python 2.z	--lenientzQChange some compile time errors to runtime errors to improve Python compatibilityz--capi-reexport-cincludescapi_reexport_cincludesz9Add cincluded headers to any auto-generated header files.z--fast-fail	fast_failz(Abort the compilation on the first errorz-Werrorz--warning-errorswarning_errorszMake all warnings into errorsz-Wextraz--warning-extrazEnable extra warningsz-Xz--directivezNAME=VALUE,...r5   zOverrides a compiler directive)metavarr   rT   rL   rN   z-Ez--compile-time-envcompile_time_envz,Provides compile time env like DEF would do.z--module-namemodule_namezFully qualified module name. If not given, is deduced from the import path if source file is in a package, or equals the filename otherwise.)r   rT   rL   rN   z-Mz	--depfilez produce depfiles for the sources)rL   rN   sources*)r[   r^   z-zz--pre-import
pre_importz--convert-rangeconvert_rangez--no-c-in-tracebackc_line_in_tracebackz--cimport-from-pyxcimport_from_pyxz--old-style-globalsold_style_globals
DebugFlagsdebug_-z--)r   r   add_argumentstrintr=   rC   rE   r8   r4   r
   r0    rv   vars
startswithreplace)rH   r   rv   nameoption_namer   r   r   create_cython_argparserN   s   








r   c                 C   s   dd }||\}}|  |\}}|j}|`|D ]}|dr'| d|  q|| q|D ]}	|	dkr8d}
n|	tdd  }
t|d|
 q/||fS )	Nc                 S   sD   g g }}| D ]}|dks| dr|| q|| q||fS )Nrc   --embed=)r   rQ   )args
with_embedwithout_embedxr   r   r   filter_out_embed_options   s   
z8parse_command_line_raw.<locals>.filter_out_embed_optionsry   zunknown option rc   rd   r   embed)parse_known_argsrn   r   errorrQ   lenr   )r   r   r   r   args_without_embed	argumentsunknownrn   optionr   r   r   r   r   parse_command_line_raw   s   	
r   c                 C   s  t  }t|| \}}t|dd}|D ]&}|r#tj|s#tj||}tj|s8dd l}t	|j
t|j
|qttj}t| D ]6\}}	|driddlm}
 |t|
v rat|
||	 qE|d|  qEtt|rutt||	 qEt|||	 qE|jrt|dkr|d t|dkr|js|d	 tjrt|dkr|d
 |jr|jr|d t|dkr|d ||fS )NrZ   r}   r   rw   r   ru   zUnknown debug flag: %s
z3cython: Only one source file allowed when using -o
z&cython: Need at least one source file
z8cython: Only one source file allowed when using --embed
z3cython: Cannot use --module-name with --timestamps
z>cython: Only one source file allowed when using --module-name
)r   r   r   r@   pathisabsjoinexistserrnoFileNotFoundErrorENOENTstrerrorr   CompilationOptionsdefault_optionsr~   itemsr   r}   rv   dirr   r   hasattrrO   r   rJ   r   rm   rU   )r   r   r   rn   work_dirsourcer   r,   r   valuerv   r   r   r   parse_command_line   s@   






r   )
__future__r   sysr@   argparser   r   r   r}   r   version_infoIOErrorr   r
   r#   r0   r4   r8   r=   rC   rE   r   r   r   r   r   r   r   <module>   s$   
	e$