Metadata-Version: 2.4
Name: metricraft
Version: 0.3.0rc1
Summary: Immutable PromQL/MetricsQL builder and Prometheus/VictoriaMetrics HTTP client
Author: NagareWorks
License: Apache-2.0
Project-URL: Homepage, https://github.com/NagareWorks/metricraft
Project-URL: Documentation, https://nagareworks.github.io/metricraft/
Project-URL: Repository, https://github.com/NagareWorks/metricraft
Project-URL: Bug Reports, https://github.com/NagareWorks/metricraft/issues
Project-URL: Contributing, https://github.com/NagareWorks/metricraft/blob/main/CONTRIBUTING.md
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
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 :: Python Modules
Classifier: Topic :: System :: Monitoring
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: pytest-mock>=3.8.0; extra == "dev"
Requires-Dist: pytest-timeout>=2.1.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pytest-benchmark>=4.0.0; extra == "dev"
Requires-Dist: memory_profiler>=0.60.0; extra == "dev"
Requires-Dist: psutil>=5.8.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"
Requires-Dist: flake8>=5.0.0; extra == "dev"
Requires-Dist: black>=22.0.0; extra == "dev"
Requires-Dist: isort>=5.10.0; extra == "dev"
Requires-Dist: coverage>=6.0.0; extra == "dev"
Requires-Dist: hypothesis>=6.8.0; extra == "dev"
Requires-Dist: factory_boy>=3.2.0; extra == "dev"
Requires-Dist: sphinx>=5.0.0; extra == "dev"
Requires-Dist: sphinx-autodoc-typehints>=1.19.0; extra == "dev"
Requires-Dist: pre-commit>=2.20.0; extra == "dev"
Requires-Dist: tox>=3.25.0; extra == "dev"
Dynamic: license-file

# metricraft

One SDK for immutable PromQL/MetricsQL construction and synchronous/asynchronous
Prometheus/VictoriaMetrics HTTP requests. Import `QueryBuilder`, `DatabaseClient`,
`PrometheusConfig`, `VMSingleConfig` and `VMClusterConfig` from `metricraft`.

Query construction uses the Rust library bundled in platform wheels. Source
installations compile the included Rust sources and require Rust and a platform C linker.
Client-only use with query strings needs no native library or provider
registration. Applications own query persistence and authorization.

See the [documentation](https://nagareworks.github.io/metricraft/) for
installation and examples, and the [repository](https://github.com/NagareWorks/metricraft)
for contributing guidance.
GitHub Actions assembles native platform wheels and validates the supported
Prometheus 3.15.0 / VictoriaMetrics 1.153.0 catalogs and syntax. The sdist includes
the Python SDK, both Rust crates and the Cargo lockfile. Historical
AST implementations under `_legacy` are source-only test and benchmark fixtures,
excluded from both the wheel and source distribution.

Query timestamps preserve fractional seconds. Numeric times are epoch seconds;
values whose magnitude exceeds `1e10` are interpreted as milliseconds. Ingestion
converts numeric or absolute ISO/datetime inputs to exposition milliseconds;
relative time strings are supported only for queries. When a range query uses
a relative `end`, provide `start` explicitly. Custom transports used for
health checks should implement `get_text(url)` for plain-text health responses.

The built-in transport supports separate `(connect, read)` timeout budgets,
including TLS connection setup. A custom urllib opener accepts one timeout;
use equal budgets with it, or supply a custom HTTP client for separate phases.
