
    <6h\                        d Z ddlZddlZddlmZ ddlmZ g dZ ej                  e	      Z
 G d de      Z G d	 d
e      Z G d de      Z ej                   dej"                        Zd ZeZ G d de      Zd Z G d de      Z ej                   d      df ej                   d      df ej                   d      df ej                   d      df ej                   d      df ej                   d      df ej                   d      df ej                   d       d!f ej                   d"      d#f ej                   d$      d%ff
Z ej                   d&      df ej                   d'      df ej                   d(      df ej                   d      df ej                   d)      dffZ ej                   d*      Zd+ Zd, Z ej                   d-ej"                        Zd.d.d/d.d0ddd1Zd2 Z G d3 d4e      Z  G d5 d6e      Z! ej                   d7ej"                        Z"d8 Z#d9 Z$ G d: d;e      Z% G d< d=e      Z& G d> d?e      Z' e'eee       e'ee!d@        e'e$e&e      dAZ(e(dB   e(dC<   dD Z)y)Ez~
Implementation of a flexible versioning scheme providing support for PEP-440,
setuptools-compatible and semantic versioning.
    N   )string_typesparse_requirement)NormalizedVersionNormalizedMatcherLegacyVersionLegacyMatcherSemanticVersionSemanticMatcherUnsupportedVersionError
get_schemec                       e Zd ZdZy)r   zThis is an unsupported version.N)__name__
__module____qualname____doc__     `/var/www/panel.atabookie.online/venv/lib/python3.12/site-packages/pip/_vendor/distlib/version.pyr   r      s    )r   r   c                   d    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zed        Zy)Versionc                     |j                         x| _        }| j                  |      x| _        }t	        |t
              sJ t        |      dkD  sJ y )Nr   )strip_stringparse_parts
isinstancetuplelen)selfspartss      r   __init__zVersion.__init__   sH    779$q"jjm+e%'''5zA~~r   c                     t        d      )Nzplease implement in a subclassNotImplementedErrorr!   r"   s     r   r   zVersion.parse%   s    !"BCCr   c                 T    t        |       t        |      k7  rt        d| d|      y Nzcannot compare z and )type	TypeErrorr!   others     r   _check_compatiblezVersion._check_compatible(   s'    :e$$FGG %r   c                 V    | j                  |       | j                  |j                  k(  S Nr/   r   r-   s     r   __eq__zVersion.__eq__,   s#    u%{{ell**r   c                 &    | j                  |       S r1   r3   r-   s     r   __ne__zVersion.__ne__0       ;;u%%%r   c                 V    | j                  |       | j                  |j                  k  S r1   r2   r-   s     r   __lt__zVersion.__lt__3   s#    u%{{U\\))r   c                 L    | j                  |      xs | j                  |       S r1   r9   r3   r-   s     r   __gt__zVersion.__gt__7   s"    KK&<$++e*<==r   c                 J    | j                  |      xs | j                  |      S r1   r;   r-   s     r   __le__zVersion.__le__:       {{5!7T[[%77r   c                 J    | j                  |      xs | j                  |      S r1   )r<   r3   r-   s     r   __ge__zVersion.__ge__=   r?   r   c                 ,    t        | j                        S r1   )hashr   r!   s    r   __hash__zVersion.__hash__A   s    DKK  r   c                 N    | j                   j                  d| j                  dS )Nz('z')	__class__r   r   rD   s    r   __repr__zVersion.__repr__D   s    !^^44dllCCr   c                     | j                   S r1   r   rD   s    r   __str__zVersion.__str__G       ||r   c                     t        d      )NzPlease implement in subclasses.r&   rD   s    r   is_prereleasezVersion.is_prereleaseJ   s    !"CDDr   N)r   r   r   r$   r   r/   r3   r6   r9   r<   r>   rA   rE   rI   rL   propertyrO   r   r   r   r   r      sW    DH+&*>88!D E Er   r   c            	       |    e Zd ZdZd d d d d d d d	 d
Zd Zd Zd Zed        Z	d Z
d Zd Zd Zd Zd Zy)MatcherNc                     | |k  S r1   r   vcps      r   <lambda>zMatcher.<lambda>T   
    QU r   c                     | |kD  S r1   r   rT   s      r   rX   zMatcher.<lambda>U   rY   r   c                     | |k(  xs | |k  S r1   r   rT   s      r   rX   zMatcher.<lambda>V       a1foA r   c                     | |k(  xs | |kD  S r1   r   rT   s      r   rX   zMatcher.<lambda>W   r\   r   c                     | |k(  S r1   r   rT   s      r   rX   zMatcher.<lambda>X   
    a1f r   c                     | |k(  S r1   r   rT   s      r   rX   zMatcher.<lambda>Y   s
    qAv r   c                     | |k(  xs | |kD  S r1   r   rT   s      r   rX   zMatcher.<lambda>[   r\   r   c                     | |k7  S r1   r   rT   s      r   rX   zMatcher.<lambda>\   r_   r   )<><=>======~=!=c                     t        |      S r1   r   r(   s     r   r   zMatcher.parse_requirementa   s     ##r   c                 ,   | j                   t        d      |j                         x| _        }| j	                  |      }|st        d|z        |j
                  | _        | j
                  j                         | _        g }|j                  rw|j                  D ]h  \  }}|j                  d      r+|dvrt        d|z        |d d d}}| j                  |       n| j                  |      d}}|j                  |||f       j t        |      | _        y )	NzPlease specify a version classzNot valid: %rz.*)rg   rj   z#'.*' not allowed for %r constraintsTF)version_class
ValueErrorr   r   r   namelowerkeyconstraintsendswithappendr   r   )r!   r"   rclistopvnprefixs          r   r$   zMatcher.__init__d   s   %=>>779$q""1%_q011FF	99??$== /A::d#-( *:<>*? @ @ "#3BB&&r* "&!3!3A!6Bb"f-./ Elr   c                 F   t        |t              r| j                  |      }| j                  D ]q  \  }}}| j                  j                  |      }t        |t              rt        | |      }|s&|d| j                  j                  }t        |       ||||      rq y y)z
        Check if the provided version matches the constraints.

        :param version: The version to match against this instance.
        :type version: String or :class:`Version` instance.
        z not implemented for FT)
r   r   rn   r   
_operatorsgetgetattrrH   r   r'   )r!   versionoperator
constraintrz   fmsgs          r   matchzMatcher.match   s     g|,((1G,0KK 		(Hj&##H-A!\*D!$#+T^^-D-DF)#..Wj&1		 r   c                     d }t        | j                        dk(  r&| j                  d   d   dv r| j                  d   d   }|S )Nr   r   )rg   rh   )r    r   )r!   results     r   exact_versionzMatcher.exact_version   sC    t{{q T[[^A%6-%G[[^A&Fr   c                     t        |       t        |      k7  s| j                  |j                  k7  rt        d| d|      y r*   )r+   rp   r,   r-   s     r   r/   zMatcher._check_compatible   s7    :e$		UZZ(?$FGG )@r   c                     | j                  |       | j                  |j                  k(  xr | j                  |j                  k(  S r1   )r/   rr   r   r-   s     r   r3   zMatcher.__eq__   s5    u%xx599$D)DDr   c                 &    | j                  |       S r1   r5   r-   s     r   r6   zMatcher.__ne__   r7   r   c                 X    t        | j                        t        | j                        z   S r1   )rC   rr   r   rD   s    r   rE   zMatcher.__hash__   s    DHH~T[[ 111r   c                 N    | j                   j                  d| j                  dS )N()rG   rD   s    r   rI   zMatcher.__repr__   s    >>22DLLAAr   c                     | j                   S r1   rK   rD   s    r   rL   zMatcher.__str__   rM   r   )r   r   r   rn   r|   r   r$   r   rP   r   r/   r3   r6   rE   rI   rL   r   r   r   rR   rR   O   sl    M #"--$%-$
J$#:*  HE&2Br   rR   z^v?(\d+!)?(\d+(\.\d+)*)((a|alpha|b|beta|c|rc|pre|preview)(\d+)?)?(\.(post|r|rev)(\d+)?)?([._-]?(dev)(\d+)?)?(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$c                 n   | j                         } t        j                  |       }|st        d| z        |j	                         }t        d |d   j                  d      D              }t        |      dkD  r$|d   dk(  r|d d }t        |      dkD  r	|d   dk(  r|d   sd}nt        |d   d d       }|dd }|d	d
 }|dd }|d   }|dk(  rd}n |d   |d   df}n|d   t        |d         f}|dk(  rd}n |d   |d   df}n|d   t        |d         f}|dk(  rd}n |d   |d   df}n|d   t        |d         f}|d}nVg }	|j                  d      D ]5  }
|
j                         rdt        |
      f}
nd|
f}
|	j                  |
       7 t        |	      }|s	|s|rd}nd}|sd}|sd}||||||fS )NzNot a valid version: %sc              3   2   K   | ]  }t        |        y wr1   int.0rU   s     r   	<genexpr>z_pep_440_key.<locals>.<genexpr>   s     6AQ6   r   .r            	   
         )NNr   )ar   )z)_)final)r   PEP440_VERSION_REr   r   groupsr   splitr    r   isdigitru   )r"   mr   numsepochprepostdevlocalr#   parts              r   _pep_440_keyr      s   		A"A%&?!&CDDXXZF6!566D
d)a-DHMCRy d)a-DHM !9F1IcrN#
1+C!A;D
B-C2JE
lq6>a&!)Ca&#c!f+%C|7?7A:D7CQL(D
lq6>a&!)Ca&#c!f+%C}KK$ 	D ||~3t9~4yLL	 eCC$T3--r   c                   :    e Zd ZdZd Z eg d      Zed        Zy)r   aI  A rational version.

    Good:
        1.2         # equivalent to "1.2.0"
        1.2.0
        1.2a1
        1.2.3a2
        1.2.3b1
        1.2.3c1
        1.2.3.4
        TODO: fill this out

    Bad:
        1           # minimum two numbers
        1.2a        # release level must have a release serial
        1.2.3b
    c                     t        |      }t        j                  |      }|j                         }t	        d |d   j                  d      D              | _        |S )Nc              3   2   K   | ]  }t        |        y wr1   r   r   s     r   r   z*NormalizedVersion.parse.<locals>.<genexpr>  s     $JSV$Jr   r   r   )_normalized_keyr   r   r   r   r   _release_clause)r!   r"   r   r   r   s        r   r   zNormalizedVersion.parse  sN     #
 ##A&$$JVAY__S5I$JJr   )r   brV   rcr   c                 @     t         fd j                  D              S )Nc              3   F   K   | ]  }|s|d    j                   v   yw)r   N)PREREL_TAGS)r   tr!   s     r   r   z2NormalizedVersion.is_prerelease.<locals>.<genexpr>!  s"     FA1Q44+++Fs   !!)anyr   rD   s   `r   rO   zNormalizedVersion.is_prerelease  s    FT[[FFFr   N)	r   r   r   r   r   setr   rP   rO   r   r   r   r   r      s-    "	 23KG Gr   r   c                     t        |       } t        |      }| |k(  ry| j                  |      syt        |      }| |   dk(  S )NTFr   )str
startswithr    )xyns      r   _match_prefixr   $  sC    AAAAAv<<?AAQ43;r   c            	       \    e Zd ZeZddddddddd	Zd
 Zd Zd Zd Z	d Z
d Zd Zd Zd Zy)r   _match_compatible	_match_lt	_match_gt	_match_le	_match_ge	_match_eq_match_arbitrary	_match_ne)ri   rc   rd   re   rf   rg   rh   rj   c                     |rd|vxr |j                   d   }n!|j                   d    xr |j                   d   }|r0|j                  j                  dd      d   }| j                  |      }||fS )N+r   r   r   )r   r   r   rn   )r!   r   r   rz   strip_localr"   s         r   _adjust_localzNormalizedMatcher._adjust_local>  sy    Z/FGNN24FK )//33Jr8JK%%c1-a0A((+G
""r   c                     | j                  |||      \  }}||k\  ry|j                  }dj                  |D cg c]  }t        |       c}      }t	        ||       S c c}w NFr   r   r   joinr   r   r!   r   r   rz   release_clauseipfxs          r   r   zNormalizedMatcher._match_ltL  c    "00*fMj #33hh71A78 #... 8   Ac                     | j                  |||      \  }}||k  ry|j                  }dj                  |D cg c]  }t        |       c}      }t	        ||       S c c}w r   r   r   s          r   r   zNormalizedMatcher._match_gtT  r   r   c                 8    | j                  |||      \  }}||k  S r1   r   r!   r   r   rz   s       r   r   zNormalizedMatcher._match_le\  &    "00*fM*$$r   c                 8    | j                  |||      \  }}||k\  S r1   r   r   s       r   r   zNormalizedMatcher._match_ge`  r   r   c                 \    | j                  |||      \  }}|s||k(  }|S t        ||      }|S r1   r   r   r!   r   r   rz   r   s        r   r   zNormalizedMatcher._match_eqd  sB    "00*fM+F  #7J7Fr   c                 0    t        |      t        |      k(  S r1   )r   r   s       r   r   z"NormalizedMatcher._match_arbitraryl  s    7|s:..r   c                 ^    | j                  |||      \  }}|s||k7  }|S t        ||       }|S r1   r   r   s        r   r   zNormalizedMatcher._match_neo  sE    "00*fM+F  'w
;;Fr   c                     | j                  |||      \  }}||k(  ry||k  ry|j                  }t        |      dkD  r|d d }dj                  |D cg c]  }t	        |       c}      }t        ||      S c c}w )NTFr   r   r   )r   r   r    r   r   r   r   s          r   r   z#NormalizedMatcher._match_compatiblew  s    "00*fMj Z $33~"+CR0Nhh71A78Wc** 8s   A6N)r   r   r   r   rn   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   /  sU    %M "!	J#//%%/+r   r   z[.+-]$ z^[.](\d)z0.\1z^[.-]z
^\((.*)\)$\1z^v(ersion)?\s*(\d+)z\2z^r(ev)?\s*(\d+)z[.]{2,}r   z\b(alfa|apha)\balphaz\b(pre-alpha|prealpha)\bz	pre.alphaz	\(beta\)$betaz
^[:~._+-]+z
[,*")([\]]z[~:+_ -]z\.$z(\d+(\.\d+)*)c                 v   | j                         j                         }t        D ]  \  }}|j                  ||      } |sd}t        j                  |      }|sd}|}n|j                         d   j                  d      }|D cg c]  }t        |       }}t        |      dk  r |j                  d       t        |      dk  r t        |      dk(  r||j                         d }nDdj                  |dd D cg c]  }t        |       c}      ||j                         d z   }|dd }dj                  |D cg c]  }t        |       c}      }|j                         }|r t        D ]  \  }}|j                  ||      } |s|}nd|v rdnd}||z   |z   }t        |      sd}|S c c}w c c}w c c}w )	z
    Try to suggest a semantic form for a version for which
    _suggest_normalized_version couldn't come up with anything.
    z0.0.0r   r      Nr   -r   )r   rq   _REPLACEMENTSsub_NUMERIC_PREFIXr   r   r   r   r    ru   endr   r   _SUFFIX_REPLACEMENTS	is_semver)	r"   r   patreplr   rz   suffixr   seps	            r   _suggest_semantic_versionr     s   
 WWY__F" '	Tv&'
 	f%AA$$S)"()Q#a&))&kAoMM! &kAov;!AEEGH%FXXvabz:!s1v:;fQUUWX>NNFBQZF62a3q623 . 	+ICWWT6*F	+ f_c##&VM/ * ;2s   F,<F1=F6c                    	 t        |        | S # t        $ r Y nw xY w| j                         }dD ]  \  }}|j                  ||      } t	        j
                  dd|      }t	        j
                  dd|      }t	        j
                  dd|      }t	        j
                  dd	|      }t	        j
                  d
d|      }|j                  d      r|dd }t	        j
                  dd|      }t	        j
                  dd|      }t	        j
                  dd|      }t	        j
                  dd|      }t	        j
                  dd|      }t	        j
                  dd|      }t	        j
                  dd|      }t	        j
                  dd|      }t	        j
                  dd|      }t	        j
                  dd|      }t	        j
                  dd |      }	 t        |       |S # t        $ r d}Y |S w xY w)!a  Suggest a normalized version close to the given version string.

    If you have a version string that isn't rational (i.e. NormalizedVersion
    doesn't like it) then you might be able to get an equivalent (or close)
    rational version from this function.

    This does a number of simple normalizations to the given string, based
    on observation of versions currently in use on PyPI. Given a dump of
    those version during PyCon 2009, 4287 of them:
    - 2312 (53.93%) match NormalizedVersion without change
      with the automatic suggestion
    - 3474 (81.04%) match when using this suggestion method

    @param s {str} An irrational version string.
    @returns A rational version string, or None, if couldn't determine one.
    ))z-alphar   )z-betar   )r   r   )r   r   )r   rV   )z-finalr   )z-prerV   )z-releaser   )z.releaser   )z-stabler   )r   r   )r   r   ) r   )z.finalr   )r   r   zpre$pre0zdev$dev0z([abc]|rc)[\-\.](\d+)$z\1\2z[\-\.](dev)[\-\.]?r?(\d+)$z.\1\2z[.~]?([abc])\.?r   rU   r   Nz\b0+(\d+)(?!\d)z(\d+[abc])$z\g<1>0z\.?(dev-r|dev\.r)\.?(\d+)$z.dev\2z-(a|b|c)(\d+)$z[\.\-](dev|devel)$z.dev0z(?![\.\-])dev$z(final|stable)$r   z\.?(r|-|-r)\.?(\d+)$z.post\2z\.?(dev|git|bzr)\.?(\d+)$z\.?(pre|preview|-c)(\d+)$zc\g<2>zp(\d+)$z.post\1)r   r   rq   replacerer   r   )r"   rsorigr   s       r   _suggest_normalized_versionr    s   ""  
B& $
d ZZd#$ 
"	%B	"	%B
 
)7B	7B 
-x	<B 
"E2	.B 
}}SV
 
"E2	.B
 
	2	.B 
-y"	=B 
!7B	/B 
%x	4B 
!8R	0B 
"B	+B 
'R	8B 
,i	<B 
,i	<B 

J	+B I # Is    	G G-,G-z([a-z]+|\d+|[\.-])rV   zfinal-@)r   previewr   r   r   r   r   c                    d }g } ||       D ]s  }|j                  d      rO|dk  r%|r#|d   dk(  r|j                          |r	|d   dk(  r|r#|d   dk(  r|j                          |r	|d   dk(  r|j                  |       u t        |      S )Nc                     g }t         j                  | j                               D ]T  }t        j	                  ||      }|sd|d d cxk  rdk  rn n|j                  d      }nd|z   }|j                  |       V |j                  d       |S )N0r   9   **final)_VERSION_PARTr   rq   _VERSION_REPLACEr}   zfillru   )r"   r   rW   s      r   	get_partsz_legacy_key.<locals>.get_partsM  s    $$QWWY/ 	!A $$Q*A!BQ%&3&
AaAa 	! 	hr   r  r  r   z*final-00000000)r   popru   r   )r"   r  r   rW   s       r   _legacy_keyr  L  s     Fq\ <<8|y!8JJL y!8VBZ:5

 VBZ:5a =r   c                   "    e Zd Zd Zed        Zy)r	   c                     t        |      S r1   )r  r(   s     r   r   zLegacyVersion.parseg  s    1~r   c                     d}| j                   D ]/  }t        |t              s|j                  d      s&|dk  s,d} |S  |S )NFr  r  T)r   r   r   r   )r!   r   r   s      r   rO   zLegacyVersion.is_prereleasej  sJ     	A1l+S0AL	
 r   Nr   r   r   r   rP   rO   r   r   r   r	   r	   f  s      r   r	   c                   h    e Zd ZeZ eej                        Zded<    ej                  d      Z
d Zy)r
   r   ri   z^(\d+(\.\d+)*)c                     ||k  ry| j                   j                  t        |            }|st        j	                  d||       y|j                         d   }d|v r|j                  dd      d   }t        ||      S )NFzACannot compute compatible match for version %s  and constraint %sTr   r   r   )
numeric_rer   r   loggerwarningr   rsplitr   )r!   r   r   rz   r   r"   s         r   r   zLegacyMatcher._match_compatible}  sz    ZOO!!#j/2NN 018*FHHJqM!8a #AWa((r   N)r   r   r   r	   rn   dictrR   r|   r   compiler  r   r   r   r   r
   r
   u  s7    !Mg(()J*Jt-.J)r   r
   zN^(\d+)\.(\d+)\.(\d+)(-[a-z0-9]+(\.[a-z0-9-]+)*)?(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$c                 ,    t         j                  |       S r1   )
_SEMVER_REr   )r"   s    r   r   r     s    Ar   c                     d }t        |       }|st        |       |j                         }|d d D cg c]  }t        |       c}\  }}} ||d   d       ||d   d      }	}|||f||	fS c c}w )Nc                     | |f}|S | dd  j                  d      }t        |D cg c]%  }|j                         r|j                  d      n|' c}      }|S c c}w )Nr   r   r
  )r   r   r   r  )r"   absentr   r#   rW   s        r   
make_tuplez!_semantic_key.<locals>.make_tuple  sb    9YF 	 abEKK$E eL!))+AGGAJ1<LMF Ms   *Ar   |   r  )r   r   r   r   )
r"   r%  r   r   r   majorminorpatchr   builds
             r   _semantic_keyr,    s     	!A%a((XXZF+1"1:6a3q66E5%F1Is+Zq	3-GC5% #u,, 7s   A,c                   "    e Zd Zd Zed        Zy)r   c                     t        |      S r1   )r,  r(   s     r   r   zSemanticVersion.parse  s    Qr   c                 ,    | j                   d   d   dk7  S )Nr   r   r&  )r   rD   s    r   rO   zSemanticVersion.is_prerelease  s    {{1~a C''r   Nr  r   r   r   r   r     s      ( (r   r   c                       e Zd ZeZy)r   N)r   r   r   r   rn   r   r   r   r   r     s    #Mr   r   c                   ,    e Zd ZddZd Zd Zd Zd Zy)VersionSchemeNc                 .    || _         || _        || _        y r1   )rr   matcher	suggester)r!   rr   r4  r5  s       r   r$   zVersionScheme.__init__  s    "r   c                 f    	 | j                   j                  |       d}|S # t        $ r d}Y |S w xY wNTF)r4  rn   r   r!   r"   r   s      r   is_valid_versionzVersionScheme.is_valid_version  s@    	LL&&q)F  ' 	F	s   ! 00c                 R    	 | j                  |       d}|S # t        $ r d}Y |S w xY wr7  )r4  r   r8  s      r   is_valid_matcherzVersionScheme.is_valid_matcher  s9    	LLOF  ' 	F	s    &&c                 V    |j                  d      r|dd }| j                  d|z        S )z:
        Used for processing some metadata fields
        ,Nr   zdummy_name (%s))rt   r;  r(   s     r   is_valid_constraint_listz&VersionScheme.is_valid_constraint_list  s1    
 ::c?#2A$$%6%:;;r   c                 H    | j                   d }|S | j                  |      }|S r1   )r5  r8  s      r   suggestzVersionScheme.suggest  s-    >>!F  ^^A&Fr   r1   )r   r   r   r$   r9  r;  r>  r@  r   r   r   r2  r2    s    #
<r   r2  c                     |S r1   r   r(   s     r   rX   rX     s     r   )
normalizedlegacysemanticrB  defaultc                 @    | t         vrt        d| z        t         |    S )Nzunknown scheme name: %r)_SCHEMESro   )rp   s    r   r   r     s%    82T9::D>r   )*r   loggingr   compatr   utilr   __all__	getLoggerr   r  ro   r   objectr   rR   r  Ir   r   r   r   r   r   r   r   r   r   r  r  r  r  r	   r
   r!  r   r,  r   r   r2  rG  r   r   r   r   <module>rO     s  
  	   #4
 
		8	$	j 	
.Ef .Ebaf aH BJJ  FGIttM 
B.J !G !GHT+ T+p RZZ2RZZg&RZZ"RZZ&RZZ&'/RZZ"#U+RZZ	C RZZ"#W-RZZ+,RZZv& RZZr"RZZ#RZZ
S!RZZ	C RZZ  "**-.+\lf 

0"$$7	
	 4G )G )4 RZZ :;=44A

-*(g ($g $$F $P  1B ;=K8IJm_79	 |, r   