/snap/core20/2866/usr/lib/python3.8/__pycache__
NameSizeModeActions
abc.cpython-38.pyc53340644editdlrm
aifc.cpython-38.pyc254740644editdlrm
antigravity.cpython-38.pyc7970644editdlrm
argparse.cpython-38.pyc625910644editdlrm
ast.cpython-38.pyc167630644editdlrm
asynchat.cpython-38.pyc68510644editdlrm
asyncore.cpython-38.pyc160280644editdlrm
base64.cpython-38.pyc170710644editdlrm
bdb.cpython-38.pyc249210644editdlrm
binhex.cpython-38.pyc121340644editdlrm
bisect.cpython-38.pyc23540644editdlrm
bz2.cpython-38.pyc114450644editdlrm
calendar.cpython-38.pyc270640644editdlrm
cgi.cpython-38.pyc265440644editdlrm
cgitb.cpython-38.pyc101500644editdlrm
chunk.cpython-38.pyc48390644editdlrm
cmd.cpython-38.pyc126260644editdlrm
code.cpython-38.pyc99130644editdlrm
codecs.cpython-38.pyc339560644editdlrm
codeop.cpython-38.pyc64170644editdlrm
colorsys.cpython-38.pyc32400644editdlrm
compileall.cpython-38.pyc94100644editdlrm
configparser.cpython-38.pyc457180644editdlrm
contextlib.cpython-38.pyc202290644editdlrm
contextvars.cpython-38.pyc2430644editdlrm
copy.cpython-38.pyc69870644editdlrm
copyreg.cpython-38.pyc43180644editdlrm
cProfile.cpython-38.pyc54800644editdlrm
crypt.cpython-38.pyc33870644editdlrm
csv.cpython-38.pyc119100644editdlrm
dataclasses.cpython-38.pyc236530644editdlrm
datetime.cpython-38.pyc571730644editdlrm
decimal.cpython-38.pyc3590644editdlrm
difflib.cpython-38.pyc594380644editdlrm
dis.cpython-38.pyc158080644editdlrm
doctest.cpython-38.pyc759740644editdlrm
dummy_threading.cpython-38.pyc11100644editdlrm
enum.cpython-38.pyc259620644editdlrm
filecmp.cpython-38.pyc84270644editdlrm
fileinput.cpython-38.pyc133730644editdlrm
fnmatch.cpython-38.pyc33550644editdlrm
formatter.cpython-38.pyc175450644editdlrm
fractions.cpython-38.pyc187390644editdlrm
ftplib.cpython-38.pyc280070644editdlrm
functools.cpython-38.pyc279010644editdlrm
genericpath.cpython-38.pyc40010644editdlrm
getopt.cpython-38.pyc62710644editdlrm
getpass.cpython-38.pyc41780644editdlrm
gettext.cpython-38.pyc180000644editdlrm
glob.cpython-38.pyc43430644editdlrm
gzip.cpython-38.pyc181840644editdlrm
hashlib.cpython-38.pyc67270644editdlrm
heapq.cpython-38.pyc140700644editdlrm
hmac.cpython-38.pyc63880644editdlrm
imaplib.cpython-38.pyc413420644editdlrm
imghdr.cpython-38.pyc41180644editdlrm
imp.cpython-38.pyc98090644editdlrm
inspect.cpython-38.pyc805930644editdlrm
io.cpython-38.pyc34540644editdlrm
ipaddress.cpython-38.pyc628290644editdlrm
keyword.cpython-38.pyc9980644editdlrm
linecache.cpython-38.pyc38670644editdlrm
locale.cpython-38.pyc346740644editdlrm
lzma.cpython-38.pyc120180644editdlrm
mailbox.cpython-38.pyc602640644editdlrm
mailcap.cpython-38.pyc72060644editdlrm
mimetypes.cpython-38.pyc160310644editdlrm
modulefinder.cpython-38.pyc161150644editdlrm
netrc.cpython-38.pyc37770644editdlrm
nntplib.cpython-38.pyc339740644editdlrm
ntpath.cpython-38.pyc140910644editdlrm
nturl2path.cpython-38.pyc17440644editdlrm
numbers.cpython-38.pyc122020644editdlrm
opcode.cpython-38.pyc54200644editdlrm
operator.cpython-38.pyc136910644editdlrm
optparse.cpython-38.pyc480570644editdlrm
os.cpython-38.pyc313970644editdlrm
pathlib.cpython-38.pyc442090644editdlrm
pdb.cpython-38.pyc472260644editdlrm
pickle.cpython-38.pyc469080644editdlrm
pickletools.cpython-38.pyc672040644editdlrm
pipes.cpython-38.pyc77950644editdlrm
pkgutil.cpython-38.pyc163090644editdlrm
platform.cpython-38.pyc243260644editdlrm
plistlib.cpython-38.pyc273740644editdlrm
poplib.cpython-38.pyc134590644editdlrm
posixpath.cpython-38.pyc104610644editdlrm
pprint.cpython-38.pyc162810644editdlrm
profile.cpython-38.pyc147580644editdlrm
pstats.cpython-38.pyc220660644editdlrm
pty.cpython-38.pyc39550644editdlrm
pyclbr.cpython-38.pyc104510644editdlrm
pydoc.cpython-38.pyc836460644editdlrm
py_compile.cpython-38.pyc73520644editdlrm
queue.cpython-38.pyc106260644editdlrm
quopri.cpython-38.pyc57480644editdlrm
random.cpython-38.pyc201080644editdlrm
re.cpython-38.pyc144220644editdlrm
reprlib.cpython-38.pyc53030644editdlrm
rlcompleter.cpython-38.pyc57550644editdlrm
runpy.cpython-38.pyc81810644editdlrm
sched.cpython-38.pyc65320644editdlrm
secrets.cpython-38.pyc21900644editdlrm
selectors.cpython-38.pyc169350644editdlrm
shelve.cpython-38.pyc94900644editdlrm
shlex.cpython-38.pyc75360644editdlrm
shutil.cpython-38.pyc372190644editdlrm
signal.cpython-38.pyc28430644editdlrm
site.cpython-38.pyc171680644editdlrm
sitecustomize.cpython-38.pyc2200644editdlrm
smtpd.cpython-38.pyc264630644editdlrm
smtplib.cpython-38.pyc355320644editdlrm
sndhdr.cpython-38.pyc69890644editdlrm
socket.cpython-38.pyc277870644editdlrm
socketserver.cpython-38.pyc253610644editdlrm
sre_compile.cpython-38.pyc151420644editdlrm
sre_constants.cpython-38.pyc63590644editdlrm
sre_parse.cpython-38.pyc216470644editdlrm
ssl.cpython-38.pyc450370644editdlrm
stat.cpython-38.pyc43720644editdlrm
statistics.cpython-38.pyc336530644editdlrm
string.cpython-38.pyc73000644editdlrm
stringprep.cpython-38.pyc110170644editdlrm
struct.cpython-38.pyc3300644editdlrm
subprocess.cpython-38.pyc419670644editdlrm
sunau.cpython-38.pyc170800644editdlrm
symbol.cpython-38.pyc24040644editdlrm
symtable.cpython-38.pyc113220644editdlrm
sysconfig.cpython-38.pyc158370644editdlrm
tabnanny.cpython-38.pyc70300644editdlrm
tarfile.cpython-38.pyc630430644editdlrm
telnetlib.cpython-38.pyc182370644editdlrm
tempfile.cpython-38.pyc266530644editdlrm
textwrap.cpython-38.pyc135190644editdlrm
this.cpython-38.pyc12610644editdlrm
threading.cpython-38.pyc399760644editdlrm
timeit.cpython-38.pyc117770644editdlrm
token.cpython-38.pyc24850644editdlrm
tokenize.cpython-38.pyc171600644editdlrm
trace.cpython-38.pyc200260644editdlrm
traceback.cpython-38.pyc199380644editdlrm
tracemalloc.cpython-38.pyc173630644editdlrm
tty.cpython-38.pyc10760644editdlrm
turtle.cpython-38.pyc1300220644editdlrm
types.cpython-38.pyc91770644editdlrm
typing.cpython-38.pyc624200644editdlrm
uu.cpython-38.pyc36050644editdlrm
uuid.cpython-38.pyc236830644editdlrm
warnings.cpython-38.pyc136520644editdlrm
wave.cpython-38.pyc181490644editdlrm
weakref.cpython-38.pyc195180644editdlrm
webbrowser.cpython-38.pyc171200644editdlrm
xdrlib.cpython-38.pyc82210644editdlrm
zipapp.cpython-38.pyc58540644editdlrm
zipfile.cpython-38.pyc593360644editdlrm
zipimport.cpython-38.pyc172750644editdlrm
_bootlocale.cpython-38.pyc12430644editdlrm
_collections_abc.cpython-38.pyc287410644editdlrm
_compat_pickle.cpython-38.pyc55010644editdlrm
_compression.cpython-38.pyc41460644editdlrm
_dummy_thread.cpython-38.pyc60370644editdlrm
_markupbase.cpython-38.pyc77900644editdlrm
_osx_support.cpython-38.pyc115930644editdlrm
_pydecimal.cpython-38.pyc1607350644editdlrm
_pyio.cpython-38.pyc740790644editdlrm
_py_abc.cpython-38.pyc46700644editdlrm
_sitebuiltins.cpython-38.pyc34810644editdlrm
_strptime.cpython-38.pyc160440644editdlrm
_sysconfigdata__linux_x86_64-linux-gnu.cpython-38.pyc211210644editdlrm
_sysconfigdata__x86_64-linux-gnu.cpython-38.pyc211150644editdlrm
_threading_local.cpython-38.pyc64460644editdlrm
_weakrefset.cpython-38.pyc76000644editdlrm
__future__.cpython-38.pyc41580644editdlrm
__phello__.foo.cpython-38.pyc1270644editdlrm
Edit: /snap/core20/2866/usr/lib/python3.8/__pycache__/uuid.cpython-38.pyc (23683B)
U ʦiw@s dZddlZddlZddlmZdZejdkr8dZZn ddlZe Z e dkZe dkZd d d d g\Z Z Z ZeZeZGd ddeZGdddZddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zdaa da!z ddl"Z"Wne#k rdZ"YnXd%d&Z$d'd(Z%d)d*Z&d+d,Z'erFeegZ(nJejd-kr^eeegZ(n2ejd.krteegZ(neregZ(neeeeegZ(ej)d/kre%ge(Z*nej)d0kre&ge(Z*ne(Z*da+dd1d2d3Z,da-d@d4d5Z.d6d7Z/d8d9Z0d:d;Z1ed<Z2ed=Z3ed>Z4ed?Z5dS)AaQUUID 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 )win32darwinFZAIXZLinuxzreserved for NCS compatibilityzspecified in RFC 4122z$reserved for Microsoft compatibilityzreserved for future definitionc@seZdZdZdZdZdS)SafeUUIDrN)__name__ __module__ __qualname__ZsafeZunsafeunknownr r /usr/lib/python3.8/uuid.pyrHsrc@s:eZdZdZdZd=ejdddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZedd Zed!d"Zed#d$Zed%d&Zed'd(Zed)d*Zed+d,Zed-d.Zed/d0Zed1d2Zed3d4Zed5d6Z ed7d8Z!ed9d:Z"ed;d<Z#dS)>UUIDa Instances of the UUID class represent UUIDs as specified in RFC 4122. UUID objects are immutable, hashable, and usable as dictionary keys. Converting a UUID to a string with str() yields something in the form '12345678-1234-1234-1234-123456789abc'. The UUID constructor accepts five possible forms: a similar string of hexadecimal digits, or a tuple of six integer fields (with 32-bit, 16-bit, 16-bit, 8-bit, 8-bit, and 48-bit values respectively) as an argument named 'fields', or a string of 16 bytes (with all the integer fields in big-endian order) as an argument named 'bytes', or a string of 16 bytes (with the first three fields in little-endian order) as an argument named 'bytes_le', or a single 128-bit integer as an argument named 'int'. UUIDs have these read-only attributes: bytes the UUID as a 16-byte string (containing the six integer fields in big-endian byte order) bytes_le the UUID as a 16-byte string (with time_low, time_mid, and time_hi_version in little-endian byte order) fields a tuple of the six integer fields of the UUID, which are also available as six individual attributes and two derived attributes: time_low the first 32 bits of the UUID time_mid the next 16 bits of the UUID time_hi_version the next 16 bits of the UUID clock_seq_hi_variant the next 8 bits of the UUID clock_seq_low the next 8 bits of the UUID node the last 48 bits of the UUID time the 60-bit timestamp clock_seq the 14-bit sequence number hex the UUID as a 32-character hexadecimal string int the UUID as a 128-bit integer urn the UUID as a URN as specified in RFC 4122 variant the UUID variant (one of the constants RESERVED_NCS, RFC_4122, RESERVED_MICROSOFT, or RESERVED_FUTURE) version the UUID version number (1 through 5, meaningful only when the variant is RFC_4122) is_safe An enum indicating whether the UUID has been generated in a way that is safe for multiprocessing applications, via uuid_generate_time_safe(3). )intis_safe __weakref__N)rcCs|||||gddkr td|dk rl|dddd}|ddd}t|d krbtd t|d }|dk rt|d krtd |d dd|dd d|ddd|dd}|dk rt|d krtdt|tst t |tj |dd}|dk r*t|dkrtd|\}} } } } } d|krFdksPntdd| krhdksrntdd| krdksntdd| krdksntdd| krdksntdd| krd ksntd!| d>| B}|d">| d#>B| d$>B|d%>B| B}|dk rZd|krPd&d'>ksZntd(|dk rd&|kr|dksntd)|d*M}|d+O}|d,M}||d->O}t |d.|t |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). NzGone of the hex, bytes, bytes_le, fields, or int arguments must be givenzurn:zuuid:z{}- z$badly formed hexadecimal UUID stringz bytes_le is not a 16-char stringrzbytes is not a 16-char stringbig) byteorderzfields 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)z*field 6 out of range (need a 48-bit value)`P@0z*int is out of range (need a 128-bit value)zillegal version numberl lLrr)count TypeErrorreplacestriplen ValueErrorint_ isinstancebytes_AssertionErrorrepr from_bytesobject __setattr__)selfhexbytesbytes_lefieldsrversionrtime_lowtime_midtime_hi_versionclock_seq_hi_variant clock_seq_lownode clock_seqr r r __init__sz            z UUID.__init__cCs&d|ji}|jtjkr"|jj|d<|SNrr)rrrr value)r5dr r r __getstate__s   zUUID.__getstate__cCs:t|d|dt|dd|kr.t|dntjdSrC)r3r4rr )r5stater r r __setstate__s zUUID.__setstate__cCst|tr|j|jkStSNr.r rNotImplementedr5otherr r r __eq__s  z UUID.__eq__cCst|tr|j|jkStSrIrJrLr r r __lt__s  z UUID.__lt__cCst|tr|j|jkStSrIrJrLr r r __gt__s  z UUID.__gt__cCst|tr|j|jkStSrIrJrLr r r __le__s  z UUID.__le__cCst|tr|j|jkStSrIrJrLr r r __ge__s  z UUID.__ge__cCs t|jSrI)hashrr5r r r __hash__sz UUID.__hash__cCs|jSrIrrTr r r __int__sz UUID.__int__cCsd|jjt|fS)Nz%s(%r)) __class__rstrrTr r r __repr__ sz UUID.__repr__cCs tddS)NzUUID objects are immutable)r()r5namerDr r r r4szUUID.__setattr__cCsDd|j}d|dd|dd|dd|dd|ddfS)N%032xz%s-%s-%s-%s-%sr rrV)r5r6r r r __str__s  z UUID.__str__cCs|jddS)Nrr)rto_bytesrTr r r r7sz UUID.bytescCs<|j}|ddd|ddd|ddd|ddS)Nrrrrrr7)r5r7r r r r8s( z UUID.bytes_lecCs|j|j|j|j|j|jfSrI)r;r<r=r>r?r@rTr r r r9 s  z UUID.fieldscCs |jd?S)NrrVrTr r r r;%sz UUID.time_lowcCs|jd?d@S)Nr rVrTr r r r<)sz UUID.time_midcCs|jd?d@S)Nr!rbrVrTr r r r=-szUUID.time_hi_versioncCs|jd?d@S)N8rVrTr r r r>1szUUID.clock_seq_hi_variantcCs|jd?d@S)Nr"rdrVrTr r r r?5szUUID.clock_seq_lowcCs|jd@d>|jd>B|jBS)Nr"r)r=r<r;rTr r r time9s  z UUID.timecCs|jd@d>|jBS)N?r)r>r?rTr r r rA>s zUUID.clock_seqcCs |jd@S)NlrVrTr r r r@Csz UUID.nodecCs d|jS)Nr\rVrTr r r r6GszUUID.hexcCs dt|S)Nz urn:uuid:)rYrTr r r urnKszUUID.urncCs2|jd@stS|jd@stS|jd@s*tStSdS)Nr%ll)r RESERVED_NCSRFC_4122RESERVED_MICROSOFTRESERVED_FUTURErTr r r variantOs   z UUID.variantcCs |jtkrt|jd?d@SdS)Nr&)rmrjrrTr r r r:Zs z UUID.version)NNNNNN)$rrr __doc__ __slots__rr rBrFrHrNrOrPrQrRrUrWrZr4r_propertyr7r8r9r;r<r=r>r?rfrAr@r6rhrmr:r r r r r Nsd3 V              r c Gsddl}ddl}ddl}||}|dkrP|jd}|j||d}|dkrPdSt|j}d|d<|j|f||j |j |d}|S)Nr)z/sbinz /usr/sbin)pathCLC_ALL)stdoutstderrenv) osshutil subprocessZwhichpathsepjoindictenvironPopenPIPEZDEVNULL) commandargsrxryrz executablerrrwprocr r r _popen`s    rcCs |d@ S)Nlr macr r r _is_universalsrc Csd}zt|f|}|s"WdS||jD]}|}tt|D]x}|||krNzN|||} t| ddd} t | r| WW5QRWS|p| }WqNt t fk rYqNXqNq.W5QRXWnt k rYnX|pdS)N:r) rsplitrulowerrstripranger+rr)rr, IndexErrorOSError) rrZhw_identifiersZ get_indexfirst_local_macrlinewordsiwordrr r r _find_macs*    rcCs4d}dD]&}td||dd}|r*|SdSdS)z5Get the hardware address on Unix by running ifconfig.)shwaddrsethersaddress:slladdr)rz-az-avZifconfigcSs|dSNr#r rr r r rz#_ifconfig_getnode..Nr)keywordsrrr r r _ifconfig_getnodes rcCs tdddgdd}|r|SdS)z/Get the hardware address on Unix by running ip.Ziplinks link/ethercSs|dSrr rr r r rrz_ip_getnode..Nrrr r r _ip_getnodesrcCsddl}ddl}z||}Wntk r8YdSXtdd||gdd}|r\|Stdd||gdd}|r~|Stdd|d|gd d}|r|SdS) z0Get the hardware address on Unix by running arp.rNZarpz-ancSsdS)Nrr rr r r rrz_arp_getnode..cSs|dSrr rr r r rrz(%s)cSs|dS)Nr rr r r rr)rxsocketZ gethostbynameZ gethostnamerrfsencode)rxrZip_addrrr r r _arp_getnodes"rcCstdddgddS)z4Get the hardware address on Unix by running lanscan.Zlanscanz-aislan0cSsdS)Nrr rr r r rrz"_lanscan_getnode..rr r r r _lanscan_getnodesrc Cs&d}ztdd}|sWdS||j}z|d}Wn"tk rdYW5QRWdSX|jD]}zl|}||}t|dkr|ddkrt | ddd }t |r|WW5QRWS|p|}Wqltt fk rYqlXqlW5QRXWnt k rYnX|p$dS) z4Get the hardware address on Unix by running netstat.NZnetstatz-iasAddressrrrr)rrureadlinerrindexr,r+r'rr)rrr)rrrrrrrr r r _netstat_getnodes2    rc Cs<ddl}ddl}ddl}d}dddg}z:ddl}|d}|jj|d|d|j dWn YnX|D]}z$|j |j |dd g|jd d }Wntk rYqrYnX|r|jD]d} | d d } |d| rt| ddd} t| r| W5QRS|p"| }qW5QRXqr|p:dS)z    rc stdk r dSdatjdkr8ttjdddkr8ntdk rPtj a tj adSzddl ddl dg}tjds~|d |D]}zj|}Wntk rYqYnXt|d r|jfd d a d aq qt|dr|jd_fdd a q qz jj}Wnd}YnXt|dt|ddaWn>tk r~}zddl}|d|tW5d}~XYnXdS)zG Try to load platform-specific functions for generating uuids. NFr.r Zuuidwincuuid_generate_time_safecs d}|}t|j|fSNrrr7raw)_bufferres)_uuid_generate_time_saferr r _generate_time_safehs rTuuid_generate_timecs d}|t|jdfSrr)r)_uuid_generate_timerr r rss ZUuidCreateSequentialZ UuidCreatez/Could not find fallback ctypes uuid functions: )_has_uuid_generate_time_safesysplatformrrxunamereleaser_uuidZgenerate_time_saferZhas_uuid_generate_time_saferZ ctypes.util startswithappendZCDLLutilZ find_library ExceptionhasattrrrZrestyperZrpcrt4getattr _UuidCreatewarningswarn ImportWarning)Z _libnamesZlibnameZlibexcrr )rrrr _load_system_functions:sT&          rcCstt\}}t|djS)zPGet the hardware address on Unix using the _uuid extension module or ctypes.ra)rrr r@) uuid_time_r r r _unix_getnodes rcCs:ddl}t|d}t|dkr6tt|jdjSdS)z1Get the hardware address on Windows using ctypes.rNrra)rrrrr r/rr@)rrr r r _windll_getnodes   rcCsddl}|ddBS)zGet a random node ID.rNr"l)random getrandbits)rr r r _random_getnodes rrrposixnt)getterscCsvtdk r tSttgD]H}z |aWnYqYnXtdk rdtkrRdkrnqtSqdsrtdtdS)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. NrrFz,_random_getnode() returned invalid value: {})_node_GETTERSrr0format)rgetterr r r getnodes     rcCsttdk rd||kr"dkrdnn>t\}}z t|}Wntk rVtj}YnXt||dSddl}|}|dd}tdk r|tkrtd}|a|dkrddl }| d}|d@} |d ?d @} |d ?d @} |d @} |d?d@} |dkrt }t| | | | | |fddS)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)r7rrdl@'Hw r#lrrbr"rerdrrg)r9r:) rrrr,r r rftime_ns_last_timestamprrr)r@rArZsafely_generatedrrfZ nanosecondsZ timestamprr;r<r=r?r>r r r uuid1s>          rcCs8ddlm}||jt|d}t|ddddS)zAGenerate a UUID from the MD5 hash of a namespace UUID and a name.r)md5utf-8Nrrr7r:)hashlibrr7digestr ) namespacer[rrSr r r uuid3s rcCsttdddS)zGenerate a random UUID.rrr)r rxurandomr r r r uuid4 srcCs8ddlm}||jt|d}t|ddddS)zCGenerate a UUID from the SHA-1 hash of a namespace UUID and a name.r)sha1rNrrr)rrr7rr )rr[rrSr r r uuid5s rz$6ba7b810-9dad-11d1-80b4-00c04fd430c8z$6ba7b811-9dad-11d1-80b4-00c04fd430c8z$6ba7b812-9dad-11d1-80b4-00c04fd430c8z$6ba7b814-9dad-11d1-80b4-00c04fd430c8)NN)6rorxrenumr __author__rZ_AIXZ_LINUXsystemZ_platform_systemrirjrkrlrr-r7r/rr rrrrrrrrrrrrrr ImportErrorrrrrZ _OS_GETTERSr[rrrrrrrrZ NAMESPACE_DNSZ NAMESPACE_URLZ NAMESPACE_OIDZNAMESPACE_X500r r r r s.    " $  T          '