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.
Files changed (416) hide show
  1. horde_model_reference-5.3.0/.env.example +261 -0
  2. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.env.sync.example +4 -1
  3. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/MANIFEST.in +1 -0
  4. {horde_model_reference-5.2.0/src/horde_model_reference.egg-info → horde_model_reference-5.3.0}/PKG-INFO +1 -1
  5. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/pyproject.toml +7 -0
  6. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/sync/sync_github_references.py +15 -0
  7. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/__init__.py +15 -0
  8. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/_version.py +3 -3
  9. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/__init__.py +3 -0
  10. horde_model_reference-5.3.0/src/horde_model_reference/backends/local_readonly_backend.py +144 -0
  11. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_reference_manager.py +39 -2
  12. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0/src/horde_model_reference.egg-info}/PKG-INFO +1 -1
  13. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference.egg-info/SOURCES.txt +2 -0
  14. horde_model_reference-5.3.0/tests/backends/test_local_readonly_backend.py +129 -0
  15. horde_model_reference-5.2.0/.env.example +0 -514
  16. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.dockerignore +0 -0
  17. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.env.primary.example +0 -0
  18. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.git-blame-ignore-revs +0 -0
  19. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/codeql.yml +0 -0
  20. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/docker-publish.yml +0 -0
  21. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/docker-validation.yml +0 -0
  22. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/docs.yml +0 -0
  23. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/lint.yml +0 -0
  24. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/maintests.yml +0 -0
  25. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/prtests.yml +0 -0
  26. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.github/workflows/release.yml +0 -0
  27. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.gitignore +0 -0
  28. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.gitmodules +0 -0
  29. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.hadolint.yaml +0 -0
  30. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.pre-commit-config.yaml +0 -0
  31. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/.readthedocs.yaml +0 -0
  32. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/CONTRIBUTING.md +0 -0
  33. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/DEPLOYMENT.md +0 -0
  34. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/Dockerfile +0 -0
  35. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/LICENSE +0 -0
  36. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/README.md +0 -0
  37. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docker-compose.redis.yml +0 -0
  38. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docker-compose.sync.example.yml +0 -0
  39. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docker-compose.yml +0 -0
  40. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/.pages +0 -0
  41. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/build_docs.py +0 -0
  42. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/.pages +0 -0
  43. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/analytics_pipeline.md +0 -0
  44. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/architecture_overview.md +0 -0
  45. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/canonical_format.md +0 -0
  46. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/design_decisions.md +0 -0
  47. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/http_service.md +0 -0
  48. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/integrations.md +0 -0
  49. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/request_lifecycle.md +0 -0
  50. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/concepts/sync_system.md +0 -0
  51. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/.pages +0 -0
  52. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/consume_the_http_api.md +0 -0
  53. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/filter_models_for_a_worker.md +0 -0
  54. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/installation.md +0 -0
  55. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/offline_and_resilient_reads.md +0 -0
  56. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/submit_models_via_the_api.md +0 -0
  57. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/guides/write_a_live_provider.md +0 -0
  58. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/.pages +0 -0
  59. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/.pages +0 -0
  60. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/base_cache.md +0 -0
  61. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/cache_hydrator.md +0 -0
  62. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/constants.md +0 -0
  63. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/deletion_risk_analysis.md +0 -0
  64. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/deletion_risk_cache.md +0 -0
  65. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/filter_presets.md +0 -0
  66. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/statistics.md +0 -0
  67. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/statistics_cache.md +0 -0
  68. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/text_model_grouping.md +0 -0
  69. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/analytics/text_model_parser.md +0 -0
  70. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/audit/.pages +0 -0
  71. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/audit/events.md +0 -0
  72. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/audit/reader.md +0 -0
  73. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/audit/replay.md +0 -0
  74. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/audit/writer.md +0 -0
  75. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/.pages +0 -0
  76. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/base.md +0 -0
  77. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/filesystem_backend.md +0 -0
  78. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/github_backend.md +0 -0
  79. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/http_backend.md +0 -0
  80. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/redis_backend.md +0 -0
  81. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/backends/replica_backend_base.md +0 -0
  82. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/cli/.pages +0 -0
  83. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/data/.pages +0 -0
  84. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/diff_service.md +0 -0
  85. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/http_retry.md +0 -0
  86. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/integrations/.pages +0 -0
  87. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/integrations/data_merger.md +0 -0
  88. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/integrations/horde_api_integration.md +0 -0
  89. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/integrations/horde_api_models.md +0 -0
  90. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/.pages +0 -0
  91. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/classes/.pages +0 -0
  92. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/classes/legacy_converters.md +0 -0
  93. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/classes/legacy_models.md +0 -0
  94. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/convert_all_legacy_dbs.md +0 -0
  95. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/text_csv_utils.md +0 -0
  96. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/validate_sd.md +0 -0
  97. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/legacy/validation/.pages +0 -0
  98. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/meta_consts.md +0 -0
  99. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_consts/.pages +0 -0
  100. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_consts/image.md +0 -0
  101. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_consts/shared.md +0 -0
  102. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_consts/text.md +0 -0
  103. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_kind_validation.md +0 -0
  104. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_reference_manager.md +0 -0
  105. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_reference_metadata.md +0 -0
  106. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/model_reference_records.md +0 -0
  107. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/path_consts.md +0 -0
  108. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/.pages +0 -0
  109. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/apply.md +0 -0
  110. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/audit_events.md +0 -0
  111. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/audit_view.md +0 -0
  112. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/diff_utils.md +0 -0
  113. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/models.md +0 -0
  114. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/service.md +0 -0
  115. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/pending_queue/store.md +0 -0
  116. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/providers/.pages +0 -0
  117. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/providers/base.md +0 -0
  118. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/providers/registry.md +0 -0
  119. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/providers/static_provider.md +0 -0
  120. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/query.md +0 -0
  121. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/query_fields.md +0 -0
  122. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/registries.md +0 -0
  123. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/.pages +0 -0
  124. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/app.md +0 -0
  125. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/pending_queue/.pages +0 -0
  126. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/pending_queue/audit_router.md +0 -0
  127. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/pending_queue/dependencies.md +0 -0
  128. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/pending_queue/router.md +0 -0
  129. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/shared.md +0 -0
  130. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/statistics/.pages +0 -0
  131. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/statistics/routers/.pages +0 -0
  132. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/statistics/routers/deletion_risk.md +0 -0
  133. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/statistics/routers/statistics.md +0 -0
  134. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/.pages +0 -0
  135. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/.pages +0 -0
  136. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/create_update.md +0 -0
  137. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/metadata.md +0 -0
  138. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/pending_queue.md +0 -0
  139. {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
  140. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/references.md +0 -0
  141. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/shared.md +0 -0
  142. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v1/routers/write_validations.md +0 -0
  143. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/.pages +0 -0
  144. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/models.md +0 -0
  145. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/.pages +0 -0
  146. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/metadata.md +0 -0
  147. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/pending_queue.md +0 -0
  148. {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
  149. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/references.md +0 -0
  150. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/search.md +0 -0
  151. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/text_utils.md +0 -0
  152. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/user.md +0 -0
  153. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/service/v2/routers/write_validations.md +0 -0
  154. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/showcase/.pages +0 -0
  155. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/source_consts.md +0 -0
  156. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/.pages +0 -0
  157. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/comparator.md +0 -0
  158. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/config.md +0 -0
  159. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/github_client.md +0 -0
  160. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/legacy_text_validator.md +0 -0
  161. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/text_generation_serializer.md +0 -0
  162. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/sync/watch_mode.md +0 -0
  163. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/text_backend_names.md +0 -0
  164. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/text_model_duplicates.md +0 -0
  165. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/text_model_write_processor.md +0 -0
  166. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/horde_model_reference/util.md +0 -0
  167. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/index.md +0 -0
  168. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/.pages +0 -0
  169. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/api_deployments.md +0 -0
  170. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/audit_trail.md +0 -0
  171. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/glossary.md +0 -0
  172. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/http_api/.pages +0 -0
  173. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/http_api/conventions.md +0 -0
  174. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/http_api/pending_queue_endpoints.md +0 -0
  175. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/http_api/v1_endpoints.md +0 -0
  176. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/http_api/v2_endpoints.md +0 -0
  177. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/http_api/v2_text_utils.md +0 -0
  178. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/legacy_csv_conversion.md +0 -0
  179. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/model_providers.md +0 -0
  180. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/model_reference_backend.md +0 -0
  181. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/model_reference_records.md +0 -0
  182. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/pending_queue.md +0 -0
  183. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/reference/replica_backend_base.md +0 -0
  184. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/stylesheets/extra.css +0 -0
  185. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/.pages +0 -0
  186. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/configuration_and_troubleshooting.md +0 -0
  187. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/getting_started.md +0 -0
  188. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/querying_models.md +0 -0
  189. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/registering_providers.md +0 -0
  190. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/using_the_http_api.md +0 -0
  191. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/docs/tutorials/working_with_records.md +0 -0
  192. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/examples/01_quickstart.py +0 -0
  193. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/examples/02_query_recipes.py +0 -0
  194. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/examples/03_working_with_records.py +0 -0
  195. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/examples/04_register_provider.py +0 -0
  196. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/examples/README.md +0 -0
  197. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/mkdocs.yml +0 -0
  198. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/schemas/stable_diffusion.example.json +0 -0
  199. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/schemas/stable_diffusion.schema.json +0 -0
  200. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/README.md +0 -0
  201. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/__init__.py +0 -0
  202. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/get_all_names.py +0 -0
  203. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/legacy_text/__init__.py +0 -0
  204. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/legacy_text/convert.py +0 -0
  205. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/legacy_text/defaults.json +0 -0
  206. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/legacy_text/generation_params.json +0 -0
  207. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/legacy_text/reverse_convert.py +0 -0
  208. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/sync/README.md +0 -0
  209. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/sync/__init__.py +0 -0
  210. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/sync/github_app_auth_example.md +0 -0
  211. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/scripts/verify_query_fields.py +0 -0
  212. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/setup.cfg +0 -0
  213. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/__init__.py +0 -0
  214. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/base_cache.py +0 -0
  215. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/cache_hydrator.py +0 -0
  216. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/constants.py +0 -0
  217. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/deletion_risk_analysis.py +0 -0
  218. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/deletion_risk_cache.py +0 -0
  219. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/filter_presets.py +0 -0
  220. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/statistics.py +0 -0
  221. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/statistics_cache.py +0 -0
  222. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/text_model_grouping.py +0 -0
  223. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/analytics/text_model_parser.py +0 -0
  224. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/audit/__init__.py +0 -0
  225. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/audit/events.py +0 -0
  226. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/audit/reader.py +0 -0
  227. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/audit/replay.py +0 -0
  228. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/audit/writer.py +0 -0
  229. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/base.py +0 -0
  230. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/filesystem_backend.py +0 -0
  231. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/github_backend.py +0 -0
  232. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/http_backend.py +0 -0
  233. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/redis_backend.py +0 -0
  234. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/backends/replica_backend_base.py +0 -0
  235. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/cli/__init__.py +0 -0
  236. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/cli/migrate_layout.py +0 -0
  237. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/data/defaults.json +0 -0
  238. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/data/generation_params.json +0 -0
  239. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/diff_service.py +0 -0
  240. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/download_engine.py +0 -0
  241. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/group_aliases.py +0 -0
  242. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/group_families.py +0 -0
  243. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/group_schema_store.py +0 -0
  244. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/http_retry.py +0 -0
  245. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/integrations/__init__.py +0 -0
  246. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/integrations/data_merger.py +0 -0
  247. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/integrations/horde_api_integration.py +0 -0
  248. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/integrations/horde_api_models.py +0 -0
  249. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/README.md +0 -0
  250. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/__init__.py +0 -0
  251. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/classes/__init__.py +0 -0
  252. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/classes/legacy_converters.py +0 -0
  253. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/classes/legacy_models.py +0 -0
  254. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/convert_all_legacy_dbs.py +0 -0
  255. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/text_csv_utils.py +0 -0
  256. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/legacy/validate_sd.py +0 -0
  257. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/meta_consts.py +0 -0
  258. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_consts/__init__.py +0 -0
  259. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_consts/image.py +0 -0
  260. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_consts/shared.py +0 -0
  261. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_consts/text.py +0 -0
  262. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_kind_validation.py +0 -0
  263. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_reference_metadata.py +0 -0
  264. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/model_reference_records.py +0 -0
  265. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/on_disk_layout.py +0 -0
  266. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/path_consts.py +0 -0
  267. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/__init__.py +0 -0
  268. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/apply.py +0 -0
  269. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/audit_events.py +0 -0
  270. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/audit_view.py +0 -0
  271. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/diff_utils.py +0 -0
  272. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/materialize.py +0 -0
  273. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/models.py +0 -0
  274. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/service.py +0 -0
  275. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/pending_queue/store.py +0 -0
  276. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/providers/__init__.py +0 -0
  277. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/providers/base.py +0 -0
  278. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/providers/pending_provider.py +0 -0
  279. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/providers/registry.py +0 -0
  280. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/providers/static_provider.py +0 -0
  281. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/py.typed +0 -0
  282. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/query.py +0 -0
  283. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/query_fields.py +0 -0
  284. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/registries.py +0 -0
  285. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/__init__.py +0 -0
  286. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/app.py +0 -0
  287. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/pending_queue/__init__.py +0 -0
  288. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/pending_queue/audit_router.py +0 -0
  289. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/pending_queue/dependencies.py +0 -0
  290. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/pending_queue/router.py +0 -0
  291. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/shared.py +0 -0
  292. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/statistics/__init__.py +0 -0
  293. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/statistics/routers/__init__.py +0 -0
  294. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/statistics/routers/deletion_risk.py +0 -0
  295. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/statistics/routers/statistics.py +0 -0
  296. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/__init__.py +0 -0
  297. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/__init__.py +0 -0
  298. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/create_update.py +0 -0
  299. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/metadata.py +0 -0
  300. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/pending_queue.py +0 -0
  301. {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
  302. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/references.py +0 -0
  303. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/shared.py +0 -0
  304. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v1/routers/write_validations.py +0 -0
  305. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/__init__.py +0 -0
  306. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/models.py +0 -0
  307. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/__init__.py +0 -0
  308. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/metadata.py +0 -0
  309. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/pending_queue.py +0 -0
  310. {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
  311. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/references.py +0 -0
  312. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/search.py +0 -0
  313. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/text_utils.py +0 -0
  314. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/user.py +0 -0
  315. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/service/v2/routers/write_validations.py +0 -0
  316. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/showcase/README.md +0 -0
  317. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/source_consts.py +0 -0
  318. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/__init__.py +0 -0
  319. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/comparator.py +0 -0
  320. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/config.py +0 -0
  321. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/github_client.py +0 -0
  322. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/legacy_text_validator.py +0 -0
  323. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/text_generation_serializer.py +0 -0
  324. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/sync/watch_mode.py +0 -0
  325. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/text_backend_names.py +0 -0
  326. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/text_model_duplicates.py +0 -0
  327. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/text_model_write_processor.py +0 -0
  328. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference/util.py +0 -0
  329. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference.egg-info/dependency_links.txt +0 -0
  330. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference.egg-info/entry_points.txt +0 -0
  331. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference.egg-info/requires.txt +0 -0
  332. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/src/horde_model_reference.egg-info/top_level.txt +0 -0
  333. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/README.md +0 -0
  334. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/__init__.py +0 -0
  335. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/backends/__init__.py +0 -0
  336. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/backends/test_backends_init.py +0 -0
  337. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/backends/test_http_backend.py +0 -0
  338. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/backends/test_primary_mode.py +0 -0
  339. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/backends/test_redis_backend.py +0 -0
  340. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/check_model_ref_type_blocks.py +0 -0
  341. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/conftest.py +0 -0
  342. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/create_env_file_example.py +0 -0
  343. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/create_example_json.py +0 -0
  344. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/helpers.py +0 -0
  345. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/__init__.py +0 -0
  346. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/conftest.py +0 -0
  347. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/test_data_merger.py +0 -0
  348. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/test_deletion_risk_analysis_live.py +0 -0
  349. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/test_deletion_risk_worker_count.py +0 -0
  350. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/test_horde_api_integration.py +0 -0
  351. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/test_horde_api_integration_live.py +0 -0
  352. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/horde_api/test_indexed_horde_types.py +0 -0
  353. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/integrations/test_stats_aggregation.py +0 -0
  354. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/pending_queue/test_apply.py +0 -0
  355. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/pending_queue/test_audit_view.py +0 -0
  356. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/pending_queue/test_diff_service.py +0 -0
  357. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/pending_queue/test_service.py +0 -0
  358. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/pending_queue/test_store.py +0 -0
  359. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/__init__.py +0 -0
  360. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_api_design_phase4.py +0 -0
  361. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_pending_models_endpoint.py +0 -0
  362. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_pending_queue_audit_endpoints.py +0 -0
  363. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_replica_backend_base.py +0 -0
  364. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_shared_allowlists.py +0 -0
  365. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_shared_auth.py +0 -0
  366. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_text_utils.py +0 -0
  367. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_user_roles_endpoint.py +0 -0
  368. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_v1_api.py +0 -0
  369. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_v2_api.py +0 -0
  370. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/service/test_v2_search.py +0 -0
  371. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/__init__.py +0 -0
  372. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_cache_hydrator.py +0 -0
  373. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_deletion_risk_analysis.py +0 -0
  374. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_extras_and_aliases.py +0 -0
  375. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_group_families.py +0 -0
  376. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_statistics.py +0 -0
  377. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_statistics_cache.py +0 -0
  378. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_text_model_grouping.py +0 -0
  379. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/statistics_and_audit/test_text_model_parser.py +0 -0
  380. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/__init__.py +0 -0
  381. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/test_comparator.py +0 -0
  382. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/test_comparator_integration.py +0 -0
  383. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/test_config.py +0 -0
  384. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/test_github_client.py +0 -0
  385. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/test_legacy_text_validator.py +0 -0
  386. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/sync/test_text_generation_serializer.py +0 -0
  387. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_audit_replay.py +0 -0
  388. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_audit_trail.py +0 -0
  389. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_broken_tutu_grouping.py +0 -0
  390. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_canonical_format.py +0 -0
  391. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_combined_model_statistics.py +0 -0
  392. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_consts.py +0 -0
  393. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_convert_legacy_database.py +0 -0
  394. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_converters.py +0 -0
  395. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_csv_rows_to_legacy_dict.py +0 -0
  396. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_download_engine.py +0 -0
  397. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_env_example.py +0 -0
  398. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_examples.py +0 -0
  399. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_metadata.py +0 -0
  400. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_migrate_layout.py +0 -0
  401. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_model_kind_validation.py +0 -0
  402. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_model_providers.py +0 -0
  403. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_model_reference_manager.py +0 -0
  404. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_on_disk_layout.py +0 -0
  405. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_pending_materialize.py +0 -0
  406. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_pending_provider.py +0 -0
  407. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_query.py +0 -0
  408. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_records.py +0 -0
  409. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_registries.py +0 -0
  410. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_scripts.py +0 -0
  411. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_text_generation_csv_conversion.py +0 -0
  412. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_text_generation_file_paths.py +0 -0
  413. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_text_model_duplicates.py +0 -0
  414. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_text_model_group.py +0 -0
  415. {horde_model_reference-5.2.0 → horde_model_reference-5.3.0}/tests/test_text_model_write_processor.py +0 -0
  416. {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
- GITHUB_APP_INSTALLATION_ID=12345678
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.2.0
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
 
@@ -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(
@@ -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. "
@@ -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.2.0'
22
- __version_tuple__ = version_tuple = (5, 2, 0)
21
+ __version__ = version = '5.3.0'
22
+ __version_tuple__ = version_tuple = (5, 3, 0)
23
23
 
24
- __commit_id__ = commit_id = 'g252799263'
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(f"Creating backend with replicate_mode={replicate_mode}, base_path={base_path}")
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 replicate_mode != cls._instance._replicate_mode:
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.2.0
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