
    i,#              	         d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZmZ ej                            ej                            ej                            ej                            e                    dd          xZej        vegz             ej                            d	d           ddlZd
dlmZmZ d
dlmZ d
dlmZmZ d
dl m!Z! d
dl"m#Z# d
dl$m%Z% d
dl&m'Z' ddl(Z)g dZ* edd          Z+dZ,ej-        Z.ej-        Z/d Z0d"dZ1d Z2e)j3        j2        j         e2_         erddl(m4Z5 n ej6        e)j3        j4                  Z5 G d de5          Z4d Z7ej8        fdZ9 G d  d!e:          Z; ej<                     dS )#z@Extensions to the 'distutils' for large or complex distributions    )annotationsN)abstractmethod)Mapping)TYPE_CHECKINGTypeVaroverload
setuptools_vendor	backports   )loggingmonkey)Require)PackageFinderPEP420PackageFinder)Distribution)	Extension)__version__)SetuptoolsDeprecationWarning)setupr   Commandr   r   r   find_packagesfind_namespace_packages	_CommandT_Command)boundc                     G d dt           j        j                  } ||           }|                    d           |j        rt          |           d S d S )Nc                  6     e Zd ZdZd
 fdZd fd	Zd	 Z xZS )4_install_setup_requires.<locals>.MinimalDistributionzl
        A minimal version of a distribution for supporting the
        fetch_build_eggs interface.
        attrsMapping[str, object]returnNonec                    d}fdt          |          t                    z  D             }t                                          |           | j                                         d S )N)dependency_linkssetup_requiresc                "    i | ]}||         S  r(   ).0kr    s     K/srv/django_bis/venv311/lib/python3.11/site-packages/setuptools/__init__.py
<dictcomp>zQ_install_setup_requires.<locals>.MinimalDistribution.__init__.<locals>.<dictcomp>?   s    EEE58EEE    )setsuper__init__set_defaults_disable)selfr    _inclfiltered	__class__s    `  r+   r0   z=_install_setup_requires.<locals>.MinimalDistribution.__init__=   sf    8EEEEESZZ#e**-DEEEHGGX&&&&&(((((r-   Nc                    	 t                                          |          \  }}n# t          $ r |dfcY S w xY w|dfS )zAIgnore ``pyproject.toml``, they are not related to setup_requiresr(   )r/    _split_standard_project_metadata	Exception)r3   	filenamescfg_tomlr6   s       r+   _get_project_config_fileszN_install_setup_requires.<locals>.MinimalDistribution._get_project_config_filesD   sY    %"WWEEiPP
UU % % % "}$$$%7Ns   $( 99c                    dS )zl
            Disable finalize_options to avoid building the working set.
            Ref #2158.
            Nr(   r3   s    r+   finalize_optionszE_install_setup_requires.<locals>.MinimalDistribution.finalize_optionsL   s      r-   )r    r!   r"   r#   N)__name__
__module____qualname____doc__r0   r=   r@   __classcell__r6   s   @r+   MinimalDistributionr   7   st        	 	
	) 	) 	) 	) 	) 	)	 	 	 	 	 		 	 	 	 	 	 	r-   rH   T)ignore_option_errors)	distutilscorer   parse_config_filesr&   _fetch_build_eggs)r    rH   dists      r+   _install_setup_requiresrO   4   s        in9   6 u%%D 	666  $   r-   rN   r   c                    	 |                      | j                   d S # t          $ rU}d}d|j        j        v r?t          |d          r|                    |           n|                     d| d            d }~ww xY w)Na  
        It is possible a package already installed in your system
        contains an version that is invalid according to PEP 440.
        You can try `pip install --use-pep517` as a workaround for this problem,
        or rely on a new virtual environment.

        If the problem refers to a package that is not installed yet,
        please contact that package's maintainers or distributors.
        InvalidVersionadd_note
)fetch_build_eggsr&   r9   r6   rB   hasattrrR   announce)rN   exmsgs      r+   rM   rM   Z   s    d122222    r|444r:&& ,C    l3lll+++s    
A=AA88A=c                 r    t          j                     t          |            t          j        j        di | S )Nr(   )r   	configurerO   rJ   rK   r   )r    s    r+   r   r   o   s8    E""">((%(((r-   )r   c                       e Zd ZU dZdZded<   d fdZe	 ddd            Ze	 ddd            Z	 dddZe	dd            Z
e	dd            Ze	dd            Z xZS )r   a#  
    Setuptools internal actions are organized using a *command design pattern*.
    This means that each action (or group of closely related actions) executed during
    the build should be implemented as a ``Command`` subclass.

    These commands are abstractions and do not necessarily correspond to a command that
    can (or should) be executed via a terminal, in a CLI fashion (although historically
    they would).

    When creating a new command from scratch, custom defined classes **SHOULD** inherit
    from ``setuptools.Command`` and implement a few mandatory methods.
    Between these mandatory methods, are listed:
    :meth:`initialize_options`, :meth:`finalize_options` and :meth:`run`.

    A useful analogy for command classes is to think of them as subroutines with local
    variables called "options".  The options are "declared" in :meth:`initialize_options`
    and "defined" (given their final values, aka "finalized") in :meth:`finalize_options`,
    both of which must be defined by every command class. The "body" of the subroutine,
    (where it does all the work) is the :meth:`run` method.
    Between :meth:`initialize_options` and :meth:`finalize_options`, ``setuptools`` may set
    the values for options/attributes based on user's input (or circumstance),
    which means that the implementation should be careful to not overwrite values in
    :meth:`finalize_options` unless necessary.

    Please note that other commands (or other parts of setuptools) may also overwrite
    the values of the command's options/attributes multiple times during the build
    process.
    Therefore it is important to consistently implement :meth:`initialize_options` and
    :meth:`finalize_options`. For example, all derived attributes (or attributes that
    depend on the value of other attributes) **SHOULD** be recomputed in
    :meth:`finalize_options`.

    When overwriting existing commands, custom defined classes **MUST** abide by the
    same APIs implemented by the original class. They also **SHOULD** inherit from the
    original class.
    Fr   distributionrN   r"   r#   c                    t                                          |           t          |                               |           dS )zj
        Construct the command for dist, updating
        vars(self) with any keyword parameters.
        N)r/   r0   varsupdate)r3   rN   kwr6   s      r+   r0   zCommand.__init__   s=    
 	T

"r-   commandstrreinit_subcommandsboolr   c                    d S rA   r(   r3   ra   rc   r`   s       r+   reinitialize_commandzCommand.reinitialize_command   s	     3r-   r   c                    d S rA   r(   rf   s       r+   rg   zCommand.reinitialize_command   s	     Cr-   str | _Commandc                v    t          j        | ||          }t          |                              |           |S rA   )r   rg   r^   r_   )r3   ra   rc   r`   cmds        r+   rg   zCommand.reinitialize_command   s8     +D';MNNS		
r-   c                    t           )z
        Set or (reset) all options/attributes/caches used by the command
        to their default values. Note that these values may be overwritten during
        the build.
        NotImplementedErrorr?   s    r+   initialize_optionszCommand.initialize_options   
     "!r-   c                    t           )z
        Set final values for all options/attributes used by the command.
        Most of the time, each option/attribute/cache should only be set if it does not
        have any value yet (e.g. ``if self.attr is None: self.attr = val``).
        rm   r?   s    r+   r@   zCommand.finalize_options   rp   r-   c                    t           )z
        Execute the actions intended by the command.
        (Side effects **SHOULD** only take place when :meth:`run` is executed,
        for example, creating new files or writing to the terminal output).
        rm   r?   s    r+   runzCommand.run   rp   r-   )rN   r   r"   r#   )F)ra   rb   rc   rd   r"   r   )ra   r   rc   rd   r"   r   )ra   ri   rc   rd   r"   r   )r"   r#   )rB   rC   rD   rE   command_consumes_arguments__annotations__r0   r   rg   r   ro   r@   rs   rF   rG   s   @r+   r   r      s.        # #J "'      7<    X =B    X CH     " " " ^" " " " ^" " " " ^" " " " "r-   r   c                    d t          j        | d          D             }t          t           j        j        |          S )z%
    Find all files under 'path'
    c              3  h   K   | ]-\  }}}|D ]$}t           j                            ||          V  %.d S rA   )ospathjoin)r)   basedirsfilesfiles        r+   	<genexpr>z#_find_all_simple.<locals>.<genexpr>   sc        D$   	T4        r-   T)followlinks)rx   walkfilterry   isfile)ry   resultss     r+   _find_all_simpler      sE     !#4!@!@!@  G
 "'.'***r-   c                    t          |           }| t          j        k    r5t          j        t          j        j        |           }t          ||          }t          |          S )z
    Find all files under 'dir' and return the list of full filenames.
    Unless dir is '.', return full filenames with dir prepended.
    )start)	r   rx   curdir	functoolspartialry   relpathmaplist)dirr}   make_rels      r+   findallr      sR    
 S!!E
bi$RW_C@@@He$$;;r-   c                      e Zd ZdZdS )sicz;Treat this string as-is (https://en.wikipedia.org/wiki/Sic)N)rB   rC   rD   rE   r(   r-   r+   r   r      s        EEEEr-   r   )rN   r   )=rE   
__future__r   r   rx   sysabcr   collections.abcr   typingr   r   r   ry   extendrz   dirname__file__vendor_pathmodulespop_distutils_hack.override_distutils_hack r   r   dependsr   	discoveryr   r   rN   r   	extensionr   versionr   warningsr   distutils.corerJ   __all__r   bootstrap_install_fromfindr   r   rO   rM   r   rK   r   r   get_unpatchedr   r   r   rb   r   	patch_allr(   r-   r+   <module>r      s   F F # " " " " "     				 



       # # # # # # 3 3 3 3 3 3 3 3 3 3 bgoobgooh>W>W.X.XZfhq!r!rr+{~  |D  D  IT  HU  U  V  V  V T " " "                   9 9 9 9 9 9 9 9                   / / / / / / 2 2 2 2 2 2    	 	 	 GKz222	 "-2 #  #  # L   *) ) ) $, <2222222#v#IN$:;;HY" Y" Y" Y" Y"h Y" Y" Y"x	+ 	+ 	+ 	 	 	 	 	F F F F F# F F F
       r-   