
    Fg                        % S SK Jr  S SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r  \r
S\S'   SrSqSS	 jrSS
 jrSS jrSS jrSS jrSS jrg)    )annotationsN)OpenerDirector)warn)__version__strr      c                     [         cX  [        R                  R                  [        R                  R	                  5       [        R                  R                  5       5      q [         $ )N)openerurllibrequestbuild_openerHTTPHandlerHTTPSHandler     m/Users/admin/workspace/ai/PDFMathTranslate/myenv/lib/python3.13/site-packages/albumentations/check_version.py
get_openerr      s<    ~,,V^^-G-G-I6>>KfKfKhiMr   c                 v   [        5       n Sn U R                  USS9 nUR                  [        :X  aI  UR	                  5       nUR                  5       R                  S5      nUR                  U5      sS S S 5        $  S S S 5        g! , (       d  f       g= f! [         a  n[        SU 3SS9   S nAgS nAff = f)Nz)https://pypi.org/pypi/albumentations/json   )timeoutzutf-8zError fetching version info 
stacklevel )
r   openstatusSUCCESS_HTML_CODEreadinfoget_content_charsetdecode	Exceptionr   )r
   urlresponsedataencodinges         r   fetch_version_infor'      s    \F
5C?[[a[(H"33}}#==?>>wG{{8,	 )(3 )  )(   ?+A3/A>?s;   B AB2	B =B 
BB B 
B8!B33B8c                    U (       a9   [         R                  " U 5      nUR                  S0 5      R                  SS5      $ g! [         R                   a     gf = f)z,Parses the version from the given JSON data.r   versionr   )jsonloadsgetJSONDecodeError)r$   	json_datas     r   parse_versionr/   '   sU    	

4(I==,00B??  ## 		s   7A AAc                   [        X5       H|  u  p#X#:w  d  M  [        U[        5      (       a  [        U[        5      (       a  X#:  s  $ [        U[        5      (       a  [        U[        5      (       a  X#:  s  $ [        U[        5      s  $    [	        U 5      [	        U5      :  a  [        U [	        U5         [        5      $ [	        U5      [	        U 5      :  a  [        U[	        U 5         [        5      $ g)zCompare two version tuples.
Returns True if v1 > v2, False otherwise.

Special rules:
1. Release version > pre-release version (e.g., (1, 4) > (1, 4, 'beta'))
2. Numeric parts are compared numerically
3. String parts are compared lexicographically
F)zip
isinstanceintr   len)v1v2p1p2s       r   compare_versionsr9   4   s     b+8"c""z"c':':w"c""z"c':':wb#&&  2wR"SW+s++
2wR"SW+s++r   c                ,   / nU R                  S5       Hs  n[        R                  " SU5      nU HS  nUR                  5       (       a  UR	                  [        U5      5        M4  UR	                  UR                  5       5        MU     Mu     [        U5      $ )zConvert version string to tuple of (int | str) parts following PEP 440 conventions.

Examples:
    "1.4.24" -> (1, 4, 24)
    "1.4beta" -> (1, 4, "beta")
    "1.4.beta2" -> (1, 4, "beta", 2)
    "1.4.alpha2" -> (1, 4, "alpha", 2)
.z([0-9]+|[a-zA-Z]+))splitrefindallisdigitappendr3   lowertuple)version_strpartspartsegmentssegments        r   parse_version_partsrH   S   st     E!!#&::3T:G  S\*W]]_-	   ' <r   c                 "    [        5       n [        U 5      nU(       aH  [        U5      n[        [        5      n[	        X#5      (       a  [        SU< S[        < S3[        SS9  g g g ! [         a  n[        SU S3[        SS9   S nAg S nAff = f)Nz.A new version of Albumentations is available: z (you have z). Upgrade using: pip install -U albumentations. To disable automatic update checks, set the environment variable NO_ALBUMENTATIONS_UPDATE to 1.r   r   z*Failed to check for updates due to error: za. To disable automatic update checks, set the environment variable NO_ALBUMENTATIONS_UPDATE to 1.)r'   r/   rH   current_versionr9   r   UserWarningr!   )r$   latest_versionlatest_partscurrent_partsr&   s        r   check_for_updatesrO   i   s    
!#&t,.~>L/@M<<D^DVVabqat uv v    =   
8 <n n		

s   A"A' '
B1B		B)returnr   )rP   r   )r$   r   rP   r   )r5   tuple[int | str, ...]r6   rQ   rP   bool)rC   r   rP   rQ   )rP   None)
__future__r   r*   r=   urllib.requestr   r   warningsr   albumentationsr   rJ   __annotations__r   r
   r   r'   r/   r9   rH   rO   r   r   r   <module>rY      sM    "  	  )  9"S " 	
>,
r   