MeridianMERIDIAN

Calendar Version

technology.development.calver

Calendar 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

ValueAs VARCHARdaymonthyear
2024.02.092024.02.09922024
2023.12.312023.12.3131122023
2024.01.15.12024.01.15.11512024

Shape

Pattern
^[0-9]{4}\.[0-9]{2}(?:\.[0-9]{2})?(?:\..*)?$
ValueLengthShape
2024.02.0910matches
2023.12.3110matches
2024.01.15.112matches
2024-02.0910rejected: separator swapped

Told apart

1 of the 2 other development types accept every one of these samples on shape alone.

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]

Detection notes

v1 migration: Was development.calver. Decompose extracts year, month, day. Format: YYYY.MM or YYYY.MM.DD.

Use it

CLI · DuckDB
$ finetype infer -i "2024.02.09" --mode column
→ technology.development.calver

SELECT ft_infer('2024.02.09');
-- → 'technology.development.calver'
Cast expression
CAST({col} AS VARCHAR)

Schema

https://meridian.online/schemas/technology.development.calver · Frictionless type string

finetype taxonomy technology.development.calver -o json-schema

Type Registry