a &iX @szddlZddlZddlZddlZddlZddlmZmZddlm Z ddl m Z m Z ddgdfddZ dd Zd d ZdS) N) check_call check_output)TarFile) METADATA_FN ZONEFILENAMEgzc sPttjd}tjt}zt|B}|D]}| |q6fdd|D} t || Wdn1sx0Yttj|t d"} t j || dddWdn1s0Ytj|t} t| d |:}t|D]} tj|| } || | qWdn1s(0YWtn t0dS) zRebuild the internal timezone info in dateutil/zoneinfo/zoneinfo*tar* filename is the timezone tarball from ``ftp.iana.org/tz``. Zzoneinfocsg|]}tj|qS)ospathjoin).0nZtmpdirr=/usr/lib/python3.9/site-packages/dateutil/zoneinfo/rebuild.py zrebuild..NwT)indentZ sort_keyszw:%s)tempfileZmkdtempr r r dirname__file__ropenextract_run_zicrjsondumprlistdiraddshutilrmtree)filenametagformatZ zonegroupsmetadatazonedirZ moduledirZtfname filepathsftargetentryZ entrypathrrrrebuild s"  (00r+c Cstztddg}Wn.ty>}zt|WYd}~n d}~00d|vrRddg}ng}tdg|d|g|dS)aCalls the ``zic`` compiler in a compatible way to get a "fat" binary. Recent versions of ``zic`` default to ``-b slim``, while older versions don't even have the ``-b`` option (but default to "fat" binaries). The current version of dateutil does not support Version 2+ TZif files, which causes problems when used in conjunction with "slim" binaries, so this function is used to ensure that we always get a "fat" binary. Zzicz--helpNs-b z-bZfatz-d)rOSError_print_on_nosuchfiler)r%r' help_texteZ bloat_argsrrrr)s  rcCs|jdkrtddS)zdPrint helpful troubleshooting message e is an exception raised by subprocess.check_call() zzCould not find zic. Perhaps you need to install libc-bin or some other package that provides it, or it's not in your PATH?N)errnologgingerror)r/rrrr-As r-)r2r rrr subprocessrrtarfilerZdateutil.zoneinforrr+rr-rrrrs