Metadata-Version: 2.4
Name: hugpy-curation
Version: 0.2.0a0
Summary: Hugpy curation: discovery dossiers and the search, screen, download, smoke and judge review pipeline for candidate models
Author-email: putkoff <support@hugpy.ai>
License-Expression: LicenseRef-Proprietary
Project-URL: Homepage, https://hugpy.ai
Project-URL: Documentation, https://github.com/hugpy/hugpy/blob/main/py/curation/hugpy_curation/README.md
Project-URL: Repository, https://github.com/hugpy/hugpy
Project-URL: Source, https://github.com/hugpy/hugpy/tree/main/py/curation/hugpy_curation
Project-URL: Issues, https://github.com/hugpy/hugpy/issues
Project-URL: Changelog, https://github.com/hugpy/hugpy/releases
Project-URL: Architecture, https://github.com/hugpy/hugpy/blob/main/PARTITION.md
Keywords: hugpy,llm,self-hosted,huggingface,model-discovery,model-evaluation,curation
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: hugpy-platform
Requires-Dist: hugpy-control
Requires-Dist: hugpy-storage
Requires-Dist: hugpy-engine
Requires-Dist: hugpy-oracle
Provides-Extra: hf
Requires-Dist: huggingface_hub>=0.20; extra == "hf"
Provides-Extra: smoke
Requires-Dist: llama-cpp-python; extra == "smoke"
Provides-Extra: community
Requires-Dist: youtube-transcript-api; extra == "community"
Provides-Extra: test
Requires-Dist: pytest>=8; extra == "test"
Requires-Dist: pytest-timeout; extra == "test"
Dynamic: license-file

# hugpy-curation

`hugpy_curation` — discovery dossiers and the search / screen / download /
smoke / judge review pipeline, extracted from `abstract_hugpy_dev` as part of
the Hugpy partition. Ownership and allowed dependencies are declared in
`py/partition.toml`; see `PARTITION.md` at the workspace root.

Allowed Python dependencies inside the ecosystem: hugpy_platform,
hugpy_control, hugpy_storage, hugpy_engine, hugpy_oracle.

## Layout

| Module | What |
|---|---|
| `review/` | `criteria`, `screen` (HF metadata), `download` (through `hugpy_storage`), `smoke` (llama_cpp subprocess), `judge`, `pipeline`, `store` (sqlite record), `push` (worker -> central) |
| `dossier/` | the per-model dossier: `cards`, `weights`, `research`, `community`, `radar`, `trial`, `verdicts`, `build`, `store`; `oracle_source` is the store as the oracle's `DossierSource` |
| `config.py` | every state root (`REVIEW_DB`, `DOSSIER_DIR`, `DOSSIER_TRIAL_ROOT`, `REVIEW_CRITERIA_DIR`, `DOSSIER_CACHE_DIR`, then `HUGPY_CURATION_ROOT`, then `hugpy_platform.app_dirs`) |
| `providers.py` | `DoctrineSource` seam (fleet doctrine read by the dossier judge; null default) |
| `cli.py` | `hugpy-curation review ...` / `dossier list` / `install-providers` |
| `deploy/` | `hugpy-review@.service` + `.timer` (system and `user/` variants) |

## Wiring

`hugpy_curation.install_providers(doctrine_source=None)` registers the dossier
store with `hugpy_oracle.providers.set_dossier_source` and, when given, a
fleet doctrine adapter with `hugpy_curation.providers.set_doctrine_source`.
`hugpy_server` calls it at startup; `hugpy-curation install-providers` does
the same in a standalone process.

Downloads never run from curation's own code: with a live `hugpy-downloader`
daemon the review enqueues on `hugpy_storage.downloader.queue`; without one
it calls `hugpy_storage.download_models.download_one` in-process.
