OwlCyberSecurity - MANAGER
Edit File: git.cpython-312.pyc
� ����S;0h�H����������������������������d�dl�Z�d�dlZd�dlZd�dlZd�dlZd�dlZd�dlm Z �d�dl mZmZm Z mZ�d�dlmZmZ�d�dlmZmZmZ�d�dlmZ�d�dlmZmZmZmZmZmZmZ�ej@������������������jB������������������Z!ej@������������������jD������������������Z"�e�jF������������������e$�������Z%�ejL������������������d�������Z'�ejL������������������d �������Z(�ejL������������������d ejR�������������������������Z*de+de,fd �Z-�G�d��de�������Z.�ej^������������������e.��������y)�����N)�replace)�Any�List�Optional�Tuple)� BadCommand�InstallationError)� HiddenText�display_path�hide_url)�make_command)�AuthInfo�RemoteNotFoundError�RemoteNotValidError� RevOptions�VersionControl�(find_path_to_project_root_from_repo_root�vcsz(^git version (\d+)\.(\d+)(?:\.(\d+))?.*$z^[a-fA-F0-9]{40}$a/��^ # Optional user, e.g. 'git@' (\w+@)? # Server, e.g. 'github.com'. ([^/:]+): # The server-side path. e.g. 'user/project.git'. Must start with an # alphanumeric character so as not to be confusable with a Windows paths # like 'C:/foo/bar' or 'C:\foo\bar'. (\w[^:]*) $�sha�returnc������������������>�����t��������t��������j������������������|���������������S��N)�bool� HASH_REGEX�match)r���s��� �D/opt/hc_python/lib/python3.12/site-packages/pip/_internal/vcs/git.py�looks_like_hashr���8���s������� � � ��%�&�&�����c������������ ��������������e�Zd�ZdZdZdZdZdZdZe de dee ���fd ���������Ze d edede f��fd���������Zd e de defd�Zdeedf���fd�Ze de dee ���fd���������Ze de de deee ���ef���fd���������Ze de de defd���������Ze de d ededefd���������Ze de dee ���defd���������Zde d edededdf d�Zde d ededdfd�Zde d ededdfd�Ze de de fd���������Z e d e de fd ���������Z!e de de defd!���������Z"e d)de dee ���de fd"���������Z#e de dee ���fd#���������Z$e d e dee ee ���e%f���f��fd$���������Z&e de ddfd%���������Z'e de dee ���f��fd&���������Z(e d'e defd(���������Z)��xZ*S�)*�Git�gitz.git�clone)zgit+httpz git+httpszgit+sshzgit+gitzgit+file)�GIT_DIR� GIT_WORK_TREE�HEAD�revr���c�����������������������|�gS�r������r&���s��� r����get_base_rev_argszGit.get_base_rev_argsL���s �������u�r����args�kwargsc������������������������t���������j������������������j������������������d�������r!|j������������������di��������}d|d<���d|d<���||d<���t���������|����|i�|��S�)N�PIP_NO_INPUT� extra_environ�0�GIT_TERMINAL_PROMPTzssh -oBatchMode=yes�GIT_SSH_COMMAND)�os�environ�get�super�run_command)�clsr+���r,���r/���� __class__s��� �r���r7���zGit.run_commandP���sX������� �:�:�>�>�.�)�"�J�J���;�M�36�M�/�0�/D�M�+�,�&3�F�?�#��w�"�D�3�F�3�3r����url�destc������������������������|�j������������������t��������|��������������\��}}|j������������������sy|�j������������������||j�������������������������syt ��������|�j������������������||j�������������������������d����������}|�S�)NFr���)�get_url_rev_optionsr���r&����is_commit_id_equalr����get_revision_sha)�selfr:���r;����_�rev_options�is_tag_or_branchs��� r����is_immutable_rev_checkoutzGit.is_immutable_rev_checkoutY���si�������1�1�(�3�-�@���;������&�&�t�[�_�_�=���� �� 5� 5�d�K�O�O� L�Q� O�P��#�#�#r���.c������������������������|�j������������������dgddd��������}t��������j������������������|�������}|st��������j ������������������d|��������yt��������|j ������������������d��������������t��������|j ������������������d ��������������fS�) N�versionzgit versionFT)�command_desc�show_stdout�stdout_onlyzCan't parse git version: %sr(�����������)r7����GIT_VERSION_REGEXr����logger�warning�int�group)r@���rF���r���s��� r����get_git_versionzGit.get_git_versiong���sq�������"�"� �K�&��� �#�� ���"�'�'��0����N�N�8�'�B���E�K�K��N�#�S����Q��%8�9�9r����locationc�����������������������g�d�}|�j������������������|ddd|��������}|j��������������������������}|j������������������d�������r|t��������d�������d�S�y)zl Return the current branch, or None if HEAD isn't at a branch (e.g. detached HEAD). )zsymbolic-ref�-qr%����rJ���FT��extra_ok_returncodesrH���rI����cwdzrefs/heads/N)r7����strip� startswith�len)r8���rR���r+����output�refs��� r����get_current_branchzGit.get_current_brancht���sZ�������.������!%�����!�� ����l�l�n���>�>�-�(��s�=�)�+�,�,�r���c����������������������|�j������������������d|g|ddd��������}i�}|j��������������������������j������������������d�������D�]2��}|j������������������d�������}|s� �|j������������������dd � �������\��}}|||<����4�d|���}d |���} |j������������������|�������} | �| dfS�|j������������������| �������} | dfS�#�t��������$�r�t ��������d|����������w�xY�w)z� Return (sha_or_none, is_branch), where sha_or_none is a commit hash if the revision names a remote branch or tag, otherwise None. Args: dest: the repository directory. rev: the revision name. zshow-refFT�ignore)rX���rH���rI���� on_returncode� � � rK���)�maxsplitzunexpected show-ref line: zrefs/remotes/origin/z refs/tags/)r7���rY����split�rstrip� ValueErrorr5���)r8���r;���r&���r\����refs�line�ref_sha�ref_name� branch_ref�tag_refr���s��� r���r?���zGit.get_revision_sha����s��������� ������"��!�� �������L�L�N�(�(��.�D��;�;�t�$�D��� H�$(�J�J�s�Q�J�$?�!����%�D��N��/��,�C�5�1� ��s�e�$���h�h�z�"���?���;���h�h�w����U�|���!��� H��!�#=�d�X�!F�G�G� H�s����B%�%B=c������������������f�����|j������������������d�������ryt��������|�������sy|�j������������������||�������ryy)a$�� Return true if rev is a ref or is a commit that we don't have locally. Branches and tags are not considered in this method because they are assumed to be always available locally (which is a normal outcome of ``git clone`` and ``git fetch --tags``). zrefs/TF)rZ���r���� has_commit)r8���r;���r&���s��� r���� _should_fetchzGit._should_fetch����s2��������>�>�'�"���s�#���>�>�$��$��r���rB���c����������� �����������|j�������������������}|�J��|�j������������������||�������\��}}|�$|j������������������|�������}t��������||r|nd��������}|S�t ��������|�������st ��������j ������������������d|��������|�j������������������||�������s|S�|�j������������������t��������dd||j���������������������������������|���������|�j������������������|d��������}|j������������������|�������}|S�) z� Resolve a revision to a new RevOptions object with the SHA1 of the branch, tag, or ref if found. Args: rev_options: a RevOptions object. N)�branch_namez:Did not find branch or tag '%s', assuming revision or ref.�fetchrT����rX���� FETCH_HEADr)���)�arg_revr?����make_newr���r���rM���rN���rq���r7���r ����to_args�get_revision)r8���r;���r:���rB���r&���r���� is_branchs��� r����resolve_revisionzGit.resolve_revision����s���������!�!��������-�-�d�C�8���Y��?�%�.�.�s�3�K�!�+�9�C�RV�X�K�����s�#��N�N�L�� � �� � ��s�+���� �����$��[�-@�-@�-B�C��� �� � ����t���6��!�*�*�3�/���r����namec������������������0�����|sy|�j������������������|�������|k(��S�)z� Return whether the current commit hash equals the given name. Args: dest: the repository directory. name: a string name. F)rz���)r8���r;���r}���s��� r���r>���zGit.is_commit_id_equal���s �������������%��-�-r���� verbosityNc������������������`����|j��������������������������}t��������j������������������d||t��������|���������������|dk��rd}n |dk(��rd}nd}|�j ��������������������������dk\��r!|�j������������������t ��������dd g|�|�|������������n|�j������������������t ��������dg|�|�|������������|j������������������r�|�j������������������|||�������}t��������|d d��������}t��������j������������������d||��������|�K|�j������������������||j�������������������������s�t ��������dd |j���������������������������������}|�j������������������||���������nV|�j������������������|�������|k7��rBd|���} dd|d| g}|�j������������������||���������n"|�j������������������|�������} |j������������������| �������}t��������j������������������d||j��������������������������|�j!������������������|��������y�)NzCloning %s%s to %sr���)z--quietrJ���r(���)z --verbosez --progress)rK�������r"���z--filter=blob:noners���zRev options %s, branch_name %s�checkoutrT���ru���zorigin/z-bz--trackzResolved %s to commit %s)� to_displayrM����infor���rQ���r7���r ���r&���r|����getattr�debugr>���ry���r^���rz���rx����update_submodules)r@���r;���r:���rB���r����rev_display�flagsrs����cmd_args�track_branchr���s��� r���� fetch_newz Git.fetch_new��s�������"�,�,�.�����(�#�{�L��<N�O���>�%1�E� �!�^��E�/�E����!�W�,�� �����(������� � ��� �� ���\�'�E�E�E�3�E��E�F��?�?��/�/��c�;�G�K�!�+�}�d�C�K��L�L�9�;��T��"���.�.�t�[�_�_�E�+�"��#�+�+�-� �H� ��$�$�X�4�$�8��(�(��.�+�=��")�� �6������ ����� � ��t� �4��#�#�D�)�C�%�.�.�s�3�K����.��[�_�_�E�� ���t�$r���c�����������������������|�j������������������t��������dd|�������|���������t��������dd|j���������������������������������}|�j������������������||���������|�j������������������|��������y�)N�configzremote.origin.urlru���r����rT���)r7���r ���ry���r�����r@���r;���r:���rB���r����s��� r����switchz Git.switchN��s_�����������#6��<��� �� �� � �D�+�2E�2E�2G�H������t��,����t�$r���c������������������&����|�j��������������������������dk\��r|�j������������������g�d�|���������n|�j������������������ddg|���������|�j������������������|||�������}t��������ddd|j ���������������������������������}|�j������������������||���������|�j������������������|��������y�)N)rJ���� ���)rt���rT���z--tagsru���rt���rT����resetz--hard)rQ���r7���r|���r ���ry���r����r����s��� r����updatez Git.updateX��s����������!�V�+����6�D��A����g�t�_�$��7��+�+�D�#�{�C�����4��9L�9L�9N�O������t��,����t�$r���c������������������"����|�j������������������g�d�ddd|��������}|j��������������������������} �|d���}|D�]��}|j ������������������d�������s�|}�n�|j������������������d�������d ���}|�j ������������������|j���������������������������������S�#�t��������$�r�t���������w�xY�w) z� Return URL of the first remote encountered. Raises RemoteNotFoundError if the repository does not have a remote url configured. )r����z--get-regexpzremote\..*\.urlrU���FTrV���r���zremote.origin.url rd���rJ���)r7���� splitlines� IndexErrorr���rZ���rf����_git_remote_to_pip_urlrY���)r8���rR����stdout�remotes�found_remote�remoter:���s��� r����get_remote_urlzGit.get_remote_urlf��s�����������:�!%�����!�� ����#�#�%�� &�"�1�:�L���F�� � �!5�6�%������� � ��%�a�(���)�)�#�)�)�+�6�6����� &�%�%� &�s����A>��>Bc����������������������t��������j������������������d|��������r|�S�t��������j������������������j ������������������|��������r#t��������j������������������|��������j��������������������������S�t��������j������������������|��������}|r|j������������������d�������S�t��������|���������)a8�� Convert a remote url from what git uses to what pip accepts. There are 3 legal forms **url** may take: 1. A fully qualified url: ssh://git@example.com/foo/bar.git 2. A local project.git folder: /path/to/bare/repository.git 3. SCP shorthand for form 1: git@example.com:foo/bar.git Form 1 is output as-is. Form 2 must be converted to URI and form 3 must be converted to form 1. See the corresponding test test_git_remote_url_to_pip() for examples of sample inputs/outputs. z\w+://z ssh://\1\2/\3)�rer���r3����path�exists�pathlib�PurePath�as_uri� SCP_REGEX�expandr���)r:���� scp_matchs��� r���r����zGit._git_remote_to_pip_url���sq������"��8�8�I�s�#��J� �7�7�>�>�#����#�#�C�(�/�/�1�1��O�O�C�(� ���#�#�$4�5�5�!�#�&�&r���c������������������Z����� �|�j������������������dddd|z���g|d���������y#�t��������$�r�Y�yw�xY�w)zU Check if rev is a commit that is available in the local repository. � rev-parserT���z--verifyzsha^F)rX����log_failed_cmdT)r7���r ���)r8���rR���r&���s��� r���rp���zGit.has_commit���sG������ ��O�O��d�J����=��$�� �� �����!�� �� �s������ *�*c������������������X�����|�d}|�j������������������d|gdd|��������}|j��������������������������S�)Nr%���r����FT�rH���rI���rX���)r7���rY���)r8���rR���r&����current_revs��� r���rz���zGit.get_revision���sA�������;��C��o�o� �#����� �&�� ���� � �"�"r���c������������������\����|�j������������������ddgdd|��������j��������������������������}t��������j������������������j ������������������|�������s t��������j������������������j������������������||�������}t��������j������������������j ������������������t��������j������������������j������������������|d��������������}t��������||�������S�)z� Return the path to Python project root, relative to the repo root. Return None if the project root is in the repo root. r����z --git-dirFTr����z..)r7���rY���r3���r�����isabs�join�abspathr���)r8���rR����git_dir� repo_roots��� r����get_subdirectoryzGit.get_subdirectory���s���������/�/� �+�&���� �"�� � ��%�'�� ���w�w�}�}�W�%��g�g�l�l�8�W�5�G��G�G�O�O�B�G�G�L�L��$�$?�@� �7��)�L�Lr���c�����������������������t��������|�������\��}}}}}|j������������������d�������r�|dt��������|j������������������d����������������}|t��������j ������������������j ������������������|�������j������������������dd�������j������������������d�������z���}|j������������������d�������dz���} |d| �t��������|| d�||||f�������z���}d|vr>d|vsJ��|j������������������d d �������}t���������|��-��|�������\��}} }|j������������������dd�������}nt���������|��-��|�������\��}} }|| |fS�) a9�� Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'. That's required because although they use SSH they sometimes don't work with a ssh:// scheme (e.g. GitHub). But we need a scheme for parsing. Hence we remove it again afterwards and return it as a stub. �fileN�/�\�+rJ���z://zfile:zgit+z git+ssh://zssh://��)�urlsplit�endswithr[����lstrip�urllib�request�url2pathnamer����find� urlunsplitr6����get_url_rev_and_auth) r8���r:����scheme�netlocr�����query�fragment�initial_slashes�newpath� after_plusr&���� user_passr9���s ��� �r���r����zGit.get_url_rev_and_auth���s*�������19�� �-����e�X��?�?�6�"�"�#;�c�$�+�+�c�*:�&;�%;�<�O�%����(C�(C�D�(I�(Q�(Q��c�)��f�S�k��G�� ���S�)�A�-�J���*�%� �� ��$�f�g�u�h�G�)���C������#�%�%�%��+�+�f�l�3�C�"'�'�">�s�"C��C��i��+�+�h��+�C�"'�'�">�s�"C��C��i��C��"�"r���c�����������������������t���������j������������������j������������������t���������j������������������j������������������|d��������������sy�|�j ������������������g�d�|���������y�)Nz.gitmodules)� submoduler����z--initz--recursiverT���ru���)r3���r����r����r����r7���)r8���rR���s��� r���r����zGit.update_submodules���s;�������w�w�~�~�b�g�g�l�l�8�]�C�D�����B��� �� r���c�����������������������t����������|����|�������}|r|S� �|�j������������������ddg|dddd��������}t��������j������������������j������������������|j������������������d��������������S�#�t��������$�r�t��������j������������������d|��������Y�y�t��������$�r�Y�y�w�xY�w) Nr����z--show-toplevelFT�raise)rX���rH���rI���ra���r����zKcould not determine if %s is under git control because git is not availablez )r6����get_repository_rootr7���r���rM���r����r ���r3���r�����normpathrg���)r8���rR����loc�rr9���s��� �r���r����zGit.get_repository_root���s���������g�)�(�3����J� �����/�0��!� �%�$� � ���A�"��w�w������� 0�1�1����� ��L�L�/�� � �� �� �� �s����A��B �>B �B �repo_urlc������������������������y)zEIn either https or ssh form, requirements must be prefixed with git+.Tr(���)r����s��� r����should_add_vcs_url_prefixzGit.should_add_vcs_url_prefix��s�������r���r���)+�__name__� __module__�__qualname__r}����dirname� repo_name�schemes� unset_environ�default_arg_rev�staticmethod�strr���r*����classmethodr���r7���r���rD���r���rO���rQ���r���r^���r?���rq���r ���r���r|���r>���r����r����r����r����r����rp���rz���r����r���r����r����r����r����� __classcell__)r9���s���@r���r ���r ���<���sY�������D��G��I��G��1�M��O���s���t�C�y��������4���4�s��4�s��4���4�$�S��$���$���$�:��s�C�x���:����#���(�3�-������0��+�C��+�c��+�e�H�S�M�4�<O�6P��+���+�Z������3���4������,��+��+�'�+�6@�+� �+���+�Z��.�c��.��#���.�4��.���.�=%��=%�(�=%�7A�=%�NQ�=%� �=%�~%�3��%�Z��%�j��%�T��%�%�3��%�Z��%�j��%�T��%���7�c��7�c��7���7�:��'�C��'�C��'���'�<�� �#�� �C�� �D�� ��� ��� #�C�� #�h�s�m�� #�s�� #��� #���M���M��� ��M���M�"��#�s��#�u�S�(�3�-��5Q�/R��#���#�<�� ��� ��� ��� ���2�3��2�8�C�=��2���2�0���C���D�����r���r ���)0�logging�os.pathr3���r����r�����urllib.parser�����urllib.request�dataclassesr����typingr���r���r���r����pip._internal.exceptionsr���r ����pip._internal.utils.miscr ���r���r����pip._internal.utils.subprocessr ���� pip._internal.vcs.versioncontrolr���r���r���r���r���r���r����parser����r����� getLoggerr����rM����compilerL���r����VERBOSEr����r����r���r���r ����registerr(���r���r����<module>r�������s������������� ��������-��-��B��G��G��7��������<�<� � �� �\�\� $� $� �� �� � �8� $����B�J�J�������R�Z�Z�+� ,� �� �B�J�J� ���J�J� � �'���'���'�Y�.��Y�x� ����S��r���