
    !\i                        S r SSKrSSKrSSKrSSKrSSKJr  SSKrSSKJ	r	  SSSSSSS	S
SSSS.r
\r\
R                  5        V Vs1 s H  u  pUS:X  d  M  U iM     snn r\
R                  5        V Vs1 s H  u  pUS;   d  M  U iM     snn r " S S5      r\R"                  " SS9 " S S\5      5       r\R"                  " SS9 " S S\5      5       rS rS rgs  snn f s  snn f )zzDataset paths, identifiers, and filenames

Note: this module is not part of Rasterio's API. It is for internal use
only.

    N)urlparse)	PathErrorcurlgzips3tarzipfileossgsaz)ftpr   httphttpsr   r   r	   r
   r   r   r   )r   r   r   r   r   c                       \ rS rSrSrS rSrg)_Path4   zBase class for dataset pathsc                     [        U 5      $ N)	_vsi_pathselfs    Q/var/www/html/kml_chatgpt/mouzaenv/lib/python3.13/site-packages/rasterio/_path.pyas_vsi_Path.as_vsi7   s         N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r   r   r   r   r   4   s
    &r   r   T)slotsc                       \ rS rSrSr\R                  " 5       r\R                  " 5       r\R                  " 5       r	\
S 5       r\S 5       r\S 5       r\S 5       rSrg)	_ParsedPath;   zResult of parsing a dataset URI/Path

Attributes
----------
path : str
    Parsed path. Includes the hostname and query string in the case
    of a URI.
archive : str
    Parsed archive path.
scheme : str
    URI scheme such as "https" or "zip+s3".
c                    [        U5      n[        R                  S:X  aC  [        R                  " SUR
                  5      (       a  UR
                   UR                   3nS nOUR                  nUR
                  nUnUR                  =(       d    S nUR                  (       a  USUR                  -   -  nU(       aZ  UR                  S5      (       aD  UR                  S5      nU(       a  UR                  5       OS nU(       a  UR                  5       OS nOS nU(       a  U(       a  U(       a  XH-   nOXE-   n[        XXU5      $ )Nwin32^[a-zA-Z]\:?)r   r   r	   !)r   sysplatformrematchnetlocpathschemequery
startswithsplitpopr&   )	clsuripartsparsed_pathparsed_netlocr2   r3   
path_partsarchives	            r   from_uri_ParsedPath.from_uriM   s    <<7"rxx'M'M"\\N5::,7K M**K!LLM%;;C%++%%Df''(>??CJ'1:>>#tD*4jnn&$GGm'1$+4&11r   c                     U R                   (       d  U R                  $ U R                  (       a(  U R                    SU R                   SU R                   3$ U R                    SU R                   3$ )zThe parsed path's original URIz://r,   )r3   r2   r>   r   s    r   name_ParsedPath.namel   sX     {{99\\kk]#dll^1TYYK@@kk]#dii[11r   c                     [        U R                  5      =(       a%    U R                  R                  S5      S   [        ;   $ )z)Test if the path is a remote, network URI+)boolr3   r6   REMOTESCHEMESr   s    r   	is_remote_ParsedPath.is_remotev   s1     DKK PT[[%6%6s%;B%?=%PPr   c                     U R                   (       + =(       d8    U R                   =(       a%    U R                   R                  S5      S   [        ;  $ )zTest if the path is a local URIrE   rF   )r3   r6   rH   r   s    r   is_local_ParsedPath.is_local{   s8     ;;c4;;#b4;;3D3DS3I"3MUb3bcr   r   N)r   r   r    r!   r"   attribr2   r>   r3   classmethodr?   propertyrB   rI   rL   r#   r   r   r   r&   r&   ;   s|     779DggiGWWYF2 2< 2 2 Q Q d dr   r&   c                   J    \ rS rSrSr\R                  " 5       r\S 5       r	Sr
g)_UnparsedPath   zcEncapsulates legacy GDAL filenames

Attributes
----------
path : str
    The legacy GDAL filename.
c                     U R                   $ )z!The unparsed path's original path)r2   r   s    r   rB   _UnparsedPath.name   s     yyr   r   N)r   r   r    r!   r"   rN   rO   r2   rQ   rB   r#   r   r   r   rS   rS      s&     779D r   rS   c                    [        U [        5      (       a  U $ [        U [        R                  5      (       a!  [	        [
        R                  " U 5      SS5      $ [        U [        5      (       aj  [        R                  S:X  a)  [        R                  " SU 5      (       a  [	        U SS5      $ U R                  S5      (       a  [        U 5      $ [        U 5      nO[        SU < S35      eUR                   (       aE  [#        S UR                   R%                  S5       5       5      (       a  [        R'                  U 5      $ [        U 5      $ )	a  Parse a dataset's identifier or path into its parts

Parameters
----------
path : str or path-like object
    The path to be parsed.

Returns
-------
ParsedPath or UnparsedPath

Notes
-----
When legacy GDAL filenames are encountered, they will be returned
in a UnparsedPath.

Nr)   r*   z/vsizinvalid path ''c              3   2   #    U  H  o[         ;   v   M     g 7fr   SCHEMES.0ps     r   	<genexpr>_parse_path.<locals>.<genexpr>   s     =%<G|%<s   rE   )
isinstancer   pathlibPurePathr&   osfspathstrr-   r.   r/   r0   r5   rS   r   r   r3   allr6   r?   )r2   r:   s     r   _parse_pathrh      s    $ $	D'**	+	+299T?D$77	D#		<<7"rxx'E'EtT400__V$$ &&TNE.233 ||=U\\%7%7%<===''--r   c                    [        U [        5      (       a  U R                  $ [        U [        5      (       Ga  U R                  (       d  U R                  $ U R                  R                  S5      S   [        ;   a.  SR                  U R                  R                  S5      S   5      nOSnSR                  S U R                  R                  S5       5       5      nU(       a`  U R                  (       a8  SR                  X!U R                  U R                  R                  S5      5      nU$ SU SU U R                   3n U$ U R                  nU$ [        S5      e)	zConvert a parsed path to a GDAL VSI path

Parameters
----------
path : Path
    A ParsedPath or UnparsedPath object.

Returns
-------
str

rE   rF   z{}:// /c              3   H   #    U  H  oS :w  d  M
  S[         U    3v   M     g7f)r
   vsiNrZ   r\   s     r   r_   _vsi_path.<locals>.<genexpr>   s&      ,Bq6k"#gaj\",Bs   	""z/{}/{}{}/{}z0path must be a ParsedPath or UnparsedPath object)ra   rS   r2   r&   r3   r6   CURLSCHEMESformatjoinr>   lstrip
ValueError)r2   suffixprefixresults       r   r   r      s'    $&&yy	D+	&	&{{99 {{  %b)[8 (9(9#(>r(BCXX ,0KK,=,=c,B F <<*11&$,,PTPYPYP`P`adPefF
 M  !&$))=F M M KLLr   )r"   rd   rb   r/   r-   urllib.parser   rN   rasterio.errorsr   r[   setARCHIVESCHEMESitemsro   rH   r   sr&   rS   rh   r   )kvs   00r   <module>r      s   
  	 
 !  %
 


 $]]_<_TQVq_<
    dBd% Bd BdJ dE   &R)Mq =s   CC3C C 