horde-model-reference 5.2.0__tar.gz → 5.3.0__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.0/.env.example +261 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.env.sync.example +4 -1
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/MANIFEST.in +1 -0
- {horde_model_reference-5.2.0/src/horde_model_reference.egg-info → horde_model_reference-5.3.0}/PKG-INFO +1 -1
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/pyproject.toml +7 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/sync/sync_github_references.py +15 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/__init__.py +15 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/_version.py +3 -3
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/__init__.py +3 -0
- horde_model_reference-5.3.0/src/horde_model_reference/backends/local_readonly_backend.py +144 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_reference_manager.py +39 -2
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0/src/horde_model_reference.egg-info}/PKG-INFO +1 -1
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference.egg-info/SOURCES.txt +2 -0
- horde_model_reference-5.3.0/tests/backends/test_local_readonly_backend.py +129 -0
- horde_model_reference-5.2.0/.env.example +0 -514
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.dockerignore +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.env.primary.example +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.git-blame-ignore-revs +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/codeql.yml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/docker-publish.yml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/docker-validation.yml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/docs.yml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/lint.yml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/maintests.yml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/prtests.yml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/release.yml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.gitignore +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.gitmodules +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.hadolint.yaml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.pre-commit-config.yaml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.readthedocs.yaml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/CONTRIBUTING.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/DEPLOYMENT.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/Dockerfile +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/LICENSE +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/README.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docker-compose.redis.yml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docker-compose.sync.example.yml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docker-compose.yml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/build_docs.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/analytics_pipeline.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/architecture_overview.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/canonical_format.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/design_decisions.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/http_service.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/integrations.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/request_lifecycle.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/sync_system.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/consume_the_http_api.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/filter_models_for_a_worker.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/installation.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/offline_and_resilient_reads.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/submit_models_via_the_api.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/write_a_live_provider.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/base_cache.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/cache_hydrator.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/constants.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/deletion_risk_analysis.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/deletion_risk_cache.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/filter_presets.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/statistics.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/statistics_cache.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/text_model_grouping.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/text_model_parser.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/audit/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/audit/events.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/audit/reader.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/audit/replay.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/audit/writer.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/base.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/filesystem_backend.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/github_backend.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/http_backend.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/redis_backend.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/replica_backend_base.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/cli/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/data/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/diff_service.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/http_retry.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/integrations/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/integrations/data_merger.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/integrations/horde_api_integration.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/integrations/horde_api_models.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/classes/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/classes/legacy_converters.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/classes/legacy_models.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/convert_all_legacy_dbs.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/text_csv_utils.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/validate_sd.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/validation/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/meta_consts.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_consts/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_consts/image.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_consts/shared.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_consts/text.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_kind_validation.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_reference_manager.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_reference_metadata.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_reference_records.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/path_consts.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/apply.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/audit_events.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/audit_view.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/diff_utils.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/models.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/service.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/store.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/providers/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/providers/base.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/providers/registry.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/providers/static_provider.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/query.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/query_fields.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/registries.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/app.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/pending_queue/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/pending_queue/audit_router.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/pending_queue/dependencies.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/pending_queue/router.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/shared.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/statistics/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/statistics/routers/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/statistics/routers/deletion_risk.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/statistics/routers/statistics.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/create_update.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/metadata.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/pending_queue.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/pending_queue_audit.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/references.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/shared.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/write_validations.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/models.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/metadata.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/pending_queue.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/pending_queue_audit.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/references.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/search.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/text_utils.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/user.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/write_validations.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/showcase/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/source_consts.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/comparator.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/config.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/github_client.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/legacy_text_validator.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/text_generation_serializer.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/watch_mode.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/text_backend_names.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/text_model_duplicates.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/text_model_write_processor.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/util.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/index.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/api_deployments.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/audit_trail.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/glossary.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/http_api/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/http_api/conventions.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/http_api/pending_queue_endpoints.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/http_api/v1_endpoints.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/http_api/v2_endpoints.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/http_api/v2_text_utils.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/legacy_csv_conversion.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/model_providers.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/model_reference_backend.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/model_reference_records.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/pending_queue.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/replica_backend_base.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/stylesheets/extra.css +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/.pages +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/configuration_and_troubleshooting.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/getting_started.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/querying_models.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/registering_providers.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/using_the_http_api.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/working_with_records.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/examples/01_quickstart.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/examples/02_query_recipes.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/examples/03_working_with_records.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/examples/04_register_provider.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/examples/README.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/mkdocs.yml +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/schemas/stable_diffusion.example.json +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/schemas/stable_diffusion.schema.json +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/README.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/get_all_names.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/legacy_text/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/legacy_text/convert.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/legacy_text/defaults.json +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/legacy_text/generation_params.json +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/legacy_text/reverse_convert.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/sync/README.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/sync/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/sync/github_app_auth_example.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/verify_query_fields.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/setup.cfg +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/base_cache.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/cache_hydrator.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/constants.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/deletion_risk_analysis.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/deletion_risk_cache.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/filter_presets.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/statistics.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/statistics_cache.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/text_model_grouping.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/text_model_parser.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/audit/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/audit/events.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/audit/reader.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/audit/replay.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/audit/writer.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/base.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/filesystem_backend.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/github_backend.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/http_backend.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/redis_backend.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/replica_backend_base.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/cli/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/cli/migrate_layout.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/data/defaults.json +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/data/generation_params.json +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/diff_service.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/download_engine.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/group_aliases.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/group_families.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/group_schema_store.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/http_retry.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/integrations/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/integrations/data_merger.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/integrations/horde_api_integration.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/integrations/horde_api_models.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/README.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/classes/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/classes/legacy_converters.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/classes/legacy_models.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/convert_all_legacy_dbs.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/text_csv_utils.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/validate_sd.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/meta_consts.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_consts/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_consts/image.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_consts/shared.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_consts/text.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_kind_validation.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_reference_metadata.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_reference_records.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/on_disk_layout.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/path_consts.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/apply.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/audit_events.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/audit_view.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/diff_utils.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/materialize.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/models.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/service.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/store.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/providers/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/providers/base.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/providers/pending_provider.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/providers/registry.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/providers/static_provider.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/py.typed +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/query.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/query_fields.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/registries.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/app.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/pending_queue/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/pending_queue/audit_router.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/pending_queue/dependencies.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/pending_queue/router.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/shared.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/statistics/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/statistics/routers/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/statistics/routers/deletion_risk.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/statistics/routers/statistics.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/create_update.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/metadata.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/pending_queue.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/pending_queue_audit.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/references.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/shared.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/write_validations.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/models.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/metadata.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/pending_queue.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/pending_queue_audit.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/references.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/search.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/text_utils.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/user.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/write_validations.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/showcase/README.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/source_consts.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/comparator.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/config.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/github_client.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/legacy_text_validator.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/text_generation_serializer.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/watch_mode.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/text_backend_names.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/text_model_duplicates.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/text_model_write_processor.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/util.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference.egg-info/dependency_links.txt +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference.egg-info/entry_points.txt +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference.egg-info/requires.txt +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference.egg-info/top_level.txt +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/README.md +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/backends/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/backends/test_backends_init.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/backends/test_http_backend.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/backends/test_primary_mode.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/backends/test_redis_backend.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/check_model_ref_type_blocks.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/conftest.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/create_env_file_example.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/create_example_json.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/helpers.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/conftest.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/test_data_merger.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/test_deletion_risk_analysis_live.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/test_deletion_risk_worker_count.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/test_horde_api_integration.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/test_horde_api_integration_live.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/test_indexed_horde_types.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/integrations/test_stats_aggregation.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/pending_queue/test_apply.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/pending_queue/test_audit_view.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/pending_queue/test_diff_service.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/pending_queue/test_service.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/pending_queue/test_store.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_api_design_phase4.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_pending_models_endpoint.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_pending_queue_audit_endpoints.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_replica_backend_base.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_shared_allowlists.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_shared_auth.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_text_utils.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_user_roles_endpoint.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_v1_api.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_v2_api.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_v2_search.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_cache_hydrator.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_deletion_risk_analysis.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_extras_and_aliases.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_group_families.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_statistics.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_statistics_cache.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_text_model_grouping.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_text_model_parser.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/__init__.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/test_comparator.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/test_comparator_integration.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/test_config.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/test_github_client.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/test_legacy_text_validator.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/test_text_generation_serializer.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_audit_replay.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_audit_trail.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_broken_tutu_grouping.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_canonical_format.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_combined_model_statistics.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_consts.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_convert_legacy_database.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_converters.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_csv_rows_to_legacy_dict.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_download_engine.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_env_example.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_examples.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_metadata.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_migrate_layout.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_model_kind_validation.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_model_providers.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_model_reference_manager.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_on_disk_layout.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_pending_materialize.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_pending_provider.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_query.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_records.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_registries.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_scripts.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_text_generation_csv_conversion.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_text_generation_file_paths.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_text_model_duplicates.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_text_model_group.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_text_model_write_processor.py +0 -0
- {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/uv.lock +0 -0
|
@@ -0,0 +1,261 @@
|
|
|
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-06-16 14:58:18
|
|
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
|
+
# Read references straight from local disk and never download (no GitHub / PRIMARY API / Redis). Intended for subprocesses whose parent already downloaded and wrote the converted reference files. When True, primary_api_url, github_seed, and redis are ignored and a LocalReadOnlyBackend is used.
|
|
44
|
+
# HORDE_MODEL_REFERENCE_OFFLINE=False
|
|
45
|
+
|
|
46
|
+
# Whether to create the default model reference folders on initialization.
|
|
47
|
+
# HORDE_MODEL_REFERENCE_MAKE_FOLDERS=False
|
|
48
|
+
|
|
49
|
+
# The GitHub owner of the repository.
|
|
50
|
+
# HORDE_MODEL_REFERENCE_IMAGE_GITHUB_REPO__OWNER=Haidra-Org
|
|
51
|
+
|
|
52
|
+
# The name of the GitHub repository used for image model references.
|
|
53
|
+
# HORDE_MODEL_REFERENCE_IMAGE_GITHUB_REPO__NAME=AI-Horde-image-model-reference
|
|
54
|
+
|
|
55
|
+
# The GitHub branch of the repository.
|
|
56
|
+
# HORDE_MODEL_REFERENCE_IMAGE_GITHUB_REPO__BRANCH=main
|
|
57
|
+
|
|
58
|
+
# Settings for the GitHub proxy, if any.
|
|
59
|
+
# HORDE_MODEL_REFERENCE_IMAGE_GITHUB_REPO__PROXY_SETTINGS=
|
|
60
|
+
|
|
61
|
+
# The GitHub owner of the repository.
|
|
62
|
+
# HORDE_MODEL_REFERENCE_TEXT_GITHUB_REPO__OWNER=Haidra-Org
|
|
63
|
+
|
|
64
|
+
# The name of the GitHub repository used for text model references.
|
|
65
|
+
# HORDE_MODEL_REFERENCE_TEXT_GITHUB_REPO__NAME=AI-Horde-text-model-reference
|
|
66
|
+
|
|
67
|
+
# The GitHub branch of the repository.
|
|
68
|
+
# HORDE_MODEL_REFERENCE_TEXT_GITHUB_REPO__BRANCH=main
|
|
69
|
+
|
|
70
|
+
# Settings for the GitHub proxy, if any.
|
|
71
|
+
# HORDE_MODEL_REFERENCE_TEXT_GITHUB_REPO__PROXY_SETTINGS=
|
|
72
|
+
|
|
73
|
+
# The time-to-live for in memory caches of model reference files, in seconds.
|
|
74
|
+
# HORDE_MODEL_REFERENCE_CACHE_TTL_SECONDS=60
|
|
75
|
+
|
|
76
|
+
# The maximum number of attempts to retry downloading a legacy model reference file.
|
|
77
|
+
# HORDE_MODEL_REFERENCE_LEGACY_DOWNLOAD_RETRY_MAX_ATTEMPTS=3
|
|
78
|
+
|
|
79
|
+
# The backoff time in seconds between retry attempts when downloading a legacy model reference file.
|
|
80
|
+
# HORDE_MODEL_REFERENCE_LEGACY_DOWNLOAD_RETRY_BACKOFF_SECONDS=2
|
|
81
|
+
|
|
82
|
+
# Whether to use Redis for distributed caching. Only should be used in PRIMARY mode.
|
|
83
|
+
# HORDE_MODEL_REFERENCE_REDIS__USE_REDIS=False
|
|
84
|
+
|
|
85
|
+
# Redis connection URL. Format: redis://[:password]@host:port/db
|
|
86
|
+
# HORDE_MODEL_REFERENCE_REDIS__URL=redis://localhost:6379/0
|
|
87
|
+
|
|
88
|
+
# Connection pool size for Redis connections.
|
|
89
|
+
# HORDE_MODEL_REFERENCE_REDIS__POOL_SIZE=10
|
|
90
|
+
|
|
91
|
+
# Socket timeout in seconds for Redis operations.
|
|
92
|
+
# HORDE_MODEL_REFERENCE_REDIS__SOCKET_TIMEOUT=5
|
|
93
|
+
|
|
94
|
+
# Connection timeout in seconds when establishing Redis connection.
|
|
95
|
+
# HORDE_MODEL_REFERENCE_REDIS__SOCKET_CONNECT_TIMEOUT=5
|
|
96
|
+
|
|
97
|
+
# Maximum number of retry attempts for failed Redis operations.
|
|
98
|
+
# HORDE_MODEL_REFERENCE_REDIS__RETRY_MAX_ATTEMPTS=3
|
|
99
|
+
|
|
100
|
+
# Backoff time in seconds between retry attempts for Redis operations.
|
|
101
|
+
# HORDE_MODEL_REFERENCE_REDIS__RETRY_BACKOFF_SECONDS=0.5
|
|
102
|
+
|
|
103
|
+
# Prefix for all Redis keys to namespace model reference data.
|
|
104
|
+
# HORDE_MODEL_REFERENCE_REDIS__KEY_PREFIX=horde:model_ref
|
|
105
|
+
|
|
106
|
+
# TTL for cached entries in seconds. If None, uses cache_ttl_seconds from main settings.
|
|
107
|
+
# HORDE_MODEL_REFERENCE_REDIS__TTL_SECONDS=
|
|
108
|
+
|
|
109
|
+
# Enable pub/sub for cache invalidation across multiple PRIMARY workers.
|
|
110
|
+
# HORDE_MODEL_REFERENCE_REDIS__USE_PUBSUB=True
|
|
111
|
+
|
|
112
|
+
# 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
|
|
113
|
+
# HORDE_MODEL_REFERENCE_PRIMARY_API_URL=https://models.aihorde.net/api
|
|
114
|
+
|
|
115
|
+
# Timeout in seconds for HTTP requests to PRIMARY API.
|
|
116
|
+
# HORDE_MODEL_REFERENCE_PRIMARY_API_TIMEOUT=10
|
|
117
|
+
|
|
118
|
+
# Whether REPLICA clients should fallback to GitHub if PRIMARY API is unavailable.
|
|
119
|
+
# HORDE_MODEL_REFERENCE_ENABLE_GITHUB_FALLBACK=True
|
|
120
|
+
|
|
121
|
+
# 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.
|
|
122
|
+
# HORDE_MODEL_REFERENCE_GITHUB_SEED_ENABLED=False
|
|
123
|
+
|
|
124
|
+
# 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).
|
|
125
|
+
# Possible values:
|
|
126
|
+
# `legacy`, `v2`, `legacy`
|
|
127
|
+
# HORDE_MODEL_REFERENCE_CANONICAL_FORMAT=v2
|
|
128
|
+
|
|
129
|
+
# Timeout in seconds for Horde API requests to fetch model status, statistics, and worker information.
|
|
130
|
+
# HORDE_MODEL_REFERENCE_HORDE_API_TIMEOUT=30
|
|
131
|
+
|
|
132
|
+
# Cache TTL in seconds for Horde API responses. Uses Redis if available, otherwise in-memory caching.
|
|
133
|
+
# HORDE_MODEL_REFERENCE_HORDE_API_CACHE_TTL=60
|
|
134
|
+
|
|
135
|
+
# Cache TTL in seconds for category statistics. Uses Redis if available, otherwise in-memory caching.
|
|
136
|
+
# HORDE_MODEL_REFERENCE_STATISTICS_CACHE_TTL=300
|
|
137
|
+
|
|
138
|
+
# Cache TTL for deletion risk analysis results. Uses Redis if available, otherwise in-memory caching.
|
|
139
|
+
# HORDE_MODEL_REFERENCE_DELETION_RISK_CACHE_TTL=300
|
|
140
|
+
|
|
141
|
+
# Enable background pre-computation of statistics. Currently not implemented (future feature).
|
|
142
|
+
# HORDE_MODEL_REFERENCE_ENABLE_STATISTICS_PRECOMPUTE=False
|
|
143
|
+
|
|
144
|
+
# Preferred file hosts for deletion risk analysis in audit endpoints.
|
|
145
|
+
# HORDE_MODEL_REFERENCE_PREFERRED_FILE_HOSTS=
|
|
146
|
+
|
|
147
|
+
# 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.
|
|
148
|
+
# HORDE_MODEL_REFERENCE_LOW_USAGE_THRESHOLD_PERCENTAGE=0.0065
|
|
149
|
+
|
|
150
|
+
# Low usage threshold for text_generation models (2% - more lenient than image models at 0.65%).
|
|
151
|
+
# HORDE_MODEL_REFERENCE_TEXT_GEN_LOW_USAGE_THRESHOLD_PERCENTAGE=0.02
|
|
152
|
+
|
|
153
|
+
# Skip download host validation for text_generation models completely.
|
|
154
|
+
# HORDE_MODEL_REFERENCE_TEXT_GEN_IGNORE_DOWNLOAD_HOSTS=True
|
|
155
|
+
|
|
156
|
+
# Minimum monthly usage for text_generation to be flagged as critical (allows some usage).
|
|
157
|
+
# HORDE_MODEL_REFERENCE_TEXT_GEN_CRITICAL_USAGE_THRESHOLD=10
|
|
158
|
+
|
|
159
|
+
# Minimum worker count for text_generation to be flagged as critical (allows some workers).
|
|
160
|
+
# HORDE_MODEL_REFERENCE_TEXT_GEN_CRITICAL_WORKER_THRESHOLD=1
|
|
161
|
+
|
|
162
|
+
# Whether audit trail writes are enabled in PRIMARY deployments.
|
|
163
|
+
# HORDE_MODEL_REFERENCE_AUDIT__ENABLED=True
|
|
164
|
+
|
|
165
|
+
# Maximum size in bytes for each JSONL segment before rolling over to a new file.
|
|
166
|
+
# HORDE_MODEL_REFERENCE_AUDIT__MAX_SEGMENT_BYTES=5242880
|
|
167
|
+
|
|
168
|
+
# Subdirectory name (relative to cache home) for storing audit logs when no override is provided.
|
|
169
|
+
# HORDE_MODEL_REFERENCE_AUDIT__RELATIVE_SUBDIR=audit
|
|
170
|
+
|
|
171
|
+
# Absolute path override for audit log storage. When set, relative_subdir is ignored.
|
|
172
|
+
# HORDE_MODEL_REFERENCE_AUDIT__ROOT_PATH_OVERRIDE=
|
|
173
|
+
|
|
174
|
+
# Whether the pending queue workflow is enabled (PRIMARY deployments only).
|
|
175
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__ENABLED=True
|
|
176
|
+
|
|
177
|
+
# Relative folder under cache home used for queue persistence when no override is set.
|
|
178
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__RELATIVE_SUBDIR=pending_queue
|
|
179
|
+
|
|
180
|
+
# Absolute path override for queue persistence. When set, relative_subdir is ignored.
|
|
181
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__ROOT_PATH_OVERRIDE=
|
|
182
|
+
|
|
183
|
+
# Horde user IDs allowed to submit pending changes.
|
|
184
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__REQUESTOR_IDS=
|
|
185
|
+
|
|
186
|
+
# Horde user IDs allowed to approve/reject pending batches (superset of requestors).
|
|
187
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__APPROVER_IDS=
|
|
188
|
+
|
|
189
|
+
# Reserved for future rotation support (matches audit defaults).
|
|
190
|
+
# HORDE_MODEL_REFERENCE_PENDING_QUEUE__MAX_SEGMENT_BYTES=5242880
|
|
191
|
+
|
|
192
|
+
# 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.
|
|
193
|
+
# HORDE_MODEL_REFERENCE_CACHE_HYDRATION_ENABLED=False
|
|
194
|
+
|
|
195
|
+
# Interval in seconds between cache hydration refreshes. Should be less than cache TTLs (statistics_cache_ttl, deletion_risk_cache_ttl) to ensure caches stay warm. Default 240s (4 min) with 300s TTLs.
|
|
196
|
+
# HORDE_MODEL_REFERENCE_CACHE_HYDRATION_INTERVAL_SECONDS=240
|
|
197
|
+
|
|
198
|
+
# 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.
|
|
199
|
+
# HORDE_MODEL_REFERENCE_CACHE_HYDRATION_STALE_TTL_SECONDS=3600
|
|
200
|
+
|
|
201
|
+
# Delay in seconds before first hydration run after service startup. Allows service to fully initialize before background tasks begin.
|
|
202
|
+
# HORDE_MODEL_REFERENCE_CACHE_HYDRATION_STARTUP_DELAY_SECONDS=5
|
|
203
|
+
|
|
204
|
+
# 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.
|
|
205
|
+
# HORDE_MODEL_REFERENCE_CORS_ALLOWED_ORIGINS=
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
################################################################################
|
|
210
|
+
# AI Horde Client+Worker Settings
|
|
211
|
+
################################################################################
|
|
212
|
+
|
|
213
|
+
# Alternative API endpoints for the AI Horde. These should all lead to the same logical AI Horde.
|
|
214
|
+
# ALT_HORDE_URLS=[HttpUrl('https://stablehorde.net/api/')]
|
|
215
|
+
|
|
216
|
+
# The API key used for authenticating requests to the AI Horde.
|
|
217
|
+
# API_KEY=**********
|
|
218
|
+
|
|
219
|
+
# The API endpoint for AI Horde ratings.
|
|
220
|
+
# RATINGS_URL=https://ratings.aihorde.net/api/
|
|
221
|
+
|
|
222
|
+
# The folder where application logs are stored.
|
|
223
|
+
# LOGS_FOLDER=./logs
|
|
224
|
+
|
|
225
|
+
# The folder where AI worker (or client) files are stored, most notably models and checkpoints.
|
|
226
|
+
# AIWORKER_CACHE_HOME=./models
|
|
227
|
+
|
|
228
|
+
# The hugging face home directory.
|
|
229
|
+
# HF_HOME=~/.cache/huggingface
|
|
230
|
+
|
|
231
|
+
# The standard XDG cache directory.
|
|
232
|
+
# XDG_CACHE_HOME=~/.cache/
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
################################################################################
|
|
237
|
+
# Github Proxying Settings
|
|
238
|
+
################################################################################
|
|
239
|
+
|
|
240
|
+
# 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.
|
|
241
|
+
# GITHUB_PROXY_URL_BASE=
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
################################################################################
|
|
246
|
+
# AI Horde CI Settings
|
|
247
|
+
################################################################################
|
|
248
|
+
|
|
249
|
+
# Indicates if any CI/CD pipeline is ongoing.
|
|
250
|
+
# TESTS_ONGOING=False
|
|
251
|
+
|
|
252
|
+
# Indicates if the hordelib CI/CD pipeline is ongoing.
|
|
253
|
+
# HORDELIB_CI_ONGOING=False
|
|
254
|
+
|
|
255
|
+
# Indicates if the AI Horde SDK is currently being tested.
|
|
256
|
+
# HORDE_SDK_TESTING=False
|
|
257
|
+
|
|
258
|
+
# Indicates if the AI Horde is currently being tested.
|
|
259
|
+
# AI_HORDE_TESTING=False
|
|
260
|
+
|
|
261
|
+
|
|
@@ -16,8 +16,11 @@
|
|
|
16
16
|
# METHOD 2: GitHub App (recommended for production)
|
|
17
17
|
# Required scopes: Contents (Read & Write), Pull Requests (Read & Write)
|
|
18
18
|
# Setup instructions in SYNC_README.md
|
|
19
|
+
# Uses GitHub App *installation* auth (app id + installation id + private key PEM).
|
|
20
|
+
# A GitHub App client_id/client_secret are NOT usable here.
|
|
19
21
|
GITHUB_APP_ID=1234567
|
|
20
|
-
|
|
22
|
+
# Optional: if omitted, the installation id is auto-discovered from the target repo.
|
|
23
|
+
# GITHUB_APP_INSTALLATION_ID=12345678
|
|
21
24
|
|
|
22
25
|
# Private Key: Choose ONE option
|
|
23
26
|
# Option A: Path to mounted PEM file (recommended for Docker)
|
|
@@ -2,6 +2,7 @@ include *.md
|
|
|
2
2
|
recursive-include horde_model_reference *.py
|
|
3
3
|
recursive-include horde_model_reference *.md
|
|
4
4
|
recursive-include horde_model_reference *.typed
|
|
5
|
+
recursive-include horde_model_reference *.json
|
|
5
6
|
|
|
6
7
|
recursive-include tests *.py
|
|
7
8
|
recursive-include tests *.json
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: horde_model_reference
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.3.0
|
|
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
|
|
@@ -63,6 +63,13 @@ version_file = "src/horde_model_reference/_version.py"
|
|
|
63
63
|
# include = ["horde_model_reference*", "horde_model_reference.*"]
|
|
64
64
|
# exclude = ["horde_model_reference.showcase*", "horde_model_reference.tests*"]
|
|
65
65
|
|
|
66
|
+
# Bundle the text-generation data files (defaults.json, generation_params.json) into the
|
|
67
|
+
# wheel. Without this they are only present in editable installs, so the GitHub sync's
|
|
68
|
+
# text_generation path fails in the --no-editable Docker image with
|
|
69
|
+
# "Cannot find defaults.json in package data or scripts/legacy_text/".
|
|
70
|
+
[tool.setuptools.package-data]
|
|
71
|
+
"horde_model_reference" = ["data/*.json", "py.typed"]
|
|
72
|
+
|
|
66
73
|
[tool.setuptools.exclude-package-data]
|
|
67
74
|
"*" = ["*.webp", "*.png", "*.jpg", "*.ckpt", "*.pt", "*.safetensors"]
|
|
68
75
|
|
{horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/sync/sync_github_references.py
RENAMED
|
@@ -386,6 +386,21 @@ def main() -> int:
|
|
|
386
386
|
)
|
|
387
387
|
return 1
|
|
388
388
|
|
|
389
|
+
# Fail fast on missing GitHub authentication *before* entering the watch loop or a
|
|
390
|
+
# one-shot run, so a misconfigured deployment exits loudly at startup instead of
|
|
391
|
+
# silently polling and only erroring when the first change appears. Skipped for
|
|
392
|
+
# dry-run / offline (--no-pr) runs, which never push or open PRs.
|
|
393
|
+
if not github_sync_settings.dry_run and not github_sync_settings.no_pr:
|
|
394
|
+
from horde_model_reference.sync.config import github_app_settings
|
|
395
|
+
|
|
396
|
+
if not (github_app_settings.is_configured() or github_sync_settings.github_token):
|
|
397
|
+
logger.error(
|
|
398
|
+
"No GitHub authentication configured. Set HORDE_GITHUB_SYNC_GITHUB_TOKEN (a PAT), "
|
|
399
|
+
"or GITHUB_APP_ID + GITHUB_APP_PRIVATE_KEY_PATH/GITHUB_APP_PRIVATE_KEY (GitHub App). "
|
|
400
|
+
"Refusing to start to avoid a watch loop that cannot create PRs."
|
|
401
|
+
)
|
|
402
|
+
return 1
|
|
403
|
+
|
|
389
404
|
# Watch mode
|
|
390
405
|
if github_sync_settings.watch_mode:
|
|
391
406
|
watch_manager = WatchModeManager(
|
{horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/__init__.py
RENAMED
|
@@ -290,6 +290,11 @@ class HordeModelReferenceSettings(BaseSettings):
|
|
|
290
290
|
replicate_mode: ReplicateMode = ReplicateMode.REPLICA
|
|
291
291
|
"""Indicates if copies of the model reference are canonical or replicated. Clients should always be replicas."""
|
|
292
292
|
|
|
293
|
+
offline: bool = False
|
|
294
|
+
"""Read references straight from local disk and never download (no GitHub / PRIMARY API / Redis). \
|
|
295
|
+
Intended for subprocesses whose parent already downloaded and wrote the converted reference files. \
|
|
296
|
+
When True, primary_api_url, github_seed, and redis are ignored and a LocalReadOnlyBackend is used."""
|
|
297
|
+
|
|
293
298
|
make_folders: bool = False
|
|
294
299
|
"""Whether to create the default model reference folders on initialization."""
|
|
295
300
|
|
|
@@ -469,6 +474,16 @@ Allows service to fully initialize before background tasks begin."""
|
|
|
469
474
|
f"Validating settings for replicate_mode={self.replicate_mode} and "
|
|
470
475
|
f"canonical_format={self.canonical_format}"
|
|
471
476
|
)
|
|
477
|
+
if self.offline:
|
|
478
|
+
logger.info(
|
|
479
|
+
"offline=True: reading model references from local disk only. "
|
|
480
|
+
"primary_api_url, github_seed_enabled, and redis are ignored; no network access will occur."
|
|
481
|
+
)
|
|
482
|
+
if self.redis.use_redis is True:
|
|
483
|
+
self.redis.use_redis = False
|
|
484
|
+
if self.github_seed_enabled:
|
|
485
|
+
self.github_seed_enabled = False
|
|
486
|
+
|
|
472
487
|
if self.replicate_mode == ReplicateMode.REPLICA and self.redis.use_redis is True:
|
|
473
488
|
logger.warning(
|
|
474
489
|
"Redis settings detected in REPLICA mode. "
|
{horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/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.
|
|
22
|
-
__version_tuple__ = version_tuple = (5,
|
|
21
|
+
__version__ = version = '5.3.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (5, 3, 0)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gea166d555'
|
|
@@ -6,6 +6,7 @@ for fetching model reference data from different sources:
|
|
|
6
6
|
- FileSystemBackend: PRIMARY mode - reads/writes local JSON files
|
|
7
7
|
- GitHubBackend: REPLICA mode - downloads from GitHub with legacy conversion
|
|
8
8
|
- HTTPBackend: REPLICA mode - fetches from PRIMARY API with GitHub fallback
|
|
9
|
+
- LocalReadOnlyBackend: REPLICA mode - reads local JSON files, never downloads (offline subprocesses)
|
|
9
10
|
- RedisBackend: PRIMARY mode wrapper - adds distributed caching (requires `redis` extra)
|
|
10
11
|
|
|
11
12
|
Each backend is designed for specific replication modes and use cases.
|
|
@@ -19,6 +20,7 @@ from .base import ModelReferenceBackend
|
|
|
19
20
|
from .filesystem_backend import FileSystemBackend
|
|
20
21
|
from .github_backend import GitHubBackend
|
|
21
22
|
from .http_backend import HTTPBackend
|
|
23
|
+
from .local_readonly_backend import LocalReadOnlyBackend
|
|
22
24
|
from .replica_backend_base import ReplicaBackendBase
|
|
23
25
|
|
|
24
26
|
if TYPE_CHECKING:
|
|
@@ -28,6 +30,7 @@ __all__ = [
|
|
|
28
30
|
"FileSystemBackend",
|
|
29
31
|
"GitHubBackend",
|
|
30
32
|
"HTTPBackend",
|
|
33
|
+
"LocalReadOnlyBackend",
|
|
31
34
|
"ModelReferenceBackend",
|
|
32
35
|
"RedisBackend",
|
|
33
36
|
"ReplicaBackendBase",
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"""Offline, read-only backend that serves model references straight from local disk.
|
|
2
|
+
|
|
3
|
+
This backend exists for the worker -> multi-subprocess paradigm. The parent process owns *all*
|
|
4
|
+
reference downloading (via a REPLICA backend) and writes the converted v2 JSON to ``base_path``;
|
|
5
|
+
every subprocess then constructs a :class:`LocalReadOnlyBackend` that reads those files and is
|
|
6
|
+
structurally incapable of reaching the network. This removes the per-subprocess
|
|
7
|
+
download/convert pipeline that otherwise runs once in every spawned interpreter.
|
|
8
|
+
|
|
9
|
+
It is a REPLICA-mode backend with ``supports_writes() == False`` so the manager skips the
|
|
10
|
+
write-path machinery (pending queue, group stores, audit). Staleness is purely mtime/TTL based
|
|
11
|
+
(inherited from :class:`ReplicaBackendBase`), so a parent refresh that rewrites a category file is
|
|
12
|
+
picked up on the next reload without any network access.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import json
|
|
18
|
+
from pathlib import Path
|
|
19
|
+
from typing import Any, override
|
|
20
|
+
|
|
21
|
+
import httpx
|
|
22
|
+
from loguru import logger
|
|
23
|
+
|
|
24
|
+
from horde_model_reference import ReplicateMode, horde_model_reference_paths
|
|
25
|
+
from horde_model_reference.backends.replica_backend_base import ReplicaBackendBase
|
|
26
|
+
from horde_model_reference.meta_consts import MODEL_REFERENCE_CATEGORY
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class LocalReadOnlyBackend(ReplicaBackendBase):
|
|
30
|
+
"""Read converted v2 references from ``base_path`` on disk; never download or convert."""
|
|
31
|
+
|
|
32
|
+
def __init__(
|
|
33
|
+
self,
|
|
34
|
+
*,
|
|
35
|
+
base_path: str | Path = horde_model_reference_paths.base_path,
|
|
36
|
+
cache_ttl_seconds: int = 60,
|
|
37
|
+
) -> None:
|
|
38
|
+
"""Initialize the offline read-only backend.
|
|
39
|
+
|
|
40
|
+
Args:
|
|
41
|
+
base_path: Base path the parent process wrote converted reference files to.
|
|
42
|
+
cache_ttl_seconds: TTL for the in-memory cache. mtime changes also invalidate.
|
|
43
|
+
|
|
44
|
+
"""
|
|
45
|
+
super().__init__(mode=ReplicateMode.REPLICA, cache_ttl_seconds=cache_ttl_seconds)
|
|
46
|
+
self.base_path = Path(base_path)
|
|
47
|
+
logger.debug(f"LocalReadOnlyBackend initialized with base_path={self.base_path}")
|
|
48
|
+
|
|
49
|
+
@override
|
|
50
|
+
def _get_file_path_for_validation(self, category: MODEL_REFERENCE_CATEGORY) -> Path | None:
|
|
51
|
+
return horde_model_reference_paths.get_model_reference_file_path(category, base_path=self.base_path)
|
|
52
|
+
|
|
53
|
+
@override
|
|
54
|
+
def _get_legacy_file_path_for_validation(self, category: MODEL_REFERENCE_CATEGORY) -> Path | None:
|
|
55
|
+
return horde_model_reference_paths.get_legacy_model_reference_file_path(category, base_path=self.base_path)
|
|
56
|
+
|
|
57
|
+
def _read_json_from_disk(self, file_path: Path | None) -> dict[str, Any] | None:
|
|
58
|
+
if not file_path or not file_path.exists():
|
|
59
|
+
return None
|
|
60
|
+
try:
|
|
61
|
+
return json.loads(file_path.read_text(encoding="utf-8"))
|
|
62
|
+
except (OSError, json.JSONDecodeError) as e:
|
|
63
|
+
logger.error(f"LocalReadOnlyBackend failed to read {file_path}: {e}")
|
|
64
|
+
return None
|
|
65
|
+
|
|
66
|
+
@override
|
|
67
|
+
def fetch_category(
|
|
68
|
+
self,
|
|
69
|
+
category: MODEL_REFERENCE_CATEGORY,
|
|
70
|
+
*,
|
|
71
|
+
force_refresh: bool = False,
|
|
72
|
+
) -> dict[str, Any] | None:
|
|
73
|
+
with self._lock:
|
|
74
|
+
return self._fetch_with_cache(
|
|
75
|
+
category,
|
|
76
|
+
lambda: self._read_json_from_disk(self._get_file_path_for_validation(category)),
|
|
77
|
+
force_refresh=force_refresh,
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
@override
|
|
81
|
+
def fetch_all_categories(
|
|
82
|
+
self,
|
|
83
|
+
*,
|
|
84
|
+
force_refresh: bool = False,
|
|
85
|
+
) -> dict[MODEL_REFERENCE_CATEGORY, dict[str, Any] | None]:
|
|
86
|
+
return {
|
|
87
|
+
category: self.fetch_category(category, force_refresh=force_refresh)
|
|
88
|
+
for category in MODEL_REFERENCE_CATEGORY
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
@override
|
|
92
|
+
async def fetch_category_async(
|
|
93
|
+
self,
|
|
94
|
+
category: MODEL_REFERENCE_CATEGORY,
|
|
95
|
+
*,
|
|
96
|
+
httpx_client: httpx.AsyncClient | None = None,
|
|
97
|
+
force_refresh: bool = False,
|
|
98
|
+
) -> dict[str, Any] | None:
|
|
99
|
+
# Reads are local disk; there is no benefit to async file I/O for these small JSON files.
|
|
100
|
+
return self.fetch_category(category, force_refresh=force_refresh)
|
|
101
|
+
|
|
102
|
+
@override
|
|
103
|
+
async def fetch_all_categories_async(
|
|
104
|
+
self,
|
|
105
|
+
*,
|
|
106
|
+
httpx_client: httpx.AsyncClient | None = None,
|
|
107
|
+
force_refresh: bool = False,
|
|
108
|
+
) -> dict[MODEL_REFERENCE_CATEGORY, dict[str, Any] | None]:
|
|
109
|
+
return {
|
|
110
|
+
category: await self.fetch_category_async(category, force_refresh=force_refresh)
|
|
111
|
+
for category in MODEL_REFERENCE_CATEGORY
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@override
|
|
115
|
+
def get_category_file_path(self, category: MODEL_REFERENCE_CATEGORY) -> Path | None:
|
|
116
|
+
return self._get_file_path_for_validation(category)
|
|
117
|
+
|
|
118
|
+
@override
|
|
119
|
+
def get_all_category_file_paths(self) -> dict[MODEL_REFERENCE_CATEGORY, Path | None]:
|
|
120
|
+
return {category: self.get_category_file_path(category) for category in MODEL_REFERENCE_CATEGORY}
|
|
121
|
+
|
|
122
|
+
@override
|
|
123
|
+
def get_legacy_json(
|
|
124
|
+
self,
|
|
125
|
+
category: MODEL_REFERENCE_CATEGORY,
|
|
126
|
+
redownload: bool = False,
|
|
127
|
+
) -> dict[str, Any] | None:
|
|
128
|
+
# Offline: redownload is a no-op; serve whatever the parent left on disk.
|
|
129
|
+
return self._read_json_from_disk(self._get_legacy_file_path_for_validation(category))
|
|
130
|
+
|
|
131
|
+
@override
|
|
132
|
+
def get_legacy_json_string(
|
|
133
|
+
self,
|
|
134
|
+
category: MODEL_REFERENCE_CATEGORY,
|
|
135
|
+
redownload: bool = False,
|
|
136
|
+
) -> str | None:
|
|
137
|
+
file_path = self._get_legacy_file_path_for_validation(category)
|
|
138
|
+
if not file_path or not file_path.exists():
|
|
139
|
+
return None
|
|
140
|
+
try:
|
|
141
|
+
return file_path.read_text(encoding="utf-8")
|
|
142
|
+
except OSError as e:
|
|
143
|
+
logger.error(f"LocalReadOnlyBackend failed to read legacy {file_path}: {e}")
|
|
144
|
+
return None
|
|
@@ -18,6 +18,7 @@ from horde_model_reference.backends import (
|
|
|
18
18
|
FileSystemBackend,
|
|
19
19
|
GitHubBackend,
|
|
20
20
|
HTTPBackend,
|
|
21
|
+
LocalReadOnlyBackend,
|
|
21
22
|
ModelReferenceBackend,
|
|
22
23
|
)
|
|
23
24
|
from horde_model_reference.group_aliases import GroupAliasStore
|
|
@@ -114,6 +115,7 @@ class ModelReferenceManager:
|
|
|
114
115
|
|
|
115
116
|
_instance: ModelReferenceManager | None = None
|
|
116
117
|
_replicate_mode: ReplicateMode = ReplicateMode.REPLICA
|
|
118
|
+
_offline: bool = False
|
|
117
119
|
_prefetch_strategy: PrefetchStrategy = PrefetchStrategy.SYNC
|
|
118
120
|
_deferred_prefetch_handle: DeferredPrefetchHandle | None = None
|
|
119
121
|
_async_prefetch_task: asyncio.Task[None] | None = None
|
|
@@ -179,6 +181,7 @@ class ModelReferenceManager:
|
|
|
179
181
|
base_path: str | Path,
|
|
180
182
|
replicate_mode: ReplicateMode,
|
|
181
183
|
audit_writer: AuditTrailWriter | None,
|
|
184
|
+
offline: bool = False,
|
|
182
185
|
) -> ModelReferenceBackend:
|
|
183
186
|
"""Create the appropriate backend based on mode and settings.
|
|
184
187
|
|
|
@@ -186,12 +189,23 @@ class ModelReferenceManager:
|
|
|
186
189
|
base_path: Base path for model reference files.
|
|
187
190
|
replicate_mode: The replication mode.
|
|
188
191
|
audit_writer: Optional audit writer used by write-capable backends.
|
|
192
|
+
offline: If True, return a read-only local-disk backend that never downloads,
|
|
193
|
+
regardless of replicate_mode. Used by subprocesses whose parent owns downloading.
|
|
189
194
|
|
|
190
195
|
Returns:
|
|
191
196
|
ModelReferenceBackend: The configured backend instance.
|
|
192
197
|
|
|
193
198
|
"""
|
|
194
|
-
logger.debug(
|
|
199
|
+
logger.debug(
|
|
200
|
+
f"Creating backend with replicate_mode={replicate_mode}, base_path={base_path}, offline={offline}",
|
|
201
|
+
)
|
|
202
|
+
if offline:
|
|
203
|
+
logger.info("Using LocalReadOnlyBackend (offline=True); references are read from disk, never downloaded")
|
|
204
|
+
return LocalReadOnlyBackend(
|
|
205
|
+
base_path=base_path,
|
|
206
|
+
cache_ttl_seconds=horde_model_reference_settings.cache_ttl_seconds,
|
|
207
|
+
)
|
|
208
|
+
|
|
195
209
|
if replicate_mode == ReplicateMode.PRIMARY:
|
|
196
210
|
logger.debug("Creating backend for PRIMARY mode")
|
|
197
211
|
|
|
@@ -276,6 +290,7 @@ class ModelReferenceManager:
|
|
|
276
290
|
base_path: str | Path = horde_model_reference_paths.base_path,
|
|
277
291
|
replicate_mode: ReplicateMode = horde_model_reference_settings.replicate_mode,
|
|
278
292
|
prefetch_strategy: PrefetchStrategy = PrefetchStrategy.LAZY,
|
|
293
|
+
offline: bool = horde_model_reference_settings.offline,
|
|
279
294
|
) -> ModelReferenceManager:
|
|
280
295
|
"""Create a new instance of ModelReferenceManager.
|
|
281
296
|
|
|
@@ -298,6 +313,10 @@ class ModelReferenceManager:
|
|
|
298
313
|
prefetch_strategy: Controls whether initial cache warm-up is skipped (LAZY/NONE),
|
|
299
314
|
performed synchronously, deferred, or executed via background async task.
|
|
300
315
|
Defaults to PrefetchStrategy.LAZY.
|
|
316
|
+
offline: If True, read references from local disk only via LocalReadOnlyBackend and never
|
|
317
|
+
download (no GitHub / PRIMARY API / Redis), regardless of replicate_mode. Intended for
|
|
318
|
+
subprocesses whose parent already downloaded the reference files.
|
|
319
|
+
Defaults to horde_model_reference_settings.offline.
|
|
301
320
|
|
|
302
321
|
Returns:
|
|
303
322
|
ModelReferenceManager: The singleton instance of ModelReferenceManager.
|
|
@@ -330,8 +349,15 @@ class ModelReferenceManager:
|
|
|
330
349
|
base_path=base_path,
|
|
331
350
|
replicate_mode=replicate_mode,
|
|
332
351
|
audit_writer=audit_writer,
|
|
352
|
+
offline=offline,
|
|
333
353
|
)
|
|
334
354
|
|
|
355
|
+
# Offline backends are REPLICA-shaped regardless of the requested mode; align the
|
|
356
|
+
# manager's recorded mode to the backend so the mode-match assertion below holds and
|
|
357
|
+
# downstream code does not assume PRIMARY write capability.
|
|
358
|
+
if offline:
|
|
359
|
+
replicate_mode = backend.replicate_mode
|
|
360
|
+
|
|
335
361
|
backend_mode = backend.replicate_mode
|
|
336
362
|
if backend_mode != replicate_mode:
|
|
337
363
|
raise RuntimeError(
|
|
@@ -341,6 +367,7 @@ class ModelReferenceManager:
|
|
|
341
367
|
|
|
342
368
|
cls._instance.backend = backend
|
|
343
369
|
cls._instance._replicate_mode = replicate_mode
|
|
370
|
+
cls._instance._offline = offline
|
|
344
371
|
if backend.supports_writes():
|
|
345
372
|
cls._instance._audit_writer = audit_writer
|
|
346
373
|
cls._instance._pending_queue_service = cls._build_pending_queue_service(
|
|
@@ -377,7 +404,12 @@ class ModelReferenceManager:
|
|
|
377
404
|
"ModelReferenceManager is a singleton and has already been instantiated "
|
|
378
405
|
"with a different backend."
|
|
379
406
|
)
|
|
380
|
-
if
|
|
407
|
+
if offline != cls._instance._offline:
|
|
408
|
+
raise RuntimeError(
|
|
409
|
+
"ModelReferenceManager is a singleton and has already been instantiated with a different "
|
|
410
|
+
f"offline setting.\nExisting offline={cls._instance._offline}; new offline={offline}."
|
|
411
|
+
)
|
|
412
|
+
if not offline and replicate_mode != cls._instance._replicate_mode:
|
|
381
413
|
raise RuntimeError(
|
|
382
414
|
"ModelReferenceManager is a singleton and has already been instantiated with different "
|
|
383
415
|
"settings.\nExisting settings: "
|
|
@@ -511,6 +543,11 @@ class ModelReferenceManager:
|
|
|
511
543
|
"""Return the prefetch strategy originally configured for this manager."""
|
|
512
544
|
return self._prefetch_strategy
|
|
513
545
|
|
|
546
|
+
@property
|
|
547
|
+
def offline(self) -> bool:
|
|
548
|
+
"""Return whether this manager reads from local disk only (never downloads)."""
|
|
549
|
+
return self._offline
|
|
550
|
+
|
|
514
551
|
@property
|
|
515
552
|
def pending_queue_service(self) -> PendingQueueService | None:
|
|
516
553
|
"""Return the pending queue service when queueing is enabled."""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: horde_model_reference
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.3.0
|
|
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
|