Calendar Version
technology.development.calverCalendar versioning (CalVer) following date-based patterns like YYYY.MM.DD or YYYY.MM. Used by projects that version based on release calendar.
Worked samples
DuckDB 1.5.5 · finetype 0.6.64
| Value | As VARCHAR | day | month | year |
|---|---|---|---|---|
| 2024.02.09 | 2024.02.09 | 9 | 2 | 2024 |
| 2023.12.31 | 2023.12.31 | 31 | 12 | 2023 |
| 2024.01.15.1 | 2024.01.15.1 | 15 | 1 | 2024 |
Shape
^[0-9]{4}\.[0-9]{2}(?:\.[0-9]{2})?(?:\..*)?$| Value | Length | Shape |
|---|---|---|
| 2024.02.09 | 10 | matches |
| 2023.12.31 | 10 | matches |
| 2024.01.15.1 | 12 | matches |
| 2024-02.09 | 10 | rejected: separator swapped |
Told apart
1 of the 2 other development types accept every one of these samples on shape alone.
- Docker/OCI Image Referencematches them by pattern
Background
Origin
Calendar versioning had a long history before CalVer itself was first publicly released in 2016, by Mahmoud Hashemi.[1] The calver.org spec does not declare a single scheme to be CalVer, recognising instead that projects have found more than one useful way to use dates in their versions.[2]
CalVer's terminology writes the full year as YYYY, the zero-padded month as 0M and the zero-padded day as 0D.[2] The CalVer spec assumes the Gregorian calendar and the convention of UTC.[2]
Use
On calver.org, YYYY.0M.0D[.MICRO] describes a date version that sometimes carries a fourth number, as yt-dlp's does.[2] According to calver.org, youtube-dl pioneered the scheme of a full date with a micro segment appended when a same-day fix is needed.[2] calver.org advises appending an incrementing micro segment when a project makes more than one release in a day.[2]
CalVer deliberately does not attempt to communicate breaking changes.[2]
PEP 440 permits date based release segments in Python version identifiers.[3] PEP 440 notes that if a project using date based versions like 2014.04 switched to semantic versions like 1.0, the new releases would be identified as older under the normal sorting scheme.[3] PEP 440 adds version epochs so that a project previously using date based versioning can switch to semantic versioning.[3]
Sources
- [1]About — CalVersecondary source
- [2]Calendar Versioning — CalVersecondary source
- [3]PEP 440 – Version Identification and Dependency Specificationstandard
Detection notes
v1 migration: Was development.calver. Decompose extracts year, month, day. Format: YYYY.MM or YYYY.MM.DD.
Use it
$ finetype infer -i "2024.02.09" --mode column
→ technology.development.calver
SELECT ft_infer('2024.02.09');
-- → 'technology.development.calver'CAST({col} AS VARCHAR)Schema
https://meridian.online/schemas/technology.development.calver · Frictionless type string
finetype taxonomy technology.development.calver -o json-schema