Ë
    Ìi¯  ã                   ój   — d dl mZ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mZ  G d„ de«      Zy	)
é    )ÚOptionalÚList)Úpayload)ÚSubject)ÚSelfDescribingJson)ÚCONTEXT_SCHEMA)ÚJsonEncoderFunctionÚPayloadDictc                   ó`  — e Zd ZdZ	 	 	 	 ddee   dee   deee      dee	   ddf
d„Z
	 dd	ed
ee   dee   ddfd„Zedee   fd„«       Zej                   dee   fd„«       Zedee   fd„«       Zej                   dee   fd„«       Zedee	   fd„«       Zej                   dee	   fd„«       Zy)ÚEventai  
    Event class which contains
    elements that can be set in all events. These are context, trueTimestamp, and Subject.

    Context is a list of custom SelfDescribingJson entities.
    TrueTimestamp is a user-defined timestamp.
    Subject is an event-specific Subject. Its fields will override those of the
    Tracker-associated Subject, if present.

    NÚdict_Úevent_subjectÚcontextÚtrue_timestampÚreturnc                 ól   — t        j                  |¬«      | _         || _        |xs g | _        || _        y)a#  
        Constructor
        :param  dict_:              Optional Dictionary to be added to the Events Payload
        :type   dict_:              dict(string:\*) | None
        :param  event_subject:      Optional per event subject
        :type   event_subject:      subject | None
        :param  context:            Custom context for the event
        :type   context:            context_array | None
        :param  true_timestamp:     Optional event timestamp in milliseconds
        :type   true_timestamp:     int | float | None

        )r   N)r   ÚPayloadr   r   r   )Úselfr   r   r   r   s        ú^/var/www/html/strategist-ai/venv/lib/python3.12/site-packages/snowplow_tracker/events/event.pyÚ__init__zEvent.__init__(   s/   € ô& —‘¨UÔ3ˆŒØ*ˆÔØ’} "ˆŒØ,ˆÕó    Úencode_base64Újson_encoderÚsubjectzpayload.Payloadc                 óH  — t        | j                  «      dkD  r]t        t        d„ | j                  «      «      }t	        t
        |«      j                  «       }| j                  j                  ||dd|«       t        | j                  t        t        f«      r/| j                  j                  dt        | j                  «      «       | j                  �| j                  j                  |«      }n|€i n|j                   }| j                  j#                  |«       | j                  S )a¹  
        :param encode_base64:    Whether JSONs in the payload should be base-64 encoded
        :type  encode_base64:    bool
        :param json_encoder:     Custom JSON serializer that gets called on non-serializable object
        :type  json_encoder:     function | None
        :param  subject:         Optional per event subject
        :type   subject:         subject | None
        :rtype:                  payload.Payload
        r   c                 ó"   — | j                  «       S ©N)Úto_json)Úcs    r   ú<lambda>z%Event.build_payload.<locals>.<lambda>P   s   € ¨q¯y©y«{€ r   ÚcxÚcoÚttm)Úlenr   ÚlistÚmapr   r   r   r   Úadd_jsonÚ
isinstancer   ÚintÚfloatÚaddr   Úcombine_subjectÚstandard_nv_pairsÚadd_dict)r   r   r   r   Úcontext_jsonsÚcontext_envelopeÚfin_payload_dicts          r   Úbuild_payloadzEvent.build_payload@   sô   € ô ˆt�|‰|Ó˜qÒ Ü ¤Ñ%:¸D¿L¹LÓ!IÓJˆMÜ1Ü ó ç‰g‹ið ð �L‰L×!Ñ!Ø  -°°t¸\ôô Ø×ÑäÜðô
ð �L‰L×Ñ˜U¤C¨×(;Ñ(;Ó$<Ô=à×ÑÐ)Ø#×1Ñ1×AÑAÀ'ÓJÑà%, _™r¸'×:SÑ:SÐà�‰×ÑÐ.Ô/Ø�|‰|Ðr   c                 ó   — | j                   S )z,
        Optional per event subject
        ©Ú_event_subject©r   s    r   r   zEvent.event_subjecti   s   € ð
 ×"Ñ"Ð"r   Úvaluec                 ó   — || _         y r   r4   ©r   r7   s     r   r   zEvent.event_subjectp   s
   € à#ˆÕr   c                 ó   — | j                   S )z.
        Custom context for the event
        ©Ú_contextr6   s    r   r   zEvent.contextt   s   € ð
 �}‰}Ðr   c                 ó   — || _         y r   r;   r9   s     r   r   zEvent.context{   s	   € àˆ�r   c                 ó   — | j                   S )z:
        Optional event timestamp in milliseconds
        ©Ú_true_timestampr6   s    r   r   zEvent.true_timestamp   s   € ð
 ×#Ñ#Ð#r   c                 ó   — || _         y r   r?   r9   s     r   r   zEvent.true_timestamp†   s
   € à$ˆÕr   )NNNNr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r
   r   r   r   r*   r   Úboolr	   r2   Úpropertyr   Úsetterr   r   © r   r   r   r      so  „ ñ	ð (,Ø+/Ø6:Ø*.ñ-à˜Ñ$ð-ð   Ñ(ð-ð ˜$Ð1Ñ2Ñ3ð	-ð
 ! ™ð-ð 
ó-ð8 &*ñ	'àð'ð Ð2Ñ3ð'ð ˜'Ñ"ð	'ð
 
ó'ðR ð#˜x¨Ñ0ò #ó ð#ð ×Ñð$ 8¨GÑ#4ò $ó ð$ð ð˜Ð0Ñ1ò ó ðð ‡^�^ð˜TÐ"4Ñ5ò ó ðð ð$ ¨¡ò $ó ð$ð ×Ñð% H¨U¡Oò %ó ñ%r   r   N)Útypingr   r   Úsnowplow_trackerr   Úsnowplow_tracker.subjectr   Ú%snowplow_tracker.self_describing_jsonr   Úsnowplow_tracker.constantsr   Úsnowplow_tracker.typingr	   r
   Úobjectr   rI   r   r   ú<module>rQ      s'   ð÷$ "Ý $Ý ,å Då 5ß Dôl%ˆFõ l%r   