
    [h                       d Z ddlmZ ddlZddlmZ ddlmZ ddlmZ ddlmZ  eded	ef         
          Z	er ddl
mZ ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ  ddlm!Z" ddlm#Z$ ddlm%Z& ddlm'Z( ddlm)Z* ddlm+Z, ddlm-Z. ddlm/Z0 ddlm1Z2 ddlm3Z4 ddlm5Z6 dd lm7Z8 dd!l9m:Z; dd"l9m<Z= dd#l9m>Z? dd$l9m@ZA dd%l9mBZC dd&l9mDZE dd'l9mFZG dd(l9mHZI dd)l9mJZK dd l9m7ZL eZeZMeZNeZOeZPeZQe ZReZSeZeZTe"ZUe$ZVe(ZWe&ZXe*ZYe,ZZe.Z[e0Z\e4Z]e6Z^e2Z_e8Z`e;Zae=Zbe?ZceAZdeCZeeGZfeKZgeEZheIZieLZj G d* d+          Zk ek            Zleljm        Zmeljn        ZndS ),zRsupplies the "preloaded" registry to resolve circular module imports at
runtime.

    )annotationsN)Any)Callable)TYPE_CHECKING)TypeVar_FN.)bound)dialects)orm)cursor)default)
reflection)result)url)
attributes)base)clsregistry)decl_api)	decl_base)
dependency)descriptor_props)	mapperlib)
properties)relationships)session)state)
strategies)strategy_options)util)default_comparator)dml)elements)	functions)naming)schema)
selectable)sqltypes)
traversalsc                  *    e Zd ZdZddZddZddZdS )_ModuleRegistrya  Registry of modules to load in a package init file.

    To avoid potential thread safety issues for imports that are deferred
    in a function, like https://bugs.python.org/issue38884, these modules
    are added to the system module cache by importing them after the packages
    has finished initialization.

    A global instance is provided under the name :attr:`.preloaded`. Use
    the function :func:`.preload_module` to register modules to load and
    :meth:`.import_prefix` to load all the modules that start with the
    given path.

    While the modules are loaded in the global module cache, it's advisable
    to access them using :attr:`.preloaded` to ensure that it was actually
    registered. Each registered module is added to the instance ``__dict__``
    in the form `<package>_<module>`, omitting ``sqlalchemy`` from the package
    name. Example: ``sqlalchemy.sql.util`` becomes ``preloaded.sql_util``.
    sqlalchemy.c                :    t                      | _        || _        d S N)setmodule_registryprefix)selfr0   s     h/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/sqlalchemy/util/preloaded.py__init__z_ModuleRegistry.__init__r   s    "uu    depsstrreturnCallable[[_FN], _FN]c                <    | j                             |           d S )zAdds the specified modules to the list to load.

        This method can be used both as a normal function and as a decorator.
        No change is performed to the decorated object.
        c                    | S r-    )fns    r2   <lambda>z0_ModuleRegistry.preload_module.<locals>.<lambda>}   s    " r4   )r/   update)r1   r5   s     r2   preload_modulez_ModuleRegistry.preload_modulev   s#     	##D)))}r4   pathNonec                ~   | j         D ]}| j        r5|                    | j                  d                             dd          }n|}|r|                    |          r]|| j        vrTt          |t                      t                                 t          j
        |         x| j        |<   t                      |<   dS )z\Resolve all the modules in the registry that start with the
        specified path.
        ._N)r/   r0   splitreplace
startswith__dict__
__import__globalslocalssysmodules)r1   r@   modulekeys       r2   import_prefixz_ModuleRegistry.import_prefix   s     * 		J 		JF{ ll4;//3;;CEEJ"--d33JT]**6799fhh77769k&6IIc"WYYs^		J 		Jr4   N)r+   )r5   r6   r7   r8   )r@   r6   r7   rA   )__name__
__module____qualname____doc__r3   r?   rQ   r;   r4   r2   r*   r*   ^   s`         &      J J J J J Jr4   r*   )orU   
__future__r   rM   typingr   r   r   r   r   
sqlalchemyr
   	_dialectsr   _ormsqlalchemy.enginer   _engine_cursorr   _engine_defaultr   _engine_reflectionr   _engine_resultr   _engine_urlsqlalchemy.ormr   _orm_attributesr   	_orm_baser   _orm_clsregistryr   _orm_decl_apir   _orm_decl_baser   _orm_dependencyr   _orm_descriptor_propsr   _orm_mapperr   _orm_propertiesr   _orm_relationshipsr   _orm_sessionr   
_orm_stater   _orm_strategiesr   _orm_strategy_optionsr   	_orm_utilsqlalchemy.sqlr    _sql_default_comparatorr!   _sql_dmlr"   _sql_elementsr#   _sql_functionsr$   _sql_namingr%   _sql_schemar&   _sql_selectabler'   _sql_sqltypesr(   _sql_traversals	_sql_utilengine_cursorengine_defaultengine_reflectionengine_result
engine_urlorm_clsregistryorm_baseorm_attributesorm_decl_apiorm_decl_baseorm_descriptor_propsorm_dependency
orm_mapperorm_propertiesorm_relationshipsorm_sessionorm_strategiesorm_strategy_options	orm_stateorm_utilsql_default_comparatorsql_dmlsql_elementssql_functions
sql_namingsql_selectablesql_traversals
sql_schemasql_sqltypessql_utilr*   _regr?   rQ   r;   r4   r2   <module>r      s    # " " " " " 



                              ge8CH-...  C000000&&&&&&::::::<<<<<<BBBBBB::::::444444<<<<<<000000>>>>>>888888::::::<<<<<<HHHHHH777777<<<<<<BBBBBB666666222222<<<<<<HHHHHH000000LLLLLL......888888::::::444444444444<<<<<<888888<<<<<<000000 H"M$N*"MJ&OH
C$N L"M0$NJ$N*K$N0IH4G L"MJ$N$NJ LH.J .J .J .J .J .J .J .Jb $"r4   