403Webshell
Server IP : 217.160.0.244  /  Your IP : 216.73.217.138
Web Server : Apache
System : Linux infong-eu155 4.4.400-icpu-108 #2 SMP Wed Feb 11 11:51:01 UTC 2026 x86_64
User : u100174116 ( 6746176)
PHP Version : 8.5.10
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/breezy/plugins/gitlab/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/breezy/plugins/gitlab/__pycache__/forge.cpython-313.pyc
�

p��g����SrSSKrSSKrSSKrSSKrSSKJr SSKJr SSKJ	r	J
r
JrJr SSKJ
r SSKJrJrJrJrJrJrJrJrJrJr SS	KJr SS
KJr SSKJr SS
/r Sr!SS/r"SSSSS.r#Sr$Sr%"SS\RL5r'"SS\RL5r("SS\RL5r)"SS\RL5r*"SS\RL5r+"S S!\5r,"S"S#\RL5r-"S$S%\RL5r."S&S'\RL5r/"S(S)\05r1"S*S+\RL5r2S,r3S-r4S.r5S/r6S0r7S1r8S2r9"S3S4\5r:S5r;"S6S7\5r<"S8S9\5r=S:r>g);zSupport for GitLab.�N)�datetime)�Optional�)�bedding�
controldir�errors�urlutils��branch)
�Forge�ForgeLoginRequired�
MergeProposal�MergeProposalBuilder�MergeProposalExists�
NoSuchProject�PrerequisiteBranchUnsupported�SourceNotDerivedFromTarget�UnsupportedForge�determine_title��git_url_to_bzr_url)�mutter)�
get_transportz/etc/python-gitlab.cfgz~/.python-gitlab.cfg�2�ssh�http�ssh_url_to_repo�http_url_to_repo)�git+sshrr�httpsc��SSSSS.U$)N�all�opened�merged�closed)r"�openr$r%�)�statuss �=/usr/lib/python3/dist-packages/breezy/plugins/gitlab/forge.py�mp_status_to_statusr*7s���(�h�(�S����c�0�[R"US5$)Nz%Y-%m-%dT%H:%M:%S.%fZ)r�strptime)�tss r)�parse_timestringr/=s�����R�!8�9�9r+c��\rSrSrSrSrSrg)�NotGitLabUrl�AzNot a GitLab URL: %(url)sc�N�[RRU5 Xlg�N)r�BzrError�__init__�url)�selfr7s  r)r6�NotGitLabUrl.__init__Ds����� � ��&��r+)r7N��__name__�
__module__�__qualname__�__firstlineno__�_fmtr6�__static_attributes__r'r+r)r1r1As��&�D�r+r1c��\rSrSrSrSrSrg)�NotMergeRequestUrl�Iz!Not a merge proposal URL: %(url)sc�Z�[RRU5 XlX lgr4)rr5r6�hostr7)r8rEr7s   r)r6�NotMergeRequestUrl.__init__Ls����� � ��&��	��r+)rEr7Nr:r'r+r)rBrBIs��.�D�r+rBc��\rSrSrSrSrSrg)�GitLabError�RzGitLab error: %(error)sc�Z�[RRU5 XlX lgr4�rr5r6�error�
full_response�r8rLrMs   r)r6�GitLabError.__init__U������ � ��&��
�*�r+�rLrMNr:r'r+r)rHrHRs��$�D�+r+rHc��\rSrSrSrSrSrg)�GitLabUnprocessable�[z*GitLab can not process request: %(error)s.c�Z�[RRU5 XlX lgr4rKrNs   r)r6�GitLabUnprocessable.__init__^rPr+rQNr:r'r+r)rSrS[s��7�D�+r+rSc��\rSrSrSrSrSrg)�DifferentGitLabInstances�dzYCan't create merge proposals across GitLab instances: %(source_host)s and %(target_host)sc��XlX lgr4��source_host�target_host)r8r\r]s   r)r6�!DifferentGitLabInstances.__init__js��&��&�r+r[Nr:r'r+r)rXrXds��	.�	�
'r+rXc��\rSrSrSrSrg)�GitLabLoginMissing�oz,Please log into GitLab instance at %(forge)sr'N)r;r<r=r>r?r@r'r+r)r`r`os��9�Dr+r`c��\rSrSrSrSrSrg)�GitlabLoginError�szError logging in: %(error)sc��Xlgr4�rL)r8rLs  r)r6�GitlabLoginError.__init__vs���
r+rfNr:r'r+r)rcrcss��(�D�r+rcc��\rSrSrSrSrSrg)�GitLabConflict�zz%Conflict during operation: %(reason)sc�<�[R"U5 Xlgr4)rr5�reason�r8rls  r)r6�GitLabConflict.__init__}s��������r+�rlNr:r'r+r)ririzs��2�D�r+ric��\rSrSrSrSrSrg)�ForkingDisabled�z+Forking on project %(project)s is disabled.c��Xlgr4��project)r8rus  r)r6�ForkingDisabled.__init__�s���r+rtNr:r'r+r)rqrq�s��8�D�r+rqc��\rSrSrSrSrSrg)�MergeRequestConflict�z'Raised when a merge requests conflicts.c��Xlgr4rorms  r)r6�MergeRequestConflict.__init__�s���r+roN)r;r<r=r>�__doc__r6r@r'r+r)rxrx�s
��1�r+rxc��\rSrSrSrSrSrg)�ProjectCreationTimeout�zKTimeout (%(timeout)ds) while waiting for project %(project)s to be created.c��XlX lgr4�ru�timeout)r8rur�s   r)r6�ProjectCreationTimeout.__init__�s�����r+r�Nr:r'r+r)r~r~�s��X�D�r+r~c��SSKJn U"5nURUSU5 URUSS5 URUSU5 g)z-Store a GitLab token in a configuration file.r��AuthenticationConfigr7�forge�gitlab�
private_tokenN)�
breezy.configr��_set_option)�namer7r�r��auth_configs     r)�store_gitlab_tokenr��sC��2�&�(�K����D�%��-����D�'�8�4����D�/�=�Ar+c#�# �SSKnUR5nUR[Vs/sH"n[R
R
U5PM$ sn[R
R[R"5S5/-5 UR5Hup4SU;aM
X44v� M SSKJn U"5nUR5R5HXup4URS5S:XaX44v� M!URS5nU(dM;UR!S5(dMSX44v� MZ gs snf7f)Nrzgitlab.confr7r�r�r�zhttps://gitlab.com/)�configparser�ConfigParser�read�_DEFAULT_FILES�os�path�
expanduser�joinr�
config_dir�itemsr�r��_get_config�	iteritems�get�
startswith)r��config�pr��credsr�r�r7s        r)�iter_tokensr��s����
�
&�
&�
(�F�
�K�K�(6�7��1����	�	�A�	��7�
�����g�(�(�*�M�	:�;�	<���|�|�~��������k��&�
3�&�(�K�"�.�.�0�:�:�<����9�9�W���)��+���)�)�E�"�C��s�s�~�~�&;�<�<��k�!�=��	8�s�(E�)D=�CE�E�3Ec��[5H0upUSRS5URS5:XdM.Us $ g)Nr7�/)r��rstrip)r7�_name�credentialss   r)�get_credentials_by_urlr��s<��)�m����u��$�$�S�)�S�Z�Z��_�<���,�r+c���[R"U5upp4pVUS;a[U5eU(d[U5eURS5nUR	S5(aUSSnXF4$)N�rr rr��.git���)r	�	parse_urlr1�strip�endswith)r7�scheme�user�passwordrE�portr�s       r)�parse_gitlab_urlr��sj��19�1C�1C�C�1H�.�V�8�4�
�1�1��3�����3����:�:�c�?�D��}�}�V����C�R�y���:�r+c�x�[R"UR5n[U5up#X#UR4$r4)r	�strip_segment_parameters�user_urlr�r�)rr7rEr�s    r)�parse_gitlab_branch_urlr��s1��
�
+�
+�F�O�O�
<�C�!�#�&�J�D��v�{�{�"�"r+c��[R"U5upp4pVUS;a[U5eU(d[U5eURS5nUR	S5n[U5S:a[
X@5eUSS:wa[
X@5eUSS:XaSRUSS5nOSRUSS5nXH[US54$)	Nr�r������merge_requests����-���)	r	r�r1r��split�lenrBr��int)	r7r�r�r�rEr�r��parts�project_names	         r)�parse_gitlab_merge_request_urlr��s���19�1C�1C�C�1H�.�V�8�4�
�1�1��3�����3����:�:�c�?�D��J�J�s�O�E�
�5�z�A�~� ��+�+��R�y�$�$� ��+�+��R�y�C���x�x��c�r�
�+���x�x��c�r�
�+���s�5��9�~�-�-r+c��[R"UURURR	SS5UR5S9e)Nzutf-8�replace��headers)r�UnexpectedHttpStatusr(�data�decode�
getheaders)r��responses  r)�_unexpected_statusr��s?��
�
%�
%������
�
���W�i�0��#�#�%�	�r+c���\rSrSrSrSrSrSr\S5r	Sr
SrS	rS
r
SrSrS
rSS.SjrSS.SjrSrSS.SjrSrSrSrSrSrSrSrSrS"SjrSrSrSr S r!S!r"g)#�GitLabMergeProposal��Tc��XlX lgr4)�gl�_mr)r8r��mrs   r)r6�GitLabMergeProposal.__init__�s�����r+c�&�URRURSURSU5 g![aLnURR	UR
UR
5URS5 SnAgSnAff=f)N�
project_id�iid�target_project_id)r��_update_merge_requestr�ri�_handle_merge_request_conflictrl�get_source_branch_url)r8�kwargs�es   r)�_update�GitLabMergeProposal._update�sx��	��G�G�)�)�����&�������
���	��G�G�2�2����$�4�4�6����AT�8U�
�
��	�s�7:�
B�AB�Bc�f�SR[U5RURS5$)Nz<{} at {!r}>�web_url)�format�typer;r��r8s r)�__repr__�GitLabMergeProposal.__repr__s(���$�$�T�$�Z�%8�%8�$�(�(�9�:M�N�Nr+c� �URS$�Nr��r�r�s r)r7�GitLabMergeProposal.urls���x�x�	�"�"r+c� �URS$r�r�r�s r)�get_web_url�GitLabMergeProposal.get_web_urls���x�x�	�"�"r+c� �URS$)N�descriptionr�r�s r)�get_description�#GitLabMergeProposal.get_descriptions���x�x�
�&�&r+c�&�URUS9 g![RajnURS:waeURRURSURS5UlURSU:waeSnAgSnAff=f)N)r�i�r�r�r�)r�rr��coder��_get_merge_requestr�)r8r�r�s   r)�set_description�#GitLabMergeProposal.set_descriptions���	��L�L�[�L�1���*�*�		��v�v��}���w�w�1�1�����&�������D�H��x�x�
�&�+�5��6��		�s��B�A B�Bc�8�URRS5$)N�merge_commit_message�r�r�r�s r)�get_commit_message�&GitLabMergeProposal.get_commit_message s���x�x�|�|�2�3�3r+c�D�[R"URU5er4)r�UnsupportedOperation�set_commit_message)r8�messages  r)r�&GitLabMergeProposal.set_commit_message#s���)�)�$�*A�*A�4�H�Hr+c�8�URRS5$)N�titler�r�s r)�	get_title�GitLabMergeProposal.get_title&s���x�x�|�|�G�$�$r+c�"�URUS9 g)N)r�r�)r8rs  r)�	set_title�GitLabMergeProposal.set_title)s�����5��!r+N��preferred_schemesc��UcgURRU5nUc[nUH%nU[;dM[	U[UU5s $ [
er4)r��_get_project�DEFAULT_PREFERRED_SCHEMES�
SCHEME_MAP�gitlab_url_to_bzr_url�KeyError)r8r��branch_namerrur�s      r)�_branch_url_from_project�,GitLabMergeProposal._branch_url_from_project,s]������'�'�&�&�z�2���$� 9��'�F���#�,�W�Z��5G�-H�+�V�V�(��r+c�X�URURSURSUS9$)N�source_project_id�
source_branchr�rr��r8rs  r)r��)GitLabMergeProposal.get_source_branch_url9�6���,�,��H�H�(�)��H�H�_�%�/�-�
�	
r+c�t�SSKJn URSnUcgURUR	S55$)Nr)�default_mapping�sha�ascii)�breezy.git.mappingrr��revision_id_foreign_to_bzr�encode)r8rrs   r)�get_source_revision�'GitLabMergeProposal.get_source_revision@s4��6��h�h�u�o���;���9�9�#�*�*�W�:M�N�Nr+c�X�URURSURSUS9$)Nr��
target_branchrrrs  r)�get_target_branch_url�)GitLabMergeProposal.get_target_branch_urlHrr+c�"�URUS9 g)N)r'r)r8r�s  r)�set_target_branch_name�*GitLabMergeProposal.set_target_branch_nameOs�����4��(r+c�B�URRU5nUS$�N�path_with_namespace)r�r)r8r��source_projects   r)�_get_project_name�%GitLabMergeProposal._get_project_nameRs"�����-�-�j�9���3�4�4r+c�>�URURS5$)Nr�r1r�r�s r)�get_source_project�&GitLabMergeProposal.get_source_projectV����%�%�d�h�h�/B�&C�D�Dr+c�>�URURS5$)Nr�r4r�s r)�get_target_project�&GitLabMergeProposal.get_target_projectYr7r+c�&�URSS:H$)N�stater$r�r�s r)�	is_merged�GitLabMergeProposal.is_merged\����x�x�� �H�,�,r+c�&�URSS:H$)Nr<r%r�r�s r)�	is_closed�GitLabMergeProposal.is_closed_r?r+c� �URSS9$)N�reopen��state_eventrr�s r)rD�GitLabMergeProposal.reopenbs���|�|��|�1�1r+c�"�URSS9 g)N�closerErr�s r)rI�GitLabMergeProposal.closees�������)r+c��URRURSURSUUS.S9nURRU5 g)Nr�r�)r��merge_when_pipeline_succeeds)r�)r��	_merge_mrr��update)r8�commit_message�auto�rets    r)�merge�GitLabMergeProposal.mergehsO���g�g����H�H�\�"��H�H�U�O�(6�04�� �
��	
������r+c��URSS:XagURSS:XagURSS;ag[URS5e)N�merge_status�cannot_be_mergedF�
can_be_mergedT)�	unchecked�cannot_be_merged_recheck�checking)r��
ValueErrorr�s r)rW�!GitLabMergeProposal.can_be_mergedtsZ���8�8�N�#�'9�9��
�X�X�n�
%��
8��
�X�X�n�
%�*
�
���T�X�X�n�5�6�6r+c�J�URRS5nUcgUS$)N�
merge_user�usernamer�)r8r�s  r)�
get_merged_by�!GitLabMergeProposal.get_merged_by�s'���x�x�|�|�L�)���<���J��r+c�V�URRS5nUcg[U5$)N�	merged_at)r�r�r/)r8rcs  r)�
get_merged_at�!GitLabMergeProposal.get_merged_at�s(���H�H�L�L��-�	�����	�*�*r+c�z�SU0nURRURSURSU5 g)N�bodyr�r�)r��_post_merge_request_noter�)r8rgr�s   r)�post_comment� GitLabMergeProposal.post_comment�s5���$������(�(��H�H�\�"�D�H�H�U�O�V�	
r+)r�r��NF)#r;r<r=r>�supports_auto_merger6r�r��propertyr7r�r�r�r�rrr	rr�r$r(r+r1r5r9r=rArDrIrRrWr`rdrir@r'r+r)r�r��s�������O��#��#�#�'��4�I�%�"�=A��:>�
�O�:>�
�)�5�E�E�-�-�2�*�
�7�" �+�
r+r�c��[XS9$)Nr
r)r7r�s  r)rr�s
���c�/�/r+c��\rSrSrSrSrSrSrSrSr	Sr
\S5r\S5r
S	rS1SjrSrS
rSrS2SjrSrS3SjrS4SjrSrSrSrS1SjrS5SjrSrSrSrSrSr S6Sjr!Sr"Sr#S7S jr$S5S!jr%S"r&S#r'S$r(S%r)\*S3S&j5r+\*S3S'j5r,\*S(5r-S8S)jr.S3S*\/\04S+jjr1S,\0S-\24S.jr3S/r4S0r5g
)9�GitLabi�zGitLab forge implementation.TF�markdownc�8�SRUR5$)Nz<GitLab({!r})>)r��base_urlr�s r)r��GitLab.__repr__�s���&�&�t�}�}�5�5r+c�.�URR$r4)�	transport�baser�s r)rs�GitLab.base_url�s���~�~�"�"�"r+c�H�[R"UR5S$)Nr)r	r�rsr�s r)�
base_hostname�GitLab.base_hostname�s���!�!�$�-�-�0��3�3r+c�j�URRS[R"URU5UR
S9nURS:wa[X5 g![Ra<n[R"UR5SRS5sSnA$SnAff=f)N�GETr�r�r���)
rv�requestr	r�rsr�r�RedirectRequestedr��targetr�r(r�)r8r��respr�s    r)�_find_correct_project_name�!GitLab._find_correct_project_name�s���	?��>�>�)�)��x�}�}�T�]�]�D�9�4�<�<�*��D�
�;�;�#���t�*���	�'�'�	?��%�%�a�h�h�/��3�9�9�#�>�>��	?�s�AA"�"B2�61B-�'B2�-B2Nc	��URRU[R"URSSU5UR
UUS9$)N�api�v4)r��fieldsrg)rvrr	r�rsr�)r8�methodr�r�rgs     r)�_api_request�GitLab._api_request�sD���~�~�%�%���M�M�$�-�-���d�;��L�L���&�
�	
r+c�0�XlSU0UlSUlg)Nz
Private-Token)rvr��
_current_user)r8rvr�s   r)r6�GitLab.__init__�s��"��'��7���!��r+c�P�SR[R"[U5S55nUR	SU5nUR
S:Xa[
SRU55eUR
S:Xa [R"UR5$[X#5 g)Nzusers/{}�r}��no such user {}r~)r�r	�quote�strr�r(r�json�loadsr�r�)r8r_r�r�s    r)�	_get_user�GitLab._get_user�s}��� � �����H�
�r�!B�C���$�$�U�D�1���?�?�c�!��,�3�3�H�=�>�>��?�?�c�!��:�:�h�m�m�,�,��4�*r+c��SR[R"[U5S55nUR	SU5nUR
S:Xa[
SRU55eUR
S:XaN[R"UR5n[U5S:wa[SRU55eUS	$[X#5 g)
Nzusers?search={}r�r}r�r�r~�z"unexpected number of results; {!r}r)
r�r	r�r�r�r(rr�r�r�r�r[r�)r8�emailr�r�rQs     r)�_get_user_by_email�GitLab._get_user_by_email�s��� �'�'����s�5�z�2�(F�G���$�$�U�D�1���?�?�c�!��,�3�3�E�:�;�;��?�?�c�!��*�*�X�]�]�+�C��3�x�1�}� �!E�!L�!L�S�!Q�R�R��q�6�M��4�*r+c��SR[R"[U5S55nUR	SU5nUR
S:Xa6U(d$UR
U5nUbURUSS9$[U5eUR
S:Xa [R"UR5$[X45 g)N�projects/{}r�r}r�T)�_redirect_checkedr~)
r�r	r�r�r�r(r�rrr�r�r�r�)r8r�r�r�r�s     r)r�GitLab._get_project�s����#�#�H�N�N�3�|�3D�b�$I�J���$�$�U�D�1���?�?�c�!�$�#�>�>�|�L���+��,�,�\�T�,�R�R���-�-��?�?�c�!��:�:�h�m�m�,�,��4�*r+c��S[R"[U5S5-nURSU5nURS:Xa [
R"UR5$URS:Xag[X#5 g)Nznamespaces/r�r}r~r�)	r	r�r�r�r(r�r�r�r�)r8�	namespacer�r�s    r)�_get_namespace�GitLab._get_namespace�sc���x�~�~�c�)�n�b�A�A���$�$�U�D�1���?�?�c�!��:�:�h�m�m�,�,��?�?�c�!���4�*r+c���URS5(aUSSnSU;a$URS5RSS5up4OSnUnURU5nUc[	SRU55eUUSS.nUbX&S	'UR
S
SUS9nURS
:Xa][R"UR5nURS05RS5S/:Xa[R"U5eeURS:Xa [R"UR5eURS;a[!SU5 [R"UR5n	U	$)Nr�r�r�r�r�znamespace {} does not exist�id)r��namespace_idr��POST�projects�r��rr�zhas already been taken��r~��)r��lstrip�rsplitr��	Exceptionr�r�r(r�r�r�r�r�AlreadyControlDirError�PermissionDenied�textr�)
r8r��summary�namespace_pathr�r�r�r�rQrus
          r)�create_project�GitLab.create_project�s\��� � ��(�(�'���,�L��,��#/�#6�#6�s�#;�#B�#B�3��#J� �N�D��N��D��'�'��7�	����9�@�@��P�Q�Q��%�d�O�
����$+�=�!��$�$�V�Z��$�G���?�?�c�!��*�*�X�]�]�+�C��w�w�y�"�%�)�)�&�1�6N�5O�O��3�3�L�A�A���?�?�c�!��)�)�(�-�-�8�8��?�?�*�,��z�8�4��*�*�X�]�]�+���r+c���SR[R"[U5S55n0nUbXFS'UR	SXVS9nUR
S:Xa[
U5eUR
S:Xa:[R"UR5n[URS55eUR
S	;a[XW5 [R"UR5n	[R"5U-n
U	S
S;al[SU	S
5 [R"5U
:�a[U	S
U5e[R "U5 UR#U	S
5n	U	S
S;aMlU	$)Nzprojects/{}/forkr�r�r�r�r��rr��
import_status)�finished�nonezimport status is %sr/)r�r	r�r�r�r(rqr�r�r�rir�r��timerr~�sleepr)r8r�r��interval�ownerr�r�r�r�ru�deadlines           r)�fork_project�GitLab.fork_projectsC��!�(�(�����L�8I�2�)N�O������"'�;���$�$�V�T�$�A���?�?�c�!�!�,�/�/��?�?�c�!��:�:�h�m�m�,�D� ����)�!4�5�5��?�?�*�,��t�.��*�*�X�]�]�+���9�9�;��(���o�&�.B�B��(�'�/�*B�C��y�y�{�X�%�,�W�5J�-K�W�U�U��J�J�x� ��'�'��0E�(F�G�G��o�&�.B�B��r+c���[R"SUS5nU(a@[URS55nUR	X55n[U[
X55e[U5e)NzLAnother open merge request already exists for this source branch: \!([0-9]+)rr�)�re�	fullmatchr��groupr�rr�rx)r8r�
source_url�target_project�m�merge_idr�s       r)r��%GitLab._handle_merge_request_conflict.s`���L�L�
.��A�J�
��

��1�7�7�1�:��H��(�(��B�B�%�j�2E�d�2O�P�P�"�7�+�+r+c�b�UR(dUR5 URS$)Nr_)r��_retrieve_userr�s r)�get_current_user�GitLab.get_current_user:s(���!�!����!��!�!�*�-�-r+c�D�[R"URU5$r4)r	r�rs)r8r_s  r)�get_user_url�GitLab.get_user_url?s���}�}�T�]�]�H�5�5r+c#�^# �Uc0nO[UR55nU(a[U5US'SnU(a�XBS'URSUS-SR	UR5Vs/sHnSR
"U6PM sn5-5nURS:Xa [R"UR5eURS	:wa[X5 URS
5n[R"UR5Shv�N U(aM�ggs snfN7f)N�per_page�1�pager}�?�&z{}={}r�r~zX-Next-Page)�dictr�r�r�r�r�r(rr�r�r��	getheaderr�r�r�)r8r��
parametersr�r��itemr�s       r)�_list_paged�GitLab._list_pagedBs������J��j�.�.�0�1�J��%(��]�J�z�"����!%�v���(�(������(�(�j�>N�>N�>P�Q�>P�d�G�N�N�D�1�>P�Q�R�S��H����#�%��-�-�h�m�m�<�<����#�%�"�4�2��%�%�m�4�D��z�z�(�-�-�0�0�0��d��R�
1�s%�A/D-�1D&�
BD-�D+�D-�$D-c���Ub0SR[R"[U5S55nOSn0nU(aX5S'U(a[R"US5US'UR	XE[
S9$)N�projects/{}/merge_requestsr�r�r<�author_username�r��r�r	r�r�r��DEFAULT_PAGE_SIZE)r8�authorrur<r�r�s      r)�_list_merge_requests�GitLab._list_merge_requestsYsm����/�6�6�x�~�~�c�'�l�TV�7W�X�D�#�D��
��"'�w���,4�N�N�6�2�,F�J�(�)�����;L��M�Mr+c�F�S[R"[U5S5U4-nURSU5nURS:Xa [
R"UR5eURS:wa[X45 [R"UR5$)Nzprojects/%s/merge_requests/%dr�r}r�r~)r	r�r�r�r(rr�r�r�r�r�r�)r8rur�r�r�s     r)r��GitLab._get_merge_requestes���.��N�N�3�w�<��,��2
�
���$�$�U�D�1���?�?�c�!��)�)�(�-�-�8�8��?�?�c�!��t�.��z�z�(�-�-�(�(r+c��SR[R"[U5S55n0nUR	X#[
S9$)Nzusers/{}/projectsr�r�r�)r8r�r�r�s    r)�_list_projects�GitLab._list_projectsqs=��"�)�)�(�.�.��U��R�*H�I���
�����;L��M�Mr+c���SR[R"[U5S5U5nUR	SXCS9nUR
S:Xa [R"UR5$UR
S:Xa8[[R"UR5RS55eUR
S:Xa [R"UR5e[XE5 g)	Nzprojects/{}/merge_requests/{}r��PUTr�r~r�rr�)r�r	r�r�r�r(r�r�r�rir�rr�r�r�)r8r�r�r�r�r�s      r)r��GitLab._update_merge_requestvs���.�5�5��N�N�3�z�?�B�/��
���$�$�U�D�$�<���?�?�c�!��:�:�h�m�m�,�,��?�?�c�!� ����H�M�M�!:�!>�!>�y�!I�J�J��?�?�c�!��)�)�(�-�-�8�8��4�*r+c�Z�SR[R"[U5S5U5nUR	SXCS9nUR
S:Xa [R"UR5$UR
S:Xa [R"UR5e[XE5 g)Nz#projects/{}/merge_requests/{}/merger�r�r�r~r��
r�r	r�r�r�r(r�r�r�rr�r�r��r8r�r�r�r�r�s      r)rM�GitLab._merge_mr�s���4�;�;��N�N�3�z�?�B�/��
���$�$�U�D�$�@���?�?�c�!��:�:�h�m�m�,�,��?�?�c�!��)�)�(�-�-�8�8��4�*r+c�\�SR[R"[U5S5U5nUR	SXCS9nUR
S:Xa![R"UR5 gUR
S:Xa [R"UR5e[XE5 g)Nz#projects/{}/merge_requests/{}/notesr�r�r�r�r�r�r�s      r)rh�GitLab._post_merge_request_note�s���4�;�;��N�N�3�z�?�B�/��
���$�$�V�T�$�A���?�?�c�!��J�J�x�}�}�%���?�?�c�!��)�)�(�-�-�8�8��4�*r+c	�.�SRU5n	UUUUUUS.n
U(aXzS'URSX�S9nURS:Xa;[R"UR
5n[
URS5U5eURS:Xa [R"UR5eURS	:Xa8[[R"UR
5RS55eURS
:XaS[R"UR
5n[URS5=(d URS5U5eURS:wa[X�5 [R"UR
5$)
Nr�)rrr'r�r��allow_collaboration�labelsr�r�r�rr�r�i�rLr�)r�r�r(r�r�r�rHr�rr�r�rirSr�)
r8rrr��source_branch_name�target_branch_namer�r�r�r�r�r�r�s
             r)�_create_mergerequest�GitLab._create_mergerequest�s>��,�2�2�3D�E���/�/�!2�&�#6�

���%�8���$�$�V�T�$�A���?�?�c�!��:�:�h�m�m�,�D��d�h�h�y�1�8�<�<��?�?�c�!��)�)�(�-�-�8�8��?�?�c�!� ����H�M�M�!:�!>�!>�y�!I�J�J��?�?�c�!��:�:�h�m�m�,�D�%�d�h�h�w�&7�&N�4�8�8�I�;N�PT�U�U��?�?�c�!��t�.��z�z�(�-�-�(�(r+c�^�[U5up#nURU5n[USU5$)Nr)r�rr�r8rrEr�rrus      r)�get_push_url�GitLab.get_push_url�s4��,C�F�,K�)��[��#�#�L�1��$�W�->�%?��M�Mr+c�n�[U5up#nURU5nU(aUSS-U-$US$)Nr�z/-/tree/)r�rrs      r)r��GitLab.get_web_url�sD��,C�F�,K�)��[��#�#�L�1����9�%�
�2�[�@�@��9�%�%r+c

�v�U	cSn	[U5up�nUcUR5RS5nUcUR5nUR	U5n
UcU
SnUR	SRXT55n[US5n[RRU5nURUUUUU	S9n[USU5nUR U4$![a URU
SUS9nN}f=f![Ra U(deURUUUUS	U	S
9nNrf=f)Nc��grkr')�ts r)�tag_selector�,GitLab.publish_derived.<locals>.tag_selector�s��r+zfork-namespacer��{}/{}r/�r�r)�revision_id�	overwriter�r	T)r
rr��lossyr	r)r��get_config_stackr�r�rr�rr�rr�
ControlDirr&�push_branchr�NoRoundtrippingSupportrr')r8�local_branch�base_branchr�rur�r
r�allow_lossyr	rE�base_project_name�base_branch_name�base_projectr��remote_repo_url�
remote_dir�push_result�
public_urls                   r)�publish_derived�GitLab.publish_derived�s�����
�7N��7
�3��"2��=��0�0�2�6�6�7G�H�E��=��)�)�+�E��(�(�):�;���?�"�6�*�G�	�!�.�.�w�~�~�e�/M�N�N�
-�^�<M�-N�O���*�*�/�/��@�
�	�$�0�0��'�#��)�1��K�$+�>�:L�+M�t�T�
��(�(�*�4�4��5�	�!�.�.��2�3�5�/��N�	���,�,�
	���$�0�0��'�#���)�
1��K�
	�s$�$ C"�2D�"D�D�0D8�7D8c���[U5upgnUcUR5nUcURU5SnURSRXC55n	UcS/nUHn
U
S:XaU	Sn OU
S:XdMU	Sn O [e[RR[X�5UR/S9$![a1 [
R"SRURXC55ef=f)	Nr�rz{}/{}/{}rrr r��possible_transports)r�r�rr�rr�NotBranchErrorrs�AssertionError�_mod_branch�Branchr&r�user_transport)r8rr�rur�rrErrr�r��
gitlab_urls            r)�get_derived_branch�GitLab.get_derived_branchs��2I��1U�.��-��=��)�)�+�E��?��'�'��5�f�=�G�	�!�.�.�w�~�~�e�/M�N�N�
�$�!*���'�F���"�+�,=�>�
���7�"�+�,>�?�
��
(�!� ��!�!�&�&�!�*�3�!,�!;�!;� <�'�
�	
���	��'�'��!�!�$�-�-��@��
�	�s� B;�;;C6c��[XU5$r4)�GitlabMergeProposalBuilder)r8rr's   r)�get_proposer�GitLab.get_proposer$s��)�$�}�M�Mr+c#�d# �[U5upEn[U5upxn	XG:wa[XG5eURU5n
URU5n[U5nUR	USUS9H<n
U
SU
S:wdU
SU:wdU
SUS:wd	U
SU	:waM/[X
5v� M> g7f)Nr�)rur<rrr�r')r�rXrr*r�r�)r8rr'r(r\�source_project_namer�r]�target_project_namer�r0r�r<r�s              r)�iter_proposals�GitLab.iter_proposals's����#�M�2�	?��+=�
$�M�2�	?��+=��%�*�;�D�D��*�*�+>�?���*�*�+>�?��#�F�+���+�+�N�4�4H�PU�+�V�B��&�'�>�$�+?�?��o�&�*<�<��)�*�n�T�.B�B��o�&�*<�<��%�d�/�/�W�s�B.B0c�^�[U5up#nURU:H$![a gf=frk)r�r1rz)r8rrErurs     r)�hosts�GitLab.hosts=s=��	�+B�6�+J�(�T�K��!�!�T�)�)���	��	�s��
,�,c�&�UR(agURSS5nURS:Xa&[R"UR5UlgURS:XaP[R"UR5SS0:Xa[UR5e[UR5e[UR5e![Ra+nURS:Xa[UR5eeSnAff=f)Nr}r��r~rz401 Unauthorized)r�r�rr�r�r`rsr(r�r�r�rcr�r)r8r�r�s   r)r��GitLab._retrieve_userDs�������	��(�(���7�H�
�?�?�c�!�!%���H�M�M�!:�D����?�?�c�!��z�z�(�-�-�(�Y�8J�,K�K�(����7�7�&�x�}�}�5�5��t�}�}�-�-���*�*�	��v�v��}�(����7�7���	�s�C�D�%&D�Dc��SRU5n[U5nUb2[X2S9nU"XTRS55nUR	5 U$[U5e)N�
https://{}r!r�)r�r�rr�r�r)�cls�hostnamer"rsr�rv�instances       r)�probe_from_hostname�GitLab.probe_from_hostnameWs]���&�&�x�0��,�X�6���"�%�h�X�I��9�o�o�o�&F�G�H��#�#�%��O��x�(�(r+c��[U5up4[SR	U5US9n[UR5nUb)U"XVRS55nUR5 U$URSSR	U[R"[U5S555nURS5(d[U5eURS;a[S	R	U55e[U5e![a [U5ef=f![ R"a [U5e[ R$a [U5ef=f)
Nr;r!r�r}zhttps://{}/api/v4/projects/{}r�zX-Gitlab-Feature-Category)r~r8zhttps://{}/)r�r1rrr�r�rwr�r�rr	r�r�r�r(r`rr�r�)	r<r7r"rErurvr�r>r�s	         r)�probe_from_url�GitLab.probe_from_urlesD��	(�.�s�3�O�T�"�����%�;N�
�	�-�Y�^�^�<���"��9�o�o�o�&F�G�H��#�#�%��O�	(��$�$��/�6�6��(�.�.��W��r�:���D��>�>�"=�>�>�&�s�+�+��{�{�j�(�(��)=�)=�d�)C�D�D�"�3�'�'��7�	(�"�3�'�'�	(��"�*�*�	(�"�3�'�'��'�'�	(�"�3�'�'�	(�s�
D�*AD�D�>Ec#�z# �[5H)upU"[US5URS5S9v� M+ g7f)Nr7r�)r�)r�rr�)r<r�r�s   r)�iter_instances�GitLab.iter_instances�s:���"-�-��E���k�%�0�1�)�o�o�o�>��
�#0�s�9;c#�# �UcUR5n[U5nURX#S9Hn[X5v� M g7f)N)r�r<)r�r*r�r�)r8r(r�r<�mps     r)�iter_my_proposals�GitLab.iter_my_proposals�sF����>��*�*�,�F�#�F�+���+�+�6�+�G�B�%�d�/�/�H�s�AAr�c#�# �UcUR5nURUS9H$nURS5nU(dMUSv� M& g7f)Nr�forked_from_projectr/)r�r�r�)r8r�rurs    r)�
iter_my_forks�GitLab.iter_my_forks�sQ����=��)�)�+�E��*�*��*�7�G�"�;�;�'<�=�L����/�0�0�	8�s�AAr7�returnc�P�[U5up#nURU:wa[U5eUR
U5nURUSU5n[X5$![a [U5e[a+nURUR
:Xae[U5eSnAff=fr.)	r�r1rrBrzrErr�r�)r8r7rErur�r�r�s       r)�get_proposal_by_url�GitLab.get_proposal_by_url�s���	,�(F�s�(K�%�T�H�����%�"�3�'�'��#�#�G�,��
�
$�
$�W�-B�%C�X�
N��"�4�,�,���	(�"�3�'�'�!�	,��!�!�Q�V�V�+��&�s�+�+��		,�s�A�B%�:&B � B%c���SR[R"[U5S55nUR	SU5nUR
S:Xa[
U5eUR
S:wa[X#5 gg)Nr�r��DELETEr���)r�r	r�r�r�r(rr�)r8rur�r�s    r)�delete_project�GitLab.delete_project�sc���#�#�H�N�N�3�w�<��$D�E���$�$�X�t�4���?�?�c�!���(�(��?�?�c�!��t�.�"r+)r�r�rv)NN)Fr4)r�N)NNNrk)NNNFTN)r&N)6r;r<r=r>r|�supports_merge_proposal_labels�supports_merge_proposal_title�&supports_merge_proposal_commit_message�supports_allow_collaboration�!merge_proposal_description_formatr�rmrsrzr�r�r6r�r�rr�r�r�r�r�r�r�r�r�r�r�rMrhr�rr�rr)r-r2r5r��classmethodr?rBrErIrr�rMr�rQrVr@r'r+r)rprp�sq��&�%)�"�$(�!�-2�*�#'� �(2�%�6��#��#��4��4�	�
�"�
+�
+�+�+��@�4
,�.�
6�1�.
N�
)�N�
+�	+�
+�(�!�#)�JN�
&�������75�tNR�
�<N�0�,*�.�&�)��)��(��(�@����0�1�8�C�=�1�-�s�-�/B�-� /r+rpc�N�\rSrSrSrSrSrS	S\\4Sjjr	Sr
g)
r,i�c��XlX l[U5uUlUlUlX0l[U5uUlUlUl	URUR:wa [URUR5egr4)r�rr�r\r0r�r'r]r1r�rX)r8r�rr's    r)r6�#GitlabMergeProposalBuilder.__init__�s�����*��#�M�2�	N��	�4�3�T�5L�+��#�M�2�	N��	�4�3�T�5L����t�/�/�/�*�4�+;�+;�T�=M�=M�N�N�0r+c�L�/nURSRUR55 URSRURR55 URSRUR
R55 SR
U5$)z5Determine the initial comment for the merge proposal.zGitlab instance: {}
zSource: {}
zTarget: {}
r�)�appendr�r]rr�r'r�)r8�infos  r)�get_infotext�'GitlabMergeProposalBuilder.get_infotext�sy�������+�2�2�4�3C�3C�D�E����N�)�)�$�*<�*<�*E�*E�F�G����N�)�)�$�*<�*<�*E�*E�F�G��w�w�t�}�r+c��g)zMGet a body for the proposal for the user to modify.

:return: a str or None.
Nr'r�s r)�get_initial_body�+GitlabMergeProposalBuilder.get_initial_body�s��
r+N�delete_source_after_mergec
���Ub[U5eURRUR5n
URRUR5nUc[U5nU(aSR
U5nUU
SUSURURUUS.nU	bX�S'U(aSRU5US'U(ab/US'UHWn
S	U
;aURRU
5nOURRU
5nUSRUS5 MY URR"S0UD6n[/URW5$![aHnURRUR UR"R$US
5 SnANcSnAf[&a7nUR(S/:Xa [+UR"UR,5eeSnAff=f)
zPerform the submission.NzWIP: {}r�)rrr�r�r�r�r��should_remove_source_branch�,r��assignee_ids�@r/z2Source project is not a fork of the target projectr')rr�rr0r1rr�r�r�r�r�r�rcr�rir�rlrr�rSrLrr'r�)r8r�r�	reviewersr��prerequisite_branchrO�work_in_progressr�rjr0r�r��reviewerr��
merge_requestr�s                 r)�create_proposal�*GitlabMergeProposalBuilder.create_proposal�s����*�/��5�5����-�-�d�.F�.F�G�����-�-�d�.F�.F�G���=�#�K�0�E���$�$�U�+�E��!/��!5�!/��!5�"&�"9�"9�"&�"9�"9�&�#6�
��%�0�4M�0�1��"�x�x��/�F�8���%'�F�>�"�%���(�?��7�7�5�5�h�?�D��7�7�,�,�X�6�D��~�&�-�-�d�4�j�9�&�	� �G�G�8�8�B�6�B�M�#�4�7�7�M�:�:���	��G�G�2�2�����"�"�+�+��4�5�
�
��
#�	��w�w�O�P�P�0��1C�1C�T�EW�EW�X�X���	�s$�/E!�!
G2�+>F.�.
G2�;2G-�-G2)	r�rr�r\r0r'r�r]r1)NNNNNFFN)r;r<r=r>r6rerhr�boolrur@r'r+r)r,r,�sD��O������ ���!�48�:;�$,�D�>�:;�:;r+r,c�H�SSKJnJn URX"XS-55 g)zqRegister a gitlab instance.

:param shortname: Short name (e.g. "gitlab")
:param url: URL to the gitlab instance
r)�ProjectIntegerBugTracker�tracker_registryz/{project}/issues/{id}N)�breezy.bugtrackerryrz�register)�	shortnamer7ryrzs    r)�register_gitlab_instancer~s'��M�����+�I�=U�7U�V�r+)?r|r�r�r�r�r�typingrr�rrrr	rr%r�rr
rrrrrrrr�git.urlsr�tracerrvrr�r�rrr*r/r5r1rBrHrSrXr`rcrirqr�rxr~r�r�r�r�r�r�r�r�rrpr,r~r'r+r)�<module>r�s|��"��	�	����5�5�%����+��&�*�,B�C����"�F�O�� ���
�	�
��:��6�?�?�������+�&�/�/�+�+�&�/�/�+�'�v���'�:�+�:��v�����V�_�_���f�o�o���9���V�_�_��B�"�8�	�#�.�&�a
�-�a
�H0�X/�U�X/�vW;�!5�W;�t
r+

Youez - 2016 - github.com/yon3zu
LinuXploit