Metadata-Version: 2.4
Name: httk-store
Version: 2.1.0
Summary: httk₂ module for data management: entry providers, property-definition validation, and database storage.
Author-email: Rickard Armiento <gitcommits@armiento.net>
License-Expression: AGPL-3.0-or-later
Project-URL: Homepage, https://httk.org
Project-URL: Documentation, https://docs.httk.org/httk-store/
Project-URL: Repository, https://github.com/httk/httk-store
Project-URL: Issues, https://github.com/httk/httk-store/issues
Keywords: Materials Discovery,Materials Informatics,Materials Science,Machine Learning
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Chemistry
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httk-core<3,>=2.1.0
Requires-Dist: jsonschema>=4
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-xdist>=3.6; extra == "dev"
Requires-Dist: ruff<0.17,>=0.16; extra == "dev"
Requires-Dist: pyright; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: pydoclint<1,>=0.9; extra == "dev"
Requires-Dist: httk-store[clickhouse,duckdb,mongodb,parallel]; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx; extra == "docs"
Requires-Dist: furo; extra == "docs"
Requires-Dist: myst-parser; extra == "docs"
Requires-Dist: myst-nb; extra == "docs"
Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
Requires-Dist: sphinx-copybutton; extra == "docs"
Requires-Dist: sphinx-autoapi; extra == "docs"
Provides-Extra: release
Requires-Dist: build>=1.2; extra == "release"
Requires-Dist: twine>=6.0; extra == "release"
Provides-Extra: default
Requires-Dist: httk-store[db]; extra == "default"
Provides-Extra: db
Requires-Dist: sqlalchemy<3,>=2.0; extra == "db"
Provides-Extra: duckdb
Requires-Dist: httk-store[db]; extra == "duckdb"
Requires-Dist: duckdb_engine>=0.13; extra == "duckdb"
Requires-Dist: duckdb>=1.0; extra == "duckdb"
Requires-Dist: numpy; extra == "duckdb"
Requires-Dist: pandas; extra == "duckdb"
Provides-Extra: clickhouse
Requires-Dist: httk-store[db]; extra == "clickhouse"
Requires-Dist: clickhouse-connect<2,>=1.6; extra == "clickhouse"
Provides-Extra: postgresql
Requires-Dist: httk-store[db]; extra == "postgresql"
Requires-Dist: psycopg[binary]>=3.1; extra == "postgresql"
Provides-Extra: parallel
Requires-Dist: pyarrow>=15; extra == "parallel"
Provides-Extra: mongodb
Requires-Dist: pymongo>=4.6; extra == "mongodb"
Dynamic: license-file

# httk-store

![Status: Early beta](https://img.shields.io/badge/status-early--beta-orange)

> **⚠️ EARLY BETA**
>
> This is an early beta release of *httk₂*. The organization of the packages
> and their APIs should not yet be regarded as stable, and may change between
> releases.

*httk-store* is a [*httk₂*](https://github.com/httk/httk2) module for data
management. Built on the stdlib-only contracts and models in *httk-core*, it
provides in-memory `httk.core.EntryProvider` implementations for the standard
OPTIMADE entry types (`references`, `files`, `calculations`),
property-definition validation on `jsonschema`, and a database storage layer
that stores plain frozen dataclasses in SQLite, DuckDB, PostgreSQL, or MongoDB,
makes them queryable through a backend-agnostic search DSL, and serves them
through the entry-provider contract. ClickHouse supports bulk ingestion and
read serving with its documented write restrictions.

Install the optional backend you need with `httk-store[db]` (SQLite),
`httk-store[duckdb]`, `httk-store[postgresql]`, `httk-store[mongodb]`, or
`httk-store[clickhouse,parallel]`. See the
[storage documentation](https://docs.httk.org/httk-store/db.html) for backend
capabilities and deployment requirements.
