Metadata-Version: 2.2
Name: hg_cpp
Version: 0.3.2
Summary: Preview distribution of the C++ first hgraph runtime and Python compatibility bridge
Keywords: reactive,graph,forward propagating graph,time series,functional reactive programming,c++
Author-Email: Howard Henson <howard@henson.me.uk>
License: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: C++
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Project-URL: Homepage, https://github.com/hhenson/hg_cpp
Project-URL: Repository, https://github.com/hhenson/hg_cpp.git
Requires-Python: >=3.12
Requires-Dist: numpy>=2.0
Requires-Dist: pyarrow<25,>=24
Provides-Extra: python
Requires-Dist: nanobind>=2.12; extra == "python"
Provides-Extra: test
Requires-Dist: frozendict>=2.4; extra == "test"
Requires-Dist: pytest>=8; extra == "test"
Requires-Dist: trove-classifiers; extra == "test"
Provides-Extra: docs
Requires-Dist: sphinx>=7.4; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=2.0; extra == "docs"
Requires-Dist: myst-parser>=2.0; extra == "docs"
Requires-Dist: sphinxcontrib-mermaid>=1.0; extra == "docs"
Provides-Extra: dev
Requires-Dist: cmake>=3.26; extra == "dev"
Requires-Dist: ninja; extra == "dev"
Requires-Dist: nanobind>=2.12; extra == "dev"
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: sphinx>=7.4; extra == "dev"
Requires-Dist: sphinx-rtd-theme>=2.0; extra == "dev"
Requires-Dist: myst-parser>=2.0; extra == "dev"
Requires-Dist: sphinxcontrib-mermaid>=1.0; extra == "dev"
Requires-Dist: scikit-build-core>=0.12; extra == "dev"
Requires-Dist: trove-classifiers; extra == "dev"
Description-Content-Type: text/markdown

# hg_cpp

A clean-slate, **C++-first** implementation of the
[hgraph](https://github.com/hgraph-io/hgraph) functional-reactive time-series
runtime. The C++ runtime is the source of truth. Python provides wiring
compatibility and supports Python-authored nodes running inside that runtime.

## Python preview

Preview builds are published under the `hg_cpp` distribution name:

```sh
python -m pip install hg_cpp
```

The distribution exposes the `hgraph` import package and the native `_hgraph`
extension. Install it in an isolated environment rather than alongside the
main `hgraph` distribution, since both provide the same Python import namespace.
One platform wheel supports CPython 3.12 and later through the CPython stable
ABI.

## Build & test

```sh
cmake -S . -B build                 # configure (fmt + Catch2 fetched if absent)
cmake --build build -j              # build hgraph_core + tests
ctest --test-dir build --output-on-failure
```

Requires a C++23 compiler and CMake >= 3.25. Python/nanobind are **not** needed
for the default build (bindings are opt-in via `-DHGRAPH_BUILD_PYTHON_BINDINGS=ON`).

## Documentation

Sphinx docs live under `docs/source` (`pip install -r docs/requirements.txt`,
then `sphinx-build -W -b html docs/source docs/_build/html`):

- **User guide** — start at `docs/source/user_guide/quick_start.rst`, then the
  authoring/testing guides for nodes, graphs, and the `eval_node` harness.
- **Developer guide** — the authoritative design records
  (`docs/source/developer_guide/`): architecture, data structures,
  wiring, nested graphs, mesh, services, error handling, operators, roadmap.

## Contributing / AI sessions

- [`AGENTS.md`](AGENTS.md) — canonical project direction: goals, build
  philosophy, source layout, dependency policy, git hygiene.
- [`CLAUDE.md`](CLAUDE.md) — the operational working guide: the enforced
  design-first workflow (docs change in the same commit as code), guardrails,
  architecture map, and current state.
- The read-only `ext/main` tree is the canonical Python `hgraph` reference.
