U e5d/�@sddlZddlZddlZddlZddlZddlZddlmZm Z ddgZ Gdd�de �Z Gdd�de �Z dd d �Zd d d �Zefd 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||_t�|�|_g|_dS�N)�mod_name�types� ModuleType�module� _saved_module��selfr�r�/usr/lib64/python3.8/runpy.py�__init__s z_TempModule.__init__cCsB|j}z|j�tj|�Wntk r0YnX|jtj|<|Sr)rr �append�sys�modules�KeyErrorr r rrr� __enter__ s z_TempModule.__enter__cGs.|jr|jdtj|j<n tj|j=g|_dS�Nr)r rrr�r�argsrrr�__exit__)s z_TempModule.__exit__N��__name__� __module__� __qualname__rrrrrrrrs rc@s$eZdZdd�Zdd�Zdd�ZdS)�_ModifiedArgv0cCs||_t�|_|_dSr)�value�object� _saved_value� _sentinel)rr rrrr1sz_ModifiedArgv0.__init__cCs0|j|jk rtd��tjd|_|jtjd<dS)NzAlready preserving saved valuer)r"r#� RuntimeErrorr�argvr )rrrrr5s  z_ModifiedArgv0.__enter__cGs|j|_|jtjd<dSr)r#r r"rr%rrrrr;sz_ModifiedArgv0.__exit__Nrrrrrr0src Csn|dk r|�|�|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/rrr� _run_code@s* � r8c Cs^|dkr |n|j}t|��6}t|��"|jj}t|||||||�W5QRXW5QRX|��Sr)r.rrr �__dict__r8�copy) r2r3rr4r5r6r7� temp_module� mod_globalsrrr�_run_module_codeZs�r=c Cs2|�d�r|d��|�d�\}}}|r�z t|�WnHtk rz}z*|jdksh|j|krj|�|jd�sj�W5d}~XYnXtj�|�}|dk r�t|d�s�ddl m }dj ||d�}|t |��zt j�|�}WnJttttfk �r} z"d}||� |t| �j| ��| �W5d} ~ XYnX|dk�r2|d |��|jdk �r�|d k�sT|�d ��r\|d ��z|d } t| |�WS|k �r�}z"|tjk�r��|d ||f��W5d}~XYnX|j} | dk�r�|d|��z| �|�} Wn2tk �r}z|t |��|�W5d}~XYnX| 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)rr5z:Error while finding module specification for {!r} ({}: {})zNo module named %s�__main__z .__main__z%Cannot use package as __main__ modulez3%s; %r is a package and cannot be directly executedz0%r is a namespace package and cannot be executedzNo code object available for %s)� 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�errorr5�_�eZexistingr@�msg�specZexZ pkg_main_namer-r2rrrrUhsd  �  � ,     � �   rUc@s eZdZdS)�_ErrorN)rrrrrrrr\�sr\Tc Cs�z0|s|dkr t|t�\}}}ntt�\}}}Wn:tk rj}zdtj|f}t�|�W5d}~XYnXtjdj}|r�|jtj d<t ||dd|�S)NrAz%s: %sr) rUr\�_get_main_module_detailsr� executable�exitrr9r.r%r8)rZ alter_argvr4r2�excrZZ main_globalsrrr�_run_module_as_main�s   �raFcCs@t|�\}}}|dkr|}|r,t||||�St|i|||�SdSr)rUr=r8)rr3�run_nameZ alter_sysr4r2rrrr�s c Cs�d}tj|}tj|=z\zt|�WW�NStk rn}z*|t|�kr\|d|tjdf�|��W5d}~XYnXW5|tj|<XdS)NrAzcan't find %r module in %rr)rrrUrE�str�path)rWZ main_nameZ saved_mainr`rrrr]�s   ��r]c Csftj�t�|��}t�|��}t|�}W5QRX|dkr^t�|��}t|��|d�}W5QRX||fS)Nr1) �osrd�abspath�fsdecode�io� open_coder�compile�read)rbr7Z decoded_path�fr2rrr�_get_code_from_file�s  rmc Cs$|dkr d}|�d�d}t|�}d}t|�jdkrFt|�jdkrFd}t|td��sX|rxt||�\}}t|||||d�Stj � d|�znt �\}} }t|��P} t|��<| jj} t|| ||| |���W5QR�W5QR�W�SQRXW5QRXW5ztj � |�Wnt k �rYnXXdS) Nz r>rFZimpZ NullImporterT)r5r6)rCrrRrr� isinstancermr=rrd�insert�removerQr]rrr r9r8r:) Z path_namer3rbr5ZimporterZis_NullImporterr2r7rr4r;r<rrrr�s< �  ��8rA�z!No module specified for execution)�file)NNNNN)NNNNN)T)NNF)NN)r�importlib.machineryrL�importlib.utilrhr reZpkgutilrr�__all__r!rrr8r=rErU� Exceptionr\rarr]rmrr�lenr%�print�stderrrrrr� sL�� �  : �   1