Ë
    èlÖi  ã                   óº   — d dl Z d dlmZmZmZmZ 	 d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ  G d„ d	e«      Z G d
„ d«      Z G d„ d«      Zy# e$ r	 d dlmZ Y ŒAw xY w)é    N)ÚAnyÚDictÚListÚ	TypedDict)ÚNotRequired)ÚOptional)Ú
fire_event)ÚBehaviorChangeEvent)ÚCompilationErrorÚDbtInternalErrorc                   óV   — e Zd ZU dZeed<   eed<   ee   ed<   ee   ed<   ee   ed<   y)ÚBehaviorFlagaç  
    Configuration used to create a BehaviorFlagRendered instance

    Args:
        name: the name of the behavior flag
        default: default setting, starts as False, becomes True after a bake-in period
        description: an additional message to send when the flag evaluates to False
        docs_url: the url to the relevant docs on docs.getdbt.com

    *Note*:
        While `description` and `docs_url` are both listed as `NotRequired`, at least one of them is required.
        This is validated when the flag is rendered in `BehaviorFlagRendered` below.
        The goal of this restriction is to provide the end user with context so they can make an informed decision
        about if, and when, to enable the behavior flag.
    ÚnameÚdefaultÚsourceÚdescriptionÚdocs_urlN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__Úboolr   © ó    ú^/var/www/html/strategist-ai/venv_dbt/lib/python3.12/site-packages/dbt_common/behavior_flags.pyr   r      s4   … ñð  ƒIØƒMØ˜ÑÓØ˜SÑ!Ó!Ø˜#ÑÔr   r   c                   óÔ   — e Zd ZU dZdZeed<   dedee	e
f   ddfd„Zededdfd	„«       Zedefd
„«       Zej                   deddfd„«       Zedefd„«       Zede	fd„«       Zdefd„Zy)ÚBehaviorFlagRenderedzð
    A rendered behavior flag that gets used throughout dbt packages

    Args:
        flag: the configuration for the behavior flag
        user_overrides: a set of user settings, one of which may be an override on this behavior flag
    FÚfiredÚflagÚuser_overridesÚreturnNc           	      ó4  — | j                  |«       |d   | _        |j                  |d   |d   «      | _        d|d   › d�}d}t	        |d   |j                  d| j                  «       «      |j                  d|«      |j                  d|«      ¬	«      | _        y )
Nr   r   zThe behavior controlled by `z` is currently turned off.
zAhttps://docs.getdbt.com/reference/global-configs/behavior-changesr   r   r   )Ú	flag_nameÚflag_sourcer   r   )Ú	_validater   ÚgetÚsettingr
   Ú_default_sourceÚ_behavior_change_event)Úselfr!   r"   Údefault_descriptionÚdefault_docs_urls        r   Ú__init__zBehaviorFlagRendered.__init__3   sŸ   € Ø�‰�tÔà˜‘LˆŒ	Ø%×)Ñ)¨$¨v©,¸¸Y¹ÓHˆŒð -¨T°&©\¨NÐ:VÐYð 	ð _ÐÜ&9Ø˜6‘lØŸ™ ¨4×+?Ñ+?Ó+AÓBØŸ™ Ð0CÓDØ—X‘X˜jÐ*:Ó;ô	'
ˆÕ#r   c                 ó`   — | j                  d«      €| j                  d«      €t        d«      ‚y y )Nr   r   zKBehavior change flags require at least one of `description` and `docs_url`.)r(   r   )r!   s    r   r'   zBehaviorFlagRendered._validateD   s8   € à�8‰8�MÓ"Ð*¨t¯x©x¸
Ó/CÐ/KÜ"Ø]óð ð 0LÐ*r   c                 ó†   — | j                   du r(| j                  st        | j                  «       d| _        | j                   S )NFT)Ú_settingr    r	   r+   ©r,   s    r   r)   zBehaviorFlagRendered.settingK   s3   € à�=‰=˜EÑ!¨$¯*ª*Ü�t×2Ñ2Ô3ØˆDŒJØ�}‰}Ðr   Úvaluec                 ó   — || _         y ©N©r2   )r,   r4   s     r   r)   zBehaviorFlagRendered.settingR   s	   € àˆ�r   c                 ó   — | j                   S r6   r7   r3   s    r   Úno_warnzBehaviorFlagRendered.no_warnV   s   € à�}‰}Ðr   c                  ó®   — t        j                  «       D ]>  } t        j                  | d   «      x}sŒ|j                  t        k7  sŒ2|j                  c S  y)z¾
        If the maintainer did not provide a source, default to the module that called this class.
        For adapters, this will likely be `dbt.adapters.<foo>.impl` for `dbt-foo`.
        r   ÚUnknown)ÚinspectÚstackÚ	getmoduler   )ÚframeÚmodules     r   r*   z$BehaviorFlagRendered._default_sourceZ   sN   € ô —]‘]“_ò 	+ˆEÜ ×*Ñ*¨5°©8Ó4Ð4ˆvÑ4Ø—?‘?¤hÓ.Ø!Ÿ?™?Ò*ð	+ð r   c                 ó   — | j                   S r6   )r)   r3   s    r   Ú__bool__zBehaviorFlagRendered.__bool__f   s   € Ø�|‰|Ðr   )r   r   r   r   r    r   r   r   r   r   r   r/   Ústaticmethodr'   Úpropertyr)   Úsetterr9   r*   rB   r   r   r   r   r   (   sÚ   … ñð €Eˆ4Óð
˜\ð 
¸4ÀÀSÀ¹>ð 
Èdó 
ð" ð˜ð ¨ò ó ðð ð˜ò ó ðð ‡^�^ð˜Tð  dò ó ðð ð˜ò ó ðð ð	˜Sò 	ó ð	ð˜$ô r   r   c                   óV   — e Zd ZU dZee   ed<   dee   dee	e
f   ddfd„Zde	defd	„Zy)
ÚBehavioraú  
    A collection of behavior flags

    This is effectively a dictionary that supports dot notation for easy reference, e.g.:
        ```python
        if adapter.behavior.my_flag:
            ...

        if adapter.behavior.my_flag.no_warn:  # this will not fire the behavior change event
            ...
        ```
        ```jinja
        {% if adapter.behavior.my_flag %}
            ...
        {% endif %}

        {% if adapter.behavior.my_flag.no_warn %}  {# this will not fire the behavior change event #}
            ...
        {% endif %}
        ```

    Args:
        flags: a list of configurations, one for each behavior flag
        user_overrides: a set of user settings, which may include overrides on one or more of the behavior flags
    Ú_flagsÚflagsr"   r#   Nc                 óL   — |D �cg c]  }t        ||«      ‘Œ c}| _        y c c}w r6   )r   rH   )r,   rI   r"   r!   s       r   r/   zBehavior.__init__‡   s   € ØNSÖTÀdÔ+¨D°.ÕAÒTˆ�ùÒTs   …!r   c                 óh   — | j                   D ]  }|j                  |k(  sŒ|c S  t        d|› d�«      ‚)Nz	The flag z has not been registered.)rH   r   r   )r,   r   r!   s      r   Ú__getattr__zBehavior.__getattr__Š   s=   € Ø—K‘Kò 	ˆDØ�y‰y˜DÓ Ø’ð	ô  ¨4¨&Ð0IÐJÓKÐKr   )r   r   r   r   r   r   r   r   r   r   r   r/   rL   r   r   r   rG   rG   j   sX   … ñð4 Ð%Ñ&Ó&ðU˜d <Ñ0ð UÀ$ÀsÈCÀxÁ.ð UÐUYó UðL ð LÐ(<ô Lr   rG   )r<   Útypingr   r   r   r   r   ÚImportErrorr   Údbt_common.events.functionsr	   Údbt_common.events.typesr
   Údbt_common.exceptionsr   r   r   r   rG   r   r   r   ú<module>rR      s[   ðÛ ß -Ó -ð/Ý"õ 3Ý 7ß Dô�9ô ÷0?ñ ?÷D$Lò $LøðI ò /÷ /ð/ús   ’A ÁAÁA