Metadata-Version: 2.1
Name: xattrs
Version: 0.0.1
Summary: An eXtensible serializing and deserializing toolkit for Python strucuted classes
Keywords: attrs,cattrs,serde,json,schema
Author-Email: Lanqing Huang <lqhuang@outlook.com>
License: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
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 :: Implementation :: CPython
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX
Classifier: Typing :: Typed
Project-URL: Documentation, https://github.com/lqhuang/xattrs#readme
Project-URL: Issues, https://github.com/lqhuang/xattrs/issues
Project-URL: Source, https://github.com/lqhuang/xattrs
Requires-Python: >=3.9
Requires-Dist: attrs
Requires-Dist: typing_extensions
Requires-Dist: datetype
Provides-Extra: yaml
Requires-Dist: ruamel.yaml>0.18; extra == "yaml"
Provides-Extra: toml
Requires-Dist: tomlkit; extra == "toml"
Provides-Extra: ujson
Requires-Dist: ujson; extra == "ujson"
Provides-Extra: msgpack
Requires-Dist: msgspec; extra == "msgpack"
Provides-Extra: all
Requires-Dist: xattrs[toml]; extra == "all"
Requires-Dist: xattrs[yaml]; extra == "all"
Requires-Dist: xattrs[ujson]; extra == "all"
Requires-Dist: xattrs[msgpack]; extra == "all"
Provides-Extra: test
Requires-Dist: hypothesis; extra == "test"
Requires-Dist: pympler; extra == "test"
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: mypy; extra == "test"
Requires-Dist: pytest-mypy-plugins; extra == "test"
Requires-Dist: coverage[toml]; extra == "test"
Provides-Extra: docs
Requires-Dist: towncrier; extra == "docs"
Requires-Dist: furo; extra == "docs"
Requires-Dist: myst-parser; extra == "docs"
Requires-Dist: sphinx; extra == "docs"
Requires-Dist: sphinx-notfound-page; extra == "docs"
Requires-Dist: sphinx-copybutton; extra == "docs"
Requires-Dist: sphinx-autobuild; extra == "docs"
Requires-Dist: sphinxcontrib-towncrier; extra == "docs"
Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
Requires-Dist: sphinxext-opengraph; extra == "docs"
Provides-Extra: linter
Requires-Dist: mypy; extra == "linter"
Requires-Dist: black; extra == "linter"
Requires-Dist: isort; extra == "linter"
Requires-Dist: ruff; extra == "linter"
Requires-Dist: pyupgrade; extra == "linter"
Requires-Dist: pre-commit; extra == "linter"
Provides-Extra: build
Requires-Dist: pip; extra == "build"
Requires-Dist: build>=1.0.0; extra == "build"
Requires-Dist: wheel; extra == "build"
Requires-Dist: pdm; extra == "build"
Requires-Dist: pdm-backend; extra == "build"
Provides-Extra: dev
Requires-Dist: xattrs[build,docs,linter,test]; extra == "dev"
Description-Content-Type: text/markdown

# xattrs

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

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

---

Serialize and deserialize instances of your `attrs` and `dataclasses` types with implicit or customized encoding.

🚧 **WIP**

**Table of Contents**

- [Installation](#installation)
- [How to contribute](#how-to-contribute)
- [License](#license)

## Introduction

<!-- "correct by construction" instead of "correct by validation" / "correct by schema" -->

## Project orient

Let dataclasses or attrs just store declaretive and immutable 'data'.

Goals:

- Easy to use, easy to extend, easy to customize.
- Extending upstream project as more as its recommended ways, see also [`attrs` Extending](https://www.attrs.org/en/stable/extending.html).

Non-goals:

## Installation

```console
pip install xattrs
```

## How to contribute

The first and the best way to contribute to `xattrs` is to use it in your project and give feedback on your experience about it both good and bad. You could participate our community by submitting [issues]() or even pull requests, not limited to bugs, but also proposals, documentation, use cases and best practices.

Then you could also try to help us to improve the project by promoting it to your teams, writing blog posts, or even giving a talk in your local community.

If you have did all above, but still thought you could do more. Consider to sponsor the project for long-term maintenance and development.

The most important thing is the community, and we are looking forward to how people enjoy using `xattrs` and how it could help them to solve their problems.

## Development Guide

### Major upstream dependencies

- `attrs`
- `dataclasses`
- `annotated`

## License

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