horde-model-reference 5.3.0__tar.gz → 5.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- horde_model_reference-5.3.2/.env.example +514 -0
- {horde_model_reference-5.3.0/src/horde_model_reference.egg-info → horde_model_reference-5.3.2}/PKG-INFO +1 -1
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/__init__.py +4 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/_version.py +3 -3
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/backends/http_backend.py +32 -3
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/on_disk_layout.py +60 -1
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2/src/horde_model_reference.egg-info}/PKG-INFO +1 -1
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference.egg-info/SOURCES.txt +3 -0
- horde_model_reference-5.3.2/src/horde_model_reference.egg-info/scm_file_list.json +411 -0
- horde_model_reference-5.3.2/src/horde_model_reference.egg-info/scm_version.json +8 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/backends/test_http_backend.py +31 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_on_disk_layout.py +63 -2
- horde_model_reference-5.3.2/tests/test_zimage_presence_contract.py +107 -0
- horde_model_reference-5.3.0/.env.example +0 -261
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.dockerignore +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.env.primary.example +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.env.sync.example +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.git-blame-ignore-revs +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.github/workflows/codeql.yml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.github/workflows/docker-publish.yml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.github/workflows/docker-validation.yml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.github/workflows/docs.yml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.github/workflows/lint.yml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.github/workflows/maintests.yml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.github/workflows/prtests.yml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.github/workflows/release.yml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.gitignore +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.gitmodules +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.hadolint.yaml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.pre-commit-config.yaml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/.readthedocs.yaml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/CONTRIBUTING.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/DEPLOYMENT.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/Dockerfile +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/LICENSE +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/MANIFEST.in +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/README.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docker-compose.redis.yml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docker-compose.sync.example.yml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docker-compose.yml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/build_docs.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/concepts/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/concepts/analytics_pipeline.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/concepts/architecture_overview.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/concepts/canonical_format.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/concepts/design_decisions.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/concepts/http_service.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/concepts/integrations.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/concepts/request_lifecycle.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/concepts/sync_system.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/guides/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/guides/consume_the_http_api.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/guides/filter_models_for_a_worker.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/guides/installation.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/guides/offline_and_resilient_reads.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/guides/submit_models_via_the_api.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/guides/write_a_live_provider.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/analytics/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/analytics/base_cache.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/analytics/cache_hydrator.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/analytics/constants.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/analytics/deletion_risk_analysis.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/analytics/deletion_risk_cache.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/analytics/filter_presets.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/analytics/statistics.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/analytics/statistics_cache.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/analytics/text_model_grouping.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/analytics/text_model_parser.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/audit/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/audit/events.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/audit/reader.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/audit/replay.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/audit/writer.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/backends/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/backends/base.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/backends/filesystem_backend.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/backends/github_backend.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/backends/http_backend.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/backends/redis_backend.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/backends/replica_backend_base.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/cli/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/data/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/diff_service.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/http_retry.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/integrations/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/integrations/data_merger.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/integrations/horde_api_integration.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/integrations/horde_api_models.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/legacy/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/legacy/classes/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/legacy/classes/legacy_converters.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/legacy/classes/legacy_models.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/legacy/convert_all_legacy_dbs.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/legacy/text_csv_utils.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/legacy/validate_sd.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/legacy/validation/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/meta_consts.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/model_consts/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/model_consts/image.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/model_consts/shared.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/model_consts/text.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/model_kind_validation.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/model_reference_manager.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/model_reference_metadata.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/model_reference_records.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/path_consts.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/pending_queue/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/pending_queue/apply.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/pending_queue/audit_events.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/pending_queue/audit_view.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/pending_queue/diff_utils.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/pending_queue/models.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/pending_queue/service.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/pending_queue/store.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/providers/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/providers/base.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/providers/registry.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/providers/static_provider.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/query.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/query_fields.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/registries.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/app.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/pending_queue/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/pending_queue/audit_router.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/pending_queue/dependencies.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/pending_queue/router.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/shared.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/statistics/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/statistics/routers/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/statistics/routers/deletion_risk.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/statistics/routers/statistics.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v1/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v1/routers/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v1/routers/create_update.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v1/routers/metadata.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v1/routers/pending_queue.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v1/routers/pending_queue_audit.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v1/routers/references.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v1/routers/shared.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v1/routers/write_validations.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v2/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v2/models.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v2/routers/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v2/routers/metadata.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v2/routers/pending_queue.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v2/routers/pending_queue_audit.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v2/routers/references.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v2/routers/search.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v2/routers/text_utils.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v2/routers/user.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/service/v2/routers/write_validations.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/showcase/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/source_consts.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/sync/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/sync/comparator.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/sync/config.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/sync/github_client.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/sync/legacy_text_validator.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/sync/text_generation_serializer.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/sync/watch_mode.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/text_backend_names.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/text_model_duplicates.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/text_model_write_processor.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/horde_model_reference/util.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/index.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/api_deployments.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/audit_trail.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/glossary.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/http_api/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/http_api/conventions.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/http_api/pending_queue_endpoints.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/http_api/v1_endpoints.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/http_api/v2_endpoints.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/http_api/v2_text_utils.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/legacy_csv_conversion.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/model_providers.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/model_reference_backend.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/model_reference_records.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/pending_queue.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/reference/replica_backend_base.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/stylesheets/extra.css +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/tutorials/.pages +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/tutorials/configuration_and_troubleshooting.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/tutorials/getting_started.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/tutorials/querying_models.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/tutorials/registering_providers.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/tutorials/using_the_http_api.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/docs/tutorials/working_with_records.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/examples/01_quickstart.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/examples/02_query_recipes.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/examples/03_working_with_records.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/examples/04_register_provider.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/examples/README.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/mkdocs.yml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/pyproject.toml +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/schemas/stable_diffusion.example.json +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/schemas/stable_diffusion.schema.json +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/scripts/README.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/scripts/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/scripts/get_all_names.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/scripts/legacy_text/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/scripts/legacy_text/convert.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/scripts/legacy_text/defaults.json +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/scripts/legacy_text/generation_params.json +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/scripts/legacy_text/reverse_convert.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/scripts/sync/README.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/scripts/sync/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/scripts/sync/github_app_auth_example.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/scripts/sync/sync_github_references.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/scripts/verify_query_fields.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/setup.cfg +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/analytics/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/analytics/base_cache.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/analytics/cache_hydrator.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/analytics/constants.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/analytics/deletion_risk_analysis.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/analytics/deletion_risk_cache.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/analytics/filter_presets.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/analytics/statistics.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/analytics/statistics_cache.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/analytics/text_model_grouping.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/analytics/text_model_parser.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/audit/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/audit/events.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/audit/reader.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/audit/replay.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/audit/writer.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/backends/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/backends/base.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/backends/filesystem_backend.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/backends/github_backend.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/backends/local_readonly_backend.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/backends/redis_backend.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/backends/replica_backend_base.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/cli/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/cli/migrate_layout.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/data/defaults.json +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/data/generation_params.json +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/diff_service.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/download_engine.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/group_aliases.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/group_families.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/group_schema_store.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/http_retry.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/integrations/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/integrations/data_merger.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/integrations/horde_api_integration.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/integrations/horde_api_models.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/legacy/README.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/legacy/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/legacy/classes/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/legacy/classes/legacy_converters.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/legacy/classes/legacy_models.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/legacy/convert_all_legacy_dbs.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/legacy/text_csv_utils.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/legacy/validate_sd.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/meta_consts.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/model_consts/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/model_consts/image.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/model_consts/shared.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/model_consts/text.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/model_kind_validation.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/model_reference_manager.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/model_reference_metadata.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/model_reference_records.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/path_consts.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/pending_queue/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/pending_queue/apply.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/pending_queue/audit_events.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/pending_queue/audit_view.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/pending_queue/diff_utils.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/pending_queue/materialize.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/pending_queue/models.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/pending_queue/service.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/pending_queue/store.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/providers/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/providers/base.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/providers/pending_provider.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/providers/registry.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/providers/static_provider.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/py.typed +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/query.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/query_fields.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/registries.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/app.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/pending_queue/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/pending_queue/audit_router.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/pending_queue/dependencies.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/pending_queue/router.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/shared.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/statistics/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/statistics/routers/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/statistics/routers/deletion_risk.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/statistics/routers/statistics.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v1/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v1/routers/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v1/routers/create_update.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v1/routers/metadata.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v1/routers/pending_queue.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v1/routers/pending_queue_audit.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v1/routers/references.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v1/routers/shared.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v1/routers/write_validations.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v2/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v2/models.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v2/routers/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v2/routers/metadata.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v2/routers/pending_queue.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v2/routers/pending_queue_audit.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v2/routers/references.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v2/routers/search.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v2/routers/text_utils.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v2/routers/user.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/service/v2/routers/write_validations.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/showcase/README.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/source_consts.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/sync/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/sync/comparator.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/sync/config.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/sync/github_client.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/sync/legacy_text_validator.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/sync/text_generation_serializer.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/sync/watch_mode.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/text_backend_names.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/text_model_duplicates.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/text_model_write_processor.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/util.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference.egg-info/dependency_links.txt +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference.egg-info/entry_points.txt +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference.egg-info/requires.txt +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference.egg-info/top_level.txt +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/README.md +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/backends/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/backends/test_backends_init.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/backends/test_local_readonly_backend.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/backends/test_primary_mode.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/backends/test_redis_backend.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/check_model_ref_type_blocks.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/conftest.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/create_env_file_example.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/create_example_json.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/helpers.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/horde_api/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/horde_api/conftest.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/horde_api/test_data_merger.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/horde_api/test_deletion_risk_analysis_live.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/horde_api/test_deletion_risk_worker_count.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/horde_api/test_horde_api_integration.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/horde_api/test_horde_api_integration_live.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/horde_api/test_indexed_horde_types.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/integrations/test_stats_aggregation.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/pending_queue/test_apply.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/pending_queue/test_audit_view.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/pending_queue/test_diff_service.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/pending_queue/test_service.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/pending_queue/test_store.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/service/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/service/test_api_design_phase4.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/service/test_pending_models_endpoint.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/service/test_pending_queue_audit_endpoints.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/service/test_replica_backend_base.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/service/test_shared_allowlists.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/service/test_shared_auth.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/service/test_text_utils.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/service/test_user_roles_endpoint.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/service/test_v1_api.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/service/test_v2_api.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/service/test_v2_search.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/statistics_and_audit/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/statistics_and_audit/test_cache_hydrator.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/statistics_and_audit/test_deletion_risk_analysis.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/statistics_and_audit/test_extras_and_aliases.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/statistics_and_audit/test_group_families.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/statistics_and_audit/test_statistics.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/statistics_and_audit/test_statistics_cache.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/statistics_and_audit/test_text_model_grouping.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/statistics_and_audit/test_text_model_parser.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/sync/__init__.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/sync/test_comparator.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/sync/test_comparator_integration.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/sync/test_config.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/sync/test_github_client.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/sync/test_legacy_text_validator.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/sync/test_text_generation_serializer.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_audit_replay.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_audit_trail.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_broken_tutu_grouping.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_canonical_format.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_combined_model_statistics.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_consts.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_convert_legacy_database.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_converters.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_csv_rows_to_legacy_dict.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_download_engine.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_env_example.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_examples.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_metadata.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_migrate_layout.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_model_kind_validation.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_model_providers.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_model_reference_manager.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_pending_materialize.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_pending_provider.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_query.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_records.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_registries.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_scripts.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_text_generation_csv_conversion.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_text_generation_file_paths.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_text_model_duplicates.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_text_model_group.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/tests/test_text_model_write_processor.py +0 -0
- {horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/uv.lock +0 -0
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
# Auto-generated example environment file for Horde Model Reference
|
|
2
|
+
# This file is generated by the settings_doc package.
|
|
3
|
+
# Do not edit this file manually.
|
|
4
|
+
|
|
5
|
+
# Generated on (UTC): 2026-03-26 22:29:13
|
|
6
|
+
|
|
7
|
+
# DEPLOYMENT QUICK START GUIDE
|
|
8
|
+
|
|
9
|
+
# Choose your deployment scenario and uncomment the relevant settings below:
|
|
10
|
+
|
|
11
|
+
# 1. REPLICA MODE (Default) - Client/Worker nodes
|
|
12
|
+
# - Uses GitHub or PRIMARY API to fetch model references
|
|
13
|
+
# - Set: HORDE_MODEL_REFERENCE_REPLICATE_MODE=REPLICA
|
|
14
|
+
# - Optionally set: HORDE_MODEL_REFERENCE_PRIMARY_API_URL=<your-primary-url>
|
|
15
|
+
|
|
16
|
+
# 2. PRIMARY MODE - Single Worker (No Redis)
|
|
17
|
+
# - Authoritative source for model references
|
|
18
|
+
# - Set: HORDE_MODEL_REFERENCE_REPLICATE_MODE=PRIMARY
|
|
19
|
+
# - No Redis configuration needed
|
|
20
|
+
# - Ideal for: Development, testing, low-traffic deployments
|
|
21
|
+
|
|
22
|
+
# 3. PRIMARY MODE - Multi-Worker (With Redis)
|
|
23
|
+
# - Authoritative source with distributed caching
|
|
24
|
+
# - Set: HORDE_MODEL_REFERENCE_REPLICATE_MODE=PRIMARY
|
|
25
|
+
# - Configure all HORDE_MODEL_REFERENCE_REDIS_* settings
|
|
26
|
+
# - Ideal for: Production, high-traffic deployments
|
|
27
|
+
|
|
28
|
+
# For detailed deployment instructions, see:
|
|
29
|
+
# - Docker: docker-compose.yml (single-worker)
|
|
30
|
+
# - Docker + Redis: docker-compose.redis.yml (multi-worker)
|
|
31
|
+
# - Non-Docker: DEPLOYMENT.md
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
################################################################################
|
|
35
|
+
# Horde Model Reference Settings
|
|
36
|
+
################################################################################
|
|
37
|
+
|
|
38
|
+
# Indicates if copies of the model reference are canonical or replicated. Clients should always be replicas.
|
|
39
|
+
# Possible values:
|
|
40
|
+
# `PRIMARY`, `REPLICA`
|
|
41
|
+
# HORDE_MODEL_REFERENCE_REPLICATE_MODE=REPLICA
|
|
42
|
+
|
|
43
|
+
# Whether to create the default model reference folders on initialization.
|
|
44
|
+
# HORDE_MODEL_REFERENCE_MAKE_FOLDERS=False
|
|
45
|
+
|
|
46
|
+
# The GitHub owner of the repository.
|
|
47
|
+
# HORDE_MODEL_REFERENCE_IMAGE_GITHUB_REPO__OWNER=Haidra-Org
|
|
48
|
+
|
|
49
|
+
# The name of the GitHub repository used for image model references.
|
|
50
|
+
# HORDE_MODEL_REFERENCE_IMAGE_GITHUB_REPO__NAME=AI-Horde-image-model-reference
|
|
51
|
+
|
|
52
|
+
# The GitHub branch of the repository.
|
|
53
|
+
# HORDE_MODEL_REFERENCE_IMAGE_GITHUB_REPO__BRANCH=main
|
|
54
|
+
|
|
55
|
+
# Settings for the GitHub proxy, if any.
|
|
56
|
+
# HORDE_MODEL_REFERENCE_IMAGE_GITHUB_REPO__PROXY_SETTINGS=
|
|
57
|
+
|
|
58
|
+
# The GitHub owner of the repository.
|
|
59
|
+
# HORDE_MODEL_REFERENCE_TEXT_GITHUB_REPO__OWNER=Haidra-Org
|
|
60
|
+
|
|
61
|
+
# The name of the GitHub repository used for text model references.
|
|
62
|
+
# HORDE_MODEL_REFERENCE_TEXT_GITHUB_REPO__NAME=AI-Horde-text-model-reference
|
|
63
|
+
|
|
64
|
+
# The GitHub branch of the repository.
|
|
65
|
+
# HORDE_MODEL_REFERENCE_TEXT_GITHUB_REPO__BRANCH=main
|
|
66
|
+
|
|
67
|
+
# Settings for the GitHub proxy, if any.
|
|
68
|
+
# HORDE_MODEL_REFERENCE_TEXT_GITHUB_REPO__PROXY_SETTINGS=
|
|
69
|
+
|
|
70
|
+
# The time-to-live for in memory caches of model reference files, in seconds.
|
|
71
|
+
# HORDE_MODEL_REFERENCE_CACHE_TTL_SECONDS=60
|
|
72
|
+
|
|
73
|
+
# The maximum number of attempts to retry downloading a legacy model reference file.
|
|
74
|
+
# HORDE_MODEL_REFERENCE_LEGACY_DOWNLOAD_RETRY_MAX_ATTEMPTS=3
|
|
75
|
+
|
|
76
|
+
# The backoff time in seconds between retry attempts when downloading a legacy model reference file.
|
|
77
|
+
# HORDE_MODEL_REFERENCE_LEGACY_DOWNLOAD_RETRY_BACKOFF_SECONDS=2
|
|
78
|
+
|
|
79
|
+
# Whether to use Redis for distributed caching. Only should be used in PRIMARY mode.
|
|
80
|
+
# HORDE_MODEL_REFERENCE_REDIS__USE_REDIS=False
|
|
81
|
+
|
|
82
|
+
# Redis connection URL. Format: redis://[:password]@host:port/db
|
|
83
|
+
# HORDE_MODEL_REFERENCE_REDIS__URL=redis://localhost:6379/0
|
|
84
|
+
|
|
85
|
+
# Connection pool size for Redis connections.
|
|
86
|
+
# HORDE_MODEL_REFERENCE_REDIS__POOL_SIZE=10
|
|
87
|
+
|
|
88
|
+
# Socket timeout in seconds for Redis operations.
|
|
89
|
+
# HORDE_MODEL_REFERENCE_REDIS__SOCKET_TIMEOUT=5
|
|
90
|
+
|
|
91
|
+
# Connection timeout in seconds when establishing Redis connection.
|
|
92
|
+
# HORDE_MODEL_REFERENCE_REDIS__SOCKET_CONNECT_TIMEOUT=5
|
|
93
|
+
|
|
94
|
+
# Maximum number of retry attempts for failed Redis operations.
|
|
95
|
+
# HORDE_MODEL_REFERENCE_REDIS__RETRY_MAX_ATTEMPTS=3
|
|
96
|
+
|
|
97
|
+
# Backoff time in seconds between retry attempts for Redis operations.
|
|
98
|
+
# HORDE_MODEL_REFERENCE_REDIS__RETRY_BACKOFF_SECONDS=0.5
|
|
99
|
+
|
|
100
|
+
# Prefix for all Redis keys to namespace model reference data.
|
|
101
|
+
# HORDE_MODEL_REFERENCE_REDIS__KEY_PREFIX=horde:model_ref
|
|
102
|
+
|
|
103
|
+
# TTL for cached entries in seconds. If None, uses cache_ttl_seconds from main settings.
|
|
104
|
+
# HORDE_MODEL_REFERENCE_REDIS__TTL_SECONDS=
|
|
105
|
+
|
|
106
|
+
# Enable pub/sub for cache invalidation across multiple PRIMARY workers.
|
|
107
|
+
# HORDE_MODEL_REFERENCE_REDIS__USE_PUBSUB=True
|
|
108
|
+
|
|
109
|
+
# Base URL of the PRIMARY server API for REPLICA clients to fetch model references from. This must include the service's /api root path; the backend appends /model_references/v2/{category}. If None, REPLICA clients will only use GitHub. Example: https://models.aihorde.net/api
|
|
110
|
+
# HORDE_MODEL_REFERENCE_PRIMARY_API_URL=https://models.aihorde.net/api
|
|
111
|
+
|
|
112
|
+
# Timeout in seconds for HTTP requests to PRIMARY API.
|
|
113
|
+
# HORDE_MODEL_REFERENCE_PRIMARY_API_TIMEOUT=10
|
|
114
|
+
|
|
115
|
+
# Whether REPLICA clients should fallback to GitHub if PRIMARY API is unavailable.
|
|
116
|
+
# HORDE_MODEL_REFERENCE_ENABLE_GITHUB_FALLBACK=True
|
|
117
|
+
|
|
118
|
+
# Whether PRIMARY mode should seed from GitHub on first initialization if local files don't exist. Only used in PRIMARY mode. If True, will download and convert legacy references once on startup.
|
|
119
|
+
# HORDE_MODEL_REFERENCE_GITHUB_SEED_ENABLED=False
|
|
120
|
+
|
|
121
|
+
# Which format is the canonical source of truth. Controls which API has write access. 'v2' (default): v2 API has CRUD, v1 API is read-only (converts from v2 to legacy). 'LEGACY': v1 API has CRUD, v2 API is read-only (converts from legacy to v2).
|
|
122
|
+
# Possible values:
|
|
123
|
+
# `LEGACY`, `v2`
|
|
124
|
+
# HORDE_MODEL_REFERENCE_CANONICAL_FORMAT=v2
|
|
125
|
+
|
|
126
|
+
# Timeout in seconds for Horde API requests to fetch model status, statistics, and worker information.
|
|
127
|
+
# HORDE_MODEL_REFERENCE_HORDE_API_TIMEOUT=30
|
|
128
|
+
|
|
129
|
+
# Cache TTL in seconds for Horde API responses. Uses Redis if available, otherwise in-memory caching.
|
|
130
|
+
# HORDE_MODEL_REFERENCE_HORDE_API_CACHE_TTL=60
|
|
131
|
+
|
|
132
|
+
# Cache TTL in seconds for category statistics. Uses Redis if available, otherwise in-memory caching.
|
|
133
|
+
# HORDE_MODEL_REFERENCE_STATISTICS_CACHE_TTL=300
|
|
134
|
+
|
|
135
|
+
# Cache TTL in seconds for category audit results. Uses Redis if available, otherwise in-memory caching.
|
|
136
|
+
# HORDE_MODEL_REFERENCE_AUDIT_CACHE_TTL=300
|
|
137
|
+
|
|
138
|
+
# Enable background pre-computation of statistics. Currently not implemented (future feature).
|
|
139
|
+
# HORDE_MODEL_REFERENCE_ENABLE_STATISTICS_PRECOMPUTE=False
|
|
140
|
+
|
|
141
|
+
# Preferred file hosts for deletion risk analysis in audit endpoints.
|
|
142
|
+
# HORDE_MODEL_REFERENCE_PREFERRED_FILE_HOSTS=
|
|
143
|
+
|
|
144
|
+
# Percentage threshold for low usage flag in audit analysis. Default 0.0065% flags bottom ~10% of models. Set lower (e.g., 0.005%) to flag fewer models or higher (e.g., 0.01%) to flag more models.
|
|
145
|
+
# HORDE_MODEL_REFERENCE_LOW_USAGE_THRESHOLD_PERCENTAGE=0.0065
|
|
146
|
+
|
|
147
|
+
# Low usage threshold for text_generation models (2% - more lenient than image models at 0.65%).
|
|
148
|
+
# HORDE_MODEL_REFERENCE_TEXT_GEN_LOW_USAGE_THRESHOLD_PERCENTAGE=0.02
|
|
149
|
+
|
|
150
|
+
# Skip download host validation for text_generation models completely.
|
|
151
|
+
# HORDE_MODEL_REFERENCE_TEXT_GEN_IGNORE_DOWNLOAD_HOSTS=True
|
|
152
|
+
|
|
153
|
+
# Minimum monthly usage for text_generation to be flagged as critical (allows some usage).
|
|
154
|
+
# HORDE_MODEL_REFERENCE_TEXT_GEN_CRITICAL_USAGE_THRESHOLD=10
|
|
155
|
+
|
|
156
|
+
# Minimum worker count for text_generation to be flagged as critical (allows some workers).
|
|
157
|
+
# HORDE_MODEL_REFERENCE_TEXT_GEN_CRITICAL_WORKER_THRESHOLD=1
|
|
158
|
+
|
|
159
|
+
# Whether audit trail writes are enabled in PRIMARY deployments.
|
|
160
|
+
# HORDE_MODEL_REFERENCE_AUDIT__ENABLED=True
|
|
161
|
+
|
|
162
|
+
# Maximum size in bytes for each JSONL segment before rolling over to a new file.
|
|
163
|
+
# HORDE_MODEL_REFERENCE_AUDIT__MAX_SEGMENT_BYTES=5242880
|
|
164
|
+
|
|
165
|
+
# Subdirectory name (relative to cache home) for storing audit logs when no override is provided.
|
|
166
|
+
# HORDE_MODEL_REFERENCE_AUDIT__RELATIVE_SUBDIR=audit
|
|
167
|
+
|
|
168
|
+
# Absolute path override for audit log storage. When set, relative_subdir is ignored.
|
|
169
|
+
# HORDE_MODEL_REFERENCE_AUDIT__ROOT_PATH_OVERRIDE=
|
|
170
|
+
|
|
171
|
+
# Whether the pending queue workflow is enabled (PRIMARY deployments only).
|
|
172
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__ENABLED=True
|
|
173
|
+
|
|
174
|
+
# Relative folder under cache home used for queue persistence when no override is set.
|
|
175
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__RELATIVE_SUBDIR=pending_queue
|
|
176
|
+
|
|
177
|
+
# Absolute path override for queue persistence. When set, relative_subdir is ignored.
|
|
178
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__ROOT_PATH_OVERRIDE=
|
|
179
|
+
|
|
180
|
+
# Horde user IDs allowed to submit pending changes.
|
|
181
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__REQUESTOR_IDS=
|
|
182
|
+
|
|
183
|
+
# Horde user IDs allowed to approve/reject pending batches (superset of requestors).
|
|
184
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__APPROVER_IDS=
|
|
185
|
+
|
|
186
|
+
# Reserved for future rotation support (matches audit defaults).
|
|
187
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__MAX_SEGMENT_BYTES=5242880
|
|
188
|
+
|
|
189
|
+
# Enable background cache hydration to keep audit/statistics caches warm. When enabled, caches are proactively refreshed before TTL expiry so clients always get fast cached responses.
|
|
190
|
+
# HORDE_MODEL_REFERENCE_CACHE_HYDRATION_ENABLED=False
|
|
191
|
+
|
|
192
|
+
# Interval in seconds between cache hydration refreshes. Should be less than cache TTLs (statistics_cache_ttl, audit_cache_ttl) to ensure caches stay warm. Default 240s (4 min) with 300s TTLs.
|
|
193
|
+
# HORDE_MODEL_REFERENCE_CACHE_HYDRATION_INTERVAL_SECONDS=240
|
|
194
|
+
|
|
195
|
+
# Maximum age in seconds before stale cached data is discarded. While hydration is running, clients receive stale data instead of waiting for fresh data. Default 1 hour.
|
|
196
|
+
# HORDE_MODEL_REFERENCE_CACHE_HYDRATION_STALE_TTL_SECONDS=3600
|
|
197
|
+
|
|
198
|
+
# Delay in seconds before first hydration run after service startup. Allows service to fully initialize before background tasks begin.
|
|
199
|
+
# HORDE_MODEL_REFERENCE_CACHE_HYDRATION_STARTUP_DELAY_SECONDS=5
|
|
200
|
+
|
|
201
|
+
# List of allowed origins for CORS. Warns if unset or empty, as it falls back to the FastAPI default behavior. See https://fastapi.tiangolo.com/tutorial/cors/#use-corsmiddleware for details.
|
|
202
|
+
# HORDE_MODEL_REFERENCE_CORS_ALLOWED_ORIGINS=
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
################################################################################
|
|
207
|
+
# AI Horde Client+Worker Settings
|
|
208
|
+
################################################################################
|
|
209
|
+
|
|
210
|
+
# Alternative API endpoints for the AI Horde. These should all lead to the same logical AI Horde.
|
|
211
|
+
# ALT_HORDE_URLS=[HttpUrl('https://stablehorde.net/api/')]
|
|
212
|
+
|
|
213
|
+
# The API key used for authenticating requests to the AI Horde.
|
|
214
|
+
# API_KEY=**********
|
|
215
|
+
|
|
216
|
+
# The API endpoint for AI Horde ratings.
|
|
217
|
+
# RATINGS_URL=https://ratings.aihorde.net/api/
|
|
218
|
+
|
|
219
|
+
# The folder where application logs are stored.
|
|
220
|
+
# LOGS_FOLDER=./logs
|
|
221
|
+
|
|
222
|
+
# The folder where AI worker (or client) files are stored, most notably models and checkpoints.
|
|
223
|
+
# AIWORKER_CACHE_HOME=./models
|
|
224
|
+
|
|
225
|
+
# The hugging face home directory.
|
|
226
|
+
# HF_HOME=~/.cache/huggingface
|
|
227
|
+
|
|
228
|
+
# The standard XDG cache directory.
|
|
229
|
+
# XDG_CACHE_HOME=~/.cache/
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
################################################################################
|
|
234
|
+
# Github Proxying Settings
|
|
235
|
+
################################################################################
|
|
236
|
+
|
|
237
|
+
# The base URL for a http(s) GitHub proxy. If None, no proxy is used. This is intended for users where github may be blocked.
|
|
238
|
+
# GITHUB_PROXY_URL_BASE=
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
################################################################################
|
|
243
|
+
# AI Horde CI Settings
|
|
244
|
+
################################################################################
|
|
245
|
+
|
|
246
|
+
# Indicates if any CI/CD pipeline is ongoing.
|
|
247
|
+
# TESTS_ONGOING=False
|
|
248
|
+
|
|
249
|
+
# Indicates if the hordelib CI/CD pipeline is ongoing.
|
|
250
|
+
# HORDELIB_CI_ONGOING=False
|
|
251
|
+
|
|
252
|
+
# Indicates if the AI Horde SDK is currently being tested.
|
|
253
|
+
# HORDE_SDK_TESTING=False
|
|
254
|
+
|
|
255
|
+
# Indicates if the AI Horde is currently being tested.
|
|
256
|
+
# AI_HORDE_TESTING=False
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
# Auto-generated example environment file for Horde Model Reference
|
|
260
|
+
# This file is generated by the settings_doc package.
|
|
261
|
+
# Do not edit this file manually.
|
|
262
|
+
|
|
263
|
+
# Generated on (UTC): 2026-03-26 22:29:13
|
|
264
|
+
|
|
265
|
+
# DEPLOYMENT QUICK START GUIDE
|
|
266
|
+
|
|
267
|
+
# Choose your deployment scenario and uncomment the relevant settings below:
|
|
268
|
+
|
|
269
|
+
# 1. REPLICA MODE (Default) - Client/Worker nodes
|
|
270
|
+
# - Uses GitHub or PRIMARY API to fetch model references
|
|
271
|
+
# - Set: HORDE_MODEL_REFERENCE_REPLICATE_MODE=REPLICA
|
|
272
|
+
# - Optionally set: HORDE_MODEL_REFERENCE_PRIMARY_API_URL=<your-primary-url>
|
|
273
|
+
|
|
274
|
+
# 2. PRIMARY MODE - Single Worker (No Redis)
|
|
275
|
+
# - Authoritative source for model references
|
|
276
|
+
# - Set: HORDE_MODEL_REFERENCE_REPLICATE_MODE=PRIMARY
|
|
277
|
+
# - No Redis configuration needed
|
|
278
|
+
# - Ideal for: Development, testing, low-traffic deployments
|
|
279
|
+
|
|
280
|
+
# 3. PRIMARY MODE - Multi-Worker (With Redis)
|
|
281
|
+
# - Authoritative source with distributed caching
|
|
282
|
+
# - Set: HORDE_MODEL_REFERENCE_REPLICATE_MODE=PRIMARY
|
|
283
|
+
# - Configure all HORDE_MODEL_REFERENCE_REDIS_* settings
|
|
284
|
+
# - Ideal for: Production, high-traffic deployments
|
|
285
|
+
|
|
286
|
+
# For detailed deployment instructions, see:
|
|
287
|
+
# - Docker: docker-compose.yml (single-worker)
|
|
288
|
+
# - Docker + Redis: docker-compose.redis.yml (multi-worker)
|
|
289
|
+
# - Non-Docker: DEPLOYMENT.md
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
################################################################################
|
|
293
|
+
# Horde Model Reference Settings
|
|
294
|
+
################################################################################
|
|
295
|
+
|
|
296
|
+
# Indicates if copies of the model reference are canonical or replicated. Clients should always be replicas.
|
|
297
|
+
# Possible values:
|
|
298
|
+
# `PRIMARY`, `REPLICA`
|
|
299
|
+
# HORDE_MODEL_REFERENCE_REPLICATE_MODE=REPLICA
|
|
300
|
+
|
|
301
|
+
# Whether to create the default model reference folders on initialization.
|
|
302
|
+
# HORDE_MODEL_REFERENCE_MAKE_FOLDERS=False
|
|
303
|
+
|
|
304
|
+
# The GitHub owner of the repository.
|
|
305
|
+
# HORDE_MODEL_REFERENCE_IMAGE_GITHUB_REPO__OWNER=Haidra-Org
|
|
306
|
+
|
|
307
|
+
# The name of the GitHub repository used for image model references.
|
|
308
|
+
# HORDE_MODEL_REFERENCE_IMAGE_GITHUB_REPO__NAME=AI-Horde-image-model-reference
|
|
309
|
+
|
|
310
|
+
# The GitHub branch of the repository.
|
|
311
|
+
# HORDE_MODEL_REFERENCE_IMAGE_GITHUB_REPO__BRANCH=main
|
|
312
|
+
|
|
313
|
+
# Settings for the GitHub proxy, if any.
|
|
314
|
+
# HORDE_MODEL_REFERENCE_IMAGE_GITHUB_REPO__PROXY_SETTINGS=
|
|
315
|
+
|
|
316
|
+
# The GitHub owner of the repository.
|
|
317
|
+
# HORDE_MODEL_REFERENCE_TEXT_GITHUB_REPO__OWNER=Haidra-Org
|
|
318
|
+
|
|
319
|
+
# The name of the GitHub repository used for text model references.
|
|
320
|
+
# HORDE_MODEL_REFERENCE_TEXT_GITHUB_REPO__NAME=AI-Horde-text-model-reference
|
|
321
|
+
|
|
322
|
+
# The GitHub branch of the repository.
|
|
323
|
+
# HORDE_MODEL_REFERENCE_TEXT_GITHUB_REPO__BRANCH=main
|
|
324
|
+
|
|
325
|
+
# Settings for the GitHub proxy, if any.
|
|
326
|
+
# HORDE_MODEL_REFERENCE_TEXT_GITHUB_REPO__PROXY_SETTINGS=
|
|
327
|
+
|
|
328
|
+
# The time-to-live for in memory caches of model reference files, in seconds.
|
|
329
|
+
# HORDE_MODEL_REFERENCE_CACHE_TTL_SECONDS=60
|
|
330
|
+
|
|
331
|
+
# The maximum number of attempts to retry downloading a legacy model reference file.
|
|
332
|
+
# HORDE_MODEL_REFERENCE_LEGACY_DOWNLOAD_RETRY_MAX_ATTEMPTS=3
|
|
333
|
+
|
|
334
|
+
# The backoff time in seconds between retry attempts when downloading a legacy model reference file.
|
|
335
|
+
# HORDE_MODEL_REFERENCE_LEGACY_DOWNLOAD_RETRY_BACKOFF_SECONDS=2
|
|
336
|
+
|
|
337
|
+
# Whether to use Redis for distributed caching. Only should be used in PRIMARY mode.
|
|
338
|
+
# HORDE_MODEL_REFERENCE_REDIS__USE_REDIS=False
|
|
339
|
+
|
|
340
|
+
# Redis connection URL. Format: redis://[:password]@host:port/db
|
|
341
|
+
# HORDE_MODEL_REFERENCE_REDIS__URL=redis://localhost:6379/0
|
|
342
|
+
|
|
343
|
+
# Connection pool size for Redis connections.
|
|
344
|
+
# HORDE_MODEL_REFERENCE_REDIS__POOL_SIZE=10
|
|
345
|
+
|
|
346
|
+
# Socket timeout in seconds for Redis operations.
|
|
347
|
+
# HORDE_MODEL_REFERENCE_REDIS__SOCKET_TIMEOUT=5
|
|
348
|
+
|
|
349
|
+
# Connection timeout in seconds when establishing Redis connection.
|
|
350
|
+
# HORDE_MODEL_REFERENCE_REDIS__SOCKET_CONNECT_TIMEOUT=5
|
|
351
|
+
|
|
352
|
+
# Maximum number of retry attempts for failed Redis operations.
|
|
353
|
+
# HORDE_MODEL_REFERENCE_REDIS__RETRY_MAX_ATTEMPTS=3
|
|
354
|
+
|
|
355
|
+
# Backoff time in seconds between retry attempts for Redis operations.
|
|
356
|
+
# HORDE_MODEL_REFERENCE_REDIS__RETRY_BACKOFF_SECONDS=0.5
|
|
357
|
+
|
|
358
|
+
# Prefix for all Redis keys to namespace model reference data.
|
|
359
|
+
# HORDE_MODEL_REFERENCE_REDIS__KEY_PREFIX=horde:model_ref
|
|
360
|
+
|
|
361
|
+
# TTL for cached entries in seconds. If None, uses cache_ttl_seconds from main settings.
|
|
362
|
+
# HORDE_MODEL_REFERENCE_REDIS__TTL_SECONDS=
|
|
363
|
+
|
|
364
|
+
# Enable pub/sub for cache invalidation across multiple PRIMARY workers.
|
|
365
|
+
# HORDE_MODEL_REFERENCE_REDIS__USE_PUBSUB=True
|
|
366
|
+
|
|
367
|
+
# Base URL of the PRIMARY server API for REPLICA clients to fetch model references from. This must include the service's /api root path; the backend appends /model_references/v2/{category}. If None, REPLICA clients will only use GitHub. Example: https://models.aihorde.net/api
|
|
368
|
+
# HORDE_MODEL_REFERENCE_PRIMARY_API_URL=https://models.aihorde.net/api
|
|
369
|
+
|
|
370
|
+
# Timeout in seconds for HTTP requests to PRIMARY API.
|
|
371
|
+
# HORDE_MODEL_REFERENCE_PRIMARY_API_TIMEOUT=10
|
|
372
|
+
|
|
373
|
+
# Whether REPLICA clients should fallback to GitHub if PRIMARY API is unavailable.
|
|
374
|
+
# HORDE_MODEL_REFERENCE_ENABLE_GITHUB_FALLBACK=True
|
|
375
|
+
|
|
376
|
+
# Whether PRIMARY mode should seed from GitHub on first initialization if local files don't exist. Only used in PRIMARY mode. If True, will download and convert legacy references once on startup.
|
|
377
|
+
# HORDE_MODEL_REFERENCE_GITHUB_SEED_ENABLED=False
|
|
378
|
+
|
|
379
|
+
# Which format is the canonical source of truth. Controls which API has write access. 'v2' (default): v2 API has CRUD, v1 API is read-only (converts from v2 to legacy). 'LEGACY': v1 API has CRUD, v2 API is read-only (converts from legacy to v2).
|
|
380
|
+
# Possible values:
|
|
381
|
+
# `LEGACY`, `v2`
|
|
382
|
+
# HORDE_MODEL_REFERENCE_CANONICAL_FORMAT=v2
|
|
383
|
+
|
|
384
|
+
# Timeout in seconds for Horde API requests to fetch model status, statistics, and worker information.
|
|
385
|
+
# HORDE_MODEL_REFERENCE_HORDE_API_TIMEOUT=30
|
|
386
|
+
|
|
387
|
+
# Cache TTL in seconds for Horde API responses. Uses Redis if available, otherwise in-memory caching.
|
|
388
|
+
# HORDE_MODEL_REFERENCE_HORDE_API_CACHE_TTL=60
|
|
389
|
+
|
|
390
|
+
# Cache TTL in seconds for category statistics. Uses Redis if available, otherwise in-memory caching.
|
|
391
|
+
# HORDE_MODEL_REFERENCE_STATISTICS_CACHE_TTL=300
|
|
392
|
+
|
|
393
|
+
# Cache TTL in seconds for category audit results. Uses Redis if available, otherwise in-memory caching.
|
|
394
|
+
# HORDE_MODEL_REFERENCE_AUDIT_CACHE_TTL=300
|
|
395
|
+
|
|
396
|
+
# Enable background pre-computation of statistics. Currently not implemented (future feature).
|
|
397
|
+
# HORDE_MODEL_REFERENCE_ENABLE_STATISTICS_PRECOMPUTE=False
|
|
398
|
+
|
|
399
|
+
# Preferred file hosts for deletion risk analysis in audit endpoints.
|
|
400
|
+
# HORDE_MODEL_REFERENCE_PREFERRED_FILE_HOSTS=
|
|
401
|
+
|
|
402
|
+
# Percentage threshold for low usage flag in audit analysis. Default 0.0065% flags bottom ~10% of models. Set lower (e.g., 0.005%) to flag fewer models or higher (e.g., 0.01%) to flag more models.
|
|
403
|
+
# HORDE_MODEL_REFERENCE_LOW_USAGE_THRESHOLD_PERCENTAGE=0.0065
|
|
404
|
+
|
|
405
|
+
# Low usage threshold for text_generation models (2% - more lenient than image models at 0.65%).
|
|
406
|
+
# HORDE_MODEL_REFERENCE_TEXT_GEN_LOW_USAGE_THRESHOLD_PERCENTAGE=0.02
|
|
407
|
+
|
|
408
|
+
# Skip download host validation for text_generation models completely.
|
|
409
|
+
# HORDE_MODEL_REFERENCE_TEXT_GEN_IGNORE_DOWNLOAD_HOSTS=True
|
|
410
|
+
|
|
411
|
+
# Minimum monthly usage for text_generation to be flagged as critical (allows some usage).
|
|
412
|
+
# HORDE_MODEL_REFERENCE_TEXT_GEN_CRITICAL_USAGE_THRESHOLD=10
|
|
413
|
+
|
|
414
|
+
# Minimum worker count for text_generation to be flagged as critical (allows some workers).
|
|
415
|
+
# HORDE_MODEL_REFERENCE_TEXT_GEN_CRITICAL_WORKER_THRESHOLD=1
|
|
416
|
+
|
|
417
|
+
# Whether audit trail writes are enabled in PRIMARY deployments.
|
|
418
|
+
# HORDE_MODEL_REFERENCE_AUDIT__ENABLED=True
|
|
419
|
+
|
|
420
|
+
# Maximum size in bytes for each JSONL segment before rolling over to a new file.
|
|
421
|
+
# HORDE_MODEL_REFERENCE_AUDIT__MAX_SEGMENT_BYTES=5242880
|
|
422
|
+
|
|
423
|
+
# Subdirectory name (relative to cache home) for storing audit logs when no override is provided.
|
|
424
|
+
# HORDE_MODEL_REFERENCE_AUDIT__RELATIVE_SUBDIR=audit
|
|
425
|
+
|
|
426
|
+
# Absolute path override for audit log storage. When set, relative_subdir is ignored.
|
|
427
|
+
# HORDE_MODEL_REFERENCE_AUDIT__ROOT_PATH_OVERRIDE=
|
|
428
|
+
|
|
429
|
+
# Whether the pending queue workflow is enabled (PRIMARY deployments only).
|
|
430
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__ENABLED=True
|
|
431
|
+
|
|
432
|
+
# Relative folder under cache home used for queue persistence when no override is set.
|
|
433
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__RELATIVE_SUBDIR=pending_queue
|
|
434
|
+
|
|
435
|
+
# Absolute path override for queue persistence. When set, relative_subdir is ignored.
|
|
436
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__ROOT_PATH_OVERRIDE=
|
|
437
|
+
|
|
438
|
+
# Horde user IDs allowed to submit pending changes.
|
|
439
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__REQUESTOR_IDS=
|
|
440
|
+
|
|
441
|
+
# Horde user IDs allowed to approve/reject pending batches (superset of requestors).
|
|
442
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__APPROVER_IDS=
|
|
443
|
+
|
|
444
|
+
# Reserved for future rotation support (matches audit defaults).
|
|
445
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__MAX_SEGMENT_BYTES=5242880
|
|
446
|
+
|
|
447
|
+
# Enable background cache hydration to keep audit/statistics caches warm. When enabled, caches are proactively refreshed before TTL expiry so clients always get fast cached responses.
|
|
448
|
+
# HORDE_MODEL_REFERENCE_CACHE_HYDRATION_ENABLED=False
|
|
449
|
+
|
|
450
|
+
# Interval in seconds between cache hydration refreshes. Should be less than cache TTLs (statistics_cache_ttl, audit_cache_ttl) to ensure caches stay warm. Default 240s (4 min) with 300s TTLs.
|
|
451
|
+
# HORDE_MODEL_REFERENCE_CACHE_HYDRATION_INTERVAL_SECONDS=240
|
|
452
|
+
|
|
453
|
+
# Maximum age in seconds before stale cached data is discarded. While hydration is running, clients receive stale data instead of waiting for fresh data. Default 1 hour.
|
|
454
|
+
# HORDE_MODEL_REFERENCE_CACHE_HYDRATION_STALE_TTL_SECONDS=3600
|
|
455
|
+
|
|
456
|
+
# Delay in seconds before first hydration run after service startup. Allows service to fully initialize before background tasks begin.
|
|
457
|
+
# HORDE_MODEL_REFERENCE_CACHE_HYDRATION_STARTUP_DELAY_SECONDS=5
|
|
458
|
+
|
|
459
|
+
# List of allowed origins for CORS. Warns if unset or empty, as it falls back to the FastAPI default behavior. See https://fastapi.tiangolo.com/tutorial/cors/#use-corsmiddleware for details.
|
|
460
|
+
# HORDE_MODEL_REFERENCE_CORS_ALLOWED_ORIGINS=
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
################################################################################
|
|
465
|
+
# AI Horde Client+Worker Settings
|
|
466
|
+
################################################################################
|
|
467
|
+
|
|
468
|
+
# Alternative API endpoints for the AI Horde. These should all lead to the same logical AI Horde.
|
|
469
|
+
# ALT_HORDE_URLS=[HttpUrl('https://stablehorde.net/api/')]
|
|
470
|
+
|
|
471
|
+
# The API key used for authenticating requests to the AI Horde.
|
|
472
|
+
# API_KEY=**********
|
|
473
|
+
|
|
474
|
+
# The API endpoint for AI Horde ratings.
|
|
475
|
+
# RATINGS_URL=https://ratings.aihorde.net/api/
|
|
476
|
+
|
|
477
|
+
# The folder where application logs are stored.
|
|
478
|
+
# LOGS_FOLDER=./logs
|
|
479
|
+
|
|
480
|
+
# The folder where AI worker (or client) files are stored, most notably models and checkpoints.
|
|
481
|
+
# AIWORKER_CACHE_HOME=./models
|
|
482
|
+
|
|
483
|
+
# The hugging face home directory.
|
|
484
|
+
# HF_HOME=~/.cache/huggingface
|
|
485
|
+
|
|
486
|
+
# The standard XDG cache directory.
|
|
487
|
+
# XDG_CACHE_HOME=~/.cache/
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
################################################################################
|
|
492
|
+
# Github Proxying Settings
|
|
493
|
+
################################################################################
|
|
494
|
+
|
|
495
|
+
# The base URL for a http(s) GitHub proxy. If None, no proxy is used. This is intended for users where github may be blocked.
|
|
496
|
+
# GITHUB_PROXY_URL_BASE=
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
################################################################################
|
|
501
|
+
# AI Horde CI Settings
|
|
502
|
+
################################################################################
|
|
503
|
+
|
|
504
|
+
# Indicates if any CI/CD pipeline is ongoing.
|
|
505
|
+
# TESTS_ONGOING=False
|
|
506
|
+
|
|
507
|
+
# Indicates if the hordelib CI/CD pipeline is ongoing.
|
|
508
|
+
# HORDELIB_CI_ONGOING=False
|
|
509
|
+
|
|
510
|
+
# Indicates if the AI Horde SDK is currently being tested.
|
|
511
|
+
# HORDE_SDK_TESTING=False
|
|
512
|
+
|
|
513
|
+
# Indicates if the AI Horde is currently being tested.
|
|
514
|
+
# AI_HORDE_TESTING=False
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: horde_model_reference
|
|
3
|
-
Version: 5.3.
|
|
3
|
+
Version: 5.3.2
|
|
4
4
|
Summary: A helper library providing a way to work with the lists of generation models, utility models, and any other related files required for the AI-Horde ecosystem.
|
|
5
5
|
Author-email: tazlin <tazlin.on.github@gmail.com>, db0 <mail@dbzer0.com>
|
|
6
6
|
License: GNU AFFERO GENERAL PUBLIC LICENSE
|
{horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/__init__.py
RENAMED
|
@@ -586,11 +586,13 @@ from .model_reference_records import ( # noqa: E402
|
|
|
586
586
|
)
|
|
587
587
|
from .on_disk_layout import ( # noqa: E402
|
|
588
588
|
COMPONENT_PURPOSE_FOLDERS,
|
|
589
|
+
PresenceSummary,
|
|
589
590
|
category_folder,
|
|
590
591
|
component_relative_path,
|
|
591
592
|
file_paths_for,
|
|
592
593
|
free_bytes_for,
|
|
593
594
|
is_present,
|
|
595
|
+
presence_summary,
|
|
594
596
|
resolve_weights_root,
|
|
595
597
|
)
|
|
596
598
|
from .download_engine import ( # noqa: E402
|
|
@@ -671,6 +673,7 @@ __all__ = [
|
|
|
671
673
|
"PopularModelResult",
|
|
672
674
|
"Predicate",
|
|
673
675
|
"PrefetchStrategy",
|
|
676
|
+
"PresenceSummary",
|
|
674
677
|
"SafetyCheckerFields",
|
|
675
678
|
"SourceSelector",
|
|
676
679
|
"StaticModelProvider",
|
|
@@ -699,6 +702,7 @@ __all__ = [
|
|
|
699
702
|
"horde_model_reference_paths",
|
|
700
703
|
"is_present",
|
|
701
704
|
"md5_of",
|
|
705
|
+
"presence_summary",
|
|
702
706
|
"register_category",
|
|
703
707
|
"register_image_baseline",
|
|
704
708
|
"register_record_type",
|
{horde_model_reference-5.3.0 → horde_model_reference-5.3.2}/src/horde_model_reference/_version.py
RENAMED
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '5.3.
|
|
22
|
-
__version_tuple__ = version_tuple = (5, 3,
|
|
21
|
+
__version__ = version = '5.3.2'
|
|
22
|
+
__version_tuple__ = version_tuple = (5, 3, 2)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g98dc41d57'
|
|
@@ -6,6 +6,7 @@ with fallback to GitHub if the PRIMARY is unavailable.
|
|
|
6
6
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
|
+
import json
|
|
9
10
|
from pathlib import Path
|
|
10
11
|
from typing import Any, override
|
|
11
12
|
|
|
@@ -13,7 +14,7 @@ import httpx
|
|
|
13
14
|
from loguru import logger
|
|
14
15
|
from tenacity import RetryError
|
|
15
16
|
|
|
16
|
-
from horde_model_reference import ReplicateMode, horde_model_reference_settings
|
|
17
|
+
from horde_model_reference import ReplicateMode, horde_model_reference_paths, horde_model_reference_settings
|
|
17
18
|
from horde_model_reference.backends.github_backend import GitHubBackend
|
|
18
19
|
from horde_model_reference.backends.replica_backend_base import ReplicaBackendBase
|
|
19
20
|
from horde_model_reference.http_retry import (
|
|
@@ -87,6 +88,28 @@ class HTTPBackend(ReplicaBackendBase):
|
|
|
87
88
|
"""Get the PRIMARY API URL for a category."""
|
|
88
89
|
return f"{self._primary_api_url}/model_references/v2/{category.value}"
|
|
89
90
|
|
|
91
|
+
def _persist_to_disk(self, category: MODEL_REFERENCE_CATEGORY, data: dict[str, Any]) -> None:
|
|
92
|
+
"""Write fetched v2 data to disk so offline replicas and restarts can read it.
|
|
93
|
+
|
|
94
|
+
The GitHub fallback already writes converted files to disk; this materializes the (otherwise
|
|
95
|
+
memory-only) PRIMARY-API responses too, so an offline LocalReadOnlyBackend (e.g. a worker
|
|
96
|
+
subprocess) reading the same base_path sees the references the parent fetched.
|
|
97
|
+
"""
|
|
98
|
+
base_path = getattr(self._github_backend, "base_path", None)
|
|
99
|
+
if base_path is None:
|
|
100
|
+
return
|
|
101
|
+
try:
|
|
102
|
+
file_path = horde_model_reference_paths.get_model_reference_file_path(
|
|
103
|
+
category,
|
|
104
|
+
base_path=base_path,
|
|
105
|
+
)
|
|
106
|
+
if file_path is None:
|
|
107
|
+
return
|
|
108
|
+
file_path.parent.mkdir(parents=True, exist_ok=True)
|
|
109
|
+
file_path.write_text(json.dumps(data), encoding="utf-8")
|
|
110
|
+
except OSError as e:
|
|
111
|
+
logger.warning(f"HTTPBackend failed to persist {category} to disk: {e}")
|
|
112
|
+
|
|
90
113
|
def _legacy_category_api_url(self, category: MODEL_REFERENCE_CATEGORY) -> str:
|
|
91
114
|
"""Get the legacy PRIMARY API URL for a category."""
|
|
92
115
|
return f"{self._primary_api_url}/model_references/v1/{category.value}"
|
|
@@ -259,7 +282,10 @@ class HTTPBackend(ReplicaBackendBase):
|
|
|
259
282
|
if force_refresh or self.should_fetch_data(category):
|
|
260
283
|
data = self._fetch_from_primary(category)
|
|
261
284
|
|
|
262
|
-
if data is None
|
|
285
|
+
if data is not None:
|
|
286
|
+
# The GitHub fallback writes converted files itself; persist PRIMARY hits too.
|
|
287
|
+
self._persist_to_disk(category, data)
|
|
288
|
+
elif self._enable_github_fallback:
|
|
263
289
|
logger.info(f"Falling back to GitHub for {category}")
|
|
264
290
|
self._github_fallbacks += 1
|
|
265
291
|
data = self._github_backend.fetch_category(category, force_refresh=force_refresh)
|
|
@@ -316,7 +342,10 @@ class HTTPBackend(ReplicaBackendBase):
|
|
|
316
342
|
async with httpx.AsyncClient() as client:
|
|
317
343
|
data = await self._fetch_from_primary_async(category, client)
|
|
318
344
|
|
|
319
|
-
if data is None
|
|
345
|
+
if data is not None:
|
|
346
|
+
# The GitHub fallback writes converted files itself; persist PRIMARY hits too.
|
|
347
|
+
self._persist_to_disk(category, data)
|
|
348
|
+
elif self._enable_github_fallback:
|
|
320
349
|
logger.info(f"Falling back to GitHub for {category} (async)")
|
|
321
350
|
self._github_fallbacks += 1
|
|
322
351
|
data = await self._github_backend.fetch_category_async(
|