3 \�.�@s�ddlZddlZddlZddlZddlmZmZddgZGdd�de �Z Gdd�de �Z dd d �Z d d d �Z efd d�ZGdd�de�Zd!dd�Zd"dd�Zefdd�Zdd�Zd#dd�Zedk�r�eej�dk�r�edejd�nejd=eejd�dS)$�N)� read_code� get_importer� run_module�run_pathc@s$eZdZdd�Zdd�Zdd�ZdS)� _TempModulecCs||_tj|�|_g|_dS)N)�mod_name�types� ModuleType�module� _saved_module)�selfr�r �/usr/lib64/python3.6/runpy.py�__init__s z_TempModule.__init__c CsB|j}y|jjtj|�Wntk r0YnX|jtj|<|S)N)rr �append�sys�modules�KeyErrorr )r rr r r� __enter__s z_TempModule.__enter__cGs.|jr|jdtj|j<n tj|j=g|_dS)Nr)r rrr)r �argsr r r�__exit__'s z_TempModule.__exit__N)�__name__� __module__� __qualname__rrrr r r rrs rc@s$eZdZdd�Zdd�Zdd�ZdS)�_ModifiedArgv0cCs||_t�|_|_dS)N)�value�object� _saved_value� _sentinel)r rr r rr/sz_ModifiedArgv0.__init__cCs0|j|jk rtd��tjd|_|jtjd<dS)NzAlready preserving saved valuer)rr� RuntimeErrorr�argvr)r r r rr3s  z_ModifiedArgv0.__enter__cGs|j|_|jtjd<dS)Nr)rrrrr )r rr r rr9sz_ModifiedArgv0.__exit__N)rrrrrrr r r rr.src Csn|dk r|j|�|dkr(d}|}d} n |j}|j}|j} |dkrH|j}|j||| d|||d�t||�|S)N)r�__file__� __cached__�__doc__� __loader__� __package__�__spec__)�update�loader�origin�cached�parent�exec) �codeZ run_globals� init_globalsr�mod_spec�pkg_name� script_namer(�fnamer*r r r� _run_code>s(  r3c Cs^|dkr |n|j}t|��6}t|��"|jj}t|||||||�WdQRXWdQRX|j�S)N)r)rrr �__dict__r3�copy) r-r.rr/r0r1r2� temp_module� mod_globalsr r r�_run_module_codeXs  r8c ;Cs4|jd�r|d��|jd�\}}}|r�y t|�WnJtk r|}z.|jdksj|j|krl|j|jd� rl�WYdd}~XnXtjj|�}|dk r�t|d� r�ddl m }dj ||d�}|t |��yt jj|�}WnJttttfk �r} z$d}||j |t| �j| ��| �WYdd} ~ XnX|dk�r6|d |��|jdk �r�|d k�sX|jd ��r`|d ��y|d } t| |�S|k �r�}z$|tjk�r��|d||f��WYdd}~XnX|j} | dk�r�|d|��y| j|�} Wn2tk �r}z|t |��|�WYdd}~XnX| dk�r*|d|��||| fS)N�.z#Relative module names not supported�__path__r)�warnz�{mod_name!r} found in sys.modules after import of package {pkg_name!r}, but prior to execution of {mod_name!r}; this may result in unpredictable behaviour)rr0z:Error while finding module specification for {!r} ({}: {})zNo module named %s�__main__z .__main__z%Cannot use package as __main__ modulez%s; %r is a package and cannot zbe directly executedz0%r is a namespace package and cannot be executedzNo code object available for %sz3%s; %r is a package and cannot be directly executed)� startswith� rpartition� __import__� ImportError�namerr�get�hasattr�warningsr;�format�RuntimeWarning� importlib�util� find_spec�AttributeError� TypeError� ValueError�typer�submodule_search_locations�endswith�_get_module_detailsr(�get_code) r�errorr0�_�eZexistingr;�msg�specZexZ pkg_main_namer(r-r r rrPfsZ      ,          rPc@s eZdZdS)�_ErrorN)rrrr r r rrW�srWTcCs�y0|s|dkr t|t�\}}}ntt�\}}}Wn:tk rj}zdtj|f}tj|�WYdd}~XnXtjdj}|r�|jtj d<t ||dd|�S)Nr<z%s: %sr) rPrW�_get_main_module_detailsr� executable�exitrr4r)r r3)rZ alter_argvr/r-�excrUZ main_globalsr r r�_run_module_as_main�s   r\FcCs@t|�\}}}|dkr|}|r,t||||�St|i|||�SdS)N)rPr8r3)rr.�run_nameZ alter_sysr/r-r r rr�s cCs~d}tj|}tj|=zVyt|�Stk rh}z,|t|�krV|d|tjdf�|��WYdd}~XnXWd|tj|<XdS)Nr<zcan't find %r module in %rr)rrrPr@�str�path)rRZ main_nameZ saved_mainr[r r rrX�s  rXcCsTt|d��}t|�}WdQRX|dkrLt|d��}t|j�|d�}WdQRX||fS)N�rbr,)�openr�compile�read)r]r2�fr-r r r�_get_code_from_file�s   rec Cs|dkr d}|jd�d}t|�}d}t|�jdkrFt|�jdkrFd}t|td��sX|rxt||�\}}t|||||d�Stj j d|�zRt �\}} }t |��4} t |�� | jj} t|| ||| |�j�SQRXWdQRXWdytj j|�Wntk �rYnXXdS) Nz r9rFZimpZ NullImporterT)r0r1)r>rrMrr� isinstancerer8rr_�insertrXrrr r4r3r5�removerL) Z path_namer.r]r0ZimporterZis_NullImporterr-r2rr/r6r7r r rr�s0     "r<�z!No module specified for execution)�file)NNNNN)NNNNN)T)NNF)NN)r�importlib.machineryrG�importlib.utilrZpkgutilrr�__all__rrrr3r8r@rP� ExceptionrWr\rrXrerr�lenr �print�stderrr r r r� s4  :    1