§
    èƒñj$  ã                   ó–   — d dl mZ d dlmZmZmZ  ed ¦  «        ZdgZddededefd„Zd	„ Z	 G d
„ de¦  «        Z
 G d„ de
¦  «        ZdS )é    ©Úwraps)ÚdatetimeÚ	timedeltaÚtzinfoÚenfoldé   ÚdtÚfoldÚreturnc                 ó.   — |                       |¬¦  «        S )a  Returns a datetime with the ``fold`` attribute set to ``fold``.

    :param fold:
        The value for the ``fold`` attribute, either 0 or 1.

    :return:
        A :class:`datetime.datetime` with the requested ``fold`` value.

    .. versionadded:: 2.6.0
    ©r   ©Úreplace)r
   r   s     úR/data/share/cad/hardware/.venv/lib/python3.11/site-packages/dateutil/tz/_common.pyr   r      s   € ð �:Š:˜4ˆ:Ñ Ô Ð ó    c                 ó<   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }|S )z�
    The CPython version of ``fromutc`` checks that the input is a ``datetime``
    object and that ``self`` is attached as its ``tzinfo``.
    c                 ó”   •— t          |t          ¦  «        st          d¦  «        ‚|j        | urt	          d¦  «        ‚ ‰| |¦  «        S )Nú&fromutc() requires a datetime argumentúdt.tzinfo is not self)Ú
isinstancer   Ú	TypeErrorr   Ú
ValueError)Úselfr
   Úfs     €r   Úfromutcz)_validate_fromutc_inputs.<locals>.fromutc!   sQ   ø€ å˜"�hÑ'Ô'ð 	FÝÐDÑEÔEÐEØŒ9˜DÐ Ð ÝÐ4Ñ5Ô5Ð5àˆq��r‰{Œ{Ðr   r   )r   r   s   ` r   Ú_validate_fromutc_inputsr      s5   ø€ õ
 ˆ1�X„Xðð ð ð ñ „Xðð €Nr   c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zed„ ¦   «         ZdS )Ú_tzinfoz=
    Base class for all ``dateutil`` ``tzinfo`` objects.
    c                 ó,  — |                      | ¬¦  «        }t          |d¬¦  «        }t          |d¬¦  «        }|                     ¦   «         |                     ¦   «         k    }|                      d¬¦  «        |                      d¬¦  «        k    }|o| S )á6  
        Whether or not the "wall time" of a given datetime is ambiguous in this
        zone.

        :param dt:
            A :py:class:`datetime.datetime`, naive or time zone aware.


        :return:
            Returns ``True`` if ambiguous, ``False`` otherwise.

        .. versionadded:: 2.6.0
        ©r   r   r   r	   N)r   r   Ú	utcoffset)r   r
   Úwall_0Úwall_1Úsame_offsetÚsame_dts         r   Úis_ambiguousz_tzinfo.is_ambiguous2   s�   € ð �ZŠZ˜tˆZÑ$Ô$ˆå˜ Ð#Ñ#Ô#ˆÝ˜ Ð#Ñ#Ô#ˆà×&Ò&Ñ(Ô(¨F×,<Ò,<Ñ,>Ô,>Ò>ˆØ—.’.¨�.Ñ-Ô-°·²Àt°Ñ1LÔ1LÒLˆàÐ*˜{˜?Ð*r   c                 ó´   — |                       |¦  «        r@||z
  }t          ||                     ¦   «         |                     ¦   «         z
  k    ¦  «        }nd}|S )aÀ  
        Determine the fold status of a "wall" datetime, given a representation
        of the same datetime as a (naive) UTC datetime. This is calculated based
        on the assumption that ``dt.utcoffset() - dt.dst()`` is constant for all
        datetimes, and that this offset is the actual number of hours separating
        ``dt_utc`` and ``dt_wall``.

        :param dt_utc:
            Representation of the datetime as UTC

        :param dt_wall:
            Representation of the datetime as "wall time". This parameter must
            either have a `fold` attribute or have a fold-naive
            :class:`datetime.tzinfo` attached, otherwise the calculation may
            fail.
        r   )r(   Úintr#   Údst)r   Údt_utcÚdt_wallÚ
delta_wallÚ_folds        r   Ú_fold_statusz_tzinfo._fold_statusK   s[   € ð" ×Ò˜WÑ%Ô%ð 	Ø  6Ñ)ˆJÝ˜
 v×'7Ò'7Ñ'9Ô'9¸F¿JºJ¹L¼LÑ'HÒIÑJÔJˆEˆEàˆEàˆr   c                 ó  — |                      ¦   «         }|€t          d¦  «        ‚|                     ¦   «         }|€t          d¦  «        ‚||z
  }||z  }t          |d¬¦  «                             ¦   «         }|€t          d¦  «        ‚||z   S )áü  
        Given a timezone-aware datetime in a given timezone, calculates a
        timezone-aware datetime in a new timezone.

        Since this is the one time that we *know* we have an unambiguous
        datetime object, we take this opportunity to determine whether the
        datetime is ambiguous and in a "fold" state (e.g. if it's the first
        occurrence, chronologically, of the ambiguous datetime).

        :param dt:
            A timezone-aware :class:`datetime.datetime` object.
        Nz0fromutc() requires a non-None utcoffset() resultz*fromutc() requires a non-None dst() resultr	   r   z;fromutc(): dt.dst gave inconsistent results; cannot convert)r#   r   r+   r   )r   r
   ÚdtoffÚdtdstÚdeltas        r   Ú_fromutcz_tzinfo._fromutcd   s¨   € ð —’‘”ˆØˆ=Ýð &ñ 'ô 'ð 'ð —’‘”ˆØˆ=ÝÐIÑJÔJÐJØ˜‘ˆà
ˆe‰ˆõ �r Ð"Ñ"Ô"×&Ò&Ñ(Ô(ˆØˆ=Ýð 7ñ 8ô 8ð 8à�E‰zÐr   c                 óz   — |                       |¦  «        }|                      ||¦  «        }t          ||¬¦  «        S )r2   r   )r6   r0   r   )r   r
   r-   r/   s       r   r   z_tzinfo.fromutc‰   sA   € ð —-’- Ñ#Ô#ˆð ×!Ò! " gÑ.Ô.ˆõ �g EÐ*Ñ*Ô*Ð*r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r0   r6   r   r   © r   r   r   r   -   sh   € € € € € ðð ð+ð +ð +ð2ð ð ð2#ð #ð #ðJ ð+ð +ñ Ôð+ð +ð +r   r   c                   óp   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zed
„ ¦   «         ZdZd„ Zej        ZdS )Útzrangebasea‹  
    This is an abstract base class for time zones represented by an annual
    transition into and out of DST. Child classes should implement the following
    methods:

        * ``__init__(self, *args, **kwargs)``
        * ``transitions(self, year)`` - this is expected to return a tuple of
          datetimes representing the DST on and off transitions in standard
          time.

    A fully initialized ``tzrangebase`` subclass should also provide the
    following attributes:
        * ``hasdst``: Boolean whether or not the zone uses DST.
        * ``_dst_offset`` / ``_std_offset``: :class:`datetime.timedelta` objects
          representing the respective UTC offsets.
        * ``_dst_abbr`` / ``_std_abbr``: Strings representing the timezone short
          abbreviations in DST and STD, respectively.
        * ``_hasdst``: Whether or not the zone has DST.

    .. versionadded:: 2.6.0
    c                 ó    — t          d¦  «        ‚)Nz%tzrangebase is an abstract base class)ÚNotImplementedError©r   s    r   Ú__init__ztzrangebase.__init__¶   s   € Ý!Ð"IÑJÔJÐJr   c                 óT   — |                       |¦  «        }|€d S |r| j        S | j        S ©N)Ú_isdstÚ_dst_offsetÚ_std_offset©r   r
   Úisdsts      r   r#   ztzrangebase.utcoffset¹   s5   € Ø—’˜B‘”ˆàˆ=Ø�4Øð 	$ØÔ#Ð#àÔ#Ð#r   c                 óT   — |                       |¦  «        }|€d S |r| j        S t          S rD   )rE   Ú_dst_base_offsetÚZEROrH   s      r   r+   ztzrangebase.dstÃ   s1   € Ø—’˜B‘”ˆàˆ=Ø�4Øð 	ØÔ(Ð(åˆKr   c                 óH   — |                       |¦  «        r| j        S | j        S rD   )rE   Ú	_dst_abbrÚ	_std_abbr)r   r
   s     r   Útznameztzrangebase.tznameÍ   s$   € Ø�;Š;�r‰?Œ?ð 	"Ø”>Ð!à”>Ð!r   c                 ó  — t          |t          ¦  «        st          d¦  «        ‚|j        | urt	          d¦  «        ‚|                      |j        ¦  «        }|€||                      |¦  «        z   S |\  }}|| j        z  }|| j        z  }||f}| 	                    d¬¦  «        }|  
                    ||¦  «        }|r|| j        z   }n
|| j        z   }t          | o|                      |¦  «        ¦  «        }	t          ||	¬¦  «        S )z, Given a datetime in UTC, return local time r   r   Nr"   r   )r   r   r   r   r   ÚtransitionsÚyearr#   rG   r   Ú_naive_isdstrF   r*   r(   r   )
r   r
   rR   ÚdstonÚdstoffÚutc_transitionsr,   rI   r-   r/   s
             r   r   ztzrangebase.fromutcÓ   s#  € å˜"�hÑ'Ô'ð 	FÝÐDÑEÔEÐEàŒ9˜DÐ Ð ÝÐ4Ñ5Ô5Ð5ð ×&Ò& r¤wÑ/Ô/ˆØÐØ˜Ÿš rÑ*Ô*Ñ*Ð*ð $‰ˆˆvà�Ô!Ñ!ˆØ�$Ô"Ñ"ˆà  &˜/ˆØ—’ 4�Ñ(Ô(ˆà×!Ò! &¨/Ñ:Ô:ˆàð 	,Ø˜4Ô+Ñ+ˆGˆGà˜4Ô+Ñ+ˆGå˜�IÐ< $×"3Ò"3°GÑ"<Ô"<Ñ=Ô=ˆå�g EÐ*Ñ*Ô*Ð*r   c                 óª   — | j         sdS |                      |j        ¦  «        \  }}|                     d¬¦  «        }||cxk    o|| j        z   k     nc S )r!   FNr"   )ÚhasdstrR   rS   r   rK   )r   r
   ÚstartÚends       r   r(   ztzrangebase.is_ambiguousô   si   € ð Œ{ð 	Ø�5à×%Ò% b¤gÑ.Ô.‰
ˆˆsà�ZŠZ˜tˆZÑ$Ô$ˆØ�rÐ7Ð7Ò7Ð7˜C $Ô"7Ñ7Ò7Ð7Ð7Ð7Ð8r   c                 óò   — | j         sdS |€d S |                      |j        ¦  «        }|€dS |                     d ¬¦  «        }|                      ||¦  «        }|s|                      |¦  «        r|j         S |S )NFr"   )rY   rR   rS   r   rT   r(   r   )r   r
   rR   rI   s       r   rE   ztzrangebase._isdst
  s‘   € ØŒ{ð 	Ø�5ØˆZØ�4à×&Ò& r¤wÑ/Ô/ˆàÐØ�5à�ZŠZ˜tˆZÑ$Ô$ˆà×!Ò! " kÑ2Ô2ˆð ð 	˜×*Ò*¨2Ñ.Ô.ð 	Ø”w�;ÐàˆLr   c                 óŒ   — |\  }}|                      d ¬¦  «        }||k     r||cxk    o|k     nc }n||cxk    o|k     nc  }|S )Nr"   r   )r   r
   rR   rU   rV   rI   s         r   rT   ztzrangebase._naive_isdst  ss   € Ø#‰ˆˆvà�ZŠZ˜tˆZÑ$Ô$ˆà�6Š>ˆ>Ø˜RÐ(Ð(Ò(Ð( &Ò(Ð(Ð(Ð(ˆEˆEà "Ð,Ð,Ò,Ð, uÒ,Ð,Ð,Ð,Ð,ˆEàˆr   c                 ó    — | j         | j        z
  S rD   )rF   rG   rA   s    r   rK   ztzrangebase._dst_base_offset+  s   € àÔ $Ô"2Ñ2Ð2r   Nc                 ó    — d| j         j        z  S )Nz%s(...))Ú	__class__r8   rA   s    r   Ú__repr__ztzrangebase.__repr__1  s   € Ø˜4œ>Ô2Ñ2Ð2r   )r8   r9   r:   r;   rB   r#   r+   rP   r   r(   rE   rT   ÚpropertyrK   Ú__hash__ra   ÚobjectÚ
__reduce__r<   r   r   r>   r>       sÏ   € € € € € ðð ð*Kð Kð Kð$ð $ð $ðð ð ð"ð "ð "ð+ð +ð +ðB9ð 9ð 9ð,ð ð ð*
ð 
ð 
ð ð3ð 3ñ „Xð3ð €Hð3ð 3ð 3ð Ô"€J€J€Jr   r>   N)r	   )Ú	functoolsr   r   r   r   rL   Ú__all__r*   r   r   r   r>   r<   r   r   ú<module>rh      sù   ðà Ð Ð Ð Ð Ð à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ð €y��|„|€àˆ*€ð
!ð !ˆxð !˜sð !¨8ð !ð !ð !ð !ðð ð ð"p+ð p+ð p+ð p+ð p+ˆfñ p+ô p+ð p+ðfT#ð T#ð T#ð T#ð T#�'ñ T#ô T#ð T#ð T#ð T#r   