Metadata-Version: 2.4
Name: notgiven
Version: 0.0.5
Summary: Defines NotGiven and NOT_GIVEN
Author-email: Ryan Young <dev@ryayoung.com>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# NotGiven and NOT_GIVEN for Python

```
pip install notgiven
```

Sentinel singleton to distinguish between omitted arguments and those
explicitly set to None.

- `NOT_GIVEN` is the only instance of `NotGiven`.
- `NotGiven` cannot be instantiated or subclassed.
- `NOT_GIVEN` is falsy (`bool(NOT_GIVEN)` is always False)
- Pickling/unpickling, copying, and deepcopying `NOT_GIVEN` all result in the same value.
- `NOT_GIVEN` has no slots, so attributes may not be set on it.
- `NOT_GIVEN`'s string representation is `"NOT_GIVEN"`
- Thread-safe in all situations.

```python
from notgiven import (
    NotGiven,
    NOT_GIVEN,
    is_given,
    is_not_given,
    is_given_guard,  # Only useful in 3.13+
    is_not_given_guard,  # Only useful in 3.13+
)
```
