
    g                       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       Zlelj                  Zmelj                  Zny),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y)	_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``.
    c                0    t               | _        || _        y N)setmodule_registryprefix)selfr/   s     Y/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/sqlalchemy/util/preloaded.py__init__z_ModuleRegistry.__init__r   s    "u    c                >    | j                   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    r1   <lambda>z0_ModuleRegistry.preload_module.<locals>.<lambda>}   s    "r3   )r.   update)r0   depss     r1   preload_modulez_ModuleRegistry.preload_modulev   s     	##D)r3   c                z   | j                   D ]  }| j                  r/|j                  | j                        d   j                  dd      }n|}|r|j	                  |      sT|| j
                  vsct        |t               t                      t        j                  |   x| j
                  |<   t               |<    y)z\Resolve all the modules in the registry that start with the
        specified path.
        ._N)r.   r/   splitreplace
startswith__dict__
__import__globalslocalssysmodules)r0   pathmodulekeys       r1   import_prefixz_ModuleRegistry.import_prefix   s     **F{{ll4;;/3;;CEF--d3T]]*679fh769kk&6IIc"WYs^ +r3   N)zsqlalchemy.)r:   strreturnzCallable[[_FN], _FN])rI   rM   rN   None)__name__
__module____qualname____doc__r2   r;   rL   r6   r3   r1   r*   r*   ^   s    &Jr3   r*   )orS   
__future__r   rG   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;   rL   r6   r3   r1   <module>r      sl   # 
     e8CH-. 0&:<B:4<0>8:<H7<B62<H0L.8:44<8<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b $$""r3   