[build-system] requires = ["setuptools>=68"] build-backend = "setuptools.build_meta" [project] name = "arborist" version = "0.0.1" description = "An arborist for trees and forests of cross-linked information" readme = "README.md" license = { text = "AGPL-3.0-only" } requires-python = ">=3.10" authors = [ { name = "Russell Ballestrini", email = "russell@unturf.com" }, { name = "foxhop" }, { name = "TimeHexOn" }, ] dependencies = [ "httpx>=0.27", "zstandard>=0.22", "cryptography>=42", ] [project.optional-dependencies] html = [ "selectolax>=0.3", ] wikitext = [ "mwparserfromhell>=0.6", ] mesh = [ # httpx is already in core deps; mesh wire only depends on stdlib + # cryptography (also core). This extras block exists as the documented # opt-in surface even though no extra packages are required today. ] math = [ # Symbolic algebra/calculus π* substrate (ticket #000030). SymPy is # ~30 MB installed; pulling it into core deps would inflate every # fresh checkout. Tests skip via pytest.importorskip when absent. "sympy>=1.13", ] hessian = [ # Phi_alignment_probe (ticket #000034 Phase 1a). Lanczos top-k + # bottom-k eigendecomposition for measuring whether v7's frozen # linear projection W aligns with the loss Hessian's low-eigenvalue # subspace. Numpy + scipy together ~80 MB; gated separately from # core to keep the default install lightweight. Tests skip via # pytest.importorskip when absent. Install with: # pip install 'arborist[hessian]' "numpy>=1.26", "scipy>=1.11", ] crawler = [ # Verbatim lift from agents.ai.unturf.com/core. Off by default — the # default test suite never imports the crawler. Install with: # pip install 'arborist[crawler]' # then run `make test-crawler`. "aiohttp>=3.8", "beautifulsoup4>=4.11", "lxml>=4.9", "html5lib>=1.1", "html2text>=2024.2.26", "miniuri>=1.1", "feedparser>=6.0", "Pillow>=10.0", "cairosvg>=2.7", "pypdf>=4.0", ] dev = [ "pytest>=8", "pytest-asyncio>=0.23", "pytest-xdist>=3.5", "arborist[html]", "arborist[wikitext]", "arborist[mesh]", "arborist[crawler]", "arborist[math]", "arborist[hessian]", ] [project.scripts] arborist = "arborist.cli:main" [tool.setuptools.packages.find] where = ["."] include = ["arborist*"]