� ,�Re,��N�ddlZddlZddlZddlZddlZddlZddlZejd���Zejddefd���Z d�Z ejej fd���Z ejdde fd���Z ejd���ZGd �d ��ZGd �d ejej��ZdS) �Nc#�K�tj��}tj|�� |V�tj|��dS#tj|��wxYw�N)�os�getcwd�chdir)�dir�origs ��/builddir/build/BUILDROOT/alt-python311-setuptools-65.6.3-2.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/setuptools/_vendor/jaraco/context.py�pushdr sO���� �9�;�;�D��H�S�M�M�M��� � � � ������������������s �A�Ac #�K�|�Gtj�|���dd���dd��}|� t jt jd���}|djd it������ d}d }d � ||f��}||jd d t|��it������||��5|V�ddd��n #1swxYwY|d jd it������dS#|d jd it������wxYw)z� Get a tarball, extract it, change to that directory, yield, then clean up. `runner` is the function to invoke commands. `pushd` is a context manager for changing the directory. Nz.tar.gz�z.tgzT)�shellzmkdir {target_dir}zwget {url} -O -z7tar x{compression} --strip-components=1 -C {target_dir}z | � compressionzrm -Rf {target_dir}�) r�path�basename�replace� functools�partial� subprocess� check_call�format�vars�join�infer_compression)�url� target_dir�runnerr �getter�extract�cmds r �tarball_contextr"s��������W�%�%�c�*�*�2�2�9�b�A�A�I�I�&�RT�U�U� � �~��"�:�#8��E�E�E��  �F� &� � &� 0� 0���� 0� 0�1�1�1�7�"��K���j�j�&�'�*�+�+����z�s�z�G�G�&7��&<�&<�G����G�G�H�H�H� �U�:� � � � �� � � � � � � � � � � � � � ���� � � � � ��+�$�+�5�5�d�f�f�5�5�6�6�6�6�6����+�$�+�5�5�d�f�f�5�5�6�6�6�6���s1�AD(�(C9�- D(�9C=�=D(�C=�D(�($E c�f�|dd�}tddd���}|�|d��S)zF Given a URL or filename, infer the compression code for tar. �����N�z�j�J)�gz�bz�xz)�dict�get)r�compression_indicator�mappings r rr0s;��  ����H���c�c�c�*�*�*�G� �;�;�,�c� 2� 2�2�c#�pK�tj��} |V�||��dS#||��wxYw)zk Create a temporary directory context. Pass a custom remover to override the removal behavior. N)�tempfile�mkdtemp)�remover�temp_dirs r r4r4;sP���� ��!�!�H������������������������s�(� 5Tc#�K�d|vrdnd}|��5}|d||g}|r|�d|g��ttjjd��}|r|nd}t j||���|V�ddd��dS#1swxYwYdS)z� Check out the repo indicated by url. If dest_ctx is supplied, it should be a context manager to yield the target directory for the check out. �git�hg�clonez--branch�wN)�stdout)�extend�openrr�devnullrr) r�branch�quiet�dest_ctx�exe�repo_dirr!r=r:s r � repo_contextrCHs������C�<�<�%�%�T�C� �����x��G�S�(�+�� � -� �J�J� �F�+� ,� ,� ,��r�w���,�,��!�+���t����c�&�1�1�1�1�������������������������s�AB�B�Bc#�K�dV�dSrrrr/r �nullrE[s���� �E�E�E�E�Er/c��eZdZdZdZeffd�Zd�Zed���Z ed���Z ed���Z d�Z d �Z ed �d �Zd �Zd S)� ExceptionTrapaG A context manager that will catch certain exceptions and provide an indication they occurred. >>> with ExceptionTrap() as trap: ... raise Exception() >>> bool(trap) True >>> with ExceptionTrap() as trap: ... pass >>> bool(trap) False >>> with ExceptionTrap(ValueError) as trap: ... raise ValueError("1 + 1 is not 3") >>> bool(trap) True >>> with ExceptionTrap(ValueError) as trap: ... raise Exception() Traceback (most recent call last): ... Exception >>> bool(trap) False )NNNc��||_dSr)� exceptions)�selfrIs r �__init__zExceptionTrap.__init__�s ��$����r/c��|Srr�rJs r � __enter__zExceptionTrap.__enter__�s��� r/c��|jdS�Nr��exc_inforMs r �typezExceptionTrap.type�����}�Q��r/c��|jdS)N�rQrMs r �valuezExceptionTrap.value�rTr/c��|jdS)N�rQrMs r �tbzExceptionTrap.tb�rTr/c�V�|d}|ot||j��}|r||_|SrP)� issubclassrIrR)rJrRrS�matchess r �__exit__zExceptionTrap.__exit__�s5����{���<�:�d�D�O�<�<�� � %�$�D�M��r/c�*�t|j��Sr)�boolrSrMs r �__bool__zExceptionTrap.__bool__�s���D�I���r/��_testc�N����tj������fd���}|S)a� Wrap func and replace the result with the truth value of the trap (True if an exception occurred). First, give the decorator an alias to support Python 3.8 Syntax. >>> raises = ExceptionTrap(ValueError).raises Now decorate a function that always fails. >>> @raises ... def fail(): ... raise ValueError('failed') >>> fail() True c���t�j��5}�|i|��ddd��n #1swxYwY�|��Sr)rGrI)�args�kwargs�traprc�funcrJs ���r �wrapperz%ExceptionTrap.raises..wrapper�s�����t��/�/� &�4���d�%�f�%�%�%� &� &� &� &� &� &� &� &� &� &� &���� &� &� &� &��5��;�;� s � +�/�/)r�wraps)rJrircrjs``` r �raiseszExceptionTrap.raises�sF�����& ��� � � � � � � � � � � � �r/c�D�|�|tj���S)a� Wrap func and replace the result with the truth value of the trap (True if no exception). First, give the decorator an alias to support Python 3.8 Syntax. >>> passes = ExceptionTrap(ValueError).passes Now decorate a function that always fails. >>> @passes ... def fail(): ... raise ValueError('failed') >>> fail() False rb)rl�operator�not_)rJris r �passeszExceptionTrap.passes�s��&�{�{�4�x�}�{�5�5�5r/N)�__name__� __module__� __qualname__�__doc__rR� ExceptionrKrN�propertyrSrWrZr^rar`rlrprr/r rGrG`s���������: �H�#,�,�%�%�%�%����� � ��X� �� � ��X� �� � ��X� �������%)������66�6�6�6�6r/rGc��eZdZdZdS)�suppressz� A version of contextlib.suppress with decorator support. >>> @suppress(KeyError) ... def key_error(): ... {}[''] >>> key_error() N)rqrrrsrtrr/r rxrx�s���������r/rx)rr� contextlibrr1�shutilrn�contextmanagerr r"r�rmtreer4rCrErGrx�ContextDecoratorrr/r �r~s��� � � � ����������������� � � � ����� ������� ��$(��U�7�7�7���7�63�3�3� ���]� � � ��� � ��!���������$ �� � ��� �j6�j6�j6�j6�j6�j6�j6�j6�Z�����z�"�J�$?�����r/