PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 131
 ec@shddlZddlZddlZddlZddlZddlZddlZddlmZddlm Z ddlm Z ddlm Z ddlm Z ddlm Z dd lmZdd lmZdd lmZd d lmZd dlmZd dlmZd dlmZd dlmZejdZdefdYZeeeeeedZde jfdYZdefdYZ de j!efdYZ"de j!e jfdYZ#de"fdYZ$d e%fd!YZ&d"e%fd#YZ'd$e%fd%YZ(d&efd'YZ)ej*ed(Z+dS()iNi(t coercions(telements(troles(tschema(t traversals(tvisitors(t_clone(tOptions(tColumnOperatorsi(texc(t inspection(tutil(tcollections_abc(tcompatit LambdaOptionscBs,eZeZeZdZeZeZdZ RS(N( t__name__t __module__tTruetenable_trackingttrack_closure_variablestNonettrack_ontglobal_track_bound_valuesttrack_bound_valuest lambda_cache(((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR"s cCs:t|tjtd|d|d|d|d|d|S(shProduce a SQL statement that is cached as a lambda. The Python code object within the lambda is scanned for both Python literals that will become bound parameters as well as closure variables that refer to Core or ORM constructs that may vary. The lambda itself will be invoked only once per particular set of constructs detected. E.g.:: from sqlalchemy import lambda_stmt stmt = lambda_stmt(lambda: table.select()) stmt += lambda s: s.where(table.c.id == 5) result = connection.execute(stmt) The object returned is an instance of :class:`_sql.StatementLambdaElement`. .. versionadded:: 1.4 :param lmb: a Python function, typically a lambda, which takes no arguments and returns a SQL expression construct :param enable_tracking: when False, all scanning of the given lambda for changes in closure variables or bound parameters is disabled. Use for a lambda that produces the identical results in all cases with no parameterization. :param track_closure_variables: when False, changes in closure variables within the lambda will not be scanned. Use for a lambda where the state of its closure variables will never change the SQL structure returned by the lambda. :param track_bound_values: when False, bound parameter tracking will be disabled for the given lambda. Use for a lambda that either does not produce any bound values, or where the initial bound values never change. :param global_track_bound_values: when False, bound parameter tracking will be disabled for the entire statement including additional links added via the :meth:`_sql.StatementLambdaElement.add_criteria` method. :param lambda_cache: a dictionary or other mapping-like object where information about the lambda's Python code as well as the tracked closure variables in the lambda itself will be stored. Defaults to a global LRU cache. This cache is independent of the "compiled_cache" used by the :class:`_engine.Connection` object. .. seealso:: :ref:`engine_lambda_caching` RRRRRR(tStatementLambdaElementRt StatementRoleR(tlmbRRRRRR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt lambda_stmt+s;t LambdaElementcBseZdZdZeZdejjfgZ dZ dZ dZ eddZdZdZedZedZed Zd Zd Zedd Zejd ZdZdZRS(sA SQL construct where the state is stored as an un-invoked lambda. The :class:`_sql.LambdaElement` is produced transparently whenever passing lambda expressions into SQL constructs, such as:: stmt = select(table).where(lambda: table.c.col == parameter) The :class:`_sql.LambdaElement` is the base of the :class:`_sql.StatementLambdaElement` which represents a full statement within a lambda. .. versionadded:: 1.4 .. seealso:: :ref:`engine_lambda_caching` tlambda_elementt _resolvedcCsd|jj|jjfS(Ns%s(%r)(t __class__Rtfnt__code__(tself((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt__repr__scCs||_||_|jf|_||_|dkrN|tjkrN|}n|j|||}|dk r|j }|r||_ qndS(N( R!troleR"t tracker_keytoptsRRRt_retrieve_tracker_rectpropagate_attrst_propagate_attrs(R#R!R%R'tapply_propagate_attrstrecR)((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt__init__s      c Cs|j}|dkrt}n|j}|j}|j}tj|||}g|_}|j dk ry|j j } nd} | t j k r.t j } tg|jD]} | ||| |^q} t j | kr| | } | |_ y||| } Wq+tk rd} q+Xq=t j } d} nt j } d} | |_ | dkr| t j k rtjP|| }||krt||||} || _| ||gt| j|D]$\}}|j|jdt^q|(| |_| t j k r|j dk rO|j j|d*n|}xa|dk r|j} | jr| j}x'| jD]}||j||qWn|j }qXWn| S(Nt maintain_keyi((RRt_closure_per_cache_keyR&R!t __closure__t AnalyzedCodetgett_resolved_bindparamst parent_lambdatclosure_cache_keyRtNO_CACHEtanon_mapttupletclosure_trackerstKeyErrort_generation_mutextAnalyzedFunctiontclosure_bindparamstNonAnalyzedFunctiont_invoke_user_fntzipt _with_valuetvalueRt_rectbindparam_trackersttracker_instrumented_fn(R#R!R+R'RR&tclosurettrackert bindparamstparent_closure_cache_keyR7tgettert cache_keyR,tkeyt orig_bindtnew_bindRRE((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR(sz         +              8    cCst|jj|S(N(tgetattrRCt expected_expr(R#RL((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt __getattr__scCs |jjS(N(RCt is_sequence(R#((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt _is_sequence scCs@|jr2tjjg|jD]}|j^qS|jjSdS(N(RSt itertoolstchaint from_iterableRt_select_iterable(R#telement((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRWs   cCs@|jr2tjjg|jD]}|j^qS|jjSdS(N(RSRTRURVRt _from_objects(R#RX((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRYs   cCsd|jDS(NcSsi|]}|j|jqS((RBRL(t.0tb((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pys $s (R3(R#((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt _param_dict#scsd|jDfd}|jjrYg|D]}tj|i|^q5}n*t|dtrtj|i|}n|S(NcSsi|]}||jqS((RL(RZR[((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pys 's csft|tjrb|jkrb|j}|jr[t|_|j|_|j|_n|SndS(N(t isinstanceRt BindParameterRLt expandingRt expand_opttype(tthingtbind(tbindparam_lookup(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pytreplace)s    tis_clause_element(R3RCRRRtreplacement_traverseROtFalse(R#texprRetsub_expr((RdsI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt_setup_binds_for_tracked_expr&s (cKs||jd|||_dS(Ntdeferred_copy_internals(R(R#tcloneRltkw((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt_copy_internals>s cCs+|jj}|jr'|j|}n|S(N(RCRPR3Rk(R#Ri((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRHs  cCs|jtjkr#t|tjeZdZeddZdZdZeddZ RS(s>A LambdaElement where the lambda accepts arguments and is invoked within the compile phase with special context. This lambda doesn't normally produce its real SQL expression outside of the compile phase. It is passed a fixed set of initial arguments so that it can generate a sample expression. cCs)||_tt|j|||dS(N(t lambda_argstsuperR}R-(R#R!R%R'R~((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR-us cGs ||jS(N(R~(R#R!Rs((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR?yscGs`|jj}||}tj|j|}|j|}x|jD]}||}qFW|S(N(RCRERtexpectR%RkRz(R#R~t tracker_fnRiRl((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt_resolve_with_args|s  cKsDtt|jd|d|d||r@|j|f7_ndS(NRmRlR'(RR}RoRz(R#RmRlRn((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRos (N( RRRtRR-R?RRRRo(((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR}ks   $RcBskeZdZdZedeedZdZedZ edZ edZ dZ RS( s`Represent a composable SQL statement as a :class:`_sql.LambdaElement`. The :class:`_sql.StatementLambdaElement` is constructed using the :func:`_sql.lambda_stmt` function:: from sqlalchemy import lambda_stmt stmt = lambda_stmt(lambda: select(table)) Once constructed, additional criteria can be built onto the statement by adding subsequent lambdas, which accept the existing statement object as a single parameter:: stmt += lambda s: s.where(table.c.col == parameter) .. versionadded:: 1.4 .. seealso:: :ref:`engine_lambda_caching` cCs |j|S(N(t add_criteria(R#tother((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt__add__sc CsJ|jtd|d|d|jjd|d|}t|d|d|S(sAdd new criteria to this :class:`_sql.StatementLambdaElement`. E.g.:: >>> def my_stmt(parameter): ... stmt = lambda_stmt( ... lambda: select(table.c.x, table.c.y), ... ) ... stmt = stmt.add_criteria( ... lambda: table.c.x > parameter ... ) ... return stmt The :meth:`_sql.StatementLambdaElement.add_criteria` method is equivalent to using the Python addition operator to add a new lambda, except that additional arguments may be added including ``track_closure_values`` and ``track_on``:: >>> def my_stmt(self, foo): ... stmt = lambda_stmt( ... lambda: select(func.max(foo.x, foo.y)), ... track_closure_variables=False ... ) ... stmt = stmt.add_criteria( ... lambda: self.where_criteria, ... track_on=[self] ... ) ... return stmt See :func:`_sql.lambda_stmt` for a description of the parameters accepted. RRRRRR4R'(R'tdictRtLinkedLambdaElement(R#RRRRRR'((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs*   cCs8|jjjr%|j||||Stj|dS(N(RCRPtsupports_executiont_execute_clauseelementR tObjectNotExecutableError(R#t connectiont multiparamstparamstexecution_options((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt_execute_on_connectionscCs |jjjS(N(RCRPt _with_options(R#((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR scCs |jjjS(N(RCRPt_effective_plugin_target(R#((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR scCs |jjjS(N(RCRPt_execution_options(R#((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRscCst|jS(stReturn a new :class:`.StatementLambdaElement` that will run all lambdas unconditionally each time. (tNullLambdaStatementR!(R#((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pytspoilsN( RRRtRRRRRR{RRRR(((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs  . RcBs\eZdZdZeZdejjfgZ dZ dZ dZ dZ dZRS(sProvides the :class:`.StatementLambdaElement` API but does not cache or analyze lambdas. the lambdas are instead invoked immediately. The intended use is to isolate issues that may arise when using lambda statements. RRcCs||_|j|_dS(N(RR*(R#t statement((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR-0s cCst|j|S(N(ROR(R#RL((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRQ4scCs||j}t|S(N(RR(R#RR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR7scKs||j}t|S(N(RR(R#RRnR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR<scCs5|jjr"|j||||Stj|dS(N(RRRR R(R#RRRR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRAs (RRRtRuRRvRRwRxRyR-RQRRR(((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs     RcBs&eZdZdZdZdZRS(sARepresent subsequent links of a :class:`.StatementLambdaElement`.cCsT||_||_||_|j|jf|_|j||||j|_dS(N(R'R!R4R&R"R(R*(R#R!R4R'((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR-Qs    cGs||jjS(N(R4R(R#R!Rs((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR?ZsN(RRRtRR%R-R?(((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRLs R1cBseZdZejZejZe dZ dZ dZ dZ d Zd Ze d Zd Zd ZdZeedZddZdZRS(RRRDR9tbuild_py_wrappersc Ksy|j|jSWntk r%nX|jL|j|jkrP|j|jSt|||||j|j<}|SWdQXdS(N(t_fnsR"R:R;R1(tclsR!Rt lambda_kwRntanalyzed((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR2js   cCstj|r%tjd|n|j}|jo=|j|_|j}|j}|j }|oh| |_ g|_ g|_ g|_ |r|r|j |n|j||r|j|qn|j|||dS(Ns/Method %s may not be passed as a SQL expression(tinspecttismethodR t ArgumentErrorR0RRRRRRDR9Rt_init_track_ont _init_globalst _init_closuret"_setup_additional_closure_trackers(R#R!RR'RFRRR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR-|s&        cs*jjfdt|DdS(Nc3s'|]\}}j||VqdS(N(t_cache_key_getter_track_on(RZtidxtelem(R#(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pys s(R9Rpt enumerate(R#R((R#sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs  cCs|j}|j}|j}x|jjD]u}||jkrCq(n|j|j|}tj|r(|j |df|r|j |j |qq(q(WdS(N( RRDRR"tco_namest __globals__t_roll_down_to_literalRt_deep_is_literaltappendRt$_bound_parameter_getter_func_globals(R#R!RRDRtnamet _bound_value((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs   c Cs|j}|j}|j}|j}|j}|j}xtt|jj |D]\}\} } |j | j } t j | r|j| |f|r|j|j| |qqR|rR|j|j|| || j qRqRWdS(N(RR0RRRDR9RR@R"t co_freevarsRt cell_contentsRRRt$_bound_parameter_getter_func_closuret"_cache_key_getter_closure_variable( R#R!RRFRRRDR9t closure_indextfvtcellR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs&      ( cCs[t||d|}|j}x6|jD]+}|js(|j|j||q(q(WdS(N(R<RR9tclosure_pywrapperst_sa__has_paramRt!_cache_key_getter_tracked_literal(R#R!RR'tanalyzed_functionR9t pywrapper((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs   cCst|d}|rbxJt|tjtjtfs^y|j}Wqtk rZPqXqWn|st j |dt }|dk ry|jSWqtk r|SXn|S|SdS(Nt__clause_element__traiseerr( thasattrR]Rt ClauseElementRt SchemaItemRaRtAttributeErrorR RRhR(RRXRftinsp((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs"    csfd}|S(sReturn a getter that will extend a list of bound parameters with new entries from the ``__globals__`` collection of a particular lambda. cs1|j}tj|d|j|dS(Nt_extract_bound_parameters(Rtobjectt__getattribute__(t current_fnREtresulttwrapper(R(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pytextract_parameter_values ((R#RR((RsI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRscsfd}|S(sReturn a getter that will extend a list of bound parameters with new entries from the ``__closure__`` collection of a particular lambda. cs7|jj}tj|d|jj|dS(NR(R0RRR(RRERR(R(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR&s ((R#RRR((RsI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs csXt|tr!fd}n3t|tjrEfd}nfd}|S(sReturn a getter that will extend a cache key with new entries from the "track_on" parameter passed to a :class:`.LambdaElement`. cs$tfd|jDS(Nc3s!|]}|jVqdS(N(Rr(RZttup_elem(R7RH(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pys <s(R8R(RFR'R7RH(R(R7RHsI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR2:scs|jj||S(N(RRr(RFR'R7RH(R(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR2Bscs |jS(N(R(RFR'R7RH(R(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR2Gs(R]R8Rt HasCacheKey(R#RRR2((RsI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR2s c s;t|tjr*fd}n t|tjrNfd}nt|tjr{fd}n|}t} x;t|drt } t |dts|j }qPqW| s t j |dt} | d k r'j| dt Snj|dt Sj|S( sReturn a getter that will extend a cache key with new entries from the ``__closure__`` collection of a particular lambda. csu|j}r%tj|}n@rex7t|drat|dts.|j}q.q.Wn|j||S(NRRf(RR RRRORhRRr(RFR'R7RHtobj(Rtuse_clause_elementt use_inspect(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR2\s cs|jjS(N(RR"(RFR'R7RH(R(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR2jscs^|j}y!tfd|DSWn)tk rY}jd|nXdS(Nc3s!|]}|jVqdS(N(Rr(RZR(R7RH(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pys tstfrom_(RR8Rt'_raise_for_uncacheable_closure_variable(RFR'R7RHtcontentstae(R!RR#t variable_name(R7RHsI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR2os RRfRRRN(R]RRttypest FunctionTypeR tSequenceRhRRRORR RRRR( R#R!RRRRRR2RXRfR((R!RR#RRRsI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRLs,  cCs-tjtjd||jfd|dS(NsTClosure variable named '%s' inside of lambda callable %s does not refer to a cacheable SQL element, and also does not appear to be serving as a SQL literal bound value based on the default SQL expression returned by the function. This variable needs to remain outside the scope of a SQL-generating lambda so that a proper cache key may be generated from the lambda's state. Evaluate this variable outside of the lambda, set track_on=[] to explicitly select closure elements to track, or set track_closure_variables=False to exclude closure variables from being part of the cache key.R(R traise_R tInvalidRequestErrorR"(R#RR!R((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs  cCs1|j}|j}|j}|j||||S(sReturn a getter that will extend a cache key with new entries from the ``__closure__`` collection of a particular lambda. this getter differs from _cache_key_getter_closure_variable in that these are detected after the function is run, and PyWrapper objects have recorded that a particular literal value is in fact not being interpreted as a bound parameter. (t_sa__to_evaluatet_sa__closure_indext _sa__nameR(R#R!t pytrackerRRR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs   (RRRDR9RN(RRt __slots__tweakreftWeakKeyDictionaryRt threadingtRLockR;t classmethodR2R-RRRRRRRRRhRRRR(((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR1^s*   '   #     G R>cBs2eZdZdZdZdZedZRS(RicCs ||_dS(N(Ri(R#Ri((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR-scCs|jS(N(Ri(R#((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRPs(RiN( RRRRR=RDR-R{RP(((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR>s  R<c Bs2eZdZd Zd Zd Zd ZRS(t analyzed_codeR!RRERiRDRPRRR)R=cCs?||_||_|j|_|j||j||dS(N(RR!RDt_instrument_and_run_functiont_coerce_expression(R#RRR+R!((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR-s     c Cs|j}|j}g|_}|j}|sP||_}|j||_n6|j}|j}|rdt |j j |D} ni} |j j } x|D]\} } | dk r|| j} t|| | d| d|jj| | <}|r7|j|q7q|j | } t|| | | | <}qW|j|g|j j D]} | | ^qQ| |_}|j||_dS(NcSs"i|]\}}|j|qS((R(RZRR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pys s RR(RR!RRRER?RiRR0R@R"RRtcopyRRt PyWrapperRRt_rewrite_code_obj(R#RRR!RRRERRFt new_closuret new_globalsRRRBRc((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs@           cCs|j}|j}|dkrt|tjrmg|D]!}tj|j|d|^q7|_ t |_ qtj|j|d||_ t |_ n||_ t |_ |dk r|j |_n tj|_dS(s,Run the tracker-generated expression through coercion rules. After the user-defined lambda has been invoked to produce a statement for re-use, run it through coercion rules to both check that it's the correct type of object and also to coerce it to its useful form. R+N(R4RiRR]R RRRR%RPRRRRhR*R)R t EMPTY_DICT(R#RR+R4RiRj((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR3s"   .      c s3tt}d}r[|ddjd|Ddjd|Df7}n|d7}|ddjd|D7}|d 7}fd |D}tj||||d }t||j||j|j|}t j d kr|j |_ |j |_ n|j |_ |j|_|S(saReturn a copy of f, with a new closure and new globals yes it works in pypy :P sdef make_cells(): s (%s) = (%s) s, css|]}d|VqdS(si%dN((RZti((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pys fscss|]}d|VqdS(so%dN((RZR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pys gss def closure(): s return %s css|]}d|VqdS(si%dN((RZR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pys jss return closure.__closure__cs!i|]}|d|qS(so%d((RZR(t cell_values(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pys ls t make_cellsi(i(trangetlentjoinR texec_RaR"Rt __defaults__tsyst version_infot__annotations__t__kwdefaults__RtR( R#tfRtglobals_targrangetcodetvars_RFtfunc((RsI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRZs(! !      ( RR!RRERiRDRPRRR)R=(RRRR-RRR(((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR<s  D 'RcBseZdZd d edZdZdZdZdZ d d dZ dZ dZ d Z d Zd Zd ZRS(sA wrapper object that is injected into the ``__globals__`` and ``__closure__`` of a Python function. When the function is instrumented with :class:`.PyWrapper` objects, it is then invoked just once in order to set up the wrappers. We look through all the :class:`.PyWrapper` objects we made to find the ones that generated a :class:`.BindParameter` object, e.g. the expression system interpreted something as a literal. Those positions in the globals/closure are then ones that we will look at, each time a new lambda comes in that refers to the same ``__code__`` object. In this way, we keep a single version of the SQL expression that this lambda produced, without calling upon the Python function that created it more than once, unless its other closure variables have changed. The expression is then transformed to have the new bound values embedded into it. cCsU||_||_||_d|_t|_i|_||_||_ ||_ dS(N( R!t_namet _to_evaluateRt_paramRht _has_paramt _bind_pathst_gettert_closure_indexR(R#R!Rt to_evaluateRRJR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR-s        cOstj|d}|||}|jrtj|rt|tj rtj|d}tj d||j j fn|SdS(NRRs#Can't invoke Python callable %s() inside of lambda expression argument at %s; lambda SQL constructs should not invoke functions from closure variables to produce literal values since the lambda SQL system normally extracts bound values without actually invoking the lambda or any functions within it. Call the function outside of the lambda and assign to a local variable that is used in the lambda as a closure variable, or set track_bound_values=False if the return value of this function is used in some other way other than a SQL bound value.( RRt_sa_track_bound_valuesRRR]RRR Rt_sa_fnR"(R#RsRnRRBR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt__call__s   cOs%tj|d}||||S(Nt_py_wrapper_literal(RR(R#topRtkwargsR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pytoperatescKs%tj|d}||||S(NR(RR(R#RRR R((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pytreverse_operatescCstj|d}|dk rC|j|dt}|j|nxNtj|djD]4}tj|d}||}|j||q\WdS(NRR.RR(RRRRARRtvaluest_sa__extract_bound_parameters(R#tstarting_pointt result_listtparamRRJRX((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs  c Kstj|d}tj|d}|dkrtj|d}tj|dtdtd|d|dk ru|jnd|_}t|_ n|j |dtS( NRRRtrequiredtuniquet_compared_to_operatort_compared_to_typeR.( RRRRR^RhRRaRRRA(R#RitoperatorRnRRR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs % cCstj|d}t|S(NR(RRtbool(R#R((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt__bool__scCstj|d}t|S(NR(RRR(R#R((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt __nonzero__scCs|jdr#tj||dS|d kr?tj||S|jd rmtj|d }t||S|j|tjSdS( Nt_sa_iRR R RR t__dict__t__R(RR R RR R(t startswithRRROt_sa__add_getterRt attrgetter(R#RLR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyRs  cCstj|d}t|S(NR(RRtiter(R#R((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt__iter__scCsdtj|d}t|ds0tdnt|trQtjdn|j|t j S(NRt __getitem__sUDictionary keys / list indexes inside of a cached lambda must be Python literals only( RRRRR]RR RRRt itemgetter(R#RLR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR!s c Cstj|d}||f}||kr2||S||}tj|d}||}tj|}tj|rt|j||d|} | ||<| S|SdS(NRRRJ(RRR1RRRRR( R#RLt getter_fnt bind_pathst bind_path_keyRJRRBtrolled_down_valueR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyt _add_getter s     N(RRRtRRR-RR R RRRRRR R!R'(((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR|s         cCstj|jS(N(R RR(R((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pyR#s(,RRTRRRRRtRRRRRRtbaseRRt operatorsRR R R R R tLRUCacheR/RRRRRRR}tAllowsLambdaRoleRRRRR1R>R<Rt _inspectsR(((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/lambdas.pytsN         BCo/f