[project]
name = "a-machine"
version = "0.1.1"
authors = [
  { name="Tyson A. Neuroth", email="tyneuroth@gmail.com" },
]
description = "Construct epsilon-machines to generate symbol sequences with ground truth causal structure and information-theoretic complexity for studying neural network learning dynamics."
readme = "README.md"
license = "MIT"
license-files = ["LICENCSE"]

requires-python = ">=3.12"

dependencies = [
    "hnswlib",
    "matplotlib",
    "networkx",
    "numpy",
    "orjson",
    "pyarrow",
    "pygraphviz",
    "scikit-umfpack",
    "scipy",
    "graphviz>=0.21",
    "automata-lib>=9.2.0",
    "sympy>=1.14.0",
    "pdoc>=16.0.0",
    "nanobind>=2.12.0",
]

[project.urls]
Homepage = "https://gitlab.com/tneuroth/a-machine"
Repository = "https://gitlab.com/tneuroth/a-machine"
Issues = "https://gitlab.com/tneuroth/a-machine/-/boards"

[project.optional-dependencies]
cuda = [
    "cupy-cuda13x>=14.0.1",
    "cuvs-cu13==26.4.*",
]

[build-system]
requires = ["scikit-build-core>=0.12", "nanobind>=2"]
build-backend = "scikit_build_core.build"

[tool.scikit-build]
minimum-version = "build-system.requires"
cmake.build-type = "Release"
ninja.make-fallback = true
build-dir = ".cache/build/{wheel_tag}" 

[tool.scikit-build.wheel]
packages = ["amachine"]

[tool.uv]
package = true
managed = true
cache-keys = [
    { file = "pyproject.toml" },
    { file = "CMakeLists.txt" },
    { file = "amachine/am_fast/**/*.{h,hpp,c,cpp}" }
]

[[tool.uv.index]]
name = "nvidia"
url = "https://pypi.nvidia.com"
explicit = true

[tool.uv.sources]
cuvs-cu13 = { index = "nvidia" }

[project.scripts]
build-docs = "amachine.cli:build_docs"
repair-wheel = "amachine.cli:repair_wheel"