Metadata-Version: 2.1
Name: miniscutil
Version: 0.0.1
Project-URL: Documentation, https://github.com/EdAyers/sss/miniscutil#readme
Project-URL: Issues, https://github.com/EdAyers/sss/miniscutil/issues
Project-URL: Source, https://github.com/EdAyers/sss/miniscutil
Author-email: "E.W.Ayers" <contact@edayers.com>
License-Expression: MIT
License-File: LICENSE.txt
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.7
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 :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.7
Requires-Dist: typing-extensions; python_version <= '3.9'
Description-Content-Type: text/markdown

# miniscutil

[![PyPI - Version](https://img.shields.io/pypi/v/miniscutil.svg)](https://pypi.org/project/miniscutil)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/miniscutil.svg)](https://pypi.org/project/miniscutil)

-----

Collection of miscellaneous functions and methods that I wish were in core. I think that some of them are implemented by existing libraries.

- `dispatch.py` hijacks the dispatcher used by `functools.singledispatch` as its own class. This is used to implement a `classdispatch` decorator that can accept a type as argument.
- `adapt`, an implementation of [PEP-246](https://peps.python.org/pep-0246/#specification)
- `ofdict.py` converts to and from a json-like object `JsonLike = Union[str, int, float, bool, type(None), list[JsonLike], dict[str, JsonLike]]`. It overlaps a lot with `attrs`, `cattrs` and `pydantic` libraries.
- `deep.py` implements a deepcopy-like reduction system for traversing, mapping and serializing arbitrary python objects.
- `deepeq.py` implements a deep-equality algorithm.
- `current.py` is a base class for implementing the singleton pattern.
- `sum.py` discriminated sum type.

**Table of Contents**

- [Installation](#installation)
- [License](#license)

## Installation

```console
pip install miniscutil
```

## License

`miniscutil` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
