
    \j                     T   d Z ddlZddlZddlZ ej
                  e      ZdZeej                  iZ
i ZdZd Zd Z eej                          ed        ed        ed	        ed
        ed        ed        ed        ed        e ee
j#                                     Zy)z~Maintains a registry of transport mechanisms.

The main entrypoint is :func:`get_transport`.  See also :file:`extending.md`.

    N zYou are trying to use the %(module)s functionality of smart_open
but you do not have the correct %(module)s dependencies installed. Try:

    pip install smart_open[%(module)s]

c                    | }t        | t              r	 t        j                  |       } n| j
                  }|j                  d      d   }t        | d      r| j                  g}n't        | d      r| j                  }nt        d| z        dD ]  }t        | |      rJ | d|        |D ],  }|t        vsJ t        | d	d
      r
|t        |<   $| t        |<   . y# t        $ r Y yw xY w)ai  Register a submodule as a transport mechanism for ``smart_open``.

    This module **must** have:

        - `SCHEME` attribute (or `SCHEMES`, if the submodule supports multiple schemes)
        - `open` function
        - `open_uri` function
        - `parse_uri' function

    Once registered, you can get the submodule by calling :func:`get_transport`.

    N.SCHEMESCHEMESz0%r does not have a .SCHEME or .SCHEMES attribute)openopen_uri	parse_uriz is missing MISSING_DEPSF)
isinstancestr	importlibimport_moduleImportError__name__rsplithasattrr   r   
ValueError	_REGISTRYgetattr_ERRORS)	submodulemodule_nameschemesfschemes        >/root/env/lib/python3.12/site-packages/smart_open/transport.pyregister_transportr       s    K)S!	!//	:I  (($$S)"-Ky(###$	I	&##KiWXX. Jy!$IIq&II$J  *Y&&&9ne4)GFO )If*#  		s   C 	C('C(c                     t         }d}dt               z  }| t        v r#t        t        t        t        |          z        | t        v r	t        |    S t        |      )zGet the submodule that handles transport for the specified scheme.

    This submodule must have been previously registered via :func:`register_transport`.

    z>https://github.com/piskvorky/smart_open/blob/master/README.rstzUnable to handle scheme %(scheme)r, expected one of %(expected)r. Extra dependencies required by %(scheme)r may be missing. See <%(readme_url)s> for details.)module)SUPPORTED_SCHEMESlocalsr   r   _MISSING_DEPS_ERRORdictr   NotImplementedError)r   expected
readme_urlmessages       r   get_transportr*   J   sg     !HH 	,.4h	7 
 -GFO0LLMM  
g
&&    zsmart_open.azurezsmart_open.ftpzsmart_open.gcszsmart_open.hdfszsmart_open.httpzsmart_open.s3zsmart_open.sshzsmart_open.webhdfs)__doc__r   loggingsmart_open.local_file
smart_open	getLoggerr   logger	NO_SCHEME
local_filer   r   r$   r   r*   tuplesortedkeysr"    r+   r   <module>r8      s   
   			8	$	
--.	
 '*T', :(( ) % & # $ # $ $ % $ % ? # # $ ' (&!123  Sr+   