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 �rZd|k�rPd&d'>k�sZntd(ƒ‚|dk �rªd&|k�r|dk�s†ntd)ƒ‚|d*M}|d+O}|d,M}||d->O}||j d.<||j d/<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_Ú isinstanceÚbytes_ÚAssertionErrorÚreprÚ 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)r)r r!ÚNotImplemented)r/Úotherr r r Ú__eq__âs  z UUID.__eq__cCst|tƒr|j|jkStS)N)r)r r!rC)r/rDr r r Ú__lt__ês  z UUID.__lt__cCst|tƒr|j|jkStS)N)r)r r!rC)r/rDr r r Ú__gt__ïs  z UUID.__gt__cCst|tƒr|j|jkStS)N)r)r r!rC)r/rDr r r Ú__le__ôs  z UUID.__le__cCst|tƒr|j|jkStS)N)r)r r!rC)r/rDr 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/r0r r r Ú__str__ s z UUID.__str__cCs|j dd¡S)Nrr)r!Úto_bytes)r/r r r r1sz UUID.bytescCs<|j}|ddd…|ddd…|ddd…|dd…S)Nrrrrr)r1)r/r1r r r r2s(z UUID.bytes_lecCs|j|j|j|j|j|jfS)N)r5r6r7r8r9r:)r/r r r r3s z UUID.fieldscCs |jd?S)Nr)r!)r/r r r r5sz UUID.time_lowcCs|jd?d@S)Nriÿÿ)r!)r/r r r r6"sz UUID.time_midcCs|jd?d@S)Nriÿÿ)r!)r/r r r r7&szUUID.time_hi_versioncCs|jd?d@S)Né8éÿ)r!)r/r r r r8*szUUID.clock_seq_hi_variantcCs|jd?d@S)NrrW)r!)r/r r r r9.szUUID.clock_seq_lowcCs|jd@d>|jd>B|jBS)Niÿrr)r7r6r5)r/r r r Útime2sz UUID.timecCs|jd@d>|jBS)Né?r)r8r9)r/r r r r;7s zUUID.clock_seqcCs |jd@S)Nlÿÿÿ)r!)r/r r r r:<sz UUID.nodecCs d|jS)Nz%032x)r!)r/r r r r0@szUUID.hexcCs dt|ƒS)Nz urn:uuid:)rN)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_r\r!)r/r r r r4Ss z UUID.version)NNNNNN)#rrrÚ__doc__rrr<r@rBrErFrGrHrIrKrLrOrQrTÚpropertyr1r2r3r5r6r7r8r9rXr;r:r0rZr_r4r 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ÚargsrirjrkÚ executablercrhÚprocr r r Ú_popenYs    rvcCs |d@ S)Nlr )Úmacr r r Ú _is_universal{srxc 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) rvÚsplitrfÚlowerÚrstripÚranger&r!r$rxr'Ú IndexErrorÚOSError) rrrsZhw_identifiersZ get_indexÚfirst_local_macruÚlineÚwordsÚiÚwordrwr 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 ÚŸrzz#_ifconfig_getnode..N)r†)Úkeywordsrsrwr 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‡§rzz_ip_getnode..N)r†)rwr 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‡µrzz_arp_getnode..cSs|dS)Nrr )r„r r r r‡ºrzz(%s)cSs|dS)Nér )r„r r r r‡Àrz)riÚsocketZ gethostbynameZ gethostnamer€r†Úfsencode)rir�Zip_addrrwr 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‡Érzz"_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éryrrzr)rvrfÚreadliner}r{Úindexr'r&r"r!r$rxrr€)r�rurƒr„r‚r…rwr 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Údecoderprcrmrqr€rfr{r%r|Ú fullmatchr!r$rx) rir˜rkr�Údirsr™ÚbufferÚdirrur‚r>rwr r r Ú_ipconfig_getnodeès4       r¢c Cs6ddl}ddl}d}| ¡}|j|_| ¡|_}| ¡| |¡dkrLdS|  ¡xÖt |j ƒD]È}|  ¡|j |_t|j|ƒ|_| |¡dkr”q`|  ¡|j|_t|j|ƒ|_d d¡|_| ¡|_}| |¡dkrÞq`|  ¡|jdd…}t|ƒdk�rq`t |d¡}t|ƒ�r|S|�p&|}q`W|�p4dS)ztGet the hardware address on Windows using NetBIOS calls. See http://support.microsoft.com/kb/118623 for details.rNÚ*rrr)Ú win32wnetÚnetbiosZNCBZNCBENUMZCommandZ LANA_ENUMZBufferZ_packZNetbiosZ_unpackr~ÚlengthZResetZNCBRESETÚordZlanaZLana_numZNCBASTATÚljustZCallnameZADAPTER_STATUSZadapter_addressr&r!r-rx) r¤r¥r�ZncbZadaptersr„Zstatusr1rwr r r Ú_netbios_getnodes>   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šr1Úraw)Ú_bufferZres)Ú_uuid_generate_time_safer™r r Ú_generate_time_safeas r³TÚuuid_generate_timecs ˆ d¡}ˆ|ƒt|jƒdfS)Nr)ršr1r°)r±)Ú_uuid_generate_timer™r r r³ls ZUuidCreateSequentialZ UuidCreatez/Could not find fallback ctypes uuid functions: )Ú_has_uuid_generate_time_safeÚsysÚplatformr!riÚunameÚreleaser{Ú_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.)r1)rÈr³r r:)Ú 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)r1)r™rÈršrÂr r*r°r:)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Ï)ÚgetterscCsˆtdk r tStjdkrt}nt}xP|tgD]B}y |ƒaWnw,YnXtdk r,dtkrfdkr,nq,tSq,Wds„td t¡ƒ‚dS)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. NZwin32rlFz,_random_getnode() returned invalid value: {})Ú_noder·r¸Ú_NODE_GETTERS_WIN32Ú_NODE_GETTERS_UNIXrÏr+Úformat)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)r1r rgeÍÍAédl@'Hw� rélÿÿriÿÿriÿrWrrY)r3r4) rÈr³rr'rr rXr!Ú_last_timestamprÍrÎrÖ)r:r;rÉZsafely_generatedr rXZ nanosecondsZ timestamprÍr5r6r7r9r8r 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)r1r4)ÚhashlibrÛr1Údigestr )Ú namespacerPrÛrJr r r Úuuid3ñs rßcCstt d¡dd�S)zGenerate a random UUID.rr )r1r4)r riÚ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)r1r4)rÜrâr1rÝr )rÞrPrârJr 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)0rarir·ÚenumrÚ __author__r[r\r]r^r!r(r1r*rr rvrxr†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   '