�
,�Re � �p � d dl Z d dlmZ d dlZej j Z G d� d� � Z G d� de� � ZdS )� N)�logc �X � e Zd ZdZd� Zd� Zd� ZdZ dZ d� Z d� Z
d � Zed
� � � Z
dS )� Installerz
-nspkg.pthc �� � | � � � }|sd S t j � | � � � � � \ }}|| j z
}| j � |� � t j d|� � t | j |� � }| j rt |� � d S t |d� � 5 }|� |� � d d d � � d S # 1 swxY w Y d S )Nz
Installing %s�wt)�_get_all_ns_packages�os�path�splitext�_get_target� nspkg_ext�outputs�appendr �info�map�_gen_nspkg_line�dry_run�list�open�
writelines)�self�nsp�filename�ext�lines�fs ��/builddir/build/BUILDROOT/alt-python311-setuptools-65.6.3-2.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/setuptools/namespaces.py�install_namespaceszInstaller.install_namespaces
s( � ��'�'�)�)��� ��F���(�(��)9�)9�);�);�<�<�
��#��D�N�"������H�%�%�%����(�+�+�+��D�(�#�.�.���<� ���K�K�K��F�
�(�D�
!�
!� �Q�
�L�L����� � � � � � � � � � � � ���� � � � � � s �C&�&C*�-C*c � � t j � | � � � � � \ }}|| j z
}t j � |� � sd S t
j d|� � t j |� � d S )NzRemoving %s) r r
r r r
�existsr r �remove)r r r s r �uninstall_namespaceszInstaller.uninstall_namespaces sv � ���(�(��)9�)9�);�);�<�<�
��#��D�N�"���w�~�~�h�'�'� ��F�����)�)�)�
� �(������ c � � | j S �N)�target�r s r r zInstaller._get_target' s
� ��{�r# ) zimport sys, types, osz#has_mfs = sys.version_info > (3, 5)z$p = os.path.join(%(root)s, *%(pth)r)z4importlib = has_mfs and __import__('importlib.util')z-has_mfs and __import__('importlib.machinery')z�m = has_mfs and sys.modules.setdefault(%(pkg)r, importlib.util.module_from_spec(importlib.machinery.PathFinder.find_spec(%(pkg)r, [os.path.dirname(p)])))zCm = m or sys.modules.setdefault(%(pkg)r, types.ModuleType(%(pkg)r))z7mp = (m or []) and m.__dict__.setdefault('__path__',[])z(p not in mp) and mp.append(p))z4m and setattr(sys.modules[%(parent)r], %(child)r, m)c � � dS )Nz$sys._getframe(1).f_locals['sitedir']� r' s r � _get_rootzInstaller._get_rootE s � �5�5r# c � � t |� d� � � � }| � � � }| j }|� d� � \ }}}|r
|| j z
}d� |� � t � � z dz S )N�.�;�
)�tuple�splitr* �_nspkg_tmpl�
rpartition�_nspkg_tmpl_multi�join�locals)r �pkg�pth�root�
tmpl_lines�parent�sep�childs r r zInstaller._gen_nspkg_lineH s} � ��C�I�I�c�N�N�#�#���~�~�����%�
� �^�^�C�0�0����U�� 1��$�0�0�J��x�x�
�#�#�f�h�h�.��5�5r# c �| � | j j pg }t t t | j |� � � � � � S )z,Return sorted list of all package namespaces)�distribution�namespace_packages�sorted�flattenr �
_pkg_names)r �pkgss r r zInstaller._get_all_ns_packagesQ s4 � �� �3�9�r���g�c�$�/�4�8�8�9�9�:�:�:r# c # � K � | � d� � }|r/d� |� � V � |� � � |�-dS dS )z�
Given a namespace package, yield the components of that
package.
>>> names = Installer._pkg_names('a.b.c')
>>> set(names) == set(['a', 'a.b', 'a.b.c'])
True
r, N)r0 r4 �pop)r6 �partss r rB zInstaller._pkg_namesV s` � � � � � � �#����� ��(�(�5�/�/�!�!�!��I�I�K�K�K� � � � � � r# N)�__name__�
__module__�__qualname__r
r r" r r1 r3 r* r r �staticmethodrB r) r# r r r s� � � � � � ��I� � � �$� � �� � ��K�( (��� <�6� 6� 6�6� 6� 6�;� ;� ;�
�� � �\�� � r# r c � � e Zd Zd� Zd� ZdS )�DevelopInstallerc �D � t t | j � � � � S r% )�repr�str�egg_pathr' s r r* zDevelopInstaller._get_rootg s � ��C��
�&�&�'�'�'r# c � � | j S r% )�egg_linkr' s r r zDevelopInstaller._get_targetj s
� ��}�r# N)rG rH rI r* r r) r# r rL rL f s2 � � � � � �(� (� (�� � � � r# rL ) r � distutilsr � itertools�chain�
from_iterablerA r rL r) r# r �