diff --git a/ulid/ulid.py b/ulid/ulid.py
index 0a81822..d96adbd 100644
--- a/ulid/ulid.py
+++ b/ulid/ulid.py
@@ -132,6 +132,12 @@ class MemoryView:
     def __str__(self) -> hints.Str:
         return self.str
 
+    def __getstate__(self) -> hints.Str:
+        return self.str
+
+    def __setstate__(self, state: hints.Str) -> None:
+        self.memory = memoryview(base32.decode(state))
+
     @property
     def bytes(self) -> hints.Bytes:
         """

deepcopy doesn't work on ULID object
Running into a cryptic error when trying to deepcopy a ULID object:

```
>>> import ulid
>>> a = ulid.new()
>>> a
<ULID('01EAZF1038723PE2SS9BXRQC80')>
>>> import copy
>>> copy.deepcopy(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/ashu/.pyenv/versions/3.8.2/lib/python3.8/copy.py", line 173, in deepcopy
    y = _reconstruct(x, memo, *rv)
  File "/Users/ashu/.pyenv/versions/3.8.2/lib/python3.8/copy.py", line 271, in _reconstruct
    state = deepcopy(state, memo)
  File "/Users/ashu/.pyenv/versions/3.8.2/lib/python3.8/copy.py", line 147, in deepcopy
    y = copier(x, memo)
  File "/Users/ashu/.pyenv/versions/3.8.2/lib/python3.8/copy.py", line 211, in _deepcopy_tuple
    y = [deepcopy(a, memo) for a in x]
  File "/Users/ashu/.pyenv/versions/3.8.2/lib/python3.8/copy.py", line 211, in <listcomp>
    y = [deepcopy(a, memo) for a in x]
  File "/Users/ashu/.pyenv/versions/3.8.2/lib/python3.8/copy.py", line 147, in deepcopy
    y = copier(x, memo)
  File "/Users/ashu/.pyenv/versions/3.8.2/lib/python3.8/copy.py", line 231, in _deepcopy_dict
    y[deepcopy(key, memo)] = deepcopy(value, memo)
  File "/Users/ashu/.pyenv/versions/3.8.2/lib/python3.8/copy.py", line 162, in deepcopy
    rv = reductor(4)
TypeError: cannot pickle 'memoryview' object
```

Any ideas?
diff --git a/tests/test_api.py b/tests/test_api.py
index c00f3dd..edd1bd6 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -40,7 +40,7 @@ def unsupported_type(request):
     return request.param
 
 
-@pytest.fixture('session', params=[bytes, bytearray, memoryview])
+@pytest.fixture(scope='session', params=[bytes, bytearray, memoryview])
 def buffer_type(request):
     """
     Fixture that yields types that support the buffer protocol.
diff --git a/tests/test_bugs.py b/tests/test_bugs.py
index 9cb67f7..a8d7077 100644
--- a/tests/test_bugs.py
+++ b/tests/test_bugs.py
@@ -4,6 +4,8 @@
 
     Tests for validating reported bugs have been fixed.
 """
+import copy
+
 import pytest
 
 from ulid import api
@@ -35,3 +37,13 @@ def test_github_issue_61():
     for s in ('01BX73KC0TNH409RTFD1uXKM00', '01BX73KC0TNH409RTFD1UXKM00'):
         with pytest.raises(ValueError):
             api.from_str(s)
+
+
+def test_github_issue_452():
+    """
+    Assert that :class:`~ulid.ulid.ULID` will not raise during a deepcopy.
+
+    Issue: https://github.com/ahawker/ulid/issues/452
+    """
+    result = copy.deepcopy(api.new())
+    assert result is not None
diff --git a/tests/test_ulid.py b/tests/test_ulid.py
index b487d2e..3c71585 100644
--- a/tests/test_ulid.py
+++ b/tests/test_ulid.py
@@ -4,8 +4,10 @@
 
     Tests for the :mod:`~ulid.ulid` module.
 """
+import copy
 import datetime
 import operator
+import pickle
 import time
 import uuid
 
@@ -259,7 +261,7 @@ def test_memoryview_supports_float(valid_bytes_128):
     assert float(mv) == mv.float
 
 
-def test_memoryview_defines_hash(valid_bytes_128):
+def test_memoryview_supports_hash(valid_bytes_128):
     """
     Assert that the `hash` representation of a :class:`~ulid.ulid.MemoryView` is equal to the
     hash result of the underlying :class:`~memoryview.`
@@ -268,6 +270,49 @@ def test_memoryview_defines_hash(valid_bytes_128):
     assert hash(mv) == hash(mv.memory)
 
 
+def test_memoryview_supports_getstate(valid_bytes_128):
+    """
+    Assert that the `__getstate__` representation of a :class:`~ulid.ulid.MemoryView` is equal to the
+    str result of the underlying :class:`~memoryview.`
+    """
+    mv = ulid.MemoryView(valid_bytes_128)
+    assert mv.__getstate__() == mv.str
+
+
+def test_memoryview_supports_pickle(valid_bytes_128):
+    """
+    Assert that instances of :class:`~ulid.ulid.MemoryView` can be pickled and use the
+    the str result of the underlying :class:`~memoryview.` as the serialized value.
+    """
+    mv = ulid.MemoryView(valid_bytes_128)
+    serialized = pickle.dumps(mv)
+    assert serialized is not None
+    assert isinstance(serialized, bytes)
+    deserialized = pickle.loads(serialized)
+    assert deserialized == mv.str
+
+
+def test_memoryview_supports_copy(valid_bytes_128):
+    """
+    Assert that instances of :class:`~ulid.ulid.MemoryView` can be copied using
+    :func:`~copy.copy`.
+    """
+    mv = ulid.MemoryView(valid_bytes_128)
+    copied = copy.copy(mv)
+    assert copied == mv
+
+
+def test_memoryview_supports_deepcopy(valid_bytes_128):
+    """
+    Assert that instances of :class:`~ulid.ulid.MemoryView` can be copied using
+    :func:`~copy.deepcopy`.
+    """
+    mv = ulid.MemoryView(valid_bytes_128)
+    data = dict(a=dict(b=dict(c=mv)))
+    copied = copy.deepcopy(data)
+    assert copied == data
+
+
 def test_timestamp_coverts_bytes_to_unix_time_seconds():
     """
     Assert that :meth:`~ulid.ulid.Timestamp.timestamp` returns the value in Unix time in seconds from epoch.

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-cov
apt-get update apt-get install -y gcc
3.7
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
certifi @ file:///croot/certifi_1671487769961/work/certifi
coverage==7.2.7
exceptiongroup==1.2.2
importlib-metadata==6.7.0
iniconfig==2.0.0
packaging==24.0
pluggy==1.2.0
pytest==7.4.4
pytest-cov==4.1.0
tomli==2.0.1
typing_extensions==4.7.1
-e git+https://github.com/ahawker/ulid.git@64db8e687fcb5faaf68c92dc5d8adef2b4b1bddd#egg=ulid_py
zipp==3.15.0

name: ulid
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - coverage==7.2.7
      - exceptiongroup==1.2.2
      - importlib-metadata==6.7.0
      - iniconfig==2.0.0
      - packaging==24.0
      - pluggy==1.2.0
      - pytest==7.4.4
      - pytest-cov==4.1.0
      - setuptools==47.1.1
      - tomli==2.0.1
      - typing-extensions==4.7.1
      - zipp==3.15.0
prefix: /opt/conda/envs/ulid

tests/test_bugs.py::test_github_issue_452 tests/test_ulid.py::test_memoryview_supports_getstate tests/test_ulid.py::test_memoryview_supports_pickle tests/test_ulid.py::test_memoryview_supports_deepcopy
tests/test_api.py::test_new_returns_ulid_instance tests/test_api.py::test_parse_returns_given_ulid_instance tests/test_api.py::test_parse_returns_ulid_instance_from_uuid tests/test_api.py::test_parse_returns_ulid_instance_from_uuid_str tests/test_api.py::test_parse_returns_ulid_instance_from_uuid_hex_str tests/test_api.py::test_parse_returns_ulid_instance_from_ulid_str tests/test_api.py::test_parse_returns_ulid_instance_from_randomness_str tests/test_api.py::test_parse_returns_ulid_instance_from_timestamp_str tests/test_api.py::test_parse_error_on_invalid_length_str[0] tests/test_api.py::test_parse_error_on_invalid_length_str[1] tests/test_api.py::test_parse_error_on_invalid_length_str[2] tests/test_api.py::test_parse_error_on_invalid_length_str[3] tests/test_api.py::test_parse_error_on_invalid_length_str[4] tests/test_api.py::test_parse_error_on_invalid_length_str[5] tests/test_api.py::test_parse_error_on_invalid_length_str[6] tests/test_api.py::test_parse_error_on_invalid_length_str[7] tests/test_api.py::test_parse_error_on_invalid_length_str[8] tests/test_api.py::test_parse_error_on_invalid_length_str[9] tests/test_api.py::test_parse_error_on_invalid_length_str[10] tests/test_api.py::test_parse_error_on_invalid_length_str[11] tests/test_api.py::test_parse_error_on_invalid_length_str[12] tests/test_api.py::test_parse_error_on_invalid_length_str[13] tests/test_api.py::test_parse_error_on_invalid_length_str[14] tests/test_api.py::test_parse_error_on_invalid_length_str[15] tests/test_api.py::test_parse_error_on_invalid_length_str[16] tests/test_api.py::test_parse_error_on_invalid_length_str[17] tests/test_api.py::test_parse_error_on_invalid_length_str[18] tests/test_api.py::test_parse_error_on_invalid_length_str[19] tests/test_api.py::test_parse_error_on_invalid_length_str[20] tests/test_api.py::test_parse_error_on_invalid_length_str[21] tests/test_api.py::test_parse_error_on_invalid_length_str[22] tests/test_api.py::test_parse_error_on_invalid_length_str[23] tests/test_api.py::test_parse_error_on_invalid_length_str[24] tests/test_api.py::test_parse_error_on_invalid_length_str[25] tests/test_api.py::test_parse_error_on_invalid_length_str[26] tests/test_api.py::test_parse_error_on_invalid_length_str[27] tests/test_api.py::test_parse_error_on_invalid_length_str[28] tests/test_api.py::test_parse_error_on_invalid_length_str[29] tests/test_api.py::test_parse_error_on_invalid_length_str[30] tests/test_api.py::test_parse_error_on_invalid_length_str[31] tests/test_api.py::test_parse_error_on_invalid_length_str[32] tests/test_api.py::test_parse_error_on_invalid_length_str[33] tests/test_api.py::test_parse_error_on_invalid_length_str[34] tests/test_api.py::test_parse_error_on_invalid_length_str[35] tests/test_api.py::test_parse_error_on_invalid_length_str[36] tests/test_api.py::test_parse_error_on_invalid_length_str[37] tests/test_api.py::test_parse_error_on_invalid_length_str[38] tests/test_api.py::test_parse_error_on_invalid_length_str[39] tests/test_api.py::test_parse_returns_ulid_instance_from_int tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[16] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[17] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[18] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[19] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[20] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[21] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[22] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[23] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[24] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[25] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[26] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[27] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[28] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[29] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[30] tests/test_api.py::test_parse_raises_when_int_greater_than_128_bits[31] tests/test_api.py::test_parse_raises_when_int_negative tests/test_api.py::test_parse_returns_ulid_instance_from_float tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[16] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[17] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[18] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[19] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[20] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[21] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[22] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[23] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[24] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[25] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[26] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[27] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[28] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[29] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[30] tests/test_api.py::test_parse_raises_when_float_greater_than_128_bits[31] tests/test_api.py::test_parse_raises_when_float_negative tests/test_api.py::test_parse_returns_ulid_instance_from_buffer_type[bytes] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-0] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-1] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-2] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-3] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-4] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-5] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-6] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-7] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-8] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-9] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-10] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-11] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-12] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-13] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-14] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-15] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-16] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-17] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-18] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-19] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-20] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-21] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-22] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-23] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-24] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-25] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-26] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-27] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-28] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-29] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-30] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytes-31] tests/test_api.py::test_from_bytes_returns_ulid_instance[bytes] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-0] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-1] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-2] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-3] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-4] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-5] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-6] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-7] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-8] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-9] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-10] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-11] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-12] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-13] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-14] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-15] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-16] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-17] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-18] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-19] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-20] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-21] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-22] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-23] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-24] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-25] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-26] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-27] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-28] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-29] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-30] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytes-31] tests/test_api.py::test_from_timestamp_bytes_returns_ulid_instance[bytes] tests/test_api.py::test_from_randomness_bytes_returns_ulid_instance[bytes] tests/test_api.py::test_parse_returns_ulid_instance_from_buffer_type[bytearray] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-0] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-1] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-2] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-3] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-4] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-5] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-6] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-7] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-8] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-9] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-10] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-11] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-12] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-13] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-14] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-15] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-16] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-17] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-18] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-19] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-20] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-21] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-22] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-23] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-24] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-25] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-26] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-27] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-28] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-29] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-30] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[bytearray-31] tests/test_api.py::test_from_bytes_returns_ulid_instance[bytearray] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-0] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-1] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-2] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-3] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-4] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-5] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-6] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-7] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-8] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-9] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-10] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-11] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-12] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-13] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-14] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-15] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-16] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-17] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-18] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-19] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-20] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-21] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-22] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-23] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-24] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-25] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-26] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-27] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-28] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-29] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-30] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[bytearray-31] tests/test_api.py::test_from_timestamp_bytes_returns_ulid_instance[bytearray] tests/test_api.py::test_from_randomness_bytes_returns_ulid_instance[bytearray] tests/test_api.py::test_parse_returns_ulid_instance_from_buffer_type[memoryview] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-0] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-1] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-2] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-3] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-4] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-5] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-6] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-7] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-8] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-9] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-10] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-11] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-12] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-13] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-14] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-15] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-16] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-17] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-18] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-19] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-20] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-21] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-22] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-23] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-24] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-25] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-26] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-27] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-28] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-29] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-30] tests/test_api.py::test_parse_raises_when_buffer_type_not_128_bits[memoryview-31] tests/test_api.py::test_from_bytes_returns_ulid_instance[memoryview] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-0] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-1] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-2] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-3] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-4] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-5] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-6] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-7] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-8] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-9] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-10] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-11] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-12] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-13] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-14] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-15] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-16] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-17] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-18] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-19] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-20] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-21] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-22] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-23] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-24] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-25] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-26] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-27] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-28] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-29] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-30] tests/test_api.py::test_from_bytes_raises_when_not_128_bits[memoryview-31] tests/test_api.py::test_from_timestamp_bytes_returns_ulid_instance[memoryview] tests/test_api.py::test_from_randomness_bytes_returns_ulid_instance[memoryview] tests/test_api.py::test_parse_raises_when_given_unsupported_type[list] tests/test_api.py::test_from_timestamp_with_unsupported_type_raises[list] tests/test_api.py::test_from_randomness_with_unsupported_type_raises[list] tests/test_api.py::test_parse_raises_when_given_unsupported_type[dict] tests/test_api.py::test_from_timestamp_with_unsupported_type_raises[dict] tests/test_api.py::test_from_randomness_with_unsupported_type_raises[dict] tests/test_api.py::test_parse_raises_when_given_unsupported_type[set] tests/test_api.py::test_from_timestamp_with_unsupported_type_raises[set] tests/test_api.py::test_from_randomness_with_unsupported_type_raises[set] tests/test_api.py::test_parse_raises_when_given_unsupported_type[tuple] tests/test_api.py::test_from_timestamp_with_unsupported_type_raises[tuple] tests/test_api.py::test_from_randomness_with_unsupported_type_raises[tuple] tests/test_api.py::test_parse_raises_when_given_unsupported_type[NoneType] tests/test_api.py::test_from_timestamp_with_unsupported_type_raises[NoneType] tests/test_api.py::test_from_randomness_with_unsupported_type_raises[NoneType] tests/test_api.py::test_from_int_returns_ulid_instance tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[16] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[17] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[18] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[19] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[20] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[21] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[22] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[23] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[24] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[25] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[26] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[27] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[28] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[29] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[30] tests/test_api.py::test_from_int_raises_when_greater_than_128_bits[31] tests/test_api.py::test_from_int_raises_when_negative_number tests/test_api.py::test_from_str_returns_ulid_instance tests/test_api.py::test_from_str_raises_when_not_128_bits tests/test_api.py::test_from_uuid_returns_ulid_instance tests/test_api.py::test_from_timestamp_datetime_returns_ulid_instance tests/test_api.py::test_from_timestamp_int_returns_ulid_instance tests/test_api.py::test_from_timestamp_float_returns_ulid_instance tests/test_api.py::test_from_timestamp_str_returns_ulid_instance tests/test_api.py::test_from_timestamp_timestamp_returns_ulid_instance tests/test_api.py::test_from_timestamp_ulid_returns_ulid_instance tests/test_api.py::test_from_timestamp_with_incorrect_size_bytes_raises tests/test_api.py::test_from_randomness_int_returns_ulid_instance tests/test_api.py::test_from_randomness_float_returns_ulid_instance tests/test_api.py::test_from_randomness_str_returns_ulid_instance tests/test_api.py::test_from_randomness_randomness_returns_ulid_instance tests/test_api.py::test_from_randomness_ulid_returns_ulid_instance tests/test_api.py::test_from_randomness_with_incorrect_size_bytes_raises tests/test_bugs.py::test_github_issue_58 tests/test_bugs.py::test_github_issue_61 tests/test_ulid.py::test_model_supports_eq_with_expected_types[MemoryView] tests/test_ulid.py::test_model_supports_ne_with_expected_types[MemoryView] tests/test_ulid.py::test_model_supports_lt_with_expected_types[MemoryView] tests/test_ulid.py::test_model_supports_gt_with_expected_types[MemoryView] tests/test_ulid.py::test_model_supports_le_with_expected_types[MemoryView] tests/test_ulid.py::test_model_supports_ge_with_expected_types[MemoryView] tests/test_ulid.py::test_model_supports_eq_with_expected_types[Timestamp] tests/test_ulid.py::test_model_supports_ne_with_expected_types[Timestamp] tests/test_ulid.py::test_model_supports_lt_with_expected_types[Timestamp] tests/test_ulid.py::test_model_supports_gt_with_expected_types[Timestamp] tests/test_ulid.py::test_model_supports_le_with_expected_types[Timestamp] tests/test_ulid.py::test_model_supports_ge_with_expected_types[Timestamp] tests/test_ulid.py::test_model_supports_eq_with_expected_types[Randomness] tests/test_ulid.py::test_model_supports_ne_with_expected_types[Randomness] tests/test_ulid.py::test_model_supports_lt_with_expected_types[Randomness] tests/test_ulid.py::test_model_supports_gt_with_expected_types[Randomness] tests/test_ulid.py::test_model_supports_le_with_expected_types[Randomness] tests/test_ulid.py::test_model_supports_ge_with_expected_types[Randomness] tests/test_ulid.py::test_model_supports_eq_with_expected_types[ULID] tests/test_ulid.py::test_model_supports_ne_with_expected_types[ULID] tests/test_ulid.py::test_model_supports_lt_with_expected_types[ULID] tests/test_ulid.py::test_model_supports_gt_with_expected_types[ULID] tests/test_ulid.py::test_model_supports_le_with_expected_types[ULID] tests/test_ulid.py::test_model_supports_ge_with_expected_types[ULID] tests/test_ulid.py::test_memoryview_eq_false_with_unsupported_type[list] tests/test_ulid.py::test_memoryview_ne_false_with_unsupported_type[list] tests/test_ulid.py::test_memoryview_unorderble_with_unsupported_type[list] tests/test_ulid.py::test_memoryview_eq_false_with_unsupported_type[dict] tests/test_ulid.py::test_memoryview_ne_false_with_unsupported_type[dict] tests/test_ulid.py::test_memoryview_unorderble_with_unsupported_type[dict] tests/test_ulid.py::test_memoryview_eq_false_with_unsupported_type[set] tests/test_ulid.py::test_memoryview_ne_false_with_unsupported_type[set] tests/test_ulid.py::test_memoryview_unorderble_with_unsupported_type[set] tests/test_ulid.py::test_memoryview_eq_false_with_unsupported_type[tuple] tests/test_ulid.py::test_memoryview_ne_false_with_unsupported_type[tuple] tests/test_ulid.py::test_memoryview_unorderble_with_unsupported_type[tuple] tests/test_ulid.py::test_memoryview_eq_false_with_unsupported_type[NoneType] tests/test_ulid.py::test_memoryview_ne_false_with_unsupported_type[NoneType] tests/test_ulid.py::test_memoryview_unorderble_with_unsupported_type[NoneType] tests/test_ulid.py::test_memoryview_supports_bytes tests/test_ulid.py::test_memoryview_supports_str tests/test_ulid.py::test_memoryview_supports_int tests/test_ulid.py::test_memoryview_supports_float tests/test_ulid.py::test_memoryview_supports_hash tests/test_ulid.py::test_memoryview_supports_copy tests/test_ulid.py::test_timestamp_coverts_bytes_to_unix_time_seconds tests/test_ulid.py::test_timestamp_converts_to_datetime tests/test_ulid.py::test_ulid_timestamp_returns_instance tests/test_ulid.py::test_ulid_timestamp_is_first_48_bits tests/test_ulid.py::test_ulid_randomness_returns_instance tests/test_ulid.py::test_ulid_randomness_is_first_48_bits tests/test_ulid.py::test_ulid_uuid_returns_instance
ulid/ulid.py
ulid/ulid.py