� w��g�G����dZddlmZddlZddlZddlmZddlmZddl m Z ddl m Z ddl mZmZmZd d lmZd d lmZmZd d lmZd dlmZd dlmZmZmZer ddl m!Z!ddl"m#Z#ej$e%��Z&d1d�Z'd2d�Z( d3d4d�Z) d5d6d#�Z* d7d8d&�Z+Gd'�d(��Z,d)�Z-ed9d*���Z.Gd+�d,ej/��Z0Gd-�d.e��Z1Gd/�d0e��Z2dS):ac Load setuptools configuration from ``pyproject.toml`` files. **PRIVATE MODULE**: API reserved for setuptools internal usage only. To read project metadata, consider using ``build.util.project_wheel_metadata`` (https://pypi.org/project/build/). For simple scenarios, you can also try parsing the file directly with the help of ``tomllib`` or ``tomli``. �)� annotationsN)�Mapping)�contextmanager)�partial)� TracebackType)� TYPE_CHECKING�Any�Callable�)�StrPath)� FileError�InvalidConfigError)�SetuptoolsWarning�)�expand)�_PREVIOUSLY_DEFINED�_MissingDynamic�apply)�Self�� Distribution�filepathr �return�dictc��ddlm}t|d��5}|�|��cddd��S#1swxYwYdS)Nr )�tomllib�rb)� compat.py310r�open�load)rr�files �o/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/setuptools/config/pyprojecttoml.py� load_filer#$s���&�&�&�&�&�&� �h�� � �"���|�|�D�!�!�"�"�"�"�"�"�"�"�"�"�"�"����"�"�"�"�"�"s �9�=�=�config�boolc���ddlm}|j�d��}t |d��r|��� |�|��S#|j$r�}d|j��}|j � d��dkr9t� |��t� |j ��d|j �d �}t|�d |����d�d}~wwxYw) Nr)�_validate_pyprojectztrove-classifier�_disable_downloadzconfiguration error: �`�projectzinvalid pyproject.toml config: �.� )�r'�FORMAT_FUNCTIONS�get�hasattrr(�validate�ValidationError�summary�name�strip�_logger�debug�details� ValueError)r$r� validator�trove_classifier�exr3�errors r"r1r1+s ��2�2�2�2�2�2� �1�5�5�6H�I�I����!4�5�5�-��*�*�,�,�,� :��!�!�&�)�)�)�� � $�:�:�:�6�"�*�6�6�� �7�=�=�� � �� *� *� �M�M�'� "� "� "� �M�M�"�*� %� %� %�<�"�'�<�<�<���E�.�.�W�.�.�/�/�T�9�����:���s�A� C+�%BC&�&C+F�distr�ignore_option_errorsc�H�t|d||��}t|||��S)zeApply the configuration from a ``pyproject.toml`` file into an existing distribution object. T)�read_configuration�_apply)r>rr?r$s r"�apply_configurationrC@s*�� ��$�0D�d� K� K�F� �$��� )� )�)�Tr�Distribution | None�dict[str, Any]c��tj�|��}tj�|��st d|�d����t |��pi}|�di��}|�di��}|�di��}|r|s|siSd|�di��vrt���d|vrt�d� ��|r#|j �|� d |j ��n|� d d ��||d<||d<d |vrt�d� ��t|��5|d|id�}t||��d d d ��n #1swxYwY|r1tj�|��} t|| ||��S|S)a�Read given configuration file and returns options from it as a dict. :param str|unicode filepath: Path to configuration file in the ``pyproject.toml`` format. :param bool expand: Whether to expand directives and other computed values (i.e. post-process the given configuration) :param bool ignore_option_errors: Whether to silently ignore options, values of which could not be resolved (e.g. due to exceptions in directives such as file:, attr:, etc.). If False exceptions are propagated as expected. :param Distribution|None: Distribution object to which the configuration refers. If not given a dummy object will be created and discarded after the configuration is read. This is used for auto-discovery of packages and in the case a dynamic configuration (e.g. ``attr`` or ``cmdclass``) is expanded. When ``expand=False`` this object is simply ignored. :rtype: dict zConfiguration file z does not exist.r*�tool� setuptools�tools� distutilsz[tool.distutils])�subjectNzinclude-package-dataTz ext-modulesz[tool.setuptools.ext-modules])r*rH)�os�path�abspath�isfiler r#r/�_ToolsTypoInMetadata�emit�_ExperimentalConfiguration�include_package_data� setdefault�_ignore_errorsr1�dirname�expand_configuration) rrr?r>�asdict� project_table� tool_table�setuptools_table�subset�root_dirs r"rArALs;��6�w���x�(�(�H� �7�>�>�(� #� #�L��J�h�J�J�J�K�K�K� �x� � � &�B�F��J�J�y�"�-�-�M����F�B�'�'�J�!�~�~�l�B�7�7�� ��-��+;��� ��v�z�z�'�2�.�.�.�.��!�!�#�#�#��j� � �"�'�'�0B�'�C�C�C�  �B��)�5��#�#�$:�D�<U�V�V�V�V��#�#�$:�D�A�A�A��F�6�N�/�J�|���(�(�(�"�'�'�0O�'�P�P�P� �,� -� -�#�#�*�\�CS�4T�U�U�����"�"�"�#�#�#�#�#�#�#�#�#�#�#����#�#�#�#� �R��7�?�?�8�,�,��#�F�H�6J�D�Q�Q�Q� �Ms�0F�F�Fr^�StrPath | Nonec�J�t||||�����S)a�Given a configuration with unresolved fields (e.g. dynamic, cmdclass, ...) find their final values. :param dict config: Dict containing the configuration for the distribution :param str root_dir: Top-level directory for the distribution/project (the same directory where ``pyproject.toml`` is place) :param bool ignore_option_errors: see :func:`read_configuration` :param Distribution|None: Distribution object to which the configuration refers. If not given a dummy object will be created and discarded after the configuration is read. Used in the case a dynamic configuration (e.g. ``attr`` or ``cmdclass``). :rtype: dict )�_ConfigExpanderr)r$r^r?r>s r"rXrX�s%��( �6�8�-A�4� H� H� O� O� Q� Q�QrDc��eZdZ d+d,d �Zd-d�Zd.d�Zd/d�Zd�Zd�Zd�Z d0d�Z d1d�Z d2d�Z d3d!�Z d4d"�Zd1d#�Zd5d%�Zd6d'�Zd7d(�Zd7d)�Zd7d*�ZdS)8raNFr$rr^r_r?r%r>rEr�Nonec��||_|ptj��|_|�di��|_|j�dg��|_|�di���di��|_|j�di��|_||_ ||_ tt��|_ dS)Nr*�dynamicrHrI)r$rM�getcwdr^r/� project_cfgre�setuptools_cfg� dynamic_cfgr?�_dist�set�str�_referenced_files)�selfr$r^r?r>s r"�__init__z_ConfigExpander.__init__�s����� � �/�B�I�K�K�� �!�:�:�i��4�4����'�+�+�I�r�:�:�� �$�j�j���4�4�8�8��r�J�J����.�2�2�9�b�A�A���$8��!��� �!$�S�������rDrc�x�ddlm}|j|j�dd��d�}|jp ||��S)Nrrr4)�src_rootr4)�setuptools.distrr^rgr/rj)rnr�attrss r"� _ensure_distz_ConfigExpander._ensure_dist�sN��0�0�0�0�0�0�!�]�D�4D�4H�4H��QU�4V�4V�W�W���z�0�\�\�%�0�0�0rD� container�fieldrl�fnr c��||vrCt|j��5|||��||<ddd��dS#1swxYwYdSdS�N)rVr?)rnrurvrws r"�_process_fieldz_ConfigExpander._process_field�s��� �I� � ��� 9�:�:� 8� 8�#%�2�i��&6�#7�#7� �%� � 8� 8� 8� 8� 8� 8� 8� 8� 8� 8� 8� 8���� 8� 8� 8� 8� 8� 8� � s �;�?�?� package-datac�`�|j�|i��}tj|��Sry)rhr/�_expand�canonic_package_data)rnrv� package_datas r"�_canonic_package_dataz%_ConfigExpander._canonic_package_data�s+���*�.�.�u�b�9�9� ��+�L�9�9�9rDc���|���|���|�d��|���}t||j|j��}|5}|j}|���|�|��|� ||��ddd��n #1swxYwY|j � |j ��|j S)Nzexclude-package-data) �_expand_packagesr�rt�_EnsurePackagesDiscoveredrgrh� package_dir�_expand_data_files�_expand_cmdclass�_expand_all_dynamicrm�updater$)rnr>�ctx�ensure_discoveredr�s r"rz_ConfigExpander.expand�s&�� ������ �"�"�$�$�$� �"�"�#9�:�:�:�� � �"�"��'��d�.>��@S�T�T�� � 8�%�+�7�K� � #� #� %� %� %� � !� !�+� .� .� .� � $� $�T�;� 7� 7� 7�  8� 8� 8� 8� 8� 8� 8� 8� 8� 8� 8���� 8� 8� 8� 8� ��%�%�d�&<�=�=�=��{�s�/AC�C� Cc��|j�d��}|�t|ttf��rdS|�d��}t|t ��rp|j|d<|j�di��|d<t|j ��5tj di|��|jd<ddd��dS#1swxYwYdSdS)N�packages�findr^� package-dir�fill_package_dir�) rhr/� isinstance�list�tuplerr^rUrVr?r}� find_packages)rnr�r�s r"r�z _ConfigExpander._expand_packages�s8���&�*�*�:�6�6�� � �z�(�T�5�M�B�B� � �F��|�|�F�#�#�� �d�D� !� !� P�#�}�D�� �'+�':�'E�'E�m�UW�'X�'X�D�#� $��� 9�:�:� P� P�29�2G�2O�2O�$�2O�2O��#�J�/� P� P� P� P� P� P� P� P� P� P� P� P���� P� P� P� P� P� P� P� Ps�!C�C �C c�~�ttj|j���}|�|jd|��dS)N)r^z data-files)rr}�canonic_data_filesr^rzrh)rn� data_filess r"r�z"_ConfigExpander._expand_data_files�s:���W�7�$�-�P�P�P� � ���D�/��z�J�J�J�J�JrDr��Mapping[str, str]c��|j}ttj||���}|�|jd|��dS)N)r�r^�cmdclass)r^rr}r�rzrh)rnr�r^r�s r"r�z _ConfigExpander._expand_cmdclass�sA���=���7�+��x�X�X�X�� ���D�/��X�F�F�F�F�FrDc �������d�����fd��jD��}|�������pi�����������������������������d�|���D��}�j �|��dS)N)�version�readme� entry-points�scripts� gui-scripts� classifiers� dependencies�optional-dependenciesc�H��i|]}|�v�|���|�����Sr�)�_obtain)�.0rvr>r�rn�specials ����r"� <dictcomp>z7_ConfigExpander._expand_all_dynamic.<locals>.<dictcomp>�s@��� � � ���G�#�#� �4�<�<��e�[�9�9�#�#�#rD)r�r�r�r��optional_dependenciesc��i|] \}}|�||�� Sryr�)r��k�vs r"r�z7_ConfigExpander._expand_all_dynamic.<locals>.<dictcomp>s��N�N�N�D�A�q�� �1�a� � � rD) rer��_obtain_entry_points�_obtain_version�_obtain_readme�_obtain_classifiers�_obtain_dependencies�_obtain_optional_dependencies�itemsrg)rnr>r��obtained_dynamic�updatesr�s``` @r"r�z#_ConfigExpander._expand_all_dynamic�s������  �� � � � � � � ��� � � �� ��� � %� %�d�K� 8� 8� >�B��(�(��{�;�;��&�&�t�,�,��0�0��6�6��2�2�4�8�8�"&�"D�"D�T�"J�"J� � � � �O�N�$4�$:�$:�$<�$<�N�N�N�� �����(�(�(�(�(rDc�p�t||��}|�|jsd|�d�}t|���dSdS)Nz#No configuration found for dynamic z�. Some dynamic fields need to be specified via `tool.setuptools.dynamic` others must be specified via the equivalent attribute in `setup.py`.)rr?r)rnr>rv�previous�msgs r"�_ensure_previously_setz&_ConfigExpander._ensure_previously_sets_��&�u�-�d�3�3�� � �D�$=� �Y�e�Y�Y�Y� � %�S�)�)� )� � � � rD� specifierc��ddlm}t|j��5|j}d|vrP|j�||d����tj|d|��cddd��Sd|vr(tj |d||��cddd��Std|�d|�����#1swxYwYdS)Nr)�always_iterabler!�attrz invalid `z`: ) �more_itertoolsr�rVr?r^rmr�r}� read_files� read_attrr9)rnr�� directiver�r�r^s r"�_expand_directivez!_ConfigExpander._expand_directives\�� 3�2�2�2�2�2� �D�5� 6� 6� F� F��}�H���"�"��&�-�-�o�o�i��>O�.P�.P�Q�Q�Q��)�)�F�*;�X�F�F�  F� F� F� F� F� F� F� F� ��"�"��(��6�):�K��R�R�  F� F� F� F� F� F� F� F��D��D�D�y�D�D�E�E� E� F� F� F� F���� F� F� F� F��ts�AB8�7B8�#B8�8B<�?B<c��||jvr%|�d|��|j||��S|�||��dS)Nztool.setuptools.dynamic.)rir�r�)rnr>rvr�s r"r�z_ConfigExpander._obtain*s^�� �D�$� $� $��)�)�2�5�2�2�� ��'���� � �#�#�D�%�0�0�0��trDc�|�d|jvr2d|jvr)tj|�|d|����SdS)Nr�)rerir}r�r�)rnr>r�s r"r�z_ConfigExpander._obtain_version4sJ�� �� � $� $��d�6F�)F�)F��?�� � �T�9�k�:�:��� ��trD�dict[str, str] | Nonec���d|jvrdS|j}d|vr4|�|di��|d�dd��d�S|�|d��dS)Nr�� content-typez text/x-rst)�textr�)rerir�r/r�)rnr>ris r"r�z_ConfigExpander._obtain_readme=s��� �4�<� '� '��4��&� � �{� "� "�� � �T�8�R�8�8� +�H� 5� 9� 9�.�,� W� W��� � �#�#�D�(�3�3�3��trD� dict[str, dict[str, Any]] | Nonec������d}t�fd�|D����sdS��|d|��}|�dStj|���d�i�d ���fd� }|dd ��|d d ���S) N)r�r�r�c3�*�K�|] }|�jvV��dSry)re)r�rvrns �r"� <genexpr>z7_ConfigExpander._obtain_entry_points.<locals>.<genexpr>Ps*�����=�=�U�5�D�L�(�=�=�=�=�=�=rDr�rvrl�groupc���|�vrG��|��}|�jvr"ttj||�����|�|<dSdSry)�poprerrr8)rvr��value�expanded�groupsrns ���r"� _set_scriptsz:_ConfigExpander._obtain_entry_points.<locals>._set_scripts[sY�������� � �5�)�)���� �,�,�,�_�-D�U�E�-R�-R�S�S�S�"'������ �rDr��console_scriptsr�� gui_scripts)rvrlr�rl)�anyr�r}� entry_points)rnr>r��fieldsr�r�r�r�s` @@r"r�z$_ConfigExpander._obtain_entry_pointsLs������<���=�=�=�=�f�=�=�=�=�=� ��4��|�|�D�.�+�>�>�� �<��4��%�d�+�+��/=�v�.F�� (� (� (� (� (� (� (� (� � �Y� 1�2�2�2�� �]�M�2�2�2��rDc�r�d|jvr-|�|di��}|r|���SdS)Nr�)rer�� splitlines�rnr>r�s r"r�z#_ConfigExpander._obtain_classifiersgsC�� �D�L� (� (��L�L��}�b�9�9�E�� *��'�'�)�)�)��trDc�h�d|jvr(|�|di��}|rt|��SdS)Nr�)rer��_parse_requirements_listr�s r"r�z$_ConfigExpander._obtain_dependenciesns?�� �T�\� )� )��L�L��~�r�:�:�E�� 7�/��6�6�6��trDc����d�jvrdSd�jvrD�jd}t|t��sJ��fd�|���D��S��|d��dS)Nr�c �f��i|]-\}}|t��d|��|i������.S)z.tool.setuptools.dynamic.optional-dependencies.)r�r�)r�r�r�rns �r"r�zA_ConfigExpander._obtain_optional_dependencies.<locals>.<dictcomp>{s`��� � � �%�E�9��/��*�*�P��P�P�!������ � � rD)rerir�rr�r�)rnr>�optional_dependencies_maps` r"r�z-_ConfigExpander._obtain_optional_dependenciesus���� "�$�,� 6� 6��4� "�d�&6� 6� 6�(,�(8�9P�(Q� %��7��>�>� >� >�>� � � � �)B�(G�(G�(I�(I� � � � � �#�#�D�*A�B�B�B��trD�NFN) r$rr^r_r?r%r>rErrc)rr)rurrvrlrwr )r{)r�r�)r>rr�r�)r>rrvrl)r�rlr�r�)r>rrvrlr�r�)r>rrr�)r>rr�r�rr�)r>r)�__name__� __module__� __qualname__rortrzr�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�rDr"rara�s�������$(�%*�$(� ,�,�,�,�,�"1�1�1�1� 8�8�8�8� :�:�:�:����" P� P� P�K�K�K�G�G�G�G� )�)�)�)�<*�*�*�*� � � � ��������� � � � �����6�������������rDrac�>�d�|���D��S)Nc��g|]?}|����|����d���=|��@S)�#)r5� startswith)r��lines r"� <listcomp>z,_parse_requirements_list.<locals>.<listcomp>�sV�� � � � � �:�:�<�<� �!%� � � � � 7� 7�� <� <� � � � � rD)r�)r�s r"r�r��s/�� � ��$�$�&�&� � � �rDc#�K�|sdV�dS dV�dS#t$r5}t�d|jj�d|����Yd}~dSd}~wwxYw)Nzignored error: z - )� Exceptionr6r7� __class__r�)r?r<s r"rVrV�s����� �� ������H� ������� �H�H�H�� � �F�� �(=�F�F�"�F�F�G�G�G�G�G�G�G�G�G�����H���s�� A�*A � Ac�8��eZdZd�fd� Zd�fd � Zd�fd� Z�xZS)r�� distributionrrgrrhrrcc�f��t���|��||_||_dSry)�superro� _project_cfg�_setuptools_cfg)rnr�rgrhr�s �r"roz"_EnsurePackagesDiscovered.__init__�s3��� ������&�&�&�'���-����rDrc����|j|j}}|�di��}|�|jpi��||_|j���|jj�$|j � d��|j_|j �|� d��|_ |j �|� d��|_ t�����S)z�When entering the context, the values of ``packages``, ``py_modules`` and ``package_dir`` that are missing in ``dist`` are copied from ``setuptools_cfg``. r�Nr4� py-modulesr�)rjr�rUr�r�� set_defaults�_ignore_ext_modules�metadatar4r�r/� py_modulesr�r�� __enter__)rnr>�cfgr�r�s �r"r�z#_EnsurePackagesDiscovered.__enter__�s�����J�� 4�c��&)�n�n�]�B�&G�&G� ����4�+�1�r�2�2�2�&��� ��-�-�/�/�/� �=� � %�!%�!2�!6�!6�v�!>�!>�D�M� � �?� "�!�g�g�l�3�3�D�O� �=� ��G�G�J�/�/�D�M��w�w� � �"�"�"rD�exc_type�type[BaseException] | None� exc_value�BaseException | None� traceback�TracebackType | Nonec����|j�d|jj��|j�d|jj��t ���|||��S)z�When exiting the context, if values of ``packages``, ``py_modules`` and ``package_dir`` are missing in ``setuptools_cfg``, copy from ``dist``. r�r�)r�rUrjr�r�r��__exit__)rnr�r�rr�s �r"rz"_EnsurePackagesDiscovered.__exit__�s]��� ��'�'� �D�J�4G�H�H�H� ��'�'� �d�j�6K�L�L�L��w�w����)�Y�?�?�?rD)r�rrgrrhrrrc)rr)r�r�r�r�rrrrc)r�r�r�ror�r� __classcell__)r�s@r"r�r��s��������.�.�.�.�.�.�#�#�#�#�#�#�, @� @� @� @� @� @� @� @� @� @rDr�c��eZdZdZdS)rSz``{subject}` in `pyproject.toml` is still *experimental* and likely to change in future releases.N�r�r�r��_SUMMARYr�rDr"rSrS�s������ 3� �H�HrDrSc��eZdZdZdS)rQzNIgnoring [tools.setuptools] in pyproject.toml, did you mean [tool.setuptools]?Nrr�rDr"rQrQ�s������X� �H�HrDrQ)rr rr)r$rrr rr%)F)r>rrr r?r%rr)TFN) rr rr%r?r%r>rErrFr�) r$rr^r_r?r%r>rErr)r?r%)3�__doc__� __future__r�loggingrM�collections.abcr� contextlibr� functoolsr�typesr�typingrr r �_pathr �errorsr r�warningsrr-rr}�_apply_pyprojecttomlrrrrB�typing_extensionsrrrr� getLoggerr�r6r#r1rCrArXrar�rV�EnsurePackagesDiscoveredr�rSrQr�rDr"�<module>rs��� � �#�"�"�"�"�"����� � � � �#�#�#�#�#�#�%�%�%�%�%�%�������������/�/�/�/�/�/�/�/�/�/�������2�2�2�2�2�2�2�2�(�(�(�(�(�(�������W�W�W�W�W�W�W�W�W�W��-�&�&�&�&�&�&�,�,�,�,�,�,� �'� �H� %� %��"�"�"�"�:�:�:�:�0"'� *� *� *� *� *��!&� $� F�F�F�F�F�V $�!&� $� R�R�R�R�R�.Z�Z�Z�Z�Z�Z�Z�Z�z����H�H�H���H�*@�*@�*@�*@�*@�� @�*@�*@�*@�Z�����!2���������,�����rD
Memory