§
    eŠtjXE  ã                   óú   — 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 ddlmZ ddlmZ dd	lmZ ddlmZ  ej        e¦  «        Z G d
„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Zej        ZdS )zÎBaked query extension.

Provides a creational pattern for the :class:`.query.Query` object which
allows the fully constructed object, Core select statement, and string
compiled result to be fully cached.


é    Né   )Úexc)Úutil)ÚQuery)ÚSession)Úfunc)Úliteral_columnc                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )ÚBakeryzêCallable which returns a :class:`.BakedQuery`.

    This object is returned by the class method
    :meth:`.BakedQuery.bakery`.  It exists as an object
    so that the "cache" can be easily inspected.

    .. versionadded:: 1.2


    ©ÚclsÚcachec                 ó"   — || _         || _        d S ©Nr   )ÚselfÚcls_r   s      úR/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/ext/baked.pyÚ__init__zBakery.__init__0   s   € ØˆŒØˆŒ
ˆ
ˆ
ó    c                 ó:   — |                       | j        ||¦  «        S r   r   )r   Ú
initial_fnÚargss      r   Ú__call__zBakery.__call__4   s   € Ø�xŠx˜œ
 J°Ñ5Ô5Ð5r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r   © r   r   r   r   "   sC   € € € € € ð	ð 	ð €Iðð ð ð6ð 6ð 6ð 6ð 6r   r   c                   óž   — e Zd ZdZdZdd„Zedd„¦   «         Zd„ Zdd	„Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )Ú
BakedQueryz3A builder object for :class:`.query.Query` objects.)ÚstepsÚ_bakeryÚ
_cache_keyÚ_spoiledr   c                 ól   — d| _         |                      ||¦  «         |g| _        d| _        || _        d S )Nr   F)r$   Ú_update_cache_keyr"   r%   r#   )r   Úbakeryr   r   s       r   r   zBakedQuery.__init__=   s:   € ØˆŒØ×Ò˜z¨4Ñ0Ô0Ð0Ø �\ˆŒ
ØˆŒØˆŒˆˆr   éÈ   Nc                 óJ   — t          | t          j        ||¬¦  «        ¦  «        S )zSConstruct a new bakery.

        :return: an instance of :class:`.Bakery`

        )Ú
size_alert)r   r   ÚLRUCache)r   ÚsizeÚ_size_alerts      r   r(   zBakedQuery.bakeryD   s#   € õ �c�4œ=¨¸+ÐFÑFÔFÑGÔGÐGr   c                 ó¾   — t                                t           ¦  «        }| j        |_        t          | j        ¦  «        |_        | j        |_        | j        |_        |S r   )r!   Ú__new__r$   Úlistr"   r#   r%   )r   Úb1s     r   Ú_clonezBakedQuery._cloneN   sF   € Ý×Ò¥
Ñ+Ô+ˆØœˆŒÝ˜œ
Ñ#Ô#ˆŒØ”\ˆŒ
Ø”mˆŒØˆ	r   c                 ó8   — | xj         |j        f|z   z  c_         d S r   )r$   Ú__code__©r   Úfnr   s      r   r'   zBakedQuery._update_cache_keyV   s   € ØˆŒ˜BœK˜>¨DÑ0Ñ0ˆŒˆˆr   c                 óp   — t          |t          ¦  «        r | j        |Ž  n|                      |¦  «         | S r   )Ú
isinstanceÚtupleÚadd_criteria©r   Úothers     r   Ú__iadd__zBakedQuery.__iadd__Y   s@   € Ý�e�UÑ#Ô#ð 	%ØˆDÔ˜uÐ%Ð%Ð%à×Ò˜eÑ$Ô$Ð$Øˆr   c                 ój   — t          |t          ¦  «        r
 | j        |Ž S |                      |¦  «        S r   )r9   r:   Úwith_criteriar<   s     r   Ú__add__zBakedQuery.__add__`   s8   € Ý�e�UÑ#Ô#ð 	-Ø%�4Ô% uÐ-Ð-à×%Ò% eÑ,Ô,Ð,r   c                 óf   — |                       ||¦  «         | j                             |¦  «         | S )z«Add a criteria function to this :class:`.BakedQuery`.

        This is equivalent to using the ``+=`` operator to
        modify a :class:`.BakedQuery` in-place.

        )r'   r"   Úappendr6   s      r   r;   zBakedQuery.add_criteriaf   s5   € ð 	×Ò˜r 4Ñ(Ô(Ð(ØŒ
×Ò˜"ÑÔÐØˆr   c                 óB   —  |                       ¦   «         j        |g|¢R Ž S )zÓAdd a criteria function to a :class:`.BakedQuery` cloned from this
        one.

        This is equivalent to using the ``+`` operator to
        produce a new :class:`.BakedQuery` with modifications.

        )r3   r;   r6   s      r   r@   zBakedQuery.with_criteriaq   s'   € ð *ˆt�{Š{‰}Œ}Ô)¨"Ð4¨tÐ4Ð4Ð4Ð4r   c                 ó"   — t          | |¦  «        S )zàReturn a :class:`_baked.Result` object for this
        :class:`.BakedQuery`.

        This is equivalent to calling the :class:`.BakedQuery` as a
        Python callable, e.g. ``result = my_baked_query(session)``.

        )ÚResult©r   Úsessions     r   Úfor_sessionzBakedQuery.for_session{   s   € õ �d˜GÑ$Ô$Ð$r   c                 ó,   — |                       |¦  «        S r   )rI   rG   s     r   r   zBakedQuery.__call__…   s   € Ø×Ò Ñ(Ô(Ð(r   Fc                 óˆ   — |s8| j         s1|                      ¦   «         }|xj        dz  c_        |j        g| _        d| _         | S )a€  Cancel any query caching that will occur on this BakedQuery object.

        The BakedQuery can continue to be used normally, however additional
        creational functions will not be cached; they will be called
        on every invocation.

        This is to support the case where a particular step in constructing
        a baked query disqualifies the query from being cacheable, such
        as a variant that relies upon some uncacheable value.

        :param full: if False, only functions added to this
         :class:`.BakedQuery` object subsequent to the spoil step will be
         non-cached; the state of the :class:`.BakedQuery` up until
         this point will be pulled from the cache.   If True, then the
         entire :class:`_query.Query` object is built from scratch each
         time, with all creational functions being called on each
         invocation.

        )Ú_query_onlyT)r%   r3   r$   Ú_retrieve_baked_queryr"   )r   ÚfullÚ_spoil_points      r   ÚspoilzBakedQuery.spoilˆ   sP   € ð( ð 	>˜DœMð 	>ØŸ;š;™=œ=ˆLØÐ#Ô#Ð'7Ñ7Ð#Ô#Ø&Ô<Ð=ˆDŒJØˆŒØˆr   c                 ó"   — | j         |j        fz   S )a«  Return the key that actually goes into the cache dictionary for
        this :class:`.BakedQuery`, taking into account the given
        :class:`.Session`.

        This basically means we also will include the session's query_class,
        as the actual :class:`_query.Query` object is part of what's cached
        and needs to match the type of :class:`_query.Query` that a later
        session will want to use.

        )r$   Ú
_query_clsrG   s     r   Ú_effective_keyzBakedQuery._effective_key£   s   € ð Œ 'Ô"4Ð!6Ñ6Ð6r   c                 ó^   — |                       ¦   «         }|                     |||¬¦  «         |S )z)Cloning version of _add_lazyload_options.)Ú
cache_path)r3   Ú_add_lazyload_options)r   ÚoptionsÚeffective_pathrU   Úqs        r   Ú_with_lazyload_optionsz!BakedQuery._with_lazyload_options°   s/   € à�KŠK‰MŒMˆØ	×Ò ¨ÀJÐÑOÔOÐOØˆr   c                 ó  ‡‡— d}|s‰}‰D ]Z}|j         s|j        rJ|                     ¦   «         }|€|                      d¬¦  «         Œ=|d         r
J d¦   «         ‚||d         z  }Œ[|                      ˆˆfd„|j        |¦  «         dS )	a*  Used by per-state lazy loaders to add options to the
        "lazy load" query from a parent query.

        Creates a cache key based on given load path and query options;
        if a repeatable cache key cannot be generated, the query is
        "spoiled" so that it won't use caching.

        r   NT)rN   é   z‘loader options with variable bound parameters not supported with baked queries.  Please use new-style select() statements for cached ORM queries.r   c                 ó>   •—  |                       ‰¦  «        j        ‰Ž S r   )Ú_with_current_pathrW   )rY   rX   rW   s    €€r   ú<lambda>z2BakedQuery._add_lazyload_options.<locals>.<lambda>Ô   s    ø€ ÐB�a×*Ò*¨>Ñ:Ô:ÔBÀGÐL€ r   )Ú_is_legacy_optionÚ_is_compile_stateÚ_generate_cache_keyrP   r;   Úpath)r   rW   rX   rU   ÚkeyÚoptÚcks    ``    r   rV   z BakedQuery._add_lazyload_options¶   sÔ   øø€ ð ˆàð 	(Ø'ˆJàð 	!ð 	!ˆCØÔ$ð !¨Ô(=ð !Ø×,Ò,Ñ.Ô.�Ø�:Ø—J’J D�JÑ)Ô)Ð)Ð)à! !œuð ð ð'ñô ˜9ð ˜2˜aœ5‘L�Cøà×ÒØLÐLÐLÐLÐLØŒOØñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó  — | j                              |                      |¦  «        d ¦  «        }|€E|                      |¦  «        }|                     d ¦  «        | j         |                      |¦  «        <   |                     |¦  «        S r   )r#   ÚgetrS   Ú	_as_queryÚwith_session)r   rH   Úquerys      r   rM   z BakedQuery._retrieve_baked_queryÙ   s€   € Ø”× Ò  ×!4Ò!4°WÑ!=Ô!=¸tÑDÔDˆØˆ=Ø—N’N 7Ñ+Ô+ˆEØ9>×9KÒ9KØñ:ô :ˆDŒL˜×,Ò,¨WÑ5Ô5Ñ6ð ×!Ò! 'Ñ*Ô*Ð*r   c                 óÀ   — |                       |¦  «        }d |_        |                     ¦   «         }|j        j        r||f| j        |                      |¦  «        <   ||fS r   )ri   rH   Ú_statement_20Ú_compile_optionsÚ_bake_okr#   rS   )r   rH   rk   Ú	statements       r   Ú_bakezBakedQuery._bakeâ   sl   € Ø—’˜wÑ'Ô'ˆØˆŒð ×'Ò'Ñ)Ô)ˆ	ð Ô%Ô.ð 	àØð:ˆDŒL˜×,Ò,¨WÑ5Ô5Ñ6ð
 �iÐÐr   c                 ó   — t          |t          ¦  «        r|}nRt          |t          ¦  «        r|j        }|€t	          j        d¦  «        ‚nt          dt          |¦  «        z  ¦  «        ‚|                      |¦  «        S )a  Return the :class:`_query.Query` object for use as a subquery.

        This method should be used within the lambda callable being used
        to generate a step of an enclosing :class:`.BakedQuery`.   The
        parameter should normally be the :class:`_query.Query` object that
        is passed to the lambda::

            sub_bq = self.bakery(lambda s: s.query(User.name))
            sub_bq += lambda q: q.filter(User.id == Address.user_id).correlate(Address)

            main_bq = self.bakery(lambda s: s.query(Address))
            main_bq += lambda q: q.filter(sub_bq.to_query(q).exists())

        In the case where the subquery is used in the first callable against
        a :class:`.Session`, the :class:`.Session` is also accepted::

            sub_bq = self.bakery(lambda s: s.query(User.name))
            sub_bq += lambda q: q.filter(User.id == Address.user_id).correlate(Address)

            main_bq = self.bakery(
                lambda s: s.query(Address.id, sub_bq.to_query(q).scalar_subquery())
            )

        :param query_or_session: a :class:`_query.Query` object or a class
         :class:`.Session` object, that is assumed to be within the context
         of an enclosing :class:`.BakedQuery` callable.


         .. versionadded:: 1.3


        Nz1Given Query needs to be associated with a Sessionz)Query or Session object expected, got %r.)	r9   r   r   rH   Úsa_excÚArgumentErrorÚ	TypeErrorÚtyperi   )r   Úquery_or_sessionrH   s      r   Úto_queryzBakedQuery.to_queryû   s˜   € õD Ð&­Ñ0Ô0ð 	Ø&ˆGˆGÝÐ(­%Ñ0Ô0ð 
	Ø&Ô.ˆGØˆÝÔ*ØGñô ð ð õ
 Ø;ÝÐ'Ñ(Ô(ñ)ñô ð ð �~Š~˜gÑ&Ô&Ð&r   c                 ól   —  | j         d         |¦  «        }| j         dd …         D ]} ||¦  «        }Œ|S ©Nr   r\   )r"   )r   rH   rk   Ústeps       r   ri   zBakedQuery._as_query,  sD   € Ø�”
˜1”˜gÑ&Ô&ˆà”J˜q˜r˜r”Nð 	 ð 	 ˆDØ�D˜‘K”KˆEˆEàˆr   )r   )r)   N)Fr   )r   r   r   r   r   r   Úclassmethodr(   r3   r'   r>   rA   r;   r@   rI   r   rP   rS   rZ   rV   rM   rq   rx   ri   r   r   r   r!   r!   8   s]  € € € € € Ø=Ð=à<€Iðð ð ð ð ðHð Hð Hñ „[ðHðð ð ð1ð 1ð 1ð 1ðð ð ð-ð -ð -ð	ð 	ð 	ð5ð 5ð 5ð%ð %ð %ð)ð )ð )ðð ð ð ð67ð 7ð 7ðð ð ð ð!
ð !
ð !
ð !
ðF+ð +ð +ð ð  ð  ð2/'ð /'ð /'ðbð ð ð ð r   r!   c                   óv   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )rF   a  Invokes a :class:`.BakedQuery` against a :class:`.Session`.

    The :class:`_baked.Result` object is where the actual :class:`.query.Query`
    object gets created, or retrieved from the cache,
    against a target :class:`.Session`, and is then invoked for results.

    ©ÚbqrH   Ú_paramsÚ_post_criteriac                 ó>   — || _         || _        i | _        g | _        d S r   r~   )r   r   rH   s      r   r   zResult.__init__@  s%   € ØˆŒØˆŒØˆŒØ ˆÔÐÐr   c                 óæ   — t          |¦  «        dk    r|                     |d         ¦  «         n't          |¦  «        dk    rt          j        d¦  «        ‚| j                             |¦  «         | S )z@Specify parameters to be replaced into the string SQL statement.r\   r   zFparams() takes zero or one positional argument, which is a dictionary.)ÚlenÚupdaters   rt   r€   )r   r   Úkws      r   ÚparamszResult.paramsF  sr   € õ ˆt‰9Œ9˜Š>ˆ>Ø�IŠI�d˜1”gÑÔÐÐÝ�‰YŒY˜Š]ˆ]ÝÔ&ð)ñô ð ð 	Œ×Ò˜BÑÔÐØˆr   c                 ó>   — |r| j                              |¦  «         | S r   )r�   Úextend)r   Úfnss     r   Ú_using_post_criteriazResult._using_post_criteriaS  s&   € Øð 	,ØÔ×&Ò& sÑ+Ô+Ð+Øˆr   c                 ó.   — |                       |g¦  «        S )aô  Add a criteria function that will be applied post-cache.

        This adds a function that will be run against the
        :class:`_query.Query` object after it is retrieved from the
        cache.    This currently includes **only** the
        :meth:`_query.Query.params` and :meth:`_query.Query.execution_options`
        methods.

        .. warning::  :meth:`_baked.Result.with_post_criteria`
           functions are applied
           to the :class:`_query.Query`
           object **after** the query's SQL statement
           object has been retrieved from the cache.   Only
           :meth:`_query.Query.params` and
           :meth:`_query.Query.execution_options`
           methods should be used.


        .. versionadded:: 1.2


        )r‹   )r   r7   s     r   Úwith_post_criteriazResult.with_post_criteriaX  s   € ð. ×(Ò(¨"¨Ñ.Ô.Ð.r   c                 óž   — | j                              | j        ¦  «                             | j        ¦  «        }| j        D ]} ||¦  «        }Œ|S r   )r   ri   rH   r‡   r€   r�   )r   rY   r7   s      r   ri   zResult._as_queryq  sO   € ØŒG×Ò˜dœlÑ+Ô+×2Ò2°4´<Ñ@Ô@ˆØÔ%ð 	ð 	ˆBØ��1‘”ˆAˆAØˆr   c                 óD   — t          |                      ¦   «         ¦  «        S r   )Ústrri   ©r   s    r   Ú__str__zResult.__str__w  s   € Ý�4—>’>Ñ#Ô#Ñ$Ô$Ð$r   c                 óN   — |                       ¦   «                              ¦   «         S r   )Ú_iterÚ__iter__r‘   s    r   r•   zResult.__iter__z  s   € Ø�zŠz‰|Œ|×$Ò$Ñ&Ô&Ð&r   c                 ó  — | j         }| j        j        r|j        r&|                      ¦   «                              ¦   «         S |j                             |                     | j        ¦  «        d¦  «        \  }}|€| 	                    | j        ¦  «        \  }}| j
        r|                     | j
        ¦  «        }n|}| j        D ]} ||¦  «        }Œ|j
        }t          |j        ¦  «        }|                     |j        |j        dœ¦  «         | j                             |||¬¦  «        }|j                             dd¦  «        r|                     ¦   «         }|j                             dd¦  «        r|                     ¦   «         }|S )N)NN)Ú_sa_orm_load_optionsÚcompiled_cache)Úexecution_optionsÚis_single_entityFÚfiltered)r   rH   Úenable_baked_queriesr%   ri   r”   r#   rh   rS   rq   r€   r‡   r�   ÚdictÚ_execution_optionsr…   Úload_optionsÚexecuteÚ_attributesÚscalarsÚunique)	r   r   rk   rp   rY   r7   r‡   r™   Úresults	            r   r”   zResult._iter}  s’  € ØŒWˆàŒ|Ô0ð 	,°B´Kð 	,Ø—>’>Ñ#Ô#×)Ò)Ñ+Ô+Ð+àœ:Ÿ>š>Ø×Ò˜dœlÑ+Ô+¨\ñ
ô 
Ñˆˆyð ˆ=Ø!Ÿxšx¨¬Ñ5Ô5ÑˆE�9àŒ<ð 	Ø—’˜Tœ\Ñ*Ô*ˆAˆAàˆAØÔ%ð 	ð 	ˆBØ��1‘”ˆAˆAà”ˆÝ  Ô!5Ñ6Ô6ÐØ× Ò à()¬Ø"$¤*ðð ñ	
ô 	
ð 	
ð ”×%Ò%Ø�vÐ1Bð &ñ 
ô 
ˆð Ô×!Ò!Ð"4°eÑ<Ô<ð 	&Ø—^’^Ñ%Ô%ˆFàÔ×!Ò! *¨eÑ4Ô4ð 	%Ø—]’]‘_”_ˆFàˆr   c                 ó  ‡— t          j        t          d¦  «        ¦  «        Š| j                             ˆfd„¦  «        }|                     | j        ¦  «                             | j        ¦  «         	                    ¦   «         S )zÎreturn the 'count'.

        Equivalent to :meth:`_query.Query.count`.

        Note this uses a subquery to ensure an accurate count regardless
        of the structure of the original statement.

        Ú*c                 ó.   •— |                       ‰¦  «        S r   )Ú_legacy_from_self)rY   Úcols    €r   r_   zResult.count.<locals>.<lambda>¯  s   ø€ ¨Q×-@Ò-@ÀÑ-EÔ-E€ r   )
r   Úcountr	   r   r@   rI   rH   r‡   r€   Úscalar)r   r   r©   s     @r   rª   zResult.count¤  sk   ø€ õ Œj�¨Ñ,Ô,Ñ-Ô-ˆØŒW×"Ò"Ð#EÐ#EÐ#EÐ#EÑFÔFˆØ�~Š~˜dœlÑ+Ô+×2Ò2°4´<Ñ@Ô@×GÒGÑIÔIÐIr   c                 ó    — 	 |                       ¦   «         }t          |t          j        ¦  «        s|S |d         S # t          j        $ r Y dS w xY w)zÓReturn the first element of the first result or None
        if no rows present.  If multiple rows are returned,
        raises MultipleResultsFound.

        Equivalent to :meth:`_query.Query.scalar`.

        r   N)Úoner9   Úcollections_abcÚSequenceÚorm_excÚNoResultFound)r   Úrets     r   r«   zResult.scalar²  s\   € ð	Ø—(’(‘*”*ˆCÝ˜c¥?Ô#;Ñ<Ô<ð Ø�
Ø�q”6ˆMøÝÔ$ð 	ð 	ð 	Ø�4�4ð	øøøs   ‚/: ²: ºAÁAc                 ó  — | j                              d„ ¦  «        }|                     | j        ¦  «                             | j        ¦  «                             | j        ¦  «                             ¦   «          	                    ¦   «         S )zRReturn the first row.

        Equivalent to :meth:`_query.Query.first`.

        c                 ó.   — |                       dd¦  «        S rz   )Úslice)rY   s    r   r_   zResult.first.<locals>.<lambda>É  s   € ¨Q¯WªW°Q¸©]¬]€ r   )
r   r@   rI   rH   r‡   r€   r‹   r�   r”   Úfirst)r   r   s     r   r¶   zResult.firstÂ  se   € ð ŒW×"Ò"Ð#:Ð#:Ñ;Ô;ˆà�NŠN˜4œ<Ñ(Ô(ßŠV�D”LÑ!Ô!ß!Ò! $Ô"5Ñ6Ô6ßŠU‰WŒWßŠU‰WŒWð	
r   c                 óN   — |                       ¦   «                              ¦   «         S )zkReturn exactly one result or raise an exception.

        Equivalent to :meth:`_query.Query.one`.

        )r”   r­   r‘   s    r   r­   z
Result.oneÒ  ó   € ð �zŠz‰|Œ|×ÒÑ!Ô!Ð!r   c                 óN   — |                       ¦   «                              ¦   «         S )z�Return one or zero results, or raise an exception for multiple
        rows.

        Equivalent to :meth:`_query.Query.one_or_none`.

        )r”   Úone_or_noner‘   s    r   rº   zResult.one_or_noneÚ  s   € ð �zŠz‰|Œ|×'Ò'Ñ)Ô)Ð)r   c                 óN   — |                       ¦   «                              ¦   «         S )zKReturn all rows.

        Equivalent to :meth:`_query.Query.all`.

        )r”   Úallr‘   s    r   r¼   z
Result.allã  r¸   r   c                 óx   —  | j         j        d         | j        ¦  «        }|                     || j        ¦  «        S )z`Retrieve an object based on identity.

        Equivalent to :meth:`_query.Query.get`.

        r   )r   r"   rH   Ú	_get_implÚ_load_on_pk_identity)r   Úidentrk   s      r   rh   z
Result.getë  s5   € ð !�””˜aÔ  ¤Ñ.Ô.ˆØ�Š˜u dÔ&?Ñ@Ô@Ð@r   c                 ó"  ‡ ‡‡
‡‡— |j         d         j        d         Š‰j        \  Š
Šˆ
ˆˆˆˆ fd„}‰ j        }|                     ¦   «         }|xj        ‰
fz  c_        |                     |t          d„ ‰D ¦   «         ¦  «        ¦  «        }ˆfd„t          ‰‰j	        ¦  «        D ¦   «         }t           |                     ‰ j        ¦  «        j        di |¤Ž¦  «        }t          |¦  «        }	|	dk    rt          j        ¦   «         ‚|	r|d         S dS )	z6Load the given primary key identity from the database.r   Úparententityc                 óB  •— ‰}|                       ¦   «         }|                     ¦   «          d |_        d ‰v r6ˆfd„t          ‰j        ‰¦  «        D ¦   «         }t          j        ||¦  «        }t          j        |ddi¦  «        f|_        ‰	j	        D ]} ||¦  «        }Œ|S )Nc                 ó4   •— h | ]\  }}|­‰|         j         ’ŒS r   ©rd   )Ú.0r©   ÚvalueÚ_get_paramss      €r   ú	<setcomp>z=Result._load_on_pk_identity.<locals>.setup.<locals>.<setcomp>  s6   ø€ ð ð ð á"˜˜Uð �}ð	   Ô$Ô(ð %�}�}r   Ú
_orm_adaptT)
r3   Ú_get_conditionÚ	_order_byÚzipÚprimary_keyÚsql_utilÚadapt_criterion_to_nullÚ_deep_annotateÚ_where_criteriar�   )
rk   Ú_lcl_get_clauserY   Únonesr7   Ú_get_clauserÈ   ÚmapperÚprimary_key_identityr   s
        €€€€€r   Úsetupz*Result._load_on_pk_identity.<locals>.setupü  sÙ   ø€ Ø)ˆOØ—’‘”ˆAØ×ÒÑÔÐØˆAŒKð Ð+Ð+Ð+ðð ð ð å&)ØÔ*Ð,@ñ'ô 'ðñ ô �õ #+Ô"BØ# Uñ#ô #�õ Ô'¨¸,ÈÐ9MÑNÔNð!ˆAÔð Ô)ð ð �Ø�B�q‘E”E��ØˆHr   c              3   ó   K  — | ]}|d u V — Œ	d S r   r   )rÆ   Úelems     r   ú	<genexpr>z.Result._load_on_pk_identity.<locals>.<genexpr>%  s&   è è € ÐGÐG¨$˜ ˜ÐGÐGÐGÐGÐGÐGr   c                 ó2   •— i | ]\  }}‰|         j         |“ŒS r   rÅ   )rÆ   Úid_valrÎ   rÈ   s      €r   ú
<dictcomp>z/Result._load_on_pk_identity.<locals>.<dictcomp>(  s7   ø€ ð 
ð 
ð 
á#�˜ð ˜Ô$Ô(¨&ð
ð 
ð 
r   r\   Nr   )Ú_raw_columnsÚ_annotationsrÕ   r   r3   r$   r@   r:   rÍ   rÎ   r1   rI   rH   r‡   r„   r°   ÚMultipleResultsFound)r   rH   rk   r×   r†   rØ   r   r‡   r¤   ÚlrÕ   rÈ   rÖ   s   `  `      @@@r   r¿   zResult._load_on_pk_identityõ  sZ  øøøøø€ ð Ô# AÔ&Ô3°NÔCˆà#)Ô#5Ñ ˆ�[ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð@ ŒWˆð
 �YŠY‰[Œ[ˆØ
ˆŒ˜+˜Ñ'ˆŒà×ÒØ•5ÐGÐGÐ2FÐGÑGÔGÑGÔGñ
ô 
ˆð
ð 
ð 
ð 
å'*Ø$ fÔ&8ñ(ô (ð
ñ 
ô 
ˆõ Ð9�b—n’n T¤\Ñ2Ô2Ô9ÐCÐC¸FÐCÐCÑDÔDˆÝ�‰KŒKˆØˆqŠ5ˆ5ÝÔ.Ñ0Ô0Ð0Øð 	Ø˜!”9Ðà�4r   N)r   r   r   r   r   r   r‡   r‹   r�   ri   r’   r•   r”   rª   r«   r¶   r­   rº   r¼   rh   r¿   r   r   r   rF   rF   5  s!  € € € € € ðð ð =€Ið!ð !ð !ðð ð ðð ð ð
/ð /ð /ð2ð ð ð%ð %ð %ð'ð 'ð 'ð%ð %ð %ðNJð Jð Jðð ð ð 
ð 
ð 
ð "ð "ð "ð*ð *ð *ð"ð "ð "ðAð Að AðAð Að Að Að Ar   rF   )r   Úcollections.abcÚabcr®   ÚloggingÚ r   rs   r   Úormr°   Ú	orm.queryr   Úorm.sessionr   Úsqlr   r	   rÏ   Ú	getLoggerr   Úlogr   r!   rF   r(   r   r   r   ú<module>rí      sf  ððð ð *Ð )Ð )Ð )Ð )Ð )Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø "Ð "Ð "Ð "Ð "Ð "à€gÔ˜Ñ!Ô!€ð6ð 6ð 6ð 6ð 6ñ 6ô 6ð 6ð,zð zð zð zð zñ zô zð zðzAð Að Að Að Añ Aô Að AðH 
Ô	€€€r   