+
    ¾¾jš  ã                  óÒ  a € 0 t $ R t^ RIHt ^ RIHt ^ RIHtHtH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt  ^ R
IHt ]'       d	   ^ RIHtHt ]P6                  ! R4      t]! ]RR4      tR]R&   ]f   RM]! ]4      P@                  t!R R lt"R R lt#R R lt$]! ]%4      t&R]R&   R R lt']'! ]PP                  4       R R lt)R R lt*. ROt+R#   ] d    Rt L�i ; i) z‡This module identifies timezones.

Normally, timezones have ids.
This is a way to access the ids if you have a
datetime.tzinfo object.
)Úannotations)Údefaultdict)ÚdateÚtimeÚtimezone)ÚPath)ÚTYPE_CHECKING)Útz)Úequivalent_timezone_ids_result)ÚWINDOWS_TO_OLSON)Úis_date)ÚtzwinN)ÚdatetimeÚtzinfoÚUTCÚ	_filenameú
str | NoneÚDATEUTIL_UTC_PATHc               ó    € V ^8„  d   QhRRRR/# )é   r   útzinfo | NoneÚreturnú
tuple[str]© )Úformats   "ÚV/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/timezone/tzid.pyÚ__annotate__r   $   s   € ÷ (ñ (˜mð (°
ñ (ó    c                ó  € V f   R# \        V \        4      '       d   \        V P                  ! R4      4      # \	        V R4      '       d   \        V P
                  4      # \	        V R4      '       d   \        V P                  4      # \        V \        P                  4      '       d   \        V P                  4      # \        V \        P                  4      '       d   \        V P                  4      # \        e[   \        V \        4      '       dE   \        P                  ! V P                  4      pVe   \        V4      # \        V P                  4      # \	        V R4      '       dv   \         en   V P"                  pVP%                  \'        \         4      4      '       d3   \'        \)        V4      P+                  \         4      4      p\        V4      # \        V4      # \        V \        P,                  4      '       d   \        R4      # R# )aP  Get several timezone ids if we can identify the timezone.

>>> import zoneinfo
>>> from icalendar.timezone.tzid import tzids_from_tzinfo
>>> tzids_from_tzinfo(zoneinfo.ZoneInfo("Arctic/Longyearbyen"))
('Arctic/Longyearbyen', 'Atlantic/Jan_Mayen', 'Europe/Berlin', 'Europe/Budapest', 'Europe/Copenhagen', 'Europe/Oslo', 'Europe/Stockholm', 'Europe/Vienna')
>>> from dateutil.tz import gettz
>>> tzids_from_tzinfo(gettz("Europe/Berlin"))
('Europe/Berlin', 'Arctic/Longyearbyen', 'Atlantic/Jan_Mayen', 'Europe/Budapest', 'Europe/Copenhagen', 'Europe/Oslo', 'Europe/Stockholm', 'Europe/Vienna')

NÚzoneÚkeyr   r   r   )Ú
isinstancer   Úget_equivalent_tzidsÚtznameÚhasattrr   r    r	   Ú
_tzicalvtzÚ_tzidÚtzstrÚ_sÚ_tzwinr   ÚgetÚ_nameÚDATEUTIL_ZONEINFO_PATHr   Ú
startswithÚstrr   Úrelative_toÚtzutc)r   ÚolsonÚpathÚtzids   &   r   Útzids_from_tzinfor4   $   sq  € ð ‚~Øˆ	Ü�&œ(×#Ò#ä# F§M¢M°$Ó$7Ó8Ð8Üˆv�v×ÒÜ# F§K¡KÓ0Ð0Üˆv�u×ÒÜ# F§J¡JÓ/Ð/Ü�&œ"Ÿ-™-×(Ò(Ü# F§L¡LÓ1Ð1Ü�&œ"Ÿ(™(×#Ò#Ü# F§I¡IÓ.Ð.ÜÒœj¨´×8Ò8Ü ×$Ò$ V§\¡\Ó2ˆØÒÜ'¨Ó.Ð.Ü# F§L¡LÓ1Ð1Üˆv�{×#Ò#Ü!Ò-à×#Ñ#ˆDØ�‰œsÔ#9Ó:×;Ò;Üœ4 ›:×1Ñ1Ô2HÓIÓJ�Ü+¨DÓ1Ð1Ü'¨Ó-Ð-Ü�&œ"Ÿ(™(×#Ò#Ü# EÓ*Ð*Ø€Ir   c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   r   r   )r   s   "r   r   r   O   s   € ÷ ñ ˜]ð ¨zñ r   c                óP   € \        V 4      pRV9   d   R# V'       g   R# V^ ,          # )zŒRetrieve the timezone id from the tzinfo object.

Some timezones are equivalent.
Thus, we might return one ID that is equivalent to others.
r   N)r4   )r   Útzidss   & r   Útzid_from_tzinfor8   O   s'   € ô ˜fÓ%€EØ�„~ÙßÙØ��8€Or   c               ó    € V ^8„  d   QhRRRR/# )r   Údtr   r   r   r   )r   s   "r   r   r   ]   s   € ÷ ñ �Xð  *ñ r   c                óX   € \        V P                  4      pVf   V P                  4       # V# )z2Retrieve the timezone id from the datetime object.)r8   r   r#   )r:   r3   s   & r   Útzid_from_dtr<   ]   s&   € ä˜BŸI™IÓ&€DØ‚|Ø�y‰y‹{ÐØ€Kr   zdict[str, set[str]]Ú_EQUIVALENT_IDSc               ó   € V ^8„  d   QhRR/# )r   Úvalueztuple | dict | setr   )r   s   "r   r   r   h   s   € ÷ 
ñ 
Ð1ñ 
r   c                ó�  € \        V \        4      '       d(   V  F  p\        V,          P                  V 4       K!  	  R# \        V \        4      '       d   \        V ^,          4       R# \        V \        4      '       d%   V P                  4        F  p\        V4       K  	  R# \        RV P                  P                   RV : 24      h)z¼This adds equivalent ids/

As soon as one timezone implementation used claims their equivalence,
they are considered equivalent.
Have a look at icalendar.timezone.equivalent_timezone_ids.
z!Expected tuple, dict or set, not z: N)r!   Úsetr=   ÚupdateÚtupleÚ_add_equivalent_idsÚdictÚvaluesÚ	TypeErrorÚ	__class__Ú__name__)r?   r3   Úvalue2s   &  r   rD   rD   h   s–   € ô �%œ×ÒÛˆDÜ˜DÕ!×(Ñ(¨Ö/ó ä	�Eœ5×	!Ò	!Ü˜E !�HÖ%Ü	�Eœ4×	 Ò	 Ø—l‘l–nˆFÜ Ö'ó %ô Ø/°·±×0HÑ0HÐ/IÈÈEÉ9ÐUó
ð 	
r   c               ó    € V ^8„  d   QhRRRR/# )r   r3   r.   r   r   r   )r   s   "r   r   r   €   s   € ÷ 1ñ 1˜sð 1 zñ 1r   c                ó„   € \         P                  V \        4       4      pV 3\        \	        W0,
          4      4      ,           # )z8This returns the tzids which are equivalent to this one.)r=   r*   rA   rC   Úsorted)r3   Úidss   & r   r"   r"   €   s1   € ä
×
Ñ
˜d¤C£EÓ
*€CØˆ7”Uœ6 #¨¥,Ó/Ó0Õ0Ð0r   c               ó    € V ^8„  d   QhRRRR/# )r   Útzdatetime | time | date | tzinfor   Úboolr   )r   s   "r   r   r   †   s   € ÷ ñ Ð-ð °$ñ r   c                ó‚   € \        V 4      '       d   R# \        V R4      '       d   \        V 4      M
\        V 4      pVR8H  # )zWhether this date is in UTC.Fr   r   )r   r$   r<   r8   )rP   r3   s   & r   Úis_utcrS   †   s5   € äˆq‡z‚zÙÜ% a¨×2Ò2Œ<˜Œ?Ô8HÈÓ8K€DØ�5‰=Ðr   )rS   r<   r8   r4   ),Ú__conditional_annotations__Ú__doc__Ú
__future__r   Úcollectionsr   r   r   r   r   Úpathlibr   Útypingr   Údateutil.tzr	   Úicalendar.timezoner
   Ú#icalendar.timezone.windows_to_olsonr   Úicalendar.toolsr   Údateutil.tz.winr   r)   ÚImportErrorr   ÚgettzÚDATEUTIL_UTCÚgetattrr   Ú__annotations__Úparentr,   r4   r8   r<   rA   r=   rD   Úlookupr"   rS   Ú__all__)rT   s   @r   Ú<module>rg      sØ   øðôõ #å #ß )Ñ )Ý Ý  å å =Ý @Ý #ðÝ/÷ ß)à�xŠx˜‹€Ù '¨°kÀ4Ó HÐ �:Ó HàÒ%�D©4Ð0AÓ+B×+IÑ+Ið õ
(õVõñ (3°3Ó'7€Ð$Ó 7õ
ñ* Ð2×9Ñ9Ô :õ1õò N‚øðo ô Ø‚Fðús   ÁC Ã	C&Ã%C&