§
    ¤”jO   ã                   ó¤   — d Z ddlZddlmZ ddlmZmZ ddlmZ  G d„ de	¦  «        Z
 G d„ d	¦  «        Z G d
„ d¦  «        Z G d„ d¦  «        ZdS )z]
Useful auxiliary data structures for query construction. Not useful outside
the SQL domain.
é    N)ÚFullResultSet)ÚINNERÚLOUTER)ÚRemovedInDjango60Warningc                   ó   — e Zd ZdZd„ ZdS )Ú	MultiJoinz¤
    Used by join construction code to indicate the point at which a
    multi-valued join was attempted (if the caller wants to treat that
    exceptionally).
    c                 ó"   — || _         || _        d S ©N)ÚlevelÚnames_with_path)ÚselfÚ	names_posÚpath_with_namess      úr/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/django/db/models/sql/datastructures.pyÚ__init__zMultiJoin.__init__   s   € ØˆŒ
à.ˆÔÐÐó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r      s-   € € € € € ðð ð/ð /ð /ð /ð /r   r   c                   ó   — e Zd ZdS )ÚEmptyN)r   r   r   r   r   r   r   r      s   € € € € € Ø€Dr   r   c                   óV   — e Zd ZdZ	 dd„Zd„ Zd„ Zed„ ¦   «         Zd„ Z	d„ Z
d	„ Zd
„ ZdS )ÚJoinaá  
    Used by sql.Query and sql.SQLCompiler to generate JOIN clauses into the
    FROM entry. For example, the SQL generated could be
        LEFT OUTER JOIN "sometable" T1
        ON ("othertable"."sometable_id" = "sometable"."id")

    This class is primarily used in Query.alias_map. All entries in alias_map
    must be Join compatible by providing the following attributes and methods:
        - table_name (string)
        - table_alias (possible alias for the table, can be None)
        - join_type (can be None for those entries that aren't joined from
          anything)
        - parent_alias (which table is this join's parent, can be None similarly
          to join_type)
        - as_sql()
        - relabeled_clone()
    Nc                 óv  — || _         || _        || _        || _        t	          |d¦  «        r=|                     ¦   «         | _        t          d„ | j        D ¦   «         ¦  «        | _        n:t          j
        dt          ¦  «         d | _        |                     ¦   «         | _        || _        || _        || _        d S )NÚget_joining_fieldsc              3   ó8   K  — | ]\  }}|j         |j         fV — Œd S r
   )Úcolumn)Ú.0Ú	lhs_fieldÚ	rhs_fields      r   ú	<genexpr>z Join.__init__.<locals>.<genexpr>F   sE   è è € ð #ð #á(�I˜yð Ô! 9Ô#3Ð4ð#ð #ð #ð #ð #ð #r   zaThe usage of get_joining_columns() in Join is deprecated. Implement get_joining_fields() instead.)Ú
table_nameÚparent_aliasÚtable_aliasÚ	join_typeÚhasattrr   Újoin_fieldsÚtupleÚ	join_colsÚwarningsÚwarnr   Úget_joining_columnsÚ
join_fieldÚnullableÚfiltered_relation)r   r$   r%   r&   r'   r/   r0   r1   s           r   r   zJoin.__init__1   sÔ   € ð %ˆŒØ(ˆÔà&ˆÔà"ˆŒõ �:Ð3Ñ4Ô4ð 	>Ø)×<Ò<Ñ>Ô>ˆDÔÝ"ð #ð #à,0Ô,<ð#ñ #ô #ñ ô ˆDŒNˆNõ
 ŒMð0å(ñô ð ð
  $ˆDÔØ'×;Ò;Ñ=Ô=ˆDŒNà$ˆŒà ˆŒØ!2ˆÔÐÐr   c                 ó¬  — g }g }|j         }|j        j        }| j        p| j        }|D ]Õ\  }}	t          |t          ¦  «        r= || j        ¦  «        ›d ||¦  «        ›�}
 || j        ¦  «        ›d ||	¦  «        ›�}nd|j         	                    | j        || j        |	¦  «        \  }}	| 
                    |¦  «        \  }}||z  }
| 
                    |	¦  «        \  }}||z  }|                     |
› d|› �¦  «         ŒÖ| j                             | j        | j        ¦  «        }|rE| 
                    |¦  «        \  }}|                     d|z  ¦  «         |                     |¦  «         | j        r\	 | 
                    | j        ¦  «        \  }}|                     d|z  ¦  «         |                     |¦  «         n# t           $ r Y nw xY w|s2t#          | j        d| j        ¦  «        }t%          d|j        z  ¦  «        ‚d                     |¦  «        }| j        | j        k    rdn	d| j        z  }| j        ›d	 || j        ¦  «        ›|›d
|›d�}||fS )z™
        Generate the full
           LEFT OUTER JOIN sometable ON sometable.somecol = othertable.othercol, params
        clause for this join.
        ú.z = z(%s)ÚfieldzaJoin generated an empty ON clause. %s did not yield either joining columns or extra restrictions.z AND Ú ú %sú z ON (ú))Úquote_name_unless_aliasÚopsÚ
quote_namer)   r+   Ú
isinstanceÚstrr%   r&   Úprepare_join_on_clauseÚcompileÚappendr/   Úget_extra_restrictionÚextendr1   r   ÚgetattrÚ
ValueErrorÚ	__class__Újoinr$   r'   )r   ÚcompilerÚ
connectionÚjoin_conditionsÚparamsÚqnÚqn2r)   ÚlhsÚrhsÚlhs_full_nameÚrhs_full_nameÚlhs_sqlÚ
lhs_paramsÚrhs_sqlÚ
rhs_paramsÚ
extra_condÚ	extra_sqlÚextra_paramsÚdeclared_fieldÚon_clause_sqlÚ	alias_strÚsqls                          r   Úas_sqlzJoin.as_sqlX   sã  € ð ˆØˆØÔ-ˆØŒnÔ'ˆð Ô&Ð8¨$¬.ˆØ#ð 	Ið 	I‰HˆC�Ý˜#�sÑ#Ô#ð 5ð ,.¨2¨dÔ.?Ñ+@Ô+@Ð+@Ð+@À#À#ÀcÁ(Ä(À(Ð K�Ø+-¨2¨dÔ.>Ñ+?Ô+?Ð+?Ð+?ÀÀÀSÁÄÀÐ J��à%œ>×@Ò@ØÔ% s¨DÔ,<¸cñô ‘��Sð '/×&6Ò&6°sÑ&;Ô&;Ñ#�˜Ø '¨*Ñ 4�Ø&.×&6Ò&6°sÑ&;Ô&;Ñ#�˜Ø '¨*Ñ 4�Ø×"Ò" mÐ#GÐ#G¸Ð#GÐ#GÑHÔHÐHÐHð ”_×:Ò:ØÔ˜dÔ/ñ
ô 
ˆ
ð ð 	(Ø&.×&6Ò&6°zÑ&BÔ&BÑ#ˆI�|Ø×"Ò" 6¨IÑ#5Ñ6Ô6Ð6Ø�MŠM˜,Ñ'Ô'Ð'ØÔ!ð 	,ð,Ø*2×*:Ò*:¸4Ô;QÑ*RÔ*RÑ'�	˜<ð  ×&Ò& v°	Ñ'9Ñ:Ô:Ð:Ø—’˜lÑ+Ô+Ð+Ð+øõ	 !ð ð ð Ø�ðøøøð
 ð 	å$ T¤_°g¸t¼ÑOÔOˆNÝð9Ø;IÔ;SñTñô ð ð  Ÿš _Ñ5Ô5ˆàÔ" d¤oÒ5Ð5ˆBˆB¸EÀDÔDTÑ<Tð 	ð ŒNˆNˆNØˆBˆtŒÑÔÐØˆIˆIØˆMˆMð	
ˆð �Fˆ{Ðs   Å2F= Æ=
G
Ç	G
c           	      ó*  — |                      | j        | j        ¦  «        }|                      | j        | j        ¦  «        }| j        �| j                             |¦  «        }nd }|                      | j        ||| j        | j        | j	        |¬¦  «        S )N)r1   )
Úgetr%   r&   r1   Úrelabeled_clonerE   r$   r'   r/   r0   )r   Ú
change_mapÚnew_parent_aliasÚnew_table_aliasr1   s        r   r_   zJoin.relabeled_cloneš   s–   € Ø%Ÿ>š>¨$Ô*;¸TÔ=NÑOÔOÐØ$Ÿ.š.¨Ô)9¸4Ô;KÑLÔLˆØÔ!Ð-Ø $Ô 6× FÒ FÀzÑ RÔ RÐÐà $ÐØ�~Š~ØŒOØØØŒNØŒOØŒMØ/ð ñ 
ô 
ð 	
r   c                 óB   — | j         | j        | j        | j        | j        fS r
   )rE   r$   r%   r/   r1   ©r   s    r   ÚidentityzJoin.identity«   s)   € ð ŒNØŒOØÔØŒOØÔ"ð
ð 	
r   c                 óZ   — t          |t          ¦  «        st          S | j        |j        k    S r
   )r<   r   ÚNotImplementedre   ©r   Úothers     r   Ú__eq__zJoin.__eq__µ   s)   € Ý˜%¥Ñ&Ô&ð 	"Ý!Ð!ØŒ} ¤Ò.Ð.r   c                 ó*   — t          | j        ¦  «        S r
   ©Úhashre   rd   s    r   Ú__hash__zJoin.__hash__º   ó   € Ý�D”MÑ"Ô"Ð"r   c                 óH   — |                       i ¦  «        }t          |_        |S r
   )r_   r   r'   ©r   Únews     r   ÚdemotezJoin.demote½   s!   € Ø×"Ò" 2Ñ&Ô&ˆÝˆŒØˆ
r   c                 óH   — |                       i ¦  «        }t          |_        |S r
   )r_   r   r'   rq   s     r   ÚpromotezJoin.promoteÂ   s!   € Ø×"Ò" 2Ñ&Ô&ˆÝˆŒØˆ
r   r
   )r   r   r   r   r   r\   r_   Úpropertyre   rj   rn   rs   ru   r   r   r   r   r      s±   € € € € € ðð ð4 ð%3ð %3ð %3ð %3ðN@ð @ð @ðD
ð 
ð 
ð" ð
ð 
ñ „Xð
ð/ð /ð /ð
#ð #ð #ðð ð ð
ð ð ð ð r   r   c                   óR   — e Zd ZdZdZdZdZd„ Zd„ Zd„ Z	e
d„ ¦   «         Zd„ Zd„ ZdS )	Ú	BaseTablezÂ
    The BaseTable class is used for base table references in FROM clause. For
    example, the SQL "foo" in
        SELECT * FROM "foo" WHERE somecond
    could be generated by this class.
    Nc                 ó"   — || _         || _        d S r
   )r$   r&   )r   r$   Úaliass      r   r   zBaseTable.__init__Ô   s   € Ø$ˆŒØ ˆÔÐÐr   c                 ó|   — | j         | j        k    rdn	d| j         z  }|                     | j        ¦  «        }||z   g fS )Nr5   r6   )r&   r$   r9   )r   rG   rH   rZ   Úbase_sqls        r   r\   zBaseTable.as_sqlØ   sL   € àÔ" d¤oÒ5Ð5ˆBˆB¸EÀDÔDTÑ<Tð 	ð ×3Ò3°D´OÑDÔDˆØ˜)Ñ# RÐ'Ð'r   c                 ót   — |                       | j        |                     | j        | j        ¦  «        ¦  «        S r
   )rE   r$   r^   r&   )r   r`   s     r   r_   zBaseTable.relabeled_cloneß   s3   € Ø�~Š~ØŒO˜ZŸ^š^¨DÔ,<¸dÔ>NÑOÔOñ
ô 
ð 	
r   c                 ó*   — | j         | j        | j        fS r
   )rE   r$   r&   rd   s    r   re   zBaseTable.identityä   s   € àŒ~˜tœ°Ô0@Ð@Ð@r   c                 óZ   — t          |t          ¦  «        st          S | j        |j        k    S r
   )r<   rx   rg   re   rh   s     r   rj   zBaseTable.__eq__è   s)   € Ý˜%¥Ñ+Ô+ð 	"Ý!Ð!ØŒ} ¤Ò.Ð.r   c                 ó*   — t          | j        ¦  «        S r
   rl   rd   s    r   rn   zBaseTable.__hash__í   ro   r   )r   r   r   r   r'   r%   r1   r   r\   r_   rv   re   rj   rn   r   r   r   rx   rx   È   s™   € € € € € ðð ð €IØ€LØÐð!ð !ð !ð(ð (ð (ð
ð 
ð 
ð
 ðAð Añ „XðAð/ð /ð /ð
#ð #ð #ð #ð #r   rx   )r   r,   Údjango.core.exceptionsr   Údjango.db.models.sql.constantsr   r   Údjango.utils.deprecationr   Ú	Exceptionr   r   r   rx   r   r   r   ú<module>r…      s  ððð ð
 €€€à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø =Ð =Ð =Ð =Ð =Ð =ð
/ð 
/ð 
/ð 
/ð 
/�	ñ 
/ô 
/ð 
/ð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ðgð gð gð gð gñ gô gð gðT&#ð &#ð &#ð &#ð &#ñ &#ô &#ð &#ð &#ð &#r   