+
    ¾¾jm  ã                  ó’  € 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Ht ^ RIHtHt ^ RIHtHt ]'       d   ^ R	IHt ]! R
^^4      t]! R^^4      t]! ^R7      t. t]t]]8:  d$   ]P7                  ]4       ]]! ^R7      ,          tK*  AR R ltR.t]R8X  d!   ^ RIHt ^ RIH t  ^ RIH!t! ]! ]]!] .R4       R# R# )aÿ  This module helps identifying the timezone ids and where they differ.

The algorithm: We use the tzname and the utcoffset for each hour from
1970 - 2030.
We make a big map.
If they are equivalent, they are equivalent within the time that is mostly used.

You can regenerate the information from this module.

See also:
- https://stackoverflow.com/questions/79171631/how-do-i-determine-whether-a-zoneinfo-is-an-alias/79171734#79171734

Run this module:

    python -m icalendar.timezone.equivalent_timezone_ids

)Úannotations)Údefaultdict)ÚdatetimeÚ	timedeltaÚtzinfo)ÚPath)Úpprint)ÚTYPE_CHECKINGÚ
NamedTuple)ÚZoneInfoÚavailable_timezones)ÚAmbiguousTimeErrorÚNonExistentTimeError)ÚCallablei²  iä  ©Úhoursc               ó    € V ^8„  d   QhRRRR/# )é   Úcreate_timezoneszlist[Callable[[str], tzinfo]]ÚnameÚstr© )Úformats   "Úi/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/timezone/equivalent_timezone_ids.pyÚ__annotate__r   /   s    € ÷ Sñ SØ3ðSà
ñSó    c           
     óÐ  a
€ \        4       pVP                  R4       VP                  R4        ! R R\        4      pV  UUu. uF  pV F  pV! V! V4      V4      NK  	  K  	  ppp\        ^R7      \        \
        R3R V
3R lllo
S
! V\        ^!R7      R	7      p\        \        4      P                  R
V R2,          pVP                  R4      ;_uu_ 4       p	V	P                  R\        \        4      P                   R24       V	P                  R4       V	P                  R4       \        WyR7       V	P                  R4       RRR4       V# u uppi   + '       g   i     T# ; i)z·Generate a lookup table for timezone information if unknown timezones.

We cannot create one lookup for all because they seem to be all equivalent
if we mix timezone implementations.
Ú	localtimeÚFactoryc                  ó,   € ] tR t^<t$ R]R&   R]R&   RtR# )Úmain.<locals>.TZr   Útzr   Úidr   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r   r   r   ÚTZr    <   s   ‡ Ø‹
Ø�r   r)   r   Nc               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r   Útzszlist[TZ]Ústepr   Ústartr   ÚendÚtodozset[str] | NoneÚreturnz5tuple[datetime, dict[timedelta, set[str]]] | set[str]r   )r   s   "r   r   Úmain.<locals>.__annotate__F   sD   € ÷ .ñ .Øð.àð.ð ð.ð ð	.ð
 ð.ð 
?ñ.r   c           	     óÀ  <a€ Vf   V  Uu. uF  qUP                   NK  	  pp\        V 4      ^ 8X  d   \        R4      h\        V 4      ^8X  d7   VP                  V ^ ,          P                   4       V ^ ,          P                   0# SV8  dî   \	        \
        4      p \        ;QJ d    V3R lV  4       F  '       d   K   RM	  RM! V3R lV  4       4      '       * pV'       d   S\        ,          oKm  V  F3  pWeP                  P                  S4      ,          P                  V4       K5  	  \        V4      ^8X  d   SV,          oKÁ  / pVP                  4        F  w  ršS! W¡SV,           W4R7      W‰&   K  	  SV3# \        4       pV  F9  pVP                  VP                   4       VP                  VP                   4       K;  	  V# u upi   \        \        3 d    Rp ELi ; i)zGenerate a lookup tree.ztzs cannot be emptyc              3  ó  <"  € T F|  pVP                   P                  S4      VP                   P                  S\        ,
          4      u;8H  ;'       d*    VP                   P                  S\        ,           4      8H  Mu x € K~  	  R # 5i)N)r!   Ú	utcoffsetÚDISTANCE_FROM_TIMEZONE_CHANGE)Ú.0r!   r-   s   & €r   Ú	<genexpr>Ú.main.<locals>.generate_tree.<locals>.<genexpr>Z   sm   øé € ð +ñ "˜ð —E‘E—O‘O EÓ*Ø—u‘u—‘ uÔ/LÕ'LÓM÷Nô Nà—u‘u—‘ uÔ/LÕ'LÓM÷Nñ Nó "ùs   ƒABÁ4BFT)r+   r,   r-   r.   r/   )r"   ÚlenÚ
ValueErrorÚremover   ÚlistÚallr   r   r5   r!   r4   ÚappendÚitemsÚsetÚadd)r+   r,   r-   r.   r/   r!   ÚoffsetsÚaround_tz_changeÚlookupÚoffsetÚtz2ÚresultÚgenerate_trees   &&f&&       €r   rH   Úmain.<locals>.generate_treeF   sœ  ù€ ð Š<Ù$'Ó(¡C˜b—E”E¡CˆDÐ(Üˆs‹8�qŒ=ÜÐ2Ó3Ð3Üˆs‹8�qŒ=Ø�K‰K˜˜A�Ÿ	™	Ô"Ø˜•F—I‘I�;ÐØ�cŒkÜ1<¼TÓ1BˆGð
(÷ (+£sô +ñ "ó	+§s§s¢sô +ñ "ó	+ó (ô $Ð ÷  ØÔ6Õ6�ÙÛ�ØŸ™Ÿ™¨Ó.Õ/×6Ñ6°rÖ:ñ ä�7‹|˜qÔ Ø˜•�ÙØˆFØ&Ÿ}™}ž‘�Ù!.Ø¨e°d­lÀô"�“ñ  /ð ˜&�=Ð Ü“ˆÛˆBØ�J‰J�r—u‘uÔØ�K‰K˜Ÿ™Öñ ð ˆùòK )øô" )Ô*<Ð=ô (Ø#'Ó ð(ús   ‹GÂG Â;G ÇGÇG)r,   Úequivalent_timezone_ids_z.pyÚwz+'''This file is automatically generated by z'''
zimport datetime

z

lookup = )Ústreamz

__all__ = ['lookup']
)r   r;   r
   r   ÚSTARTÚENDr   Ú__file__ÚparentÚopenÚwriter   r   )r   r   Úunsorted_tzidsr)   Úcreate_timezoneÚtzidr+   rD   ÚfileÚfrH   s   &&        @r   ÚmainrX   /   sC  ø€ ô )Ó*€NØ×Ñ˜+Ô&Ø×Ñ˜)Ô$ôŒZô ñ  0ôá/ˆOÛ"ˆDñ 	‰?˜4Ó  $Ö'á"ñ 	(Ù/ð ñ ô $¨!Ô,ÜÜØ $÷.ò .ñ` ˜3¤Y°RÔ%8Ô9€Fä”‹>× Ñ Ð%=¸d¸VÀ3Ð#GÕG€DØ	�‰�3�Œ˜1Ø	�‰Ø9¼$¼x».×:MÑ:MÐ9NÈeÐTô	
ð 	
�‰Ð%Ô&Ø	�‰�ÔÜˆvÕ Ø	�‰Ð,Ô-÷ 
ð €MùóE÷r 
Žð €Mús   Á!EÃA,EÅE%	rX   Ú__main__)r   )Úgettz)ÚtimezonerG   N)"Ú__doc__Ú
__future__r   Úcollectionsr   r   r   r   Úpathlibr   r   Útypingr	   r
   Úzoneinfor   r   Úpytzr   r   Úcollections.abcr   rM   rN   r5   ÚDTSÚdtr>   rX   Ú__all__r#   Údateutil.tzrZ   r[   r   r   r   Ú<module>rh      sÁ   ðñõ$ #å #ß 0Ñ 0Ý Ý ß ,ß 2ç 9çÝ(á��q˜!Ó€Ùˆt�Q˜Ó€Ù )°Ô 3Ð à€Ø
€ØˆC„iØ‡J�Jˆr„Nð ‰)˜"Ô
Õ‚BØõSðl ˆ(€àˆzÔÝ!å!Ýñ 	Ø	�8˜UÐ#Øöñ r   