
    lc                     |   d Z ddlZddlZddlZ ej        e          ZdZeej	        ia
i adad Zd Z eej	                    ed            ed            ed	            ed
            ed            ed            ed            e et                                                              adS )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# t          $ r Y dS w xY w| j        }|                    d          d         }t          | d          r	| j        g}n*t          | d          r| j	        }nt          d| z            dD ]!}t          | |          sJ | d|            "|D ]3}|t          vsJ t          | d	d
          r|t          |<   )| t          |<   4dS )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        4lib/python3.11/site-packages/smart_open/transport.pyregister_transportr       sZ    K)S!! )	!/	::II 	 	 	FF	  ($$S))"-Ky(## Y#$	I	&	& Y#KiWXXX. J Jy!$$IIIIIqq&IIIII * *Y&&&&9ne44 	*)GFOO )If* *s   . 
<<c                     t           }d}dt                      z  }| t          v r0t          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`.

    zFhttps://github.com/RaRe-Technologies/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*   K   s}     !HYJ	,.4hh	7 
  N-GFO0L0L0LLMMM !  
g
&
&&    zsmart_open.azurez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	$	$	
-.	
 (* (* (*V' ' '*  :( ) ) )  % & & &  # $ $ $  $ % % %  $ % % %  ? # # #  # $ $ $  ' ( ( (E&&!1!12233  S Sr+   