
    wOg\                        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)dS )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dS )r   zThis is an unsupported version.N)__name__
__module____qualname____doc__     U/var/www/AppWebDeiv/myenv/lib/python3.11/site-packages/pip/_vendor/distlib/version.pyr   r      s        ))Dr   r   c                   l    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dS )Versionc                     |                                 x| _        }|                     |          x| _        }t	          |t
                    sJ t          |          dk    sJ d S )Nr   )strip_stringparse_parts
isinstancetuplelen)selfspartss      r   __init__zVersion.__init__   sY    7799$q"jjmm+e%'''''5zzA~~~~~~r   c                      t          d          )Nzplease implement in a subclassNotImplementedErrorr!   r"   s     r   r   zVersion.parse%   s    !"BCCCr   c                 p    t          |           t          |          k    rt          d| d|          d S Nzcannot compare z and )type	TypeErrorr!   others     r   _check_compatiblezVersion._check_compatible(   s<    ::e$$)$$$FGGG %$r   c                 L    |                      |           | j        |j        k    S Nr/   r   r-   s     r   __eq__zVersion.__eq__,   s%    u%%%{el**r   c                 .    |                      |           S r1   r3   r-   s     r   __ne__zVersion.__ne__0       ;;u%%%%r   c                 L    |                      |           | j        |j        k     S r1   r2   r-   s     r   __lt__zVersion.__lt__3   s%    u%%%{U\))r   c                 X    |                      |          p|                     |           S r1   r9   r3   r-   s     r   __gt__zVersion.__gt__7   s(    KK&&<$++e*<*<==r   c                 V    |                      |          p|                     |          S r1   r;   r-   s     r   __le__zVersion.__le__:   %    {{5!!7T[[%7%77r   c                 V    |                      |          p|                     |          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    DK   r   c                 0    | j         j        d| j        dS )Nz('z')	__class__r   r   rD   s    r   __repr__zVersion.__repr__D   s    !^444dlll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DDr   N)r   r   r   r$   r   r/   r3   r6   r9   r<   r>   rA   rE   rI   rL   propertyrO   r   r   r   r   r      s          D D DH H H+ + +& & &* * *> > >8 8 88 8 8! ! !D D D   E E XE 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dS )MatcherNc                     | |k     S r1   r   vcps      r   <lambda>zMatcher.<lambda>T   
    QU r   c                     | |k    S r1   r   rT   s      r   rX   zMatcher.<lambda>U   rY   r   c                     | |k    p| |k     S r1   r   rT   s      r   rX   zMatcher.<lambda>V       a1foA r   c                     | |k    p| |k    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    p| |k    S r1   r   rT   s      r   rX   zMatcher.<lambda>[   r\   r   c                     | |k    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                 Z   | j         t          d          |                                x| _        }|                     |          }|st          d|z            |j        | _        | j                                        | _        g }|j        r|j        D ]\  }}|	                    d          r8|dvrt          d|z            |d d         d}}|                      |           n|                      |          d}}|
                    |||f           t          |          | _        d S )	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   sM   %=>>>7799$q""1%% 	2_q0111F	9??$$= 	/ / /A::d## >--( *:<>*? @ @ @ "#3B3B&&r**** "&!3!3A!6!6Bb"f-....Ellr   c                 X   t          |t                    r|                     |          }| j        D ]w\  }}}| j                            |          }t          |t                    rt          | |          }|s |d| j        j        }t          |           ||||          s dS xdS )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|,, 	2((11G,0K 		 		(Hj&##H--A!\** %D!$$ /#+88T^-D-DF)#...1Wj&11 uutr   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   sF    t{q  T[^A%6-%G%G[^A&Fr   c                     t          |           t          |          k    s| j        |j        k    rt          d| d|          d S r*   )r+   rp   r,   r-   s     r   r/   zMatcher._check_compatible   sK    ::e$$	UZ(?(?)$$$FGGG )@(?r   c                 l    |                      |           | j        |j        k    o| j        |j        k    S r1   )r/   rr   r   r-   s     r   r3   zMatcher.__eq__   s3    u%%%x59$D)DDr   c                 .    |                      |           S r1   r5   r-   s     r   r6   zMatcher.__ne__   r7   r   c                 T    t          | j                  t          | j                  z   S r1   )rC   rr   r   rD   s    r   rE   zMatcher.__hash__   s    DH~~T[ 1 111r   c                 0    | j         j        d| j        dS )N()rG   rD   s    r   rI   zMatcher.__repr__   s    >222DLLL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   s       M #"""----$$%%--$$
 
J$ $ $# # #:  *   XH H HE E E& & &2 2 2B B 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                    |                                  } t                              |           }|st          d| z            |                                }t          d |d                             d          D                       }t          |          dk    r5|d         dk    r)|d d         }t          |          dk    r|d         dk    )|d         sd}nt          |d         d d                   }|dd         }|d	d
         }|dd         }|d         }|dk    rd}n0|d         |d         df}n|d         t          |d                   f}|dk    rd}n0|d         |d         df}n|d         t          |d                   f}|dk    rd}n0|d         |d         df}n|d         t          |d                   f}|d}nhg }	|                    d          D ]A}
|
	                                rdt          |
          f}
nd|
f}
|	
                    |
           Bt          |	          }|s	|s|rd}nd}|sd}|sd}||||||fS )NzNot a valid version: %sc              3   4   K   | ]}t          |          V  d S r1   int.0rU   s     r   	<genexpr>z_pep_440_key.<locals>.<genexpr>   s(      66AQ666666r   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 E%&?!&CDDDXXZZF66!5!566666D
d))a--DHMMCRCy d))a--DHMM !9 $F1IcrcN##
1+C!A#;D
B-C2JE
lq6>a&!)CCa&#c!f++%C|7?7A:DD7CQLL(D
lq6>a&!)CCa&#c!f++%C}KK$$ 	 	D ||~~ !3t99~4yLLe  	 	CCC  $T3--r   c                   H    e Zd ZdZd Z eg d          Zed             ZdS )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                              |          }|                                }t	          d |d                             d          D                       | _        |S )Nc              3   4   K   | ]}t          |          V  d S r1   r   r   s     r   r   z*NormalizedVersion.parse.<locals>.<genexpr>  s(      $J$JSVV$J$J$J$J$J$Jr   r   r   )_normalized_keyr   r   r   r   r   _release_clause)r!   r"   r   r   r   s        r   r   zNormalizedVersion.parse  se     ##
 ##A&&$$J$JVAY__S5I5I$J$J$JJJr   )r   brV   rcr   c                 D     t           fd j        D                       S )Nc              3   :   K   | ]}||d          j         v V  dS )r   N)PREREL_TAGS)r   tr!   s     r   r   z2NormalizedVersion.is_prerelease.<locals>.<genexpr>!  s4      FFAF1Q44++FFFFFFr   )anyr   rD   s   `r   rO   zNormalizedVersion.is_prerelease  s(    FFFFT[FFFFFFr   N)	r   r   r   r   r   setr   rP   rO   r   r   r   r   r      sc         "	 	 	 #22233KG G XG G Gr   r   c                     t          |           } t          |          }| |k    rdS |                     |          sdS t          |          }| |         dk    S )NTFr   )str
startswithr    )xyns      r   _match_prefixr   $  sV    AAAAAvvt<<?? u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dS )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o|j         d         }n|j         d          o|j         d         }|r6|j                            dd          d         }|                     |          }||fS )N+r   r   r   )r   r   r   rn   )r!   r   r   rz   strip_localr"   s         r   _adjust_localzNormalizedMatcher._adjust_local>  s     	KZ/FGN24FKK )/33Jr8JK 	,%%c1--a0A((++G
""r   c                     |                      |||          \  }}||k    rdS |j        }d                    d |D                       }t          ||           S )NFr   c                 ,    g | ]}t          |          S r   r   r   is     r   
<listcomp>z/NormalizedMatcher._match_lt.<locals>.<listcomp>Q      7771A777r   r   r   joinr   r!   r   r   rz   release_clausepfxs         r   r   zNormalizedMatcher._match_ltL  i    "00*fMMj  5#3hh7777788 #....r   c                     |                      |||          \  }}||k    rdS |j        }d                    d |D                       }t          ||           S )NFr   c                 ,    g | ]}t          |          S r   r   r   s     r   r   z/NormalizedMatcher._match_gt.<locals>.<listcomp>Y  r   r   r   r   s         r   r   zNormalizedMatcher._match_gtT  r   r   c                 B    |                      |||          \  }}||k    S r1   r   r!   r   r   rz   s       r   r   zNormalizedMatcher._match_le\  )    "00*fMM*$$r   c                 B    |                      |||          \  }}||k    S r1   r   r   s       r   r   zNormalizedMatcher._match_ge`  r   r   c                 l    |                      |||          \  }}|s||k    }nt          ||          }|S r1   r   r   r!   r   r   rz   r   s        r   r   zNormalizedMatcher._match_eqd  sF    "00*fMM 	8+FF"7J77Fr   c                 B    t          |          t          |          k    S r1   r   r   s       r   r   z"NormalizedMatcher._match_arbitraryl  s    7||s:..r   c                 n    |                      |||          \  }}|s||k    }nt          ||           }|S r1   r   r   s        r   r   zNormalizedMatcher._match_neo  sI    "00*fMM 	<+FF&w
;;;Fr   c                     |                      |||          \  }}||k    rdS ||k     rdS |j        }t          |          dk    r
|d d         }d                    d |D                       }t	          ||          S )NTFr   r   r   c                 ,    g | ]}t          |          S r   r   r   s     r   r   z7NormalizedMatcher._match_compatible.<locals>.<listcomp>  r   r   )r   r   r    r   r   r   s         r   r   z#NormalizedMatcher._match_compatiblew  s    "00*fMMj  4Z5 $3~""+CRC0Nhh7777788Wc***r   N)r   r   r   r   rn   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   /  s        %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                    |                                                                  }t          D ]\  }}|                    ||          }|sd}t                              |          }|sd}|}n%|                                d                             d          }d |D             }t          |          dk     r(|	                    d           t          |          dk     (t          |          dk    r||
                                d         }nNd                    d |dd         D                       ||
                                d         z   }|dd         }d                    d |D                       }|                                 }|r#t          D ]\  }}|                    ||          }|s|}nd	|v rd
nd}||z   |z   }t          |          sd}|S )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   c                 ,    g | ]}t          |          S r   r   r   s     r   r   z-_suggest_semantic_version.<locals>.<listcomp>  s    )))Q#a&&)))r      Nc                 ,    g | ]}t          |          S r   r   r   s     r   r   z-_suggest_semantic_version.<locals>.<listcomp>  s    :::!s1vv:::r   c                 ,    g | ]}t          |          S r   r   r   s     r   r   z-_suggest_semantic_version.<locals>.<listcomp>  s    222a3q66222r   r   -r   )r   rq   _REPLACEMENTSsub_NUMERIC_PREFIXr   r   r   r    ru   endr   _SUFFIX_REPLACEMENTS	is_semver)r"   r   patreplr   rz   suffixseps           r   _suggest_semantic_versionr    s   
 WWYY__F" ' '	Tv&& 
 	f%%A  A$$S))))&)))&kkAooMM! &kkAoov;;!AEEGGHH%FFXX::vabbz:::;;fQUUWWXX>NNFBQBZF22622233 + . 	+ 	+ICWWT6**FF 'f__cc##&V Mr   c                    	 t          |            | S # t          $ r Y nw xY w|                                 }dD ]\  }}|                    ||          }t	          j        dd|          }t	          j        dd|          }t	          j        dd|          }t	          j        dd	|          }t	          j        d
d|          }|                    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          |           n# t          $ r d}Y nw xY w|S )!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
    s1   ""    
B& $ $
d ZZd## 
"	%	%B	"	%	%B
 
)7B	7	7B 
-x	<	<B 
"E2	.	.B 
}}S V
 
"E2	.	.B
 
	2	.	.B 
-y"	=	=B 
!7B	/	/B 
%x	4	4B 
!8R	0	0B 
"B	+	+B 
'R	8	8B 
,i	<	<B 
,i	<	<B 

J	+	+B"   Is    
  G% %G43G4z([a-z]+|\d+|[\.-])rV   zfinal-@)r   previewr   r   r   r   r   c                 f   d }g } ||           D ]}|                     d          rf|dk     r0|r.|d         dk    r"|                                 |r|d         dk    "|r.|d         dk    r"|                                 |r|d         dk    "|                    |           t          |          S )Nc                 \   g }t                               |                                           D ]g}t                              ||          }|rHd|d d         cxk    rdk    rn n|                    d          }nd|z   }|                    |           h|                    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    $$QWWYY// 	! 	!A $$Q**A !!BQB%&&&&3&&&&&

AA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Yq\\  << 	8|| !y!8!8JJLLL  !y!8!8 VBZ:55

  VBZ:55a==r   c                   *    e Zd Zd Zed             ZdS )r	   c                      t          |          S r1   )r  r(   s     r   r   zLegacyVersion.parseg  s    1~~r   c                     d}| j         D ]6}t          |t                    r|                    d          r
|dk     rd} n7|S )NFr  r  T)r   r   r   r   )r!   r   r   s      r   rO   zLegacyVersion.is_prereleasej  sU     	 	A1l++ S0A0A a(llr   Nr   r   r   r   rP   rO   r   r   r   r	   r	   f  s>             X  r   r	   c                   b    e Zd ZeZ eej                  Zded<    ej	        d          Z
d ZdS )r
   r   ri   z^(\d+(\.\d+)*)c                 4   ||k     rdS | j                             t          |                    }|st                              d||           dS |                                d         }d|v r|                    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|  s    Z5O!!#j//22 	NN 018*F F F4HHJJqM!88a  #AWa(((r   N)r   r   r   r	   rn   dictrR   r|   r  compiler!  r   r   r   r   r
   r
   t  sV        !Mg())J*Jt-..J) ) ) ) )r   r
   zN^(\d+)\.(\d+)\.(\d+)(-[a-z0-9]+(\.[a-z0-9-]+)*)?(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$c                 6    t                               |           S r1   )
_SEMVER_REr   )r"   s    r   r   r     s    Ar   c                     d }t          |           }|st          |           |                                }d |d d         D             \  }}} ||d         d           ||d         d          }}|||f||fS )Nc                 ~    | |f}n6| dd                               d          }t          d |D                       }|S )Nr   r   c                 d    g | ]-}|                                 r|                    d           n|.S )r  )r   r  )r   rW   s     r   r   z5_semantic_key.<locals>.make_tuple.<locals>.<listcomp>  s3    LLL!))++<AGGAJJJ1LLLr   )r   r   )r"   absentr   r#   s       r   
make_tuplez!_semantic_key.<locals>.make_tuple  sL    9YFFabbEKK$$E LLeLLLMMFr   c                 ,    g | ]}t          |          S r   r   r   s     r   r   z!_semantic_key.<locals>.<listcomp>  s    666a3q66666r   r   |   r  )r   r   r   )	r"   r-  r   r   majorminorpatchr   builds	            r   _semantic_keyr5    s       	!A )%a(((XXZZF666"1":666E5%F1Is++ZZq	3-G-GC5% #u,,r   c                   *    e Zd Zd Zed             ZdS )r   c                      t          |          S r1   )r5  r(   s     r   r   zSemanticVersion.parse  s    Qr   c                 0    | j         d         d         dk    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>              ( ( X( ( (r   r   c                       e Zd ZeZdS )r   N)r   r   r   r   rn   r   r   r   r   r     s        #MMMr   r   c                   .    e Zd ZddZd Zd Zd Zd ZdS )VersionSchemeNc                 0    || _         || _        || _        d S r1   )rr   matcher	suggester)r!   rr   r=  r>  s       r   r$   zVersionScheme.__init__  s    "r   c                 f    	 | j                             |           d}n# t          $ r d}Y nw xY w|S NTF)r=  rn   r   r!   r"   r   s      r   is_valid_versionzVersionScheme.is_valid_version  sM    	L&&q)))FF& 	 	 	FFF	s    ..c                 \    	 |                      |           d}n# t          $ r d}Y nw xY w|S r@  )r=  r   rA  s      r   is_valid_matcherzVersionScheme.is_valid_matcher  sF    	LLOOOFF& 	 	 	FFF	s    ))c                 p    |                     d          r
|dd         }|                     d|z            S )z:
        Used for processing some metadata fields
        ,Nr   zdummy_name (%s))rt   rD  r(   s     r   is_valid_constraint_listz&VersionScheme.is_valid_constraint_list  s=    
 ::c?? 	#2#A$$%6%:;;;r   c                 D    | j         d }n|                      |          }|S r1   )r>  rA  s      r   suggestzVersionScheme.suggest  s'    >!FF^^A&&Fr   r1   )r   r   r   r$   rB  rD  rG  rI  r   r   r   r;  r;    sd        # # # #
    < < <    r   r;  c                     |S r1   r   r(   s     r   rX   rX     s     r   )
normalizedlegacysemanticrK  defaultc                 R    | 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   r5  r   r   r;  rP  r   r   r   r   <module>rX     s    
  				             # # # # # #4 4 4
 
	8	$	$	 	 	 	 	j 	 	 	
.E .E .E .E .Ef .E .E .Eba a a a af a a aH BJ  FGItM M 
B. B. B.J !G !G !G !G !G !G !G !GH  T+ T+ T+ T+ T+ T+ T+ T+p RZ2RZg&RZ"RZ&RZ&''/RZ"##U+RZ	C RZ"##W-RZ+,,RZv& RZr"RZ#RZ
S!RZ	C RZ  "*-..+ + +\l l lf 
0"$77	
	    4    G   ) ) ) ) )G ) ) )4 RZ :;=4A A

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