tzh
2024-08-22 c7d0944258c7d0943aa7b2211498fd612971ce27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
M\¬Qc@s=dZdZddddg\ZZZZdefd„ƒYZd„Zd    „Z    d
„Z
d „Z d Z ZZy3d d lZd d lZxvddgD]hZyejejjeƒƒZWn
qšnXeedƒrçejZ needƒršejZqšqšWd d lZejdkrfd d lZeejƒdjdƒdƒdkrfd Z Zqfnyej j!ZWn d ZnXe"ede"edd ƒƒZWnnXd„Z#d„Z$d„Z%d a&d„Z'd a(d d d„Z)d„Z*d„Z+d „Z,ed!ƒZ-ed"ƒZ.ed#ƒZ/ed$ƒZ0d S(%s(UUID 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()
    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()
    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
    '\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')
sKa-Ping Yee <ping@zesty.ca>sreserved for NCS compatibilitysspecified in RFC 4122s$reserved for Microsoft compatibilitysreserved for future definitiontUUIDcBsšeZdZddddddd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d„Z e e ƒZ d    „Ze eƒZd
„Ze eƒZd „Ze eƒZd „Ze eƒZd „Ze eƒZd„Ze eƒZd„Ze eƒZd„Ze eƒZd„Ze eƒZd„Z e e ƒZ!d„Z"e e"ƒZ#d„Z$e e$ƒZ%d„Z&e e&ƒZ'd„Z(e e(ƒZ)RS(sÚ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)
    c Csª|||||gjd,ƒdkr3tdƒ‚n|d,k    r«|jddƒjddƒ}|jdƒjddƒ}t|ƒdkr™td    ƒ‚nt|d
ƒ}n|d,k    r%t|ƒd
krØtd ƒ‚n|d |d |d|d|d|d|d|d|d}n|d,k    r{t|ƒd
krRtdƒ‚ntdd
tt    t
|ƒƒd
ƒ}n|d,k    rùt|ƒdkr¨tdƒ‚n|\}}}    }
} } d|ko×d-knsëtdƒ‚nd|kod.knstdƒ‚nd|    ko-d/knsAtdƒ‚nd|
koXd0knsltdƒ‚nd| koƒd1kns—tdƒ‚nd| ko®d2knsÂtd ƒ‚n|
d>| B} |d!>|d">B|    d#>B| d>B| B}n|d,k    r3d|kod3kns3td%ƒ‚q3n|d,k    r™d|koVdknsjtd&ƒ‚n|d5M}|d6O}|d8M}||d*>O}n||j d+<d,S(9smCreate 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'.
        is0need one of hex, bytes, bytes_le, fields, or intsurn:tsuuid:s{}t-i s$badly formed hexadecimal UUID stringis bytes_le is not a 16-char stringiiiiiiiisbytes is not a 16-char strings%02xsfields is not a 6-tuplel s*field 1 out of range (need a 32-bit value)ls*field 2 out of range (need a 16-bit value)s*field 3 out of range (need a 16-bit value)ls*field 4 out of range (need an 8-bit value)s*field 5 out of range (need an 8-bit value)l0s*field 6 out of range (need a 48-bit value)l`lPl@l€s*int is out of range (need a 128-bit value)sillegal version numberiÀi€iðlLtintNlllllll    l lûÿÿÿ lllúÿÿÿ( tcounttNonet    TypeErrortreplacetstriptlent
ValueErrortlongttupletmaptordt__dict__(tselfthextbytestbytes_letfieldsRtversionttime_lowttime_midttime_hi_versiontclock_seq_hi_variantt clock_seq_lowtnodet    clock_seq((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt__init__es\$  ? ) )  
 
 
cCs&t|tƒr"t|j|jƒStS(N(t
isinstanceRtcmpRtNotImplemented(Rtother((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt__cmp__´scCs t|jƒS(N(thashR(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt__hash__¹scCs|jS(N(R(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt__int__¼scCsdt|ƒS(NsUUID(%r)(tstr(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt__repr__¿scCstdƒ‚dS(NsUUID objects are immutable(R(Rtnametvalue((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt __setattr__ÂscCsAd|j}d|d |dd!|dd!|dd!|dfS(Ns%032xs%s-%s-%s-%s-%sii ii(R(RR((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt__str__Ås cCsBd}x5tdddƒD]!}t|j|?d@ƒ|}qW|S(NRii€iiÿ(trangetchrR(RRtshift((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt    get_bytesÊscCsQ|j}|d|d|d|d|d|d|d|d|d    S(
Niiiiiiiii(R(RR((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt get_bytes_leÒs    cCs(|j|j|j|j|j|jfS(N(RRRRRR(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt
get_fieldsÙscCs |jd?S(Nl`(R(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt get_time_lowßscCs|jd?d@S(NlPiÿÿ(R(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt get_time_midäscCs|jd?d@S(Nl@iÿÿ(R(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pytget_time_hi_versionéscCs|jd?d@S(Nl8iÿ(R(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pytget_clock_seq_hi_variantîscCs|jd?d@S(Nl0iÿ(R(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pytget_clock_seq_lowóscCs!|jd@d>|jd>B|jBS(Nlÿl0l (RRR(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pytget_timeøscCs|jd@d>|jBS(Nl?l(RR(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt get_clock_seqþscCs |jd@S(NIÿÿÿÿÿÿ(R(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pytget_nodescCs d|jS(Ns%032x(R(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pytget_hex    scCsdt|ƒS(Ns    urn:uuid:(R&(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pytget_urnscCs;|jd@stS|jd@s"tS|jd@s3tStSdS(Ni€l0i@i lll(Rt RESERVED_NCStRFC_4122tRESERVED_MICROSOFTtRESERVED_FUTURE(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt get_variants   cCs(|jtkr$t|jd?d@ƒSdS(NlLi(tvariantR=R(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt get_versionsN(*t__name__t
__module__t__doc__RRR"R$R%R'R*R+R/tpropertyRR0RR1RR2RR3RR4RR5RR6RR7ttimeR8RR9RR:RR;turnR@RARBR(((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyR5sN. N                                                                                             
    c Cs ddl}xúdddgD]é}|jj||ƒ}|jj|ƒsOqnyŸd||f}|j|ƒz}xp|D]h}    |    jƒjƒ}
xMtt|
ƒƒD]9} |
| |kr¦t    |
|| ƒj
ddƒdƒSq¦Wq{WWdQXWqt k
rqqXqWdS(NiÿÿÿÿRs/sbin/s    /usr/sbinsLC_ALL=C %s %s 2>/dev/nullt:i( tostpathtjointexiststpopentlowertsplitR,R    RRtIOErrorR( tcommandtargsthw_identifierst    get_indexRJtdirt
executabletcmdtpipetlinetwordsti((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt    _find_mac&s"  2  cCs¨x6dD].}td|ddgd„ƒ}|r|SqWdd    l}|j|jƒƒ}td
d |gd „ƒ}|r|Std ddgd„ƒ}|r¤|Sd    S(s5Get the hardware address on Unix by running ifconfig.Rs-as-avtifconfigthwaddrtethercSs|dS(Ni((R\((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt<lambda>AsiÿÿÿÿNtarps-ancSsdS(Niÿÿÿÿ((R\((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyRaIstlanscans-aitlan0cSsdS(Ni((R\((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyRaNs(Rs-as-av(R]tsockett gethostbynamet gethostnameR(RStmacRetip_addr((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt_ifconfig_getnode<s  c    CsAddl}ddl}dddg}yQddl}|jdƒ}|jjj|dƒ|jd|jj    dƒƒWnnXx¸|D]°}zœy&|j
|j j |d    ƒd
ƒ}Wnt k
rÎw‰n\XxX|D]P}|jd ƒdjƒjƒ}|jd |ƒrÖt|jd dƒdƒSqÖWWd|jƒXq‰WdS(s<Get the hardware address on Windows by running ipconfig.exe.iÿÿÿÿNRsc:\windows\system32sc:\winnt\system32i,itmbcstipconfigs /allRIs&([0-9a-f][0-9a-f]-){5}[0-9a-f][0-9a-f]Ri(RJtretctypestcreate_string_buffertwindlltkernel32tGetSystemDirectoryAtinsertR)tdecodeRNRKRLRQRPRROtmatchRRtclose(    RJRmtdirsRntbufferRVRYRZR)((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt_ipconfig_getnodeTs(   &  !cCsžddl}ddl}|jƒ}|j|_|jƒ|_}|jƒ|j|ƒdkrfdS|j    ƒx't
|j ƒD]}|j ƒ|j |_t|j|ƒ|_|j|ƒdkrÍq€n|j ƒ|j|_t|j|ƒ|_djdƒ|_|jƒ|_}|j|ƒdkr9q€n|j    ƒtt|jƒ}|dd>|dd>|d    d
>|d d >|d d>|dSWdS(stGet the hardware address on Windows using NetBIOS calls.
    See http://support.microsoft.com/kb/118623 for details.iÿÿÿÿNit*il(il ililili(t    win32wnettnetbiostNCBtNCBENUMtCommandt    LANA_ENUMtBuffert_packtNetbiost_unpackR,tlengthtResettNCBRESETRtlanatLana_numtNCBASTATtljusttCallnametADAPTER_STATUSR tadapter_address(R{R|tncbtadaptersR\tstatusR((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt_netbios_getnodels0  
 
 
 
 
iÿÿÿÿNtuuidtctuuid_generate_randomtuuid_generate_timetdarwinit.ii    tUuidCreateSequentialt
UuidCreatecCs,tjdƒ}t|ƒtd|jƒjS(s.Get the hardware address on Unix using ctypes.iR(RnRot_uuid_generate_timeRtrawR(t_buffer((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt_unixdll_getnodeºs
cCs8tjdƒ}t|ƒdkr4td|jƒjSdS(s1Get the hardware address on Windows using ctypes.iiRN(RnRot _UuidCreateRRœR(R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt_windll_getnodeÀscCs ddl}|jddƒdBS(sCGet a random node ID, with eighth bit set as suggested by RFC 4122.iÿÿÿÿNiil0ll(trandomt    randrange(R¡((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt_random_getnodeÆs cCstdk    rtSddl}|jdkr=tttg}n ttg}x?|t    gD]0}y |ƒaWn
qWnXtdk    rWtSqWWdS(s3Get 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.
    iÿÿÿÿNtwin32(
t_nodeRtsystplatformR R’RyRžRjR£(R¦tgetterstgetter((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pytgetnodeÍs
    c CsQtrK||kodknrKtjdƒ}t|ƒtd|jƒSddl}t|jƒdƒ}t|dƒd}tdk    r¦|tkr¦td}n|a|dkrÖddl    }|j
dƒ}n|d
@}|d ?d @}|d ?d@}    |d@}
|d?d@} |dkr,t ƒ}ntd|||    | |
|fddƒS(sGenerate 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.iRiÿÿÿÿNgeÍÍAidl@'Hw illÿÿl lÿl0lÿlÿll?RRl@( R›RRnRoRRœRGRt_last_timestampR¡R¢Rª( RRRRGt nanosecondst    timestampR¡RRRRR((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pytuuid1ês,"
 
 
  cCs@ddlm}||j|ƒjƒ}td|d ddƒS(sAGenerate a UUID from the MD5 hash of a namespace UUID and a name.iÿÿÿÿ(tmd5RiRi(thashlibR¯RtdigestR(t    namespaceR(R¯R#((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pytuuid3 scCs³tr/tjdƒ}t|ƒtd|jƒSy,ddl}td|jdƒddƒSWnQddl}gtdƒD]}t    |j
dƒƒ^qz}td|ddƒSXdS(sGenerate a random UUID.iRiÿÿÿÿNRii( t_uuid_generate_randomRnRoRRœRJturandomR¡R,R-R¢(RRJR¡R\R((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pytuuid4s
   .cCs@ddlm}||j|ƒjƒ}td|d ddƒS(sCGenerate a UUID from the SHA-1 hash of a namespace UUID and a name.iÿÿÿÿ(tsha1RiRi(R°R·RR±R(R²R(R·R#((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pytuuid5%ss$6ba7b810-9dad-11d1-80b4-00c04fd430c8s$6ba7b811-9dad-11d1-80b4-00c04fd430c8s$6ba7b812-9dad-11d1-80b4-00c04fd430c8s$6ba7b814-9dad-11d1-80b4-00c04fd430c8(1REt
__author__R<R=R>R?tobjectRR]RjRyR’RR´R›RŸRnt ctypes.utiltlibnametCDLLtutilt find_librarytlibthasattrR•R–R¦R§RJRtunameRPRptrpcrt4tgetattrRžR R£R¥RªR«R®R³R¶R¸t NAMESPACE_DNSt NAMESPACE_URLt NAMESPACE_OIDtNAMESPACE_X500(((sL/tmp/ndk-User/buildhost/install/prebuilt/darwin-x86_64/lib/python2.7/uuid.pyt<module>-s^ñ                        )
 
                    #