Versions follow Semantic Versioning
2.3.0 - 2023-09-21
- :class:`.ULID` objects can now be converted to bytes with
bytes(ulid)
. - The Pydantic v2 protocol is now supported, so that the :class:`.ULID` class can be directly used as type annotations in Pydantic models
- The type annotations have been adapted, so that the classmethod constructors properly reflect the type for :class:`.ULID` subclasses. Thanks to @johnpaulett
2.2.0 - 2023-09-21
Added a new flag
--uuid4
to the CLIshow
command, that converts the providedULID
into an RFC 4122 compliantUUID
.The ulid build command 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
- The new method :meth:`.ULID.to_uuid4` can be used to create an RFC 4122 compliant
UUID
from an existing :class:`.ULID`.
- 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
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
.Make :class:`.ULID`-instances hashable. Thanks to bendykst.
Added support for Python 3.11.
- Dropped support for Python 3.7 and 3.8.
1.1.0 - 2022-03-10
- Added support for Python 3.10.
- Added :attr:`__version__` variable to package.
1.0.3 - 2021-07-14
- Enable tool based type checking as described in PEP-0561 by adding the
py.typed
marker.
- Use GitHub actions instead of Travis.
1.0.0 - 2020-04-30
- Added type annotations
- Added the named constructors :meth:`.ULID.from_datetime`, :meth:`.ULID.from_timestamp` and :meth:`.ULID.from_hex`.
Dropped support for Python 2. Only Python 3.6+ is supported.
The named constructor :meth:`.ULID.new` has been removed. Use one of the specifc named constructors instead. For a new :class:`.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 :meth:`.ULID.str` and :meth:`.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 :meth:`.ULID.hex` that returns a hex representation of the :class:`.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%.