Metadata-Version: 2.4
Name: exdrf
Version: 0.1.17
Summary: Describe datasets, resources and their fields.
Author-email: Nicu Tofan <nicu.tofan@gmail.com>
License-Expression: MIT
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Development Status :: 3 - Alpha
Classifier: Typing :: Typed
Requires-Python: >=3.12.2
Description-Content-Type: text/markdown
Requires-Dist: attrs>=25.1.0
Requires-Dist: inflect>=7.5.0
Requires-Dist: SQLAlchemy>=2.0.38
Requires-Dist: Unidecode>=1.4.0
Provides-Extra: dev
Requires-Dist: autoflake; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: isort; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: pyproject-flake8; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: pytest-mock; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: wheel; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: click<9,>=8.2.1; extra == "dev"

# Datasets-Resources-Fields

**exdrf** is the core library of **Ex-DRF**
(Extended Datasets–Resources–Fields). It lets you describe **datasets**: each
**resource** is made of typed **fields** and relationships. That single tree
drives reflection from ORMs or Pydantic, code generation (via sibling
**`exdrf-gen-*`** packages), labels, and shared UI metadata.

## What it provides

- A typed model of fields (including references and enums) and how they group
  into resources and categories.
- Helpers such as **label DSL** (`exdrf.label_dsl`) for human-readable record
  labels and generated code.
- **`FieldInfo`**, **`ResExtraInfo`**, and related types that companion packages
  populate from SQLAlchemy `info` dicts or Pydantic constraints.

## Dependencies

Declared in `pyproject.toml`: **attrs**, **inflect**, **SQLAlchemy**,
**Unidecode**. Python **3.12.2+** is required.

## Related packages

Pair **`exdrf`** with **exdrf-al** (SQLAlchemy), **exdrf-pd** (Pydantic),
**exdrf-qt** (desktop UI primitives), **exdrf-gen** and **exdrf-gen-*** plugins
for codegen, and optional **exdrf-xl**, **exdrf-ts**, **exdrf-rcv**,
**exdrf-util** as needed. Monorepo layout and quality commands are documented in
the repository root **README.md**.
