Python 3.7 - uuid

यूयूआईडी - आरयूएफ 4122 के अनुसार यूयूआईडी ऑब्जेक्ट्स




python

यूयूआईडी - आरयूएफ 4122 के अनुसार यूयूआईडी ऑब्जेक्ट्स

स्रोत कोड: Lib/uuid.py

यह मॉड्यूल RFC 4122 में निर्दिष्ट संस्करण 1, 3, 4, और 5 UUIDs उत्पन्न करने के लिए अपरिवर्तनीय UUID ऑब्जेक्ट्स ( UUID क्लास) और फ़ंक्शन uuid1() , uuid3() , uuid4() करता है।

यदि आप चाहते हैं कि एक अद्वितीय आईडी हो, तो आपको शायद uuid1() या uuid4() कॉल करना चाहिए। ध्यान दें कि uuid1() गोपनीयता से समझौता कर सकता है क्योंकि यह एक UUID बनाता है जिसमें कंप्यूटर का नेटवर्क पता होता है। uuid4() एक यादृच्छिक UUID बनाता है।

अंतर्निहित प्लेटफ़ॉर्म से समर्थन के आधार पर, uuid1() "सुरक्षित" uuid1() वापस कर सकता है या नहीं कर सकता है। एक सुरक्षित यूयूआईडी वह है जो सिंक्रोनाइज़ेशन विधियों का उपयोग करके उत्पन्न होता है जो सुनिश्चित करता है कि कोई भी दो प्रक्रियाएं एक ही यूयूआईडी प्राप्त नहीं कर सकती हैं। UUID सभी उदाहरणों में एक is_safe विशेषता है जो इस is_safe की सुरक्षा के बारे में किसी भी जानकारी का उपयोग करता है, इस is_safe का उपयोग करते हुए:

class uuid.SafeUUID

संस्करण 3.7 में नया।

safe

UUID को प्लेटफ़ॉर्म द्वारा बहुपक्षीय-सुरक्षित तरीके से उत्पन्न किया गया था।

unsafe

UUID को बहु-सुरक्षित तरीके से उत्पन्न नहीं किया गया था।

unknown

प्लेटफ़ॉर्म यह जानकारी नहीं देता है कि यूयूआईडी सुरक्षित रूप से उत्पन्न हुआ था या नहीं।

class uuid.UUID(hex=None, bytes=None, bytes_le=None, fields=None, int=None, version=None, *, is_safe=SafeUUID.unknown)

32 हेक्साडेसिमल अंकों की एक स्ट्रिंग से एक यूयूआईडी बनाएं , बाइट्स तर्क के रूप में 16-बाइट्स की एक स्ट्रिंग, बाइट्स तर्क के रूप में 16 बाइट्स की एक स्ट्रिंग, बाइट्स_ले तर्क के रूप में थोड़ा-एंडियन क्रम में 16 बाइट्स, छह पूर्णांकों का एक समूह (32- बिट तर्क_लो , 16-बिट time_mid , 16-बिट time_hi_version , 8-बिट क्लॉक_सेक_ही_वरियंट , 8-बिट क्लॉक_सेक_लो , 48-बिट नोड ) फ़ील्ड तर्क के रूप में, या एक 128-बिट पूर्णांक पूर्णांक तर्क के रूप में। जब हेक्स अंकों की एक स्ट्रिंग दी जाती है, घुंघराले ब्रेसिज़, हाइफ़न, और एक URN उपसर्ग सभी वैकल्पिक होते हैं। उदाहरण के लिए, ये अभिव्यक्तियाँ सभी को एक ही UUID प्रदान करती हैं:

UUID('{12345678-1234-5678-1234-567812345678}')
UUID('12345678123456781234567812345678')
UUID('urn:uuid:12345678-1234-5678-1234-567812345678')
UUID(bytes=b'\x12\x34\x56\x78'*4)
UUID(bytes_le=b'\x78\x56\x34\x12\x34\x12\x78\x56' +
              b'\x12\x34\x56\x78\x12\x34\x56\x78')
UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678))
UUID(int=0x12345678123456781234567812345678)

बिल्कुल हेक्स , बाइट्स , बाइट्स_ले , फ़ील्ड्स या इंट में से एक दिया जाना चाहिए। संस्करण तर्क वैकल्पिक है; यदि दिया जाता है, तो परिणामी UUID में RFC 4122 के अनुसार इसका वैरिएंट और वर्जन नंबर सेट होगा, जो दिए गए हेक्स , बाइट्स , बाइट्स_ले , फ़ील्ड्स , या इंट में बिट्स को ओवरराइड करता है।

UUID वस्तुओं की तुलना उनके UUID.int विशेषताओं की तुलना के माध्यम से की UUID.int है। एक गैर-यूयूआईडी ऑब्जेक्ट के साथ तुलना एक TypeError उठाती है।

str(uuid) 12345678-1234-5678-1234-567812345678 के रूप में एक स्ट्रिंग लौटाता है जहां 32 हेक्साडेसिमल अंक UUID का प्रतिनिधित्व करते हैं।

UUID उदाहरणों में ये केवल-पढ़ने के लिए गुण होते हैं:

UUID.bytes

UUID 16-बाइट स्ट्रिंग के रूप में (बड़े-एंडियन बाइट क्रम में छह पूर्णांक फ़ील्ड वाले)।

UUID.bytes_le

UUID 16-बाइट स्ट्रिंग के रूप में ( time_low , time_mid , और time_hi_version थोड़ा-एंडियन बाइट क्रम में)।

UUID.fields

यूयूआईडी के छह पूर्णांक फ़ील्ड का एक टपल, जो छह व्यक्तिगत विशेषताओं और दो व्युत्पन्न विशेषताओं के रूप में भी उपलब्ध है:

खेत अर्थ
time_low UUID के पहले 32 बिट्स
time_mid UUID के अगले 16 बिट्स
time_hi_version UUID के अगले 16 बिट्स
clock_seq_hi_variant UUID के अगले 8 बिट्स
clock_seq_low UUID के अगले 8 बिट्स
node UUID के अंतिम 48 बिट्स
time 60-बिट टाइमस्टैम्प
clock_seq 14-बिट अनुक्रम संख्या
UUID.hex

यूयूआईडी एक 32-चरित्र हेक्साडेसिमल स्ट्रिंग के रूप में।

UUID.int

128-बिट पूर्णांक के रूप में UUID।

UUID.urn

UFC के रूप में UFC RFC 4122 में निर्दिष्ट है।

UUID.variant

यूयूआईडी संस्करण, जो यूयूआईडी के आंतरिक लेआउट को निर्धारित करता है। यह स्थिरांक RESERVED_NCS , RFC_4122 , RESERVED_MICROSOFT , या RESERVED_FUTURE

UUID.version

UUID संस्करण संख्या (5 के माध्यम से 1, सार्थक तभी है जब वेरिएंट RFC_4122 )।

UUID.is_safe

SafeUUID गणना जो इंगित करती है कि क्या प्लेटफॉर्म ने UUID को मल्टीप्रोसेसिंग-सुरक्षित तरीके से उत्पन्न किया है।

संस्करण 3.7 में नया।

uuid मॉड्यूल निम्नलिखित कार्यों को परिभाषित करता है:

uuid.getnode()

48-बिट पॉजिटिव पूर्णांक के रूप में हार्डवेयर पता प्राप्त करें। पहली बार जब यह चलता है, तो यह एक अलग कार्यक्रम शुरू कर सकता है, जो काफी धीमा हो सकता है। यदि हार्डवेयर पता प्राप्त करने के सभी प्रयास विफल हो जाते हैं, तो हम RFC 4122 में अनुशंसित 1 के रूप में सेट किए गए मल्टीकास्ट बिट (पहले ऑक्टेट का कम से कम महत्वपूर्ण बिट) के साथ एक यादृच्छिक 48-बिट संख्या चुनते हैं। "हार्डवेयर एड्रेस" का अर्थ है नेटवर्क इंटरफेस का मैक एड्रेस। कई नेटवर्क इंटरफेस वाली एक मशीन पर, सार्वभौमिक रूप से प्रशासित मैक पते (यानी जहां पहले ऑक्टेट का दूसरा कम से कम महत्वपूर्ण बिट परेशान है) को स्थानीय रूप से प्रशासित मैक पते पर पसंद किया जाएगा, लेकिन कोई अन्य ऑर्डर गारंटी के साथ नहीं।

संस्करण 3.7 में बदल गया: स्थानीय रूप से प्रशासित मैक पते स्थानीय रूप से प्रशासित मैक पते पर पसंद किए जाते हैं, क्योंकि पूर्व को विश्व स्तर पर अद्वितीय होने की गारंटी है, जबकि बाद वाले नहीं हैं।

uuid.uuid1(node=None, clock_seq=None)

एक होस्ट आईडी, अनुक्रम संख्या और वर्तमान समय से एक UUID उत्पन्न करें। यदि नोड नहीं दिया गया है, तो हार्डवेयर पता प्राप्त करने के लिए getnode() का उपयोग किया जाता है। यदि घड़ी_सेक दिया जाता है, तो इसका उपयोग अनुक्रम संख्या के रूप में किया जाता है; अन्यथा एक यादृच्छिक 14-बिट अनुक्रम संख्या चुना जाता है।

uuid.uuid3(namespace, name)

एक नामस्थान पहचानकर्ता (जो एक यूयूआईडी है) के एमडी 5 हैश और एक नाम (जो एक स्ट्रिंग है) के आधार पर एक यूयूआईडी बनाएं।

uuid.uuid4()

एक यादृच्छिक UUID उत्पन्न करें।

uuid.uuid5(namespace, name)

एक नामस्थान पहचानकर्ता (जो एक यूयूआईडी है) और एक नाम (जो एक स्ट्रिंग है) के SHA-1 हैश के आधार पर एक यूयूआईडी बनाएं।

uuid3() मॉड्यूल uuid3() या uuid5() साथ उपयोग के लिए निम्नलिखित नामस्थान पहचानकर्ताओं को परिभाषित करता है।

uuid.NAMESPACE_DNS

जब यह नाम स्थान निर्दिष्ट किया जाता है, तो नाम स्ट्रिंग पूरी तरह से योग्य डोमेन नाम है।

uuid.NAMESPACE_URL

जब यह नाम स्थान निर्दिष्ट किया जाता है, तो नाम स्ट्रिंग एक URL है।

uuid.NAMESPACE_OID

जब यह नाम स्थान निर्दिष्ट किया जाता है, तो नाम स्ट्रिंग ISO OID है।

uuid.NAMESPACE_X500

जब यह नाम स्थान निर्दिष्ट किया जाता है, तो नाम स्ट्रिंग डीईआर में एक एक्स 500 डीएन या एक पाठ आउटपुट प्रारूप है।

uuid मॉड्यूल variant विशेषता के संभावित मूल्यों के लिए निम्नलिखित स्थिरांक को परिभाषित करता है:

uuid.RESERVED_NCS

एनसीएस अनुकूलता के लिए आरक्षित।

uuid.RFC_4122

RFC 4122 में दिए गए UUID लेआउट को निर्दिष्ट करता है।

uuid.RESERVED_MICROSOFT

Microsoft संगतता के लिए आरक्षित।

uuid.RESERVED_FUTURE

भविष्य की परिभाषा के लिए आरक्षित।

यह भी देखें

RFC 4122 - एक यूनिवर्सली यूनिक IDentifier (UUID) URN Namespace
यह विनिर्देश UUIDs के लिए एक समान संसाधन नाम नामस्थान, UUIDs के आंतरिक प्रारूप और UUIDs बनाने के तरीकों को परिभाषित करता है।

उदाहरण

यहाँ uuid मॉड्यूल के विशिष्ट उपयोग के कुछ उदाहरण दिए गए हैं:

>>> 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
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')