All Versions
13
Latest Version
Avg Release Cycle
161 days
Latest Release
299 days ago

Changelog History
Page 1

  • v3.1.0 Changes

    August 18, 2025

    🔄 Changed

    • ➕ Added Python 3.13 to the trove classifiers.
    • Optimze @property to @cached_property @WH-2099
    • When generating ULIDs within the same millisecond, the library will ensure monotonic sort order by incrementing the randomness component by 1 bit. This process is described in the spec.

    🛠 Fixed

    • Sharpen regular expression for Pydantic @aplhk.
    • 🛠 Fix Sphinx warnings when referencing ULID from an external project. @BoboTiG .
  • v3.0.0 Changes

    October 11, 2024

    🔄 Changed

    • Raise TypeError instead of ValueError if constructor is called with value of wrong type.
    • ⚡️ Update ruff linter rules and switch to hatch fmt.

    ➕ Added

    🛠 Fixed

  • v2.7.0 Changes

    October 11, 2024

    🔄 Changed

    • Ensure that the validation of ULID's timestamp component aligns more closely with the ULID specification. #27 @somnam
  • v2.6.0 Changes

    May 25, 2024

    🔄 Changed

    • ✅ Use stricter validation when a ULID value from user input. When using ULID.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.
  • v2.5.0 Changes

    May 25, 2024

    🔄 Changed

    • Generate a more accurate JSON schema with Pydantic’s BaseModel.model_json_schema(). This includes a specification for string and byte representations.
  • v2.4.0 Changes

    April 02, 2024

    ➕ Added

    Internal

  • v2.3.0 Changes

    March 21, 2024

    ➕ Added

    • ULID objects can now be converted to bytes with bytes(ulid).
    • ✅ The Pydantic v2 protocol is now supported, so that the ULID class 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 ULID subclasses. Thanks to @johnpaulett #9
    • 🐎 Use time.time_ns() when generating ULIDs for improved performance #16 #12
  • v2.2.0 Changes

    September 21, 2023

    ➕ Added

    • ➕ Added a new flag --uuid4 to the CLI show command, that converts the provided ULID
      into an RFC 4122 compliant UUID.
    • 🏗 The ulid build command allows the use of the special value - for all options to read its
      inputs from stdin. E.g.

      $ date --iso-8601|python -m ulid build --from-datetime - 01HAT9PVR02T3S13XB48S7GEHE

  • v2.1.0 Changes

    September 21, 2023

    ➕ Added

    • The new method ULID.to_uuid4 can be used to create an RFC 4122 compliant UUID from
      an existing ULID #5.

    🔄 Changed

    • The validate_types-decorator that is used for all ULID.from_*-methods to check type
      👍 correctness at runtime has now better support for type hints.
      Thanks to @johnpaulett
  • v2.0.0 Changes

    September 20, 2023

    ➕ Added

    • 🆕 New command line interface to easily generate and inspect ULIDs from the terminal

    • 👉 Make ULID-instances hashable @bendykst #4 #3

    • ➕ Added support for Python 3.11.

    🔄 Changed

    • ⬇️ Dropped support for Python 3.7 and 3.8.