Ë
    èlÖi¶  ã                   óV   — d dl mZmZmZ d dlmZmZ d dlmZm	Z	m
Z
 dZ G d„ de«      Zy)é    )ÚDictÚOptionalÚUnion)Úone_ofÚgreater_than)ÚSupportedPlatformÚSUPPORTED_PLATFORMSÚPayloadDictÚpcc                   ó  — e Zd ZdZd!d„Zdedd fd„Zdedd fd„Zd	e	d
e	dd fd„Z
d	e	d
e	dd fd„Zde	dd fd„Zdedd fd„Zdedd fd„Zdedd fd„Zdedd fd„Zde	dd fd„Zdedd fd„Zdedd fd„Zdedd fd„Zded    defd „Zy)"ÚSubjectzn
    Class for an event subject, where we view events as of the form

    (Subject) -> (Verb) -> (Object)
    ÚreturnNc                 ó   — dt         i| _        y )NÚp)ÚDEFAULT_PLATFORMÚstandard_nv_pairs)Úselfs    ú]/var/www/html/strategist-ai/venv_dbt/lib/python3.12/site-packages/snowplow_tracker/subject.pyÚ__init__zSubject.__init__    s   € Ø>AÔCSÐ=TˆÕó    Úvaluec                 óD   — t        |t        «       || j                  d<   | S )zÃ
        :param  value:          One of ["pc", "tv", "mob", "cnsl", "iot", "web", "srv", "app"]
        :type   value:          supported_platform
        :rtype:                 subject
        r   )r   r	   r   )r   r   s     r   Úset_platformzSubject.set_platform#   s$   € ô 	ˆuÔ)Ô*à&+ˆ×Ñ˜sÑ#Øˆr   Úuser_idc                 ó$   — || j                   d<   | S )z€
        :param  user_id:        User ID
        :type   user_id:        string
        :rtype:                 subject
        Úuid©r   )r   r   s     r   Úset_user_idzSubject.set_user_id.   s   € ð )0ˆ×Ñ˜uÑ%Øˆr   ÚwidthÚheightc                 óœ   — t        |d«       t        |d«       dj                  t        |«      dt        |«      g«      | j                  d<   | S )zè
        :param  width:          Width of the screen
        :param  height:         Height of the screen
        :type   width:          int,>0
        :type   height:         int,>0
        :rtype:                 subject
        r   Ú ÚxÚres©r   ÚjoinÚstrr   ©r   r   r    s      r   Úset_screen_resolutionzSubject.set_screen_resolution7   sE   € ô 	�U˜AÔÜ�V˜QÔà(*¯©´°U³¸SÄ#ÀfÃ+Ð0NÓ(Oˆ×Ñ˜uÑ%Øˆr   c                 óœ   — t        |d«       t        |d«       dj                  t        |«      dt        |«      g«      | j                  d<   | S )zì
        :param  width:          Width of the viewport
        :param  height:         Height of the viewport
        :type   width:          int,>0
        :type   height:         int,>0
        :rtype:                 subject
        r   r"   r#   Úvpr%   r(   s      r   Úset_viewportzSubject.set_viewportE   sE   € ô 	�U˜AÔÜ�V˜QÔà')§w¡w´°E³
¸CÄÀVÃÐ/MÓ'Nˆ×Ñ˜tÑ$Øˆr   Údepthc                 ó$   — || j                   d<   | S )z–
        :param  depth:          Depth of the color on the screen
        :type   depth:          int
        :rtype:                 subject
        Úcdr   )r   r-   s     r   Úset_color_depthzSubject.set_color_depthS   s   € ð (-ˆ×Ñ˜tÑ$Øˆr   Útimezonec                 ó$   — || j                   d<   | S )z�
        :param  timezone:       Timezone as a string
        :type   timezone:       string
        :rtype:                 subject
        Útzr   )r   r1   s     r   Úset_timezonezSubject.set_timezone\   s   € ð (0ˆ×Ñ˜tÑ$Øˆr   Úlangc                 ó$   — || j                   d<   | S )z²
        Set language.

        :param  lang:           Language the application is set to
        :type   lang:           string
        :rtype:                 subject
        r5   r   )r   r5   s     r   Úset_langzSubject.set_lange   ó   € ð *.ˆ×Ñ˜vÑ&Øˆr   Úduidc                 ó$   — || j                   d<   | S )z§
        Set the domain user ID

        :param duid:            Domain user ID
        :type  duid:            string
        :rtype:                 subject
        r9   r   )r   r9   s     r   Úset_domain_user_idzSubject.set_domain_user_idp   r8   r   Úsidc                 ó$   — || j                   d<   | S )z¬
        Set the domain session ID
        :param sid:             Domain session ID
        :type  sid:             string
        :rtype:                 subject
        r<   r   )r   r<   s     r   Úset_domain_session_idzSubject.set_domain_session_id{   ó   € ð ),ˆ×Ñ˜uÑ%Øˆr   Úvidc                 ó$   — || j                   d<   | S )z¯
        Set the domain session Index
        :param vid:             Domain session Index
        :type vid:              int
        :rtype:                 subject
        r@   r   )r   r@   s     r   Úset_domain_session_indexz Subject.set_domain_session_index…   r?   r   Úipc                 ó$   — || j                   d<   | S )z£
        Set the domain user ID

        :param ip:              IP address
        :type  ip:              string
        :rtype:                 subject
        rC   r   )r   rC   s     r   Úset_ip_addresszSubject.set_ip_address�   ó   € ð (*ˆ×Ñ˜tÑ$Øˆr   Úuac                 ó$   — || j                   d<   | S )zŸ
        Set the user agent

        :param ua:              User agent
        :type  ua:              string
        :rtype:                 subject
        rG   r   )r   rG   s     r   Úset_useragentzSubject.set_useragentš   rF   r   Únuidc                 ó$   — || j                   d<   | S )zë
        Set the network user ID field
        This overwrites the nuid field set by the collector

        :param nuid:            Network user ID
        :type  nuid:            string
        :rtype:                 subject
        Útnuidr   )r   rJ   s     r   Úset_network_user_idzSubject.set_network_user_id¥   s   € ð +/ˆ×Ñ˜wÑ'Øˆr   Úsubjectc                 óR   — |�i |j                   ¥| j                   ¥S | j                   S )zÊ
        Merges another instance of Subject, with self taking priority
        :param  subject     Subject to update
        :type   subject     subject
        :rtype              PayloadDict

        r   )r   rN   s     r   Úcombine_subjectzSubject.combine_subject±   s2   € ð ÐØJ�g×/Ñ/ÐJ°4×3IÑ3IÐJÐJà×%Ñ%Ð%r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r'   r   Úintr)   r,   r0   r4   r7   r;   r>   rB   rE   rI   rM   r   r
   rP   © r   r   r   r      s+  „ ñóUð	Ð"3ð 	¸	ó 	ð 3ð ¨9ó ð¨3ð ¸ð À	ó ð #ð ¨sð °yó ð Sð ¨Yó ð Sð ¨Yó ð	˜Sð 	 Yó 	ð	 sð 	¨yó 	ð¨ð °ó ð¨Cð °Ió ð	 ð 	¨ó 	ð	 ð 	¨	ó 	ð
¨ð 
°	ó 
ð& x°	Ñ':ð &¸{ô &r   r   N)Útypingr   r   r   Úsnowplow_tracker.contractsr   r   Úsnowplow_tracker.typingr   r	   r
   r   Úobjectr   rV   r   r   ú<module>r[      s*   ð÷$ )Ñ (ß ;ß WÑ WàÐ ôc&ˆfõ c&r   