[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "juurio" version = "0.1.0" description = "Open-vocabulary Finnish morphology: a neural parser, an exception lexicon and tiny neural realizers for OOV/loan word forms" readme = "README.md" requires-python = ">=3.12" license = { text = "MIT" } license-files = ["LICENSE"] authors = [{ name = "samuli" }] keywords = ["finnish", "morphology", "nlp", "inflection", "dependency-parsing", "fst", "uralic"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: Finnish", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.12", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Text Processing :: Linguistic", ] # Version floors track the tested versions and MUST NOT exceed what's installed/tested (guarded by # tests/test_runtime_dep_floors.py) — a floor above the tested version makes a clean `pip install` pull # an untested-newer dep. Inference needs only torch / numpy / transformers (the analysis path is the # torch-only neural parser; generation uses the neural realizers + lexicon). huggingface-hub: it # fetches the model/data artifacts from a HuggingFace repo via bootstrap.artifact_path. dependencies = [ "transformers>=5.7", "torch>=2.4", "numpy>=1.26", "huggingface-hub>=0.34", ] [project.urls] Homepage = "https://huggingface.co/samuli/juurio" [project.optional-dependencies] dev = ["pytest>=8", "packaging>=23"] [project.scripts] juurio = "juurio.cli:main" # ─── Wheel ship-list ───────────────────────────────────────────────────────────────────────────── # Ships the `juurio` package (top-level modules + the genlex override JSONs, juurio.analyze, # and juurio.parser). The bulk serving artifacts (model checkpoints, wordlist, compressed tag table) # are NOT bundled — they are fetched at runtime from the HuggingFace repo by `juurio setup` # (bootstrap.py), sha256-verified. Guarded by tests/test_serving_wheel_contents.py. [tool.hatch.build.targets.wheel] only-include = ["juurio"]