resolvekit 0.1.4__tar.gz → 0.1.6__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 (343) hide show
  1. {resolvekit-0.1.4 → resolvekit-0.1.6}/PKG-INFO +1 -1
  2. {resolvekit-0.1.4 → resolvekit-0.1.6}/pyproject.toml +1 -1
  3. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/loading/module_catalog.py +36 -68
  4. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/resolver.py +13 -3
  5. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/engine/suggest_rank.py +10 -2
  6. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/custom/pack.py +18 -7
  7. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/custom/sources/__init__.py +2 -0
  8. resolvekit-0.1.6/src/resolvekit/packs/custom/sources/fuzzy_retrieval.py +17 -0
  9. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/sources/__init__.py +4 -0
  10. resolvekit-0.1.6/src/resolvekit/shared/sources/fuzzy_retrieval_brute_base.py +403 -0
  11. {resolvekit-0.1.4 → resolvekit-0.1.6}/LICENSE +0 -0
  12. {resolvekit-0.1.4 → resolvekit-0.1.6}/README.md +0 -0
  13. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/NOTICE.md +0 -0
  14. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/__init__.py +0 -0
  15. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_convenience.py +0 -0
  16. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/admin1/metadata.json +0 -0
  17. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/admin2/metadata.json +0 -0
  18. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/admin3/metadata.json +0 -0
  19. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/admin4/metadata.json +0 -0
  20. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/admin5/metadata.json +0 -0
  21. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/cities/metadata.json +0 -0
  22. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/continental_unions/entities.sqlite +0 -0
  23. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/continental_unions/metadata.json +0 -0
  24. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/continental_unions/symspell.dict +0 -0
  25. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/continents/entities.sqlite +0 -0
  26. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/continents/metadata.json +0 -0
  27. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/continents/symspell.dict +0 -0
  28. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/countries/entities.sqlite +0 -0
  29. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/countries/geo_calibrator.json +0 -0
  30. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/countries/metadata.json +0 -0
  31. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/countries/symspell.dict +0 -0
  32. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/regions/entities.sqlite +0 -0
  33. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/regions/metadata.json +0 -0
  34. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/geo/regions/symspell.dict +0 -0
  35. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/manifest.json +0 -0
  36. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/companies/entities.sqlite +0 -0
  37. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/companies/metadata.json +0 -0
  38. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/companies/symspell.dict +0 -0
  39. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/data_sources/entities.sqlite +0 -0
  40. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/data_sources/metadata.json +0 -0
  41. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/data_sources/symspell.dict +0 -0
  42. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/governments/entities.sqlite +0 -0
  43. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/governments/metadata.json +0 -0
  44. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/governments/symspell.dict +0 -0
  45. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/lenders/entities.sqlite +0 -0
  46. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/lenders/metadata.json +0 -0
  47. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/lenders/symspell.dict +0 -0
  48. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/political_parties/entities.sqlite +0 -0
  49. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/political_parties/metadata.json +0 -0
  50. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/political_parties/symspell.dict +0 -0
  51. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/providers/entities.sqlite +0 -0
  52. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/providers/metadata.json +0 -0
  53. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/org/providers/symspell.dict +0 -0
  54. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_data/parse/deny_list.json +0 -0
  55. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_pandas_integration.py +0 -0
  56. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/_polars_integration.py +0 -0
  57. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/__init__.py +0 -0
  58. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/_outcomes.py +0 -0
  59. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/api.py +0 -0
  60. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/containment.py +0 -0
  61. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/country_geonames_aliases.py +0 -0
  62. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/datapack_layout.py +0 -0
  63. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/entity_validity.py +0 -0
  64. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/formal_names.py +0 -0
  65. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/geo_shared.py +0 -0
  66. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/groups.py +0 -0
  67. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/inspection.py +0 -0
  68. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/models.py +0 -0
  69. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/module_catalog.py +0 -0
  70. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/oecd_dac.py +0 -0
  71. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/__init__.py +0 -0
  72. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/build_report.py +0 -0
  73. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/changelog.py +0 -0
  74. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/chunk.py +0 -0
  75. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/contribution.py +0 -0
  76. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/core.py +0 -0
  77. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/discover.py +0 -0
  78. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/enrich.py +0 -0
  79. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/geo_staging.py +0 -0
  80. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/packaging.py +0 -0
  81. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/promote.py +0 -0
  82. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/qa.py +0 -0
  83. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/reconcile.py +0 -0
  84. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/stages.py +0 -0
  85. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/pipeline/types.py +0 -0
  86. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/presets.py +0 -0
  87. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/registry.py +0 -0
  88. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/__init__.py +0 -0
  89. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/__init__.py +0 -0
  90. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/adapter.py +0 -0
  91. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/base_dc_api.py +0 -0
  92. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/bundle.py +0 -0
  93. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/canonicalize.py +0 -0
  94. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/client.py +0 -0
  95. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/constants.py +0 -0
  96. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/__init__.py +0 -0
  97. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/_admin_walk.py +0 -0
  98. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/_chunk_callback.py +0 -0
  99. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/_geo_regions.py +0 -0
  100. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/_ordered_emitter.py +0 -0
  101. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/_progress_context.py +0 -0
  102. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/_streaming.py +0 -0
  103. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/_type_mappings.py +0 -0
  104. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/adapter.py +0 -0
  105. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/dc_api.py +0 -0
  106. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/discovery.py +0 -0
  107. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/fetch.py +0 -0
  108. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/mappings.py +0 -0
  109. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/profile.py +0 -0
  110. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/geo/prominence.py +0 -0
  111. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/models.py +0 -0
  112. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/node.py +0 -0
  113. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/org/__init__.py +0 -0
  114. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/org/adapter.py +0 -0
  115. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/org/dc_api.py +0 -0
  116. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/org/discovery.py +0 -0
  117. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/org/fetch.py +0 -0
  118. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/org/mappings.py +0 -0
  119. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/org/profile.py +0 -0
  120. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/rows.py +0 -0
  121. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/specs.py +0 -0
  122. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/datacommons/text.py +0 -0
  123. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/discovery_events.py +0 -0
  124. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/protocol.py +0 -0
  125. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/seed/__init__.py +0 -0
  126. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/seed/continents.py +0 -0
  127. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/seed/m49.py +0 -0
  128. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/wikidata/__init__.py +0 -0
  129. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/wikidata/aliases.py +0 -0
  130. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sources/wikidata/sitelinks.py +0 -0
  131. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sqlite/__init__.py +0 -0
  132. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sqlite/constants.py +0 -0
  133. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sqlite/context.py +0 -0
  134. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sqlite/diff.py +0 -0
  135. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sqlite/export.py +0 -0
  136. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sqlite/specs.py +0 -0
  137. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sqlite/validate.py +0 -0
  138. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/sqlite/write.py +0 -0
  139. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/state.py +0 -0
  140. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/builder/utils.py +0 -0
  141. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/__init__.py +0 -0
  142. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/adapters/__init__.py +0 -0
  143. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/adapters/_cldr_source.py +0 -0
  144. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/adapters/_latin_filter.py +0 -0
  145. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/adapters/_wikidata_client.py +0 -0
  146. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/adapters/cldr.py +0 -0
  147. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/adapters/geonames.py +0 -0
  148. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/adapters/multilingual_names.py +0 -0
  149. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/adapters/synthetic.py +0 -0
  150. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/adapters/wikidata.py +0 -0
  151. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/dataset.py +0 -0
  152. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/evaluation.py +0 -0
  153. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/fitting.py +0 -0
  154. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/models.py +0 -0
  155. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/scoring_model.py +0 -0
  156. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/train.py +0 -0
  157. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/calibration/vectorize.py +0 -0
  158. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/__init__.py +0 -0
  159. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/__init__.py +0 -0
  160. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/_byod.py +0 -0
  161. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/_pivot.py +0 -0
  162. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/batch.py +0 -0
  163. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/bulk.py +0 -0
  164. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/cache.py +0 -0
  165. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/code_lookup.py +0 -0
  166. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/containment_api.py +0 -0
  167. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/context_input.py +0 -0
  168. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/diagnostics.py +0 -0
  169. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/entity_lookup.py +0 -0
  170. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/group_api.py +0 -0
  171. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/info.py +0 -0
  172. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/inspect.py +0 -0
  173. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/loading/__init__.py +0 -0
  174. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/loading/pack_loader.py +0 -0
  175. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/loading/paths.py +0 -0
  176. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/loading/store_builder.py +0 -0
  177. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/modules.py +0 -0
  178. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/output_spec.py +0 -0
  179. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/output_view.py +0 -0
  180. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/query_prep.py +0 -0
  181. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/resolve_flow.py +0 -0
  182. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/snap.py +0 -0
  183. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/api/suggest_flow.py +0 -0
  184. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/byod/__init__.py +0 -0
  185. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/byod/build.py +0 -0
  186. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/byod/builder.py +0 -0
  187. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/byod/cache.py +0 -0
  188. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/byod/intake.py +0 -0
  189. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/byod/result.py +0 -0
  190. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/config.py +0 -0
  191. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/datapack.py +0 -0
  192. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/download_api.py +0 -0
  193. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/engine/__init__.py +0 -0
  194. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/engine/_stages.py +0 -0
  195. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/engine/config.py +0 -0
  196. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/engine/decision.py +0 -0
  197. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/engine/enrichment.py +0 -0
  198. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/engine/interfaces.py +0 -0
  199. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/engine/multi_runner.py +0 -0
  200. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/engine/router.py +0 -0
  201. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/engine/runner.py +0 -0
  202. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/engine/tier_utils.py +0 -0
  203. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/errors.py +0 -0
  204. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/errors_base.py +0 -0
  205. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/explain/__init__.py +0 -0
  206. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/explain/events.py +0 -0
  207. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/explain/feature_text.py +0 -0
  208. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/explain/helpers.py +0 -0
  209. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/explain/protocol.py +0 -0
  210. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/explain/renderers.py +0 -0
  211. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/explain/result_html.py +0 -0
  212. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/explain/result_types.py +0 -0
  213. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/explain/scorecard.py +0 -0
  214. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/explain/sink.py +0 -0
  215. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/linking/__init__.py +0 -0
  216. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/linking/base_linker.py +0 -0
  217. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/linking/base_normalizer.py +0 -0
  218. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/linking/linker.py +0 -0
  219. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/linking/normalizer.py +0 -0
  220. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/merge.py +0 -0
  221. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/model/__init__.py +0 -0
  222. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/model/_repr.py +0 -0
  223. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/model/bulk_result.py +0 -0
  224. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/model/candidate.py +0 -0
  225. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/model/crosswalk.py +0 -0
  226. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/model/entity.py +0 -0
  227. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/model/entity_attributes.py +0 -0
  228. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/model/features.py +0 -0
  229. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/model/generation.py +0 -0
  230. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/model/inspection.py +0 -0
  231. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/model/name_grammar.py +0 -0
  232. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/model/query.py +0 -0
  233. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/model/result.py +0 -0
  234. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/module_registry.py +0 -0
  235. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/overlay_loader.py +0 -0
  236. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/parse/__init__.py +0 -0
  237. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/parse/_pivot.py +0 -0
  238. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/parse/automaton.py +0 -0
  239. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/parse/denylist.py +0 -0
  240. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/parse/detect.py +0 -0
  241. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/parse/engine.py +0 -0
  242. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/parse/link.py +0 -0
  243. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/parse/offsets.py +0 -0
  244. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/parse/result.py +0 -0
  245. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/registry.py +0 -0
  246. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/remote.py +0 -0
  247. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/store/__init__.py +0 -0
  248. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/store/composed_sqlite.py +0 -0
  249. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/store/composite.py +0 -0
  250. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/store/interface.py +0 -0
  251. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/store/merging.py +0 -0
  252. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/store/sqlite.py +0 -0
  253. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/store/sqlite_helpers.py +0 -0
  254. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/store/store_view.py +0 -0
  255. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/util/__init__.py +0 -0
  256. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/util/iso_codes.py +0 -0
  257. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/util/normalization.py +0 -0
  258. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/util/sentinel.py +0 -0
  259. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/core/version.py +0 -0
  260. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/diagnostics/__init__.py +0 -0
  261. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/errors/__init__.py +0 -0
  262. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/extensions.py +0 -0
  263. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/__init__.py +0 -0
  264. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/_artifacts.py +0 -0
  265. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/custom/__init__.py +0 -0
  266. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/custom/decision.py +0 -0
  267. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/custom/extractor.py +0 -0
  268. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/custom/features.py +0 -0
  269. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/custom/normalizer.py +0 -0
  270. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/custom/scoring.py +0 -0
  271. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/custom/sources/exact_code.py +0 -0
  272. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/custom/sources/exact_name.py +0 -0
  273. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/custom/sources/fts.py +0 -0
  274. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/custom/sources/fuzzy.py +0 -0
  275. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/__init__.py +0 -0
  276. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/_specificity.py +0 -0
  277. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/build/__init__.py +0 -0
  278. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/build/builder.py +0 -0
  279. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/constraints/__init__.py +0 -0
  280. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/constraints/containment.py +0 -0
  281. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/constraints/membership.py +0 -0
  282. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/constraints/temporal.py +0 -0
  283. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/constraints/type_constraint.py +0 -0
  284. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/data/.gitkeep +0 -0
  285. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/decision.py +0 -0
  286. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/extractor.py +0 -0
  287. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/features.py +0 -0
  288. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/linker.py +0 -0
  289. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/normalizer.py +0 -0
  290. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/pack.py +0 -0
  291. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/routing.py +0 -0
  292. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/scoring.py +0 -0
  293. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/sources/__init__.py +0 -0
  294. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/sources/_short_input.py +0 -0
  295. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/sources/exact_code.py +0 -0
  296. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/sources/exact_name.py +0 -0
  297. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/sources/fts.py +0 -0
  298. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/sources/fuzzy.py +0 -0
  299. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/sources/fuzzy_retrieval.py +0 -0
  300. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/sources/query_shapes.py +0 -0
  301. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/geo/sources/symspell.py +0 -0
  302. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/__init__.py +0 -0
  303. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/_acronym.py +0 -0
  304. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/build/__init__.py +0 -0
  305. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/build/builder.py +0 -0
  306. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/constraints/__init__.py +0 -0
  307. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/constraints/country_relevance.py +0 -0
  308. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/constraints/parent_org.py +0 -0
  309. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/constraints/temporal.py +0 -0
  310. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/constraints/type_constraint.py +0 -0
  311. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/data/.gitkeep +0 -0
  312. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/decision.py +0 -0
  313. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/feature_extractor.py +0 -0
  314. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/features.py +0 -0
  315. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/linker.py +0 -0
  316. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/normalizer.py +0 -0
  317. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/pack.py +0 -0
  318. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/routing.py +0 -0
  319. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/scoring.py +0 -0
  320. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/sources/__init__.py +0 -0
  321. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/sources/acronym.py +0 -0
  322. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/sources/exact_code.py +0 -0
  323. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/sources/exact_name.py +0 -0
  324. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/sources/fts.py +0 -0
  325. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/sources/fuzzy.py +0 -0
  326. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/packs/org/sources/symspell.py +0 -0
  327. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/pandas/__init__.py +0 -0
  328. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/polars/__init__.py +0 -0
  329. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/py.typed +0 -0
  330. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/__init__.py +0 -0
  331. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/build/__init__.py +0 -0
  332. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/build/base_builder.py +0 -0
  333. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/build/schema.py +0 -0
  334. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/constraints/__init__.py +0 -0
  335. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/constraints/temporal_constraint.py +0 -0
  336. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/constraints/type_constraint.py +0 -0
  337. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/scoring_base.py +0 -0
  338. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/sources/code_helpers.py +0 -0
  339. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/sources/fts_base.py +0 -0
  340. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/sources/fuzzy_base.py +0 -0
  341. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/sources/fuzzy_retrieval_base.py +0 -0
  342. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/shared/sources/symspell_base.py +0 -0
  343. {resolvekit-0.1.4 → resolvekit-0.1.6}/src/resolvekit/types/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: resolvekit
3
- Version: 0.1.4
3
+ Version: 0.1.6
4
4
  Summary: Entity and place resolution system that maps messy place/entity strings and codes to canonical entities
5
5
  Keywords: entity-resolution,geocoding,place-names,data-commons,iso-codes,offline,disambiguation,normalization
6
6
  Author: Jorge Rivera
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "resolvekit"
3
- version = "0.1.4"
3
+ version = "0.1.6"
4
4
  description = "Entity and place resolution system that maps messy place/entity strings and codes to canonical entities"
5
5
  requires-python = ">=3.12"
6
6
 
@@ -134,41 +134,26 @@ def _load_and_separate_datapacks(
134
134
  return base_packs, overlay_packs
135
135
 
136
136
 
137
- def _remote_dependency_uncached(
138
- module_id: str,
139
- available: dict[str, Path],
140
- manifest_overrides: dict[str, dict[str, object]],
141
- ) -> bool:
142
- """Return True if ``module_id`` is a remote-distribution module whose data
143
- is not in the local cache.
144
-
145
- Such a dependency may be absent from a load set without error: remote
146
- packs the user hasn't downloaded are not hard errors (partial caches are
147
- first-class, and ``Resolver.auto()`` never triggers a network fetch).
148
- Bundled dependencies and unknown module ids stay hard errors.
149
- """
150
- from resolvekit.core.module_registry import load_module_metadata
151
- from resolvekit.core.remote import is_cached
152
-
153
- if module_id not in available:
154
- return False
155
- path = available[module_id]
156
- if not (path / "metadata.json").exists():
157
- return False
158
- metadata = load_module_metadata(module_id, path, overrides=manifest_overrides)
159
- return metadata.distribution == "remote" and not is_cached(metadata)
160
-
161
-
162
137
  def _validate_module_dependencies(
163
138
  base_packs: dict[str, LoadedDataPack],
164
139
  overlay_packs: dict[str, LoadedDataPack],
165
140
  pack_filter: set[str],
166
141
  ) -> None:
167
- from resolvekit.core.module_registry import get_manifest_overrides
168
-
142
+ """Log any declared ``module_dependencies`` absent from the load set.
143
+
144
+ ``module_dependencies`` are advisory cross-reference links, not hard load
145
+ requirements. An explicit selection is authoritative and ``auto()`` loads
146
+ whatever is locally available, so a declared dependency not being in the
147
+ load set is expected — partial loads are first-class, a deployed image may
148
+ ship a subset, and a dependency may simply not be installed in this
149
+ environment. None of that is an error here; it is logged for diagnostics.
150
+
151
+ (Naming an unknown module in the *request* is a different matter — that
152
+ raises ``DataModuleNotFoundError`` from :func:`_resolve_requested_module_paths`.
153
+ Hard structural requirements, overlay → base, are enforced separately by
154
+ :func:`_validate_overlay_relationships`.)
155
+ """
169
156
  available_module_ids = set(base_packs) | set(overlay_packs)
170
- registry: dict[str, Path] | None = None
171
- manifest_overrides: dict[str, dict[str, object]] | None = None
172
157
  for loaded in [*base_packs.values(), *overlay_packs.values()]:
173
158
  if pack_filter and loaded.pack_id not in pack_filter:
174
159
  continue
@@ -179,23 +164,12 @@ def _validate_module_dependencies(
179
164
  if module_id not in available_module_ids
180
165
  ]
181
166
  if missing:
182
- # An absent dependency is only a hard error when its data could
183
- # have been loaded a declared dep on a remote pack the user
184
- # hasn't downloaded is skipped, mirroring the auto-mode intent in
185
- # _resolve_requested_module_paths.
186
- if registry is None:
187
- registry = list_available_modules()
188
- manifest_overrides = get_manifest_overrides()
189
- assert manifest_overrides is not None
190
- missing = [
191
- module_id
192
- for module_id in missing
193
- if not _remote_dependency_uncached(
194
- module_id, registry, manifest_overrides
195
- )
196
- ]
197
- if missing:
198
- raise MissingModuleDependencyError(loaded.module_id, missing)
167
+ logger.debug(
168
+ "Module %s declares dependencies absent from the load set: %s "
169
+ "(advisory; honoring authoritative selection)",
170
+ loaded.module_id,
171
+ ", ".join(sorted(missing)),
172
+ )
199
173
 
200
174
 
201
175
  def _validate_overlay_relationships(
@@ -290,29 +264,23 @@ def _resolve_requested_module_paths(
290
264
  resolved[module_id] = path
291
265
 
292
266
  metadata = load_module_metadata(module_id, path, overrides=manifest_overrides)
293
- for dependency in metadata.module_dependencies:
294
- if dependency in resolved:
295
- continue
296
- # In auto mode, silently skip dependencies whose data isn't
297
- # locally available (remote packs the user hasn't downloaded
298
- # are not hard errors see v1-scope §225). In explicit mode,
299
- # likewise skip remote-uncached dependencies so requesting one
300
- # module never transitively forces sibling downloads; unknown
301
- # module ids are still queued so the queue-loop's own
302
- # ``module_id not in available`` check raises
303
- # ``DataModuleNotFoundError``.
304
- if auto_mode and (
305
- dependency not in available
306
- or not _module_data_locally_available(
267
+ # ``module_dependencies`` are advisory cross-reference links, not load
268
+ # requirements. Expand them only in auto() mode, where the load set is
269
+ # "everything locally available" anyway (silently skipping remote packs
270
+ # the user hasn't downloaded see v1-scope §225). Explicit ``module_ids``
271
+ # are AUTHORITATIVE: the load set is exactly what the caller named (plus
272
+ # overlay bases, which are structural), independent of cache or on-disk
273
+ # state so resolution is identical on a dev box with extra packs
274
+ # downloaded and on a lean deployment that bakes only the named modules.
275
+ if auto_mode:
276
+ for dependency in metadata.module_dependencies:
277
+ if dependency in resolved:
278
+ continue
279
+ if dependency not in available or not _module_data_locally_available(
307
280
  dependency, available[dependency], manifest_overrides
308
- )
309
- ):
310
- continue
311
- if not auto_mode and _remote_dependency_uncached(
312
- dependency, available, manifest_overrides
313
- ):
314
- continue
315
- queue.append(dependency)
281
+ ):
282
+ continue
283
+ queue.append(dependency)
316
284
  if metadata.is_overlay:
317
285
  for dependency in metadata.base_module_ids or []:
318
286
  if dependency in resolved:
@@ -882,7 +882,16 @@ class Resolver:
882
882
 
883
883
  Args:
884
884
  module_ids: Specific module IDs to load (e.g. ``["geo.countries"]``).
885
- Pass ``None`` to load all installed modules (same as ``auto()``).
885
+ Authoritative: the load set is exactly these modules. Declared
886
+ ``module_dependencies`` are advisory cross-references and are
887
+ NOT auto-loaded — name every module you want (e.g.
888
+ ``["geo.cities", "geo.countries"]`` for city resolution backed
889
+ by country context). The load set therefore depends only on this
890
+ argument, never on which packs happen to be cached or shipped,
891
+ so resolution is identical on a dev box and a lean deployment.
892
+ Overlay base modules are the one exception (an overlay is not a
893
+ standalone dataset, so its base is always pulled in). Pass
894
+ ``None`` to load all installed modules (same as ``auto()``).
886
895
  domains: Which domain packs to enable (default: all in modules).
887
896
  routing_mode: How to route queries (see ``Resolver.__init__`` for full docs).
888
897
  trace: Whether to collect trace events.
@@ -1032,8 +1041,9 @@ class Resolver:
1032
1041
  )
1033
1042
 
1034
1043
  # -- Country-level geo module IDs for the lite preset --
1035
- # Deliberately excludes geo.admin1 and deeper tiers whose dependency
1036
- # chains (admin2, admin3, cities …) trigger heavy SQLite composition.
1044
+ # Deliberately excludes geo.admin1 and the deeper admin / cities tiers to
1045
+ # keep cold-start time and resident memory small. Selection is authoritative,
1046
+ # so the load set is exactly these IDs — naming a tier loads only that tier.
1037
1047
  # To add admin-1 coverage, pass module_ids=["geo.countries", "geo.admin1"].
1038
1048
  _LITE_GEO_MODULE_IDS: tuple[str, ...] = (
1039
1049
  "geo.countries",
@@ -236,6 +236,7 @@ def fuzzy_candidates(
236
236
  names: list[tuple[str, str, str, bool, str]],
237
237
  *,
238
238
  top_k: int,
239
+ choices: list[str] | None = None,
239
240
  ) -> list[SuggestCandidate]:
240
241
  """Run brute-force RapidFuzz over a pre-materialized name list.
241
242
 
@@ -252,6 +253,12 @@ def fuzzy_candidates(
252
253
  value)`` 5-tuples — typically the memoized output of
253
254
  ``store.iter_suggest_names()``.
254
255
  top_k: Number of results the caller ultimately wants.
256
+ choices: Optional pre-extracted list of ``value_norm`` strings
257
+ (``[row[0] for row in names]``). When provided, the per-call
258
+ list comprehension is skipped — callers that memoize the name list
259
+ should also memoize and pass ``choices`` to avoid a 25k-string
260
+ rebuild on every query. When ``None`` (default), the list is
261
+ built from ``names`` as before (backward-compatible).
255
262
 
256
263
  Returns:
257
264
  List of ``SuggestCandidate`` objects (one per distinct matched name row,
@@ -268,8 +275,9 @@ def fuzzy_candidates(
268
275
 
269
276
  fuzzy_pool = min(max(top_k * 5, 50), 500)
270
277
 
271
- # Extract just the value_norm strings for RapidFuzz.
272
- choices = [row[0] for row in names]
278
+ # Use caller-supplied choices when available to avoid a per-call rebuild.
279
+ if choices is None:
280
+ choices = [row[0] for row in names]
273
281
 
274
282
  raw_hits = process.extract(
275
283
  query_norm,
@@ -21,6 +21,7 @@ from resolvekit.packs.custom.sources import (
21
21
  CustomExactCodeSource,
22
22
  CustomExactNameSource,
23
23
  CustomFTSSource,
24
+ CustomFuzzyRetrievalSource,
24
25
  CustomFuzzySource,
25
26
  )
26
27
 
@@ -44,13 +45,22 @@ class GenericPack:
44
45
  custom entities, etc.).
45
46
 
46
47
  Sources (in pipeline order):
47
- 1. CustomExactCodeSource — catch-all ``lookup_code_any``; raw 1.0
48
- 2. CustomExactNameSource — canonical raw 1.0, alias raw 0.95
49
- 3. CustomFTSSource — BM25 ranked FTS
50
- 4. CustomFuzzySource reranks existing candidates (requires_existing_candidates)
51
-
52
- No SymSpell source: custom packs are built programmatically; the fuzzy
53
- reranking over FTS/exact candidates serves as the fuzzy story.
48
+ 1. CustomExactCodeSource — catch-all ``lookup_code_any``; raw 1.0
49
+ 2. CustomExactNameSource — canonical raw 1.0, alias raw 0.95
50
+ 3. CustomFTSSource — BM25 ranked FTS
51
+ 4. CustomFuzzyRetrievalSource generating brute-force RapidFuzz over the
52
+ store's materialized name list; emits
53
+ FUZZY-tier evidence so typo'd queries that
54
+ FTS cannot tokenize-match still produce
55
+ candidates. Free on exact-name queries
56
+ (engine fuzzy-skip guard bypasses it when
57
+ a confident EXACT_NAME candidate is present).
58
+ Callers needing stricter precision can raise
59
+ ``confidence_threshold`` above the 0.89 FUZZY
60
+ cap to suppress fuzzy-tier results.
61
+ 5. CustomFuzzySource — reranks existing candidates with
62
+ ``fuzzy_edit_sim`` / ``fuzzy_token_sim``
63
+ signals (requires_existing_candidates)
54
64
 
55
65
  Args:
56
66
  symspell_dict_path: Accepted but ignored to satisfy factory introspection.
@@ -70,6 +80,7 @@ class GenericPack:
70
80
  CustomExactCodeSource(),
71
81
  CustomExactNameSource(),
72
82
  CustomFTSSource(),
83
+ CustomFuzzyRetrievalSource(),
73
84
  CustomFuzzySource(),
74
85
  ]
75
86
 
@@ -4,10 +4,12 @@ from resolvekit.packs.custom.sources.exact_code import CustomExactCodeSource
4
4
  from resolvekit.packs.custom.sources.exact_name import CustomExactNameSource
5
5
  from resolvekit.packs.custom.sources.fts import CustomFTSSource
6
6
  from resolvekit.packs.custom.sources.fuzzy import CustomFuzzySource
7
+ from resolvekit.packs.custom.sources.fuzzy_retrieval import CustomFuzzyRetrievalSource
7
8
 
8
9
  __all__ = [
9
10
  "CustomExactCodeSource",
10
11
  "CustomExactNameSource",
11
12
  "CustomFTSSource",
13
+ "CustomFuzzyRetrievalSource",
12
14
  "CustomFuzzySource",
13
15
  ]
@@ -0,0 +1,17 @@
1
+ """Brute-force fuzzy retrieval source for custom entities."""
2
+
3
+ from resolvekit.shared.sources import FuzzyRetrievalBruteSource
4
+
5
+
6
+ class CustomFuzzyRetrievalSource(FuzzyRetrievalBruteSource):
7
+ """Generating fuzzy source for the custom domain.
8
+
9
+ Materializes the store's name list once and runs brute-force
10
+ RapidFuzz over it — no prebuilt SymSpell dictionary required.
11
+ Ordered before the rerank ``CustomFuzzySource`` so the engine
12
+ enriches its FUZZY-tier candidates with ``fuzzy_edit_sim`` /
13
+ ``fuzzy_token_sim`` signals before scoring.
14
+ """
15
+
16
+ def __init__(self) -> None:
17
+ super().__init__(name="custom_fuzzy_retrieval", domain="custom")
@@ -4,11 +4,15 @@ from resolvekit.shared.sources.code_helpers import evidence_from_code_hits
4
4
  from resolvekit.shared.sources.fts_base import BM25ScoreTiers, FTSSource
5
5
  from resolvekit.shared.sources.fuzzy_base import FuzzySource
6
6
  from resolvekit.shared.sources.fuzzy_retrieval_base import FuzzyRetrievalSource
7
+ from resolvekit.shared.sources.fuzzy_retrieval_brute_base import (
8
+ FuzzyRetrievalBruteSource,
9
+ )
7
10
  from resolvekit.shared.sources.symspell_base import SymSpellSource
8
11
 
9
12
  __all__ = [
10
13
  "BM25ScoreTiers",
11
14
  "FTSSource",
15
+ "FuzzyRetrievalBruteSource",
12
16
  "FuzzyRetrievalSource",
13
17
  "FuzzySource",
14
18
  "SymSpellSource",