equity-aggregator 0.1.8__tar.gz → 1.0.1__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 (248) hide show
  1. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/PKG-INFO +1 -1
  2. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/pyproject.toml +1 -1
  3. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/_utils/fuzzy.py +10 -2
  4. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/_utils/test_fuzzy.py +66 -1
  5. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/uv.lock +1 -1
  6. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/.dockerignore +0 -0
  7. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/.env_example +0 -0
  8. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/.github/workflows/publish-build-release.yml +0 -0
  9. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/.github/workflows/publish-pypi.yml +0 -0
  10. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/.github/workflows/validate-push.yml +0 -0
  11. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/.gitignore +0 -0
  12. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/.python-version +0 -0
  13. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/Dockerfile +0 -0
  14. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/LICENCE.txt +0 -0
  15. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/README.md +0 -0
  16. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/docker-compose.yml +0 -0
  17. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/documentation/reference_data/intrinio_equity.json +0 -0
  18. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/documentation/reference_data/lseg_equities.json +0 -0
  19. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/documentation/reference_data/sec_equity.json +0 -0
  20. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/documentation/reference_data/stock_analysis_equity.json +0 -0
  21. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/documentation/reference_data/tradingview_equities.json +0 -0
  22. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/documentation/reference_data/xetra_equities.json +0 -0
  23. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/documentation/reference_data/yfinance_quote_summary_equity.json +0 -0
  24. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/documentation/reference_data/yfinance_search_equity.json +0 -0
  25. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/examples/data_integrity_analysis/__init__.py +0 -0
  26. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/examples/data_integrity_analysis/__main__.py +0 -0
  27. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/examples/data_integrity_analysis/analyzers.py +0 -0
  28. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/examples/data_integrity_analysis/formatters.py +0 -0
  29. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/examples/data_integrity_analysis/main.py +0 -0
  30. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/examples/data_integrity_analysis/models.py +0 -0
  31. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/examples/data_integrity_analysis/rendering.py +0 -0
  32. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/README.md +0 -0
  33. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/__init__.py +0 -0
  34. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/__init__.py +0 -0
  35. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/__init__.py +0 -0
  36. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/_utils/__init__.py +0 -0
  37. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/_utils/_client.py +0 -0
  38. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/_utils/_record_types.py +0 -0
  39. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/__init__.py +0 -0
  40. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/intrinio/__init__.py +0 -0
  41. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/intrinio/_utils/__init__.py +0 -0
  42. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/intrinio/_utils/backoff.py +0 -0
  43. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/intrinio/_utils/parser.py +0 -0
  44. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/intrinio/intrinio.py +0 -0
  45. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/intrinio/session.py +0 -0
  46. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/lseg/__init__.py +0 -0
  47. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/lseg/_utils/__init__.py +0 -0
  48. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/lseg/_utils/backoff.py +0 -0
  49. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/lseg/_utils/parser.py +0 -0
  50. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/lseg/lseg.py +0 -0
  51. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/lseg/session.py +0 -0
  52. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/sec/__init__.py +0 -0
  53. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/sec/sec.py +0 -0
  54. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/stock_analysis/__init__.py +0 -0
  55. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/stock_analysis/stock_analysis.py +0 -0
  56. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/tradingview/__init__.py +0 -0
  57. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/tradingview/tradingview.py +0 -0
  58. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/xetra/__init__.py +0 -0
  59. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/discovery_feeds/xetra/xetra.py +0 -0
  60. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/__init__.py +0 -0
  61. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/gleif/__init__.py +0 -0
  62. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/gleif/api.py +0 -0
  63. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/gleif/download.py +0 -0
  64. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/gleif/gleif.py +0 -0
  65. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/gleif/parser.py +0 -0
  66. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/__init__.py +0 -0
  67. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/_utils/__init__.py +0 -0
  68. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/_utils/backoff.py +0 -0
  69. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/_utils/json.py +0 -0
  70. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/api/__init__.py +0 -0
  71. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/api/quote_summary.py +0 -0
  72. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/api/search.py +0 -0
  73. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/auth.py +0 -0
  74. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/config.py +0 -0
  75. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/ranking.py +0 -0
  76. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/session.py +0 -0
  77. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/transport.py +0 -0
  78. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/enrichment_feeds/yfinance/yfinance.py +0 -0
  79. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/reference_lookup/__init__.py +0 -0
  80. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/reference_lookup/exchange_rate_api.py +0 -0
  81. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/adapters/data_sources/reference_lookup/openfigi.py +0 -0
  82. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/cli/__init__.py +0 -0
  83. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/cli/config.py +0 -0
  84. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/cli/dispatcher.py +0 -0
  85. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/cli/main.py +0 -0
  86. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/cli/parser.py +0 -0
  87. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/cli/signals.py +0 -0
  88. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/__init__.py +0 -0
  89. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/_utils/__init__.py +0 -0
  90. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/_utils/_load_converter.py +0 -0
  91. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/_utils/_merge.py +0 -0
  92. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/_utils/_merge_config.py +0 -0
  93. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/_utils/_strategies.py +0 -0
  94. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/pipeline/__init__.py +0 -0
  95. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/pipeline/resolve.py +0 -0
  96. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/pipeline/runner.py +0 -0
  97. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/pipeline/seed.py +0 -0
  98. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/pipeline/transforms/__init__.py +0 -0
  99. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/pipeline/transforms/canonicalise.py +0 -0
  100. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/pipeline/transforms/convert.py +0 -0
  101. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/pipeline/transforms/enrich.py +0 -0
  102. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/pipeline/transforms/group.py +0 -0
  103. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/pipeline/transforms/identify.py +0 -0
  104. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/pipeline/transforms/parse.py +0 -0
  105. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/retrieval/__init__.py +0 -0
  106. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/domain/retrieval/retrieval.py +0 -0
  107. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/logging_config.py +0 -0
  108. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/__init__.py +0 -0
  109. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/canonical.py +0 -0
  110. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/feeds/__init__.py +0 -0
  111. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/feeds/feed_validators.py +0 -0
  112. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/feeds/gleif_feed_data.py +0 -0
  113. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/feeds/intrinio_feed_data.py +0 -0
  114. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/feeds/lseg_feed_data.py +0 -0
  115. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/feeds/sec_feed_data.py +0 -0
  116. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/feeds/stock_analysis_feed_data.py +0 -0
  117. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/feeds/tradingview_feed_data.py +0 -0
  118. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/feeds/xetra_feed_data.py +0 -0
  119. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/feeds/yfinance_feed_data.py +0 -0
  120. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/raw.py +0 -0
  121. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/types.py +0 -0
  122. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/schemas/validators.py +0 -0
  123. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/storage/__init__.py +0 -0
  124. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/storage/_utils.py +0 -0
  125. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/storage/cache.py +0 -0
  126. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/storage/data_store.py +0 -0
  127. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/storage/export.py +0 -0
  128. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/src/equity_aggregator/storage/metadata.py +0 -0
  129. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/README.md +0 -0
  130. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/__init__.py +0 -0
  131. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/conftest.py +0 -0
  132. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/__init__.py +0 -0
  133. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/__init__.py +0 -0
  134. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/__init__.py +0 -0
  135. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/discovery_feeds/__init__.py +0 -0
  136. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/discovery_feeds/intrinio/__init__.py +0 -0
  137. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/discovery_feeds/intrinio/test_intrinio.py +0 -0
  138. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/discovery_feeds/lseg/__init__.py +0 -0
  139. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/discovery_feeds/lseg/test_lseg.py +0 -0
  140. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/discovery_feeds/sec/__init__.py +0 -0
  141. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/discovery_feeds/sec/test_sec.py +0 -0
  142. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/discovery_feeds/stock_analysis/__init__.py +0 -0
  143. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/discovery_feeds/stock_analysis/test_stock_analysis.py +0 -0
  144. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/discovery_feeds/tradingview/__init__.py +0 -0
  145. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/discovery_feeds/tradingview/test_tradingview.py +0 -0
  146. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/discovery_feeds/xetra/__init__.py +0 -0
  147. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/discovery_feeds/xetra/test_xetra.py +0 -0
  148. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/enrichment_feeds/__init__.py +0 -0
  149. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/enrichment_feeds/gleif/__init__.py +0 -0
  150. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/enrichment_feeds/gleif/test_gleif.py +0 -0
  151. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/enrichment_feeds/yfinance/__init__.py +0 -0
  152. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/enrichment_feeds/yfinance/test_yfinance.py +0 -0
  153. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/reference_lookup/__init__.py +0 -0
  154. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/reference_lookup/exchange_rate_api/__init__.py +0 -0
  155. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/reference_lookup/exchange_rate_api/test_exchange_rate_api.py +0 -0
  156. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/reference_lookup/openfigi/__init__.py +0 -0
  157. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/live/adapters/data_sources/reference_lookup/openfigi/test_openfigi.py +0 -0
  158. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/__init__.py +0 -0
  159. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/__init__.py +0 -0
  160. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/_utils/__init__.py +0 -0
  161. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/_utils/test_client.py +0 -0
  162. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/__init__.py +0 -0
  163. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/__init__.py +0 -0
  164. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/intrinio/__init__.py +0 -0
  165. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/intrinio/_utils/__init__.py +0 -0
  166. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/intrinio/_utils/test_backoff.py +0 -0
  167. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/intrinio/_utils/test_parser.py +0 -0
  168. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/intrinio/test_intrinio.py +0 -0
  169. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/intrinio/test_session.py +0 -0
  170. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/lseg/__init__.py +0 -0
  171. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/lseg/_utils/__init__.py +0 -0
  172. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/lseg/_utils/test_backoff.py +0 -0
  173. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/lseg/_utils/test_parser.py +0 -0
  174. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/lseg/test_lseg.py +0 -0
  175. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/lseg/test_session.py +0 -0
  176. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/sec/__init__.py +0 -0
  177. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/sec/test_sec.py +0 -0
  178. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/stock_analysis/test_stock_analysis.py +0 -0
  179. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/tradingview/__init__.py +0 -0
  180. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/tradingview/test_tradingview.py +0 -0
  181. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/xetra/__init__.py +0 -0
  182. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/discovery_feeds/xetra/test_xetra.py +0 -0
  183. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/__init__.py +0 -0
  184. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/gleif/__init__.py +0 -0
  185. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/gleif/_helpers.py +0 -0
  186. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/gleif/test_api.py +0 -0
  187. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/gleif/test_download.py +0 -0
  188. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/gleif/test_gleif.py +0 -0
  189. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/gleif/test_parser.py +0 -0
  190. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/__init__.py +0 -0
  191. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/_helpers.py +0 -0
  192. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/_utils/__init__.py +0 -0
  193. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/_utils/test_backoff.py +0 -0
  194. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/_utils/test_json.py +0 -0
  195. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/api/__init__.py +0 -0
  196. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/api/test_quote_summary.py +0 -0
  197. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/api/test_search.py +0 -0
  198. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/test_auth.py +0 -0
  199. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/test_config.py +0 -0
  200. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/test_ranking.py +0 -0
  201. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/test_session.py +0 -0
  202. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/test_transport.py +0 -0
  203. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/enrichment_feeds/yfinance/test_yfinance.py +0 -0
  204. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/reference_lookup/__init__.py +0 -0
  205. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/reference_lookup/test_exchange_rate_api.py +0 -0
  206. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/adapters/data_sources/reference_lookup/test_openfigi.py +0 -0
  207. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/cli/__init__.py +0 -0
  208. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/cli/test_config.py +0 -0
  209. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/cli/test_dispatcher.py +0 -0
  210. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/cli/test_main.py +0 -0
  211. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/cli/test_parser.py +0 -0
  212. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/__init__.py +0 -0
  213. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/_utils/__init__.py +0 -0
  214. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/_utils/test__merge.py +0 -0
  215. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/_utils/test__merge_config.py +0 -0
  216. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/_utils/test__strategies.py +0 -0
  217. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/_utils/test_load_converter.py +0 -0
  218. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/pipeline/__init__.py +0 -0
  219. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/pipeline/test_resolve.py +0 -0
  220. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/pipeline/transforms/__init__.py +0 -0
  221. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/pipeline/transforms/test_canonicalise.py +0 -0
  222. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/pipeline/transforms/test_convert.py +0 -0
  223. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/pipeline/transforms/test_enrich.py +0 -0
  224. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/pipeline/transforms/test_group.py +0 -0
  225. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/pipeline/transforms/test_identify.py +0 -0
  226. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/pipeline/transforms/test_parse.py +0 -0
  227. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/domain/retrieval/test_retrieval.py +0 -0
  228. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/__init__.py +0 -0
  229. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/feeds/__init__.py +0 -0
  230. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/feeds/test_feed_validators.py +0 -0
  231. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/feeds/test_gleif_feed_data.py +0 -0
  232. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/feeds/test_intrinio_feed_data.py +0 -0
  233. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/feeds/test_lseg_feed_data.py +0 -0
  234. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/feeds/test_sec_feed_data.py +0 -0
  235. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/feeds/test_stock_analysis_feed_data.py +0 -0
  236. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/feeds/test_tradingview_feed_data.py +0 -0
  237. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/feeds/test_xetra_feed_data.py +0 -0
  238. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/feeds/test_yfinance_feed_data.py +0 -0
  239. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/test_canonical.py +0 -0
  240. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/test_raw.py +0 -0
  241. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/test_types.py +0 -0
  242. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/schemas/test_validators.py +0 -0
  243. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/storage/__init__.py +0 -0
  244. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/storage/test__utils.py +0 -0
  245. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/storage/test_cache.py +0 -0
  246. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/storage/test_data_store.py +0 -0
  247. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/storage/test_export.py +0 -0
  248. {equity_aggregator-0.1.8 → equity_aggregator-1.0.1}/tests/unit/storage/test_metadata.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: equity-aggregator
3
- Version: 0.1.8
3
+ Version: 1.0.1
4
4
  Summary: Financial equity data aggregation toolkit
5
5
  Project-URL: Homepage, https://github.com/gregorykelleher/equity-aggregator
6
6
  Project-URL: Repository, https://github.com/gregorykelleher/equity-aggregator
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "equity-aggregator"
3
- version = "0.1.8"
3
+ version = "1.0.1"
4
4
  description = "Financial equity data aggregation toolkit"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -70,6 +70,14 @@ def _score_quote(
70
70
  `name_key`) and the expected name. Applies minimum score thresholds to prevent
71
71
  matching completely unrelated equities.
72
72
 
73
+ Note:
74
+ Symbol comparison uses `partial_ratio` rather than `ratio` because
75
+ exchange symbols follow a `[prefix]ROOT[.suffix]` pattern (e.g.
76
+ `MELE.BR` vs `2MELE`). `partial_ratio` aligns the shorter string
77
+ against the best-matching substring of the longer one, effectively
78
+ matching on the shared root symbol regardless of exchange-specific
79
+ decoration.
80
+
73
81
  Args:
74
82
  quote (dict): The quote dictionary containing at least a "symbol" key and
75
83
  a name field specified by `name_key`.
@@ -80,12 +88,12 @@ def _score_quote(
80
88
  Returns:
81
89
  tuple[int, str, str]: A tuple of (total_score, actual_symbol, actual_name),
82
90
  where total_score is the sum of the symbol and name fuzzy scores.
83
- Returns (0, symbol, name) if either score is below the minimum threshold.
91
+ Returns (0, symbol, name) if either score is below its minimum threshold.
84
92
  """
85
93
  actual_symbol = quote["symbol"]
86
94
  actual_name = quote.get(name_key, "<no-name>")
87
95
 
88
- symbol_score = fuzz.ratio(
96
+ symbol_score = fuzz.partial_ratio(
89
97
  actual_symbol,
90
98
  expected_symbol,
91
99
  processor=utils.default_process,
@@ -86,7 +86,7 @@ def test_score_quote_total_matches_component_sum() -> None:
86
86
  expected_name="Microsoft Corporation",
87
87
  )
88
88
 
89
- symbol_score = fuzz.ratio(symbol, "MSFT", processor=rf_utils.default_process)
89
+ symbol_score = fuzz.partial_ratio(symbol, "MSFT", processor=rf_utils.default_process)
90
90
  name_score = fuzz.WRatio(
91
91
  name,
92
92
  "Microsoft Corporation",
@@ -94,3 +94,68 @@ def test_score_quote_total_matches_component_sum() -> None:
94
94
  )
95
95
 
96
96
  assert total == symbol_score + name_score
97
+
98
+
99
+ def test_score_quote_accepts_cross_exchange_symbol_variant() -> None:
100
+ """
101
+ ARRANGE: quote with exchange-decorated symbol (MELE.BR) vs prefixed symbol (2MELE)
102
+ ACT: call _score_quote
103
+ ASSERT: total_score is non-zero (shared root symbol matched via partial_ratio)
104
+ """
105
+
106
+ quote = {"symbol": "MELE.BR", "longname": "Melexis NV"}
107
+ total, _, _ = _score_quote(
108
+ quote=quote,
109
+ name_key="longname",
110
+ expected_symbol="2MELE",
111
+ expected_name="MELEXIS NV",
112
+ )
113
+
114
+ assert total > 0
115
+
116
+
117
+ def test_score_quote_rejects_when_name_score_below_threshold() -> None:
118
+ """
119
+ ARRANGE: quote where the name has no similarity to expected name
120
+ ACT: call _score_quote
121
+ ASSERT: total_score is zero (candidate rejected)
122
+ """
123
+
124
+ quote = {"symbol": "MELE.BR", "longname": "Unrelated Corp"}
125
+ total, _, _ = _score_quote(
126
+ quote=quote,
127
+ name_key="longname",
128
+ expected_symbol="2MELE",
129
+ expected_name="MELEXIS NV",
130
+ )
131
+
132
+ assert total == 0
133
+
134
+
135
+ def test_score_quote_substring_symbol_with_similar_name_is_not_rejected() -> None:
136
+ """
137
+ ARRANGE: quote whose symbol is a superstring of the expected symbol
138
+ AND whose name is similar (META/MET, MetLife/Meta Platforms)
139
+ ACT: call _score_quote
140
+ ASSERT: total_score is non-zero — partial_ratio cannot distinguish these
141
+ by symbol alone; the caller's min_score ranking ensures the exact
142
+ match (MET) outscores the substring match (META)
143
+
144
+ Note:
145
+ This is a known limitation of partial_ratio for very short symbols.
146
+ It is not a regression: fuzz.ratio("META", "MET") = 85.7, which also
147
+ clears the score_cutoff=70 gate. The name gate (WRatio) is the primary
148
+ discriminator, but when two companies share a lexical root (Met-) it
149
+ cannot distinguish them either. In practice, ISIN lookups return the
150
+ correct ticker, so the exact match ranks first.
151
+ """
152
+
153
+ quote = {"symbol": "META", "longname": "Meta Platforms Inc"}
154
+ total, _, _ = _score_quote(
155
+ quote=quote,
156
+ name_key="longname",
157
+ expected_symbol="MET",
158
+ expected_name="MetLife Inc",
159
+ )
160
+
161
+ assert total > 0
@@ -160,7 +160,7 @@ wheels = [
160
160
 
161
161
  [[package]]
162
162
  name = "equity-aggregator"
163
- version = "0.1.8"
163
+ version = "1.0.1"
164
164
  source = { editable = "." }
165
165
  dependencies = [
166
166
  { name = "httpx", extra = ["http2"] },