Changelog

Versions follow Semantic Versioning

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

  • ULID objects are now properly serialized when used as Pydantic types @Avihais12344.

2.3.0 - 2024-03-21

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

2.2.0 - 2023-09-21

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
    

2.1.0 - 2023-09-21

Added

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

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

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 see ulid --help.

  • Make ULID-instances hashable. Thanks to bendykst.

  • 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.typed marker.

Changed

  • Use GitHub actions instead of Travis.

1.0.0 - 2020-04-30

Added

Changed

  • Dropped support for Python 2. Only Python 3.6+ is supported.

  • The named constructor ULID.new() has been removed. Use one of the specifc named constructors instead. For a new ULID created 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.str() and ULID.int() methods have been removed in favour of the more Pythonic special dunder-methods. Use str(ulid) and int(ulid) instead.

  • Added the property ULID.hex() that returns a hex representation of the ULID.

    >>> 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%.