Changelog¶
Versions follow Semantic Versioning
3.1.0 - 2025-08-18¶
Changed¶
Fixed¶
3.0.0 - 2024-10-11¶
Changed¶
Raise
TypeErrorinstead ofValueErrorif constructor is called with value of wrong type.Update
rufflinter rules and switch tohatch fmt.
Added¶
Added
ULID.parse()-method, which allows to create aULID-instance from an arbitrary supported input value. @perrotuerto.
Fixed¶
Documentation bug in the example of
ULID.milliseconds()@tsugumi-sys.
2.7.0 - 2024-06-17¶
Changed¶
Ensure that the validation of ULID’s timestamp component aligns more closely with the ULID specification.
2.6.0 - 2024-05-26¶
Changed¶
Use stricter validation when a
ULIDvalue from user input. When usingULID.from_str()we will check if the characters match the base32 alphabet. In general, it is ensured that the timestamp part of the ULID is not out of range.
2.5.0 - 2024-04-26¶
Changed¶
Generate a more accurate JSON schema with Pydantic’s
BaseModel.model_json_schema(). This includes a specification for string and byte representations.
2.4.0 - 2024-04-02¶
Added¶
ULIDobjects are now properly serialized when used as Pydantic types @Avihais12344.
2.3.0 - 2024-03-21¶
Added¶
ULIDobjects can now be converted to bytes withbytes(ulid).The Pydantic v2 protocol is now supported, so that the
ULIDclass can be directly used as type annotations in Pydantic models
Changed¶
The type annotations have been adapted, so that the classmethod constructors properly reflect the type for
ULIDsubclasses. Thanks to @johnpaulett
2.2.0 - 2023-09-21¶
Added¶
Added a new flag
--uuid4to the CLIshowcommand, that converts the providedULIDinto an RFC 4122 compliantUUID.The
ulid buildcommand allows the use of the special value-for all options to read its inputs fromstdin. E.g.$ date --iso-8601 | python -m ulid build --from-datetime - 01HAT9PVR02T3S13XB48S7GEHE
2.1.0 - 2023-09-21¶
Added¶
The new method
ULID.to_uuid4()can be used to create an RFC 4122 compliantUUIDfrom an existingULID.
Changed¶
The
validate_types-decorator that is used for allULID.from_*-methods to check type correctness at runtime has now better support for type hints. Thanks to @johnpaulett
2.0.0 - 2023-09-20¶
Added¶
New command line interface to easily generate and inspect ULIDs from the terminal
$ ulid build 01HASJFZZ862S826DA2NJK4WMT $ ulid show 01HASJFZZ862S826DA2NJK4WMT ULID: 01HASJFZZ862S826DA2NJK4WMT Hex: 018ab327ffe830b28119aa156532729a Int: 2049398682679492051963931130707735194 Timestamp: 1695222857.704 Datetime: 2023-09-20 15:14:17.704000+00:00
The CLI can also be invoked as a module
python -m ulid. For more information seeulid --help.Added support for Python 3.11.
Changed¶
Dropped support for Python 3.7 and 3.8.
1.1.0 - 2022-03-10¶
Added¶
Added support for Python 3.10.
Added
__version__variable to package.
1.0.3 - 2021-07-14¶
Added¶
Enable tool based type checking as described in PEP-0561 by adding the
py.typedmarker.
Changed¶
Use GitHub actions instead of Travis.
1.0.0 - 2020-04-30¶
Added¶
Added type annotations
Added the named constructors
ULID.from_datetime(),ULID.from_timestamp()andULID.from_hex().
Changed¶
Dropped support for Python 2. Only Python 3.6+ is supported.
The named constructor
ULID.newhas been removed. Use one of the specifc named constructors instead. For a newULIDcreated from the current timestamp use the standard constructor.# old ulid = ULID.new() ulid = ULID.new(time.time()) ulid = ULID.new(datetime.now()) # new ulid = ULID() ulid = ULID.from_timestamp(time.time()) ulid = ULID.from_datetime(datetime.now())
The
ULID.strandULID.intmethods have been removed in favour of the more Pythonic special dunder-methods. Usestr(ulid)andint(ulid)instead.Added the property
ULID.hex()that returns a hex representation of theULID.>>> ULID().hex '0171caa5459a8631a6894d072c8550a8'
Equality checks and ordering now also work with
str-instances.The package now has no external dependencies.
The test-coverage has been raised to 100%.