grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026B ¦8Ô?Ç]ëVã@svdZddlZddlZddlmZdZddddg\ZZZZ e Z e Z Gd d „d eƒZGd d „d ƒZd d„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zdaaday ddlZWnek rÞdZYnXd!d"„Zd#d$„Z d%d&„Z!d'd(„Z"da#e!eegZ$e eeeeegZ%dd)œd*d+„Z&da'd8d,d-„Z(d.d/„Z)d0d1„Z*d2d3„Z+ed4ƒZ,ed5ƒZ-ed6ƒZ.ed7ƒZ/dS)9aQUUID objects (universally unique identifiers) according to RFC 4122. This module provides immutable UUID objects (class UUID) and the functions uuid1(), uuid3(), uuid4(), uuid5() for generating version 1, 3, 4, and 5 UUIDs as specified in RFC 4122. If all you want is a unique ID, you should probably call uuid1() or uuid4(). Note that uuid1() may compromise privacy since it creates a UUID containing the computer's network address. uuid4() creates a random UUID. Typical usage: >>> import uuid # make a UUID based on the host ID and current time >>> uuid.uuid1() # doctest: +SKIP UUID('a8098c1a-f86e-11da-bd1a-00112444be1e') # make a UUID using an MD5 hash of a namespace UUID and a name >>> uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org') UUID('6fa459ea-ee8a-3ca4-894e-db77e160355e') # make a random UUID >>> uuid.uuid4() # doctest: +SKIP UUID('16fd2706-8baf-433b-82eb-8c7fada847da') # make a UUID using a SHA-1 hash of a namespace UUID and a name >>> uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org') UUID('886313e1-3b8a-5372-9b90-0c9aee199e5d') # make a UUID from a string of hex digits (braces and hyphens ignored) >>> x = uuid.UUID('{00010203-0405-0607-0809-0a0b0c0d0e0f}') # convert a UUID to a string of hex digits in standard form >>> str(x) '00010203-0405-0607-0809-0a0b0c0d0e0f' # get the raw 16 bytes of the UUID >>> x.bytes b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f' # make a UUID from a 16-byte string >>> uuid.UUID(bytes=x.bytes) UUID('00010203-0405-0607-0809-0a0b0c0d0e0f') éN)ÚEnumzKa-Ping Yee zreserved for NCS compatibilityzspecified in RFC 4122z$reserved for Microsoft compatibilityzreserved for future definitionc@seZdZdZdZdZdS)ÚSafeUUIDréÿÿÿÿN)Ú__name__Ú __module__Ú __qualname__ZsafeZunsafeÚunknown©r r ú)/opt/alt/python37/lib64/python3.7/uuid.pyr?src@s6eZdZdZd| B}|d">| d#>B| d$>B|d%>B| B}|dk �rDd|k�r:d&d'>k�sDntd(ƒ‚|dk �r”d&|k�rfdk�spntd)ƒ‚|d*M}|d+O}|d,M}||d->O}||jd.<||jd/<dS)0aLCreate a UUID from either a string of 32 hexadecimal digits, a string of 16 bytes as the 'bytes' argument, a string of 16 bytes in little-endian order as the 'bytes_le' argument, a tuple of six integers (32-bit time_low, 16-bit time_mid, 16-bit time_hi_version, 8-bit clock_seq_hi_variant, 8-bit clock_seq_low, 48-bit node) as the 'fields' argument, or a single 128-bit integer as the 'int' argument. When a string of hex digits is given, curly braces, hyphens, and a URN prefix are all optional. For example, these expressions all yield the same UUID: UUID('{12345678-1234-5678-1234-567812345678}') UUID('12345678123456781234567812345678') UUID('urn:uuid:12345678-1234-5678-1234-567812345678') UUID(bytes='\x12\x34\x56\x78'*4) UUID(bytes_le='\x78\x56\x34\x12\x34\x12\x78\x56' + '\x12\x34\x56\x78\x12\x34\x56\x78') UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678)) UUID(int=0x12345678123456781234567812345678) Exactly one of 'hex', 'bytes', 'bytes_le', 'fields', or 'int' must be given. The 'version' argument is optional; if given, the resulting UUID will have its variant and version set according to RFC 4122, overriding the given 'hex', 'bytes', 'bytes_le', 'fields', or 'int'. is_safe is an enum exposed as an attribute on the instance. It indicates whether the UUID has been generated in a way that is safe for multiprocessing applications, via uuid_generate_time_safe(3). NézGone of the hex, bytes, bytes_le, fields, or int arguments must be givenzurn:Úzuuid:z{}ú-é z$badly formed hexadecimal UUID stringéz bytes_le is not a 16-char stringérééézbytes is not a 16-char stringÚbig)Ú byteorderézfields is not a 6-tuplerlz*field 1 out of range (need a 32-bit value)iz*field 2 out of range (need a 16-bit value)z*field 3 out of range (need a 16-bit value)éz*field 4 out of range (need an 8-bit value)z*field 5 out of range (need an 8-bit value)lz*field 6 out of range (need a 48-bit value)é`éPé@é0éé€z*int is out of range (need a 128-bit value)zillegal version numberlûÿÿÿ llúÿÿÿéLÚintr ) ÚcountÚ TypeErrorÚreplaceÚstripÚlenÚ ValueErrorÚint_Ú from_bytesÚ__dict__)ÚselfÚhexÚbytesÚbytes_leÚfieldsr!Úversionr Útime_lowÚtime_midÚtime_hi_versionÚclock_seq_hi_variantÚ clock_seq_lowÚnodeÚ clock_seqr r r Ú__init__ys\    6   $    z UUID.__init__cCs.|j ¡}|jtjkr$|jj|d<n|d=|S)Nr )r*Úcopyr rrÚvalue)r+Ústater r r Ú __getstate__Ïs   zUUID.__getstate__cCs0|j |¡d|kr t|dƒntj|jd<dS)Nr )r*Úupdaterr)r+r;r r r Ú __setstate__Ús zUUID.__setstate__cCst|tƒr|j|jkStS)N)Ú isinstancer r!ÚNotImplemented)r+Úotherr r r Ú__eq__âs  z UUID.__eq__cCst|tƒr|j|jkStS)N)r?r r!r@)r+rAr r r Ú__lt__ês  z UUID.__lt__cCst|tƒr|j|jkStS)N)r?r r!r@)r+rAr r r Ú__gt__ïs  z UUID.__gt__cCst|tƒr|j|jkStS)N)r?r r!r@)r+rAr r r Ú__le__ôs  z UUID.__le__cCst|tƒr|j|jkStS)N)r?r r!r@)r+rAr r r Ú__ge__ùs  z UUID.__ge__cCs t|jƒS)N)Úhashr!)r+r r r Ú__hash__þsz UUID.__hash__cCs|jS)N)r!)r+r r r Ú__int__sz UUID.__int__cCsd|jjt|ƒfS)Nz%s(%r))Ú __class__rÚstr)r+r r r Ú__repr__sz UUID.__repr__cCs tdƒ‚dS)NzUUID objects are immutable)r#)r+Únamer:r r r Ú __setattr__szUUID.__setattr__cCsDd|j}d|dd…|dd…|dd…|dd…|dd…fS)Nz%032xz%s-%s-%s-%s-%sré ré)r!)r+r,r r r Ú__str__ s z UUID.__str__cCs|j dd¡S)Nrr)r!Úto_bytes)r+r r r r-sz UUID.bytescCs<|j}|ddd…|ddd…|ddd…|dd…S)Nrrrrr)r-)r+r-r r r r.s(z UUID.bytes_lecCs|j|j|j|j|j|jfS)N)r1r2r3r4r5r6)r+r r r r/s z UUID.fieldscCs |jd?S)Nr)r!)r+r r r r1sz UUID.time_lowcCs|jd?d@S)Nriÿÿ)r!)r+r r r r2"sz UUID.time_midcCs|jd?d@S)Nriÿÿ)r!)r+r r r r3&szUUID.time_hi_versioncCs|jd?d@S)Né8éÿ)r!)r+r r r r4*szUUID.clock_seq_hi_variantcCs|jd?d@S)NrrT)r!)r+r r r r5.szUUID.clock_seq_lowcCs|jd@d>|jd>B|jBS)Niÿrr)r3r2r1)r+r r r Útime2sz UUID.timecCs|jd@d>|jBS)Né?r)r4r5)r+r r r r77s zUUID.clock_seqcCs |jd@S)Nlÿÿÿ)r!)r+r r r r6<sz UUID.nodecCs d|jS)Nz%032x)r!)r+r r r r,@szUUID.hexcCs dt|ƒS)Nz urn:uuid:)rK)r+r r r ÚurnDszUUID.urncCs2|jd@stS|jd@stS|jd@s*tStSdS)Nlll)r!Ú RESERVED_NCSÚRFC_4122ÚRESERVED_MICROSOFTÚRESERVED_FUTURE)r+r r r ÚvariantHs   z UUID.variantcCs |jtkrt|jd?d@ƒSdS)Nr é)r\rYr!)r+r r r r0Ss z UUID.version)NNNNNN)#rrrÚ__doc__rrr8r<r>rBrCrDrErFrHrIrLrNrQÚpropertyr-r.r/r1r2r3r4r5rUr7r6r,rWr\r0r r r r r Es>2T               r c Gs‚ddl}ddl}ddl}| |¡}|dkrP|j d¡}|j||d�}|dkrPdSt|jƒ}d|d<|j|f||j |j |d�}|S)Nr)z/sbinz /usr/sbin)ÚpathÚCÚLC_ALL)ÚstdoutÚstderrÚenv) ÚosÚshutilÚ subprocessZwhichÚpathsepÚjoinÚdictÚenvironÚPopenÚPIPEZDEVNULL) ÚcommandÚargsrfrgrhÚ executabler`reÚprocr r r Ú_popenYs    rscCs |d@ S)Nlr )Úmacr r r Ú _is_universal{sruc Csâd}yÀt|f| ¡žŽ}|s dS|�˜x�|jD]†}| ¡ ¡ ¡}xptt|ƒƒD]`}|||krPy6|||ƒ} t|  dd¡dƒ} t | ƒrŒ| S|p’| }WqPt t fk r®YqPXqPWq.WWdQRXWnt k rØYnX|pàdS)Nó:ór) rsÚsplitrcÚlowerÚrstripÚranger&r!r$rur'Ú IndexErrorÚOSError) rorpZhw_identifiersZ get_indexÚfirst_local_macrrÚlineÚwordsÚiÚwordrtr r r Ú _find_mac~s*    rƒcCs2d}x(dD] }td||dd„ƒ}|r(|SdSWdS)z5Get the hardware address on Unix by running ifconfig.)shwaddrsethersaddress:slladdr)rz-az-avZifconfigcSs|dS)Nrr )r�r r r ÚŸrwz#_ifconfig_getnode..N)rƒ)Úkeywordsrprtr r r Ú_ifconfig_getnodešs  r†cCs tdddgdd„ƒ}|r|SdS)z/Get the hardware address on Unix by running ip.ZipÚlinks link/ethercSs|dS)Nrr )r�r r r r„§rwz_ip_getnode..N)rƒ)rtr r r Ú _ip_getnode¤srˆcCs¦ddl}ddl}y| | ¡¡}Wntk r6dSXtdd| |¡gdd„ƒ}|rZ|Stdd| |¡gdd„ƒ}|r||Stdd| d|¡gd d„ƒ}|r¢|SdS) z0Get the hardware address on Unix by running arp.rNZarpz-ancSsdS)Nrr )r�r r r r„µrwz_arp_getnode..cSs|dS)Nrr )r�r r r r„ºrwz(%s)cSs|dS)Nér )r�r r r r„Àrw)rfÚsocketZ gethostbynameZ gethostnamer}rƒÚfsencode)rfrŠZip_addrrtr r r Ú _arp_getnode¬s  rŒcCstdddgdd„ƒS)z4Get the hardware address on Unix by running lanscan.Zlanscanz-aislan0cSsdS)Nrr )r�r r r r„Érwz"_lanscan_getnode..)rƒr r r r Ú_lanscan_getnodeÆsr�c Csd}yÞtddƒ}|sdS|�¾|j ¡ ¡ ¡}y| d¡}Wntk rRdSXx€|jD]v}yX| ¡ ¡}||}t|ƒdkr¶| d¡dkr¶t |  dd¡d ƒ}t |ƒr®|S|p´|}Wq\tt fk rÐYq\Xq\WWdQRXWnt k röYnX|�pdS) z4Get the hardware address on Unix by running netstat.NZnetstatz-iasAddressérvrrwr)rsrcÚreadlinerzrxÚindexr'r&r"r!r$rur|r})r~rrr€r�rr‚rtr r r Ú_netstat_getnodeËs2    r‘c Cs.ddl}ddl}ddl}d}dddg}y:ddl}| d¡}|jj |d¡| d|j   d¡¡Wn YnXx´|D]¬}y$|j |j   |d¡d g|jd d �}Wntk r²wtYnX|�bxZ|jD]P} |  d ¡d  ¡ ¡} | d| ¡rÂt|  dd¡dƒ} t| ƒ�r| S|�p| }qÂWWdQRXqtW|�p,dS)z   r¦c s~tdk r dSdatjdkr8tt ¡j d¡dƒdkr8ntdk rPtj a tj adSyêddl ‰ddl ‰dg}tj d¡s~| d ¡x†|D]~}yˆ ˆj |¡¡}Wntk r´w„YnXt|d ƒrÜ|j‰‡‡fd d „a d aPq„t|dƒr„|j‰dˆ_‡‡fdd „a Pq„Wy ˆjj}Wnd}YnXt|dt|ddƒƒaWn>tk �rx}zddl}| d|›�t¡Wdd}~XYnXdS)zG Try to load platform-specific functions for generating uuids. NFÚdarwinÚ.ré ZuuidÚwinÚcÚuuid_generate_time_safecs ˆ d¡}ˆ|ƒ}t|jƒ|fS)Nr)r—r-Úraw)Ú_bufferZres)Ú_uuid_generate_time_safer–r r Ú_generate_time_safeas r°TÚuuid_generate_timecs ˆ d¡}ˆ|ƒt|jƒdfS)Nr)r—r-r­)r®)Ú_uuid_generate_timer–r r r°ls ZUuidCreateSequentialZ UuidCreatez/Could not find fallback ctypes uuid functions: )Ú_has_uuid_generate_time_safeÚsysÚplatformr!rfÚunameÚreleaserxÚ_uuidZgenerate_time_safer°Zhas_uuid_generate_time_safer–Z ctypes.utilÚ startswithÚappendZCDLLÚutilZ find_libraryÚ ExceptionÚhasattrr¬r±Zrestyper˜Zrpcrt4ÚgetattrÚ _UuidCreateÚwarningsÚwarnÚ ImportWarning)Z _libnamesZlibnameÚlibÚexcrÀr )r²r¯r–r Ú_load_system_functions3sP&         rÅcCstƒtƒ\}}t|d�jS)zPGet the hardware address on Unix using the _uuid extension module or ctypes.)r-)rÅr°r r6)Ú uuid_timeÚ_r r r Ú _unix_getnode‡s rÈcCs:ddl}tƒ| d¡}t|ƒdkr6tt|jƒd�jSdS)z1Get the hardware address on Windows using ctypes.rNr)r-)r–rÅr—r¿r Úbytes_r­r6)r–r®r r r Ú_windll_getnodeŽs   rÊcCsddl}| d¡dBS)zGet a random node ID.rNrl)ÚrandomÚ getrandbits)rËr r r Ú_random_getnode–s rÍ)ÚgetterscCsvtdk r tStjdkrt}nt}xP|tgD]B}y |ƒaWnw,YnXtdk r,dtkrfdkr,nq,tSq,WdS)a3Get the hardware address as a 48-bit positive integer. The first time this runs, it may launch a separate program, which could be quite slow. If all attempts to obtain the hardware address fail, we choose a random 48-bit number with its eighth bit set to 1 as recommended in RFC 4122. NZwin32rl)Ú_noder´rµÚ_NODE_GETTERS_WIN32Ú_NODE_GETTERS_UNIXrÍ)rÎÚgetterr r r Úgetnode­s    rÓcCstƒtdk rd||kr"dkrdnn>tƒ\}}y t|ƒ}Wntk rVtj}YnXt||d�Sddl}t| ¡dƒ}t|dƒd}tdk r¤|tkr¤td}|a|dkrÂddl }|  d¡}|d @} |d ?d @} |d ?d @} |d@} |d?d@} |dk�rt ƒ}t| | | | | |fdd�S)aGenerate a UUID from a host ID, sequence number, and the current time. If 'node' is not given, getnode() is used to obtain the hardware address. If 'clock_seq' is given, it is used as the sequence number; otherwise a random 14-bit sequence number is chosen.N)r-r rgeÍÍAédl@'Hw� rélÿÿriÿÿriÿrTrrV)r/r0) rÅr°rr'rr rUr!Ú_last_timestamprËrÌrÓ)r6r7rÆZsafely_generatedr rUZ nanosecondsZ timestamprËr1r2r3r5r4r r r Úuuid1Ês4          r×cCs8ddlm}||jt|dƒƒ ¡}t|dd…dd�S)zAGenerate a UUID from the MD5 hash of a namespace UUID and a name.r)Úmd5zutf-8Nrr)r-r0)ÚhashlibrØr-Údigestr )Ú namespacerMrØrGr r r Úuuid3ñs rÜcCstt d¡dd�S)zGenerate a random UUID.rr )r-r0)r rfÚurandomr r r r Úuuid4÷srÞcCs8ddlm}||jt|dƒƒ ¡}t|dd…dd�S)zCGenerate a UUID from the SHA-1 hash of a namespace UUID and a name.r)Úsha1zutf-8Nrr)r-r0)rÙrßr-rÚr )rÛrMrßrGr r r Úuuid5ûs ràz$6ba7b810-9dad-11d1-80b4-00c04fd430c8z$6ba7b811-9dad-11d1-80b4-00c04fd430c8z$6ba7b812-9dad-11d1-80b4-00c04fd430c8z$6ba7b814-9dad-11d1-80b4-00c04fd430c8)NN)0r^rfr´ÚenumrÚ __author__rXrYrZr[r!r(r-rÉrr rsrurƒr†rˆrŒr�r‘rŸr¦r°r¿r³r¸Ú ImportErrorrÅrÈrÊrÍrÏrÐrÑrÓrÖr×rÜrÞràZ NAMESPACE_DNSZ NAMESPACE_URLZ NAMESPACE_OIDZNAMESPACE_X500r r r r Ú-s\ " $  T   '