René's URL Explorer Experiment


Title: [RFE] `fields` and `time_*` properties must not be used on UUIDs that are time-agnostic. · Issue #120878 · python/cpython · GitHub

Open Graph Title: [RFE] `fields` and `time_*` properties must not be used on UUIDs that are time-agnostic. · Issue #120878 · python/cpython

X Title: [RFE] `fields` and `time_*` properties must not be used on UUIDs that are time-agnostic. · Issue #120878 · python/cpython

Description: Currently, the uuid.UUID class features a fields argument and property which is a six-tuple of 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, and 48-bit node. Currentl...

Open Graph Description: Currently, the uuid.UUID class features a fields argument and property which is a six-tuple of integers: 32-bit time_low, 16-bit time_mid, 16-bit time_hi_version, 8-bit clock_seq_hi_variant, 8-bit ...

X Description: Currently, the uuid.UUID class features a fields argument and property which is a six-tuple of integers: 32-bit time_low, 16-bit time_mid, 16-bit time_hi_version, 8-bit clock_seq_hi_variant, 8-bit ...

Opengraph URL: https://github.com/python/cpython/issues/120878

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[RFE] `fields` and `time_*` properties must not be used on UUIDs that are time-agnostic.","articleBody":"Currently, the `uuid.UUID` class features a `fields` argument and property which is a six-tuple of integers:\r\n\r\n- 32-bit `time_low`,\r\n- 16-bit `time_mid`,\r\n- 16-bit `time_hi_version`,\r\n- 8-bit `clock_seq_hi_variant`,\r\n- 8-bit `clock_seq_low`, \r\n- and 48-bit `node`.\r\n\r\nCurrently, those fields are only relevant when the UUID version is 1 since UUIDv3 and UUIDv5 are based on MD5 and SHA-1 respectively instead. However, the recent RFC 9562, superseeding RFC 4122, introduces one time-based UUID, namely UUIDv6 (basde on UNIX epoch instead of Gregorian epoch, and with timestamp bits ordered differently), as well as UUIDv7 and UUIDv8 that are implementation details.\r\n\r\nHere is what we can do for now:\r\n\r\n- For version 7, we can have:\r\n  - a cryptographically secure 74-bit chunk split into a 12 and 62-bit chunks, or\r\n  - a monotonous UUID with 12-bit sub-milliseconds precision chunk.\r\n- For version 8, we can have:\r\n  - a [time-based UUID with 10-ns precision](https://www.rfc-editor.org/rfc/rfc9562#name-example-of-a-uuidv8-value-t) with a 60-bit timestamp and 62 bits of random data, or\r\n  - a [name-based UUID](https://www.rfc-editor.org/rfc/rfc9562#name-example-of-a-uuidv8-value-n) which uses secure hashing algorithms such as SHA256/SHA-3/SHAKE-256 (see [here](https://www.rfc-editor.org/rfc/rfc9562#v8sha256) for an example of SHA256-based UUIDv8), or\r\n  - a *non*-cryptographically 122-bit chunk split into chunks of 48, 12 and 62-bit independent chunks. Those chunks can also be supplied by the user if they want cryptographically secure values (although I would suggest generating a UUIDv4 and change the version and variant bits manually).\r\n\r\nWith the addition of those variants, we at least have one UUID distinct from UUIDv1 featuring time-related fields. In particular, it is important to decide whether `fields[0]` is the first RFC field in the UUID *or* if this is always the first 32-bit fields. I personally think that we should say that *fields* represents the RFC fields, namely, `fields[0]` is a 32-bit integer corresponding to the 32 **LSB** (resp. **MSB**) of the 60-bit timestamp for UUIDv1 (resp. UUIDv6).\r\n\r\nFor UUIDv7, if we choose sub-ms precision, then the fields are a bit different in the sense that we now have `unix_ts_ms (48) | ver (4) | subsec_a (12) | var (2) | counter (62)`, so we should decide how to split those fields into 6 and whether it make sense to have the corresponding properties. A similar question arises for UUIDv8.\r\n\r\nWhile we could change the semantics of the fields and `time_*` properties, this could break applications that assume that `fields` are independent of the time (my understanding of *fields* is that it is independent of the time or the RFC and is only a way to partition the UUID's integral value into *32+16+16+8+8+48* bits, but such partitioning is only relevant for UUIDv1). \r\n\r\nTherefore, I really don't know how to deal with those time-based properties. I'd like to avoid breaking longstanding applications but at the same time I don't want a property to incorrectly reflect its value. If we don't change anything, `uuidv6.time_low` would actually return the 32 highest bits...\r\n\r\nEDIT: Should this actually be a PEP? because UUIDv7 and UUIDv8 are implementation-detail so maybe a PEP might be a good idea?\r\n\r\n---\r\n\r\n* #89083 \r\n* #120650\r\n* #121119\r\n","author":{"url":"https://github.com/picnixz","@type":"Person","name":"picnixz"},"datePublished":"2024-06-22T12:10:42.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":7},"url":"https://github.com/120878/cpython/issues/120878"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:5fbcdd31-f2ec-3edf-eac9-640dc50f1eba
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idDBAC:327857:166FFAC:1EDB354:696A9B34
html-safe-nonced58259c847b4d0ed295c9c1fed1a6aed23d03c739c312c279c34ae4c03741766
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEQkFDOjMyNzg1NzoxNjZGRkFDOjFFREIzNTQ6Njk2QTlCMzQiLCJ2aXNpdG9yX2lkIjoiNTM1OTc1MjEzNDk3NjUxMDc3MiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac1eb42c8d86c4558a1f0f5efd1c4428ab8e8ffd7ce828473caa0d2065ec221c8d
hovercard-subject-tagissue:2367784602
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/120878/issue_layout
twitter:imagehttps://opengraph.githubassets.com/8ac3c6f78c4b88219c221eb97deb5db6678eef98b94679ea8a690243e1109076/python/cpython/issues/120878
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/8ac3c6f78c4b88219c221eb97deb5db6678eef98b94679ea8a690243e1109076/python/cpython/issues/120878
og:image:altCurrently, the uuid.UUID class features a fields argument and property which is a six-tuple of integers: 32-bit time_low, 16-bit time_mid, 16-bit time_hi_version, 8-bit clock_seq_hi_variant, 8-bit ...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamepicnixz
hostnamegithub.com
expected-hostnamegithub.com
Nonec0d8175e41e0e55b9e984c935b24b808cabab919dd3174aa45dac3ef503ed1af
turbo-cache-controlno-preview
go-importgithub.com/python/cpython git https://github.com/python/cpython.git
octolytics-dimension-user_id1525981
octolytics-dimension-user_loginpython
octolytics-dimension-repository_id81598961
octolytics-dimension-repository_nwopython/cpython
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id81598961
octolytics-dimension-repository_network_root_nwopython/cpython
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release99aab454e5ddc8df30805fb76c114c3008a15842
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python/cpython/issues/120878#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fissues%2F120878
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fissues%2F120878
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=python%2Fcpython
Reloadhttps://github.com/python/cpython/issues/120878
Reloadhttps://github.com/python/cpython/issues/120878
Reloadhttps://github.com/python/cpython/issues/120878
python https://github.com/python
cpythonhttps://github.com/python/cpython
Please reload this pagehttps://github.com/python/cpython/issues/120878
Notifications https://github.com/login?return_to=%2Fpython%2Fcpython
Fork 33.9k https://github.com/login?return_to=%2Fpython%2Fcpython
Star 71.1k https://github.com/login?return_to=%2Fpython%2Fcpython
Code https://github.com/python/cpython
Issues 5k+ https://github.com/python/cpython/issues
Pull requests 2.1k https://github.com/python/cpython/pulls
Actions https://github.com/python/cpython/actions
Projects 31 https://github.com/python/cpython/projects
Security Uh oh! There was an error while loading. Please reload this page. https://github.com/python/cpython/security
Please reload this pagehttps://github.com/python/cpython/issues/120878
Insights https://github.com/python/cpython/pulse
Code https://github.com/python/cpython
Issues https://github.com/python/cpython/issues
Pull requests https://github.com/python/cpython/pulls
Actions https://github.com/python/cpython/actions
Projects https://github.com/python/cpython/projects
Security https://github.com/python/cpython/security
Insights https://github.com/python/cpython/pulse
New issuehttps://github.com/login?return_to=https://github.com/python/cpython/issues/120878
New issuehttps://github.com/login?return_to=https://github.com/python/cpython/issues/120878
[RFE] fields and time_* properties must not be used on UUIDs that are time-agnostic.https://github.com/python/cpython/issues/120878#top
docsDocumentation in the Doc dirhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22docs%22
type-featureA feature request or enhancementhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22type-feature%22
https://github.com/picnixz
https://github.com/picnixz
picnixzhttps://github.com/picnixz
on Jun 22, 2024https://github.com/python/cpython/issues/120878#issue-2367784602
time-based UUID with 10-ns precisionhttps://www.rfc-editor.org/rfc/rfc9562#name-example-of-a-uuidv8-value-t
name-based UUIDhttps://www.rfc-editor.org/rfc/rfc9562#name-example-of-a-uuidv8-value-n
herehttps://www.rfc-editor.org/rfc/rfc9562#v8sha256
Support UUIDv6, UUIDv7, and UUIDv8 from RFC 9562 #89083https://github.com/python/cpython/issues/89083
gh-89083: add support for UUID version 6 (RFC 9562)  #120650https://github.com/python/cpython/pull/120650
gh-89083: add support for UUID version 7 (RFC 9562)  #121119https://github.com/python/cpython/pull/121119
docsDocumentation in the Doc dirhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22docs%22
type-featureA feature request or enhancementhttps://github.com/python/cpython/issues?q=state%3Aopen%20label%3A%22type-feature%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.