wbfdm 1.55.10rc0__tar.gz → 1.56.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.

Potentially problematic release.


This version of wbfdm might be problematic. Click here for more details.

Files changed (369) hide show
  1. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/PKG-INFO +1 -1
  2. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/dataloaders/market_data.py +1 -1
  3. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/sync/utils.py +11 -8
  4. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/filters/instrument_prices.py +0 -1
  5. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/handlers/instrument.py +15 -7
  6. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/instruments.py +3 -3
  7. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/financial_analysis/statement_with_estimates.py +1 -1
  8. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/instruments/financials_analysis.py +1 -1
  9. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/.gitignore +0 -0
  10. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/pyproject.toml +0 -0
  11. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/__init__.py +0 -0
  12. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/admin/__init__.py +0 -0
  13. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/admin/classifications.py +0 -0
  14. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/admin/esg.py +0 -0
  15. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/admin/exchanges.py +0 -0
  16. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/admin/instrument_lists.py +0 -0
  17. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/admin/instrument_prices.py +0 -0
  18. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/admin/instrument_requests.py +0 -0
  19. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/admin/instruments.py +0 -0
  20. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/admin/instruments_relationships.py +0 -0
  21. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/admin/options.py +0 -0
  22. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/__init__.py +0 -0
  23. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/esg/__init__.py +0 -0
  24. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/esg/enums.py +0 -0
  25. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/esg/esg_analysis.py +0 -0
  26. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/esg/utils.py +0 -0
  27. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/financial_analysis/__init__.py +0 -0
  28. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/financial_analysis/change_point_detection.py +0 -0
  29. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py +0 -0
  30. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/financial_analysis/financial_ratio_analysis.py +0 -0
  31. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/financial_analysis/financial_statistics_analysis.py +0 -0
  32. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/financial_analysis/statement_with_estimates.py +0 -0
  33. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/financial_analysis/utils.py +0 -0
  34. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/technical_analysis/__init__.py +0 -0
  35. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/technical_analysis/technical_analysis.py +0 -0
  36. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/technical_analysis/traces.py +0 -0
  37. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/analysis/utils.py +0 -0
  38. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/apps.py +0 -0
  39. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/backends/dto.py +0 -0
  40. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/__init__.py +0 -0
  41. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/dsws/__init__.py +0 -0
  42. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/dsws/client.py +0 -0
  43. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/dsws/dataloaders/market_data.py +0 -0
  44. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/internal/__init__.py +0 -0
  45. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/internal/dataloaders/__init__.py +0 -0
  46. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/internal/dataloaders/market_data.py +0 -0
  47. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/__init__.py +0 -0
  48. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/admin/__init__.py +0 -0
  49. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/admin/instruments.py +0 -0
  50. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/admin/metrics.py +0 -0
  51. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/apps.py +0 -0
  52. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/backends/__init__.py +0 -0
  53. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/backends/base.py +0 -0
  54. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/backends/performances.py +0 -0
  55. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/backends/statistics.py +0 -0
  56. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/backends/utils.py +0 -0
  57. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/decorators.py +0 -0
  58. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/dispatch.py +0 -0
  59. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/dto.py +0 -0
  60. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/exceptions.py +0 -0
  61. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/factories.py +0 -0
  62. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/filters.py +0 -0
  63. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/migrations/0001_initial.py +0 -0
  64. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/migrations/0002_remove_instrumentmetric_unique_instrument_metric_and_more.py +0 -0
  65. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/migrations/__init__.py +0 -0
  66. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/models.py +0 -0
  67. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/orchestrators.py +0 -0
  68. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/registry.py +0 -0
  69. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/serializers.py +0 -0
  70. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/signals.py +0 -0
  71. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/tasks.py +0 -0
  72. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/tests/__init__.py +0 -0
  73. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/tests/backends/__init__.py +0 -0
  74. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/tests/backends/test_performances.py +0 -0
  75. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/tests/backends/test_statistics.py +0 -0
  76. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/tests/conftest.py +0 -0
  77. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/tests/test_dto.py +0 -0
  78. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/tests/test_models.py +0 -0
  79. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/tests/test_tasks.py +0 -0
  80. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/tests/test_viewsets.py +0 -0
  81. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/urls.py +0 -0
  82. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/viewsets/__init__.py +0 -0
  83. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/viewsets/configs/__init__.py +0 -0
  84. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/viewsets/configs/display.py +0 -0
  85. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/viewsets/configs/menus.py +0 -0
  86. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/viewsets/configs/utils.py +0 -0
  87. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/viewsets/mixins.py +0 -0
  88. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/metric/viewsets/viewsets.py +0 -0
  89. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/msci/__init__.py +0 -0
  90. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/msci/client.py +0 -0
  91. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/msci/dataloaders/__init__.py +0 -0
  92. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/msci/dataloaders/esg.py +0 -0
  93. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/msci/dataloaders/esg_controversies.py +0 -0
  94. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/msci/sync.py +0 -0
  95. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/msci/tests/__init__.py +0 -0
  96. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/msci/tests/conftest.py +0 -0
  97. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/msci/tests/test_client.py +0 -0
  98. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/__init__.py +0 -0
  99. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/apps.py +0 -0
  100. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/database_routers.py +0 -0
  101. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/dataloaders/__init__.py +0 -0
  102. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/dataloaders/adjustments.py +0 -0
  103. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/dataloaders/corporate_actions.py +0 -0
  104. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/dataloaders/financials.py +0 -0
  105. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/dataloaders/fx_rates.py +0 -0
  106. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/dataloaders/officers.py +0 -0
  107. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/dataloaders/reporting_dates.py +0 -0
  108. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/dataloaders/statements.py +0 -0
  109. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/dataloaders/utils.py +0 -0
  110. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/jinja2/qa/sql/companies.sql +0 -0
  111. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/base_estimates.sql +0 -0
  112. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/calendarized.sql +0 -0
  113. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/complete.sql +0 -0
  114. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/estimates.sql +0 -0
  115. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/financials.sql +0 -0
  116. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/jinja2/qa/sql/instruments.sql +0 -0
  117. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/jinja2/qa/sql/quotes.sql +0 -0
  118. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/sync/exchanges.py +0 -0
  119. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/sync/instruments.py +0 -0
  120. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/contrib/qa/tasks.py +0 -0
  121. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/dataloaders/__init__.py +0 -0
  122. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/dataloaders/cache.py +0 -0
  123. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/dataloaders/protocols.py +0 -0
  124. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/dataloaders/proxies.py +0 -0
  125. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/dataloaders/types.py +0 -0
  126. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/dynamic_preferences_registry.py +0 -0
  127. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/enums.py +0 -0
  128. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/factories/__init__.py +0 -0
  129. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/factories/classifications.py +0 -0
  130. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/factories/controversies.py +0 -0
  131. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/factories/exchanges.py +0 -0
  132. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/factories/instrument_list.py +0 -0
  133. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/factories/instrument_prices.py +0 -0
  134. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/factories/instruments.py +0 -0
  135. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/factories/instruments_relationships.py +0 -0
  136. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/factories/options.py +0 -0
  137. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/figures/__init__.py +0 -0
  138. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/figures/financials/__init__.py +0 -0
  139. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/figures/financials/financial_analysis_charts.py +0 -0
  140. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/figures/financials/financials_charts.py +0 -0
  141. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/filters/__init__.py +0 -0
  142. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/filters/classifications.py +0 -0
  143. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/filters/exchanges.py +0 -0
  144. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/filters/financials.py +0 -0
  145. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/filters/financials_analysis.py +0 -0
  146. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/filters/instruments.py +0 -0
  147. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/filters/utils.py +0 -0
  148. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/__init__.py +0 -0
  149. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/__init__.py +0 -0
  150. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/cbinsights/__init__.py +0 -0
  151. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/cbinsights/deals.py +0 -0
  152. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/cbinsights/equities.py +0 -0
  153. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/cbinsights/mixin.py +0 -0
  154. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/cbinsights/utils/__init__.py +0 -0
  155. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/cbinsights/utils/classifications.py +0 -0
  156. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/cbinsights/utils/client.py +0 -0
  157. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/refinitiv/__init__.py +0 -0
  158. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/refinitiv/daily_fundamental.py +0 -0
  159. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/refinitiv/fiscal_period.py +0 -0
  160. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/refinitiv/forecast.py +0 -0
  161. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/refinitiv/fundamental.py +0 -0
  162. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/refinitiv/geographic_segment.py +0 -0
  163. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/refinitiv/instrument.py +0 -0
  164. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/refinitiv/instrument_price.py +0 -0
  165. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/refinitiv/mixin.py +0 -0
  166. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/refinitiv/utils/__init__.py +0 -0
  167. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/backends/refinitiv/utils/controller.py +0 -0
  168. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/handlers/__init__.py +0 -0
  169. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/handlers/instrument_list.py +0 -0
  170. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/handlers/instrument_price.py +0 -0
  171. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/handlers/option.py +0 -0
  172. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/handlers/private_equities.py +0 -0
  173. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/parsers/__init__.py +0 -0
  174. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/parsers/cbinsights/__init__.py +0 -0
  175. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/parsers/cbinsights/deals.py +0 -0
  176. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/parsers/cbinsights/equities.py +0 -0
  177. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/parsers/cbinsights/fundamentals.py +0 -0
  178. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/parsers/refinitiv/__init__.py +0 -0
  179. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/parsers/refinitiv/daily_fundamental.py +0 -0
  180. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/parsers/refinitiv/forecast.py +0 -0
  181. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/parsers/refinitiv/fundamental.py +0 -0
  182. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/parsers/refinitiv/geographic_segment.py +0 -0
  183. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/parsers/refinitiv/instrument.py +0 -0
  184. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/parsers/refinitiv/instrument_price.py +0 -0
  185. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/parsers/refinitiv/utils.py +0 -0
  186. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/resources/__init__.py +0 -0
  187. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/resources/classification.py +0 -0
  188. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/resources/instrument_prices.py +0 -0
  189. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/import_export/resources/instruments.py +0 -0
  190. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/jinja2.py +0 -0
  191. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/locale/de/LC_MESSAGES/django.mo +0 -0
  192. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/locale/de/LC_MESSAGES/django.po +0 -0
  193. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/locale/en/LC_MESSAGES/django.mo +0 -0
  194. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/locale/en/LC_MESSAGES/django.po +0 -0
  195. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/locale/fr/LC_MESSAGES/django.mo +0 -0
  196. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/locale/fr/LC_MESSAGES/django.po +0 -0
  197. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/management/__init__.py +0 -0
  198. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0001_initial.py +0 -0
  199. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0002_rename_statements_instrumentlookup_financials_and_more.py +0 -0
  200. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0003_instrument_estimate_backend_and_more.py +0 -0
  201. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0004_rename_financials_instrumentlookup_statements_and_more.py +0 -0
  202. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0005_instrument_corporate_action_backend.py +0 -0
  203. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0006_instrument_officer_backend.py +0 -0
  204. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0007_instrument_country_instrument_currency_and_more.py +0 -0
  205. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0008_controversy.py +0 -0
  206. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0009_alter_controversy_flag_alter_controversy_initiated_and_more.py +0 -0
  207. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0010_classification_classificationgroup_deal_exchange_and_more.py +0 -0
  208. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0011_delete_instrumentlookup_instrument_corporate_actions_and_more.py +0 -0
  209. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0012_instrumentprice_created_instrumentprice_modified.py +0 -0
  210. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0013_instrument_is_investable_universe_and_more.py +0 -0
  211. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0014_alter_controversy_instrument.py +0 -0
  212. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0015_instrument_instrument_investible_index.py +0 -0
  213. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0016_instrumenttype_name_repr.py +0 -0
  214. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0017_instrument_instrument_security_index.py +0 -0
  215. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0018_instrument_instrument_level_index.py +0 -0
  216. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0019_alter_controversy_source.py +0 -0
  217. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0020_optionaggregate_option_and_more.py +0 -0
  218. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0021_delete_instrumentdailystatistics.py +0 -0
  219. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0022_instrument_cusip_option_open_interest_20d_and_more.py +0 -0
  220. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0023_instrument_unique_ric_instrument_unique_rmc_and_more.py +0 -0
  221. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0024_option_open_interest_10d_option_volume_10d_and_more.py +0 -0
  222. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0025_instrument_is_primary_and_more.py +0 -0
  223. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0026_instrument_is_cash_equivalent.py +0 -0
  224. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0027_remove_instrument_unique_ric_and_more.py +0 -0
  225. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0028_instrumentprice_annualized_daily_volatility.py +0 -0
  226. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0029_alter_instrumentprice_volume.py +0 -0
  227. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0030_alter_relatedinstrumentthroughmodel_related_type.py +0 -0
  228. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0031_exchange_apply_round_lot_size_and_more.py +0 -0
  229. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0032_alter_instrumentprice_outstanding_shares.py +0 -0
  230. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/0033_alter_controversy_review.py +0 -0
  231. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/migrations/__init__.py +0 -0
  232. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/__init__.py +0 -0
  233. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/esg/__init__.py +0 -0
  234. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/esg/controversies.py +0 -0
  235. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/exchanges/__init__.py +0 -0
  236. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/exchanges/exchanges.py +0 -0
  237. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/fields.py +0 -0
  238. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/fk_fields.py +0 -0
  239. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/indicators.py +0 -0
  240. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/__init__.py +0 -0
  241. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/classifications.py +0 -0
  242. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/instrument_lists.py +0 -0
  243. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/instrument_prices.py +0 -0
  244. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/instrument_relationships.py +0 -0
  245. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/instrument_requests.py +0 -0
  246. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/llm/__init__.py +0 -0
  247. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/llm/create_instrument_news_relationships.py +0 -0
  248. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/mixin/__init__.py +0 -0
  249. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/mixin/financials_computed.py +0 -0
  250. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/mixin/financials_serializer_fields.py +0 -0
  251. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/mixin/instruments.py +0 -0
  252. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/options.py +0 -0
  253. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/private_equities.py +0 -0
  254. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/querysets.py +0 -0
  255. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/models/instruments/utils.py +0 -0
  256. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/preferences.py +0 -0
  257. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/serializers/__init__.py +0 -0
  258. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/serializers/esg.py +0 -0
  259. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/serializers/exchanges.py +0 -0
  260. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/serializers/instruments/__init__.py +0 -0
  261. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/serializers/instruments/classifications.py +0 -0
  262. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/serializers/instruments/instrument_lists.py +0 -0
  263. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/serializers/instruments/instrument_prices.py +0 -0
  264. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/serializers/instruments/instrument_relationships.py +0 -0
  265. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/serializers/instruments/instrument_requests.py +0 -0
  266. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/serializers/instruments/instruments.py +0 -0
  267. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/serializers/instruments/mixins.py +0 -0
  268. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/serializers/officers.py +0 -0
  269. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/signals.py +0 -0
  270. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/sync/__init__.py +0 -0
  271. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/sync/abstract.py +0 -0
  272. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/sync/runner.py +0 -0
  273. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tasks.py +0 -0
  274. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/__init__.py +0 -0
  275. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/analysis/__init__.py +0 -0
  276. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/analysis/financial_analysis/__init__.py +0 -0
  277. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/analysis/financial_analysis/test_statement_with_estimates.py +0 -0
  278. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/analysis/financial_analysis/test_utils.py +0 -0
  279. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/analysis/test_esg.py +0 -0
  280. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/conftest.py +0 -0
  281. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/dataloaders/__init__.py +0 -0
  282. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/dataloaders/test_cache.py +0 -0
  283. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/models/__init__.py +0 -0
  284. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/models/test_classifications.py +0 -0
  285. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/models/test_exchanges.py +0 -0
  286. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/models/test_instrument_list.py +0 -0
  287. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/models/test_instrument_prices.py +0 -0
  288. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/models/test_instruments.py +0 -0
  289. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/models/test_merge.py +0 -0
  290. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/models/test_options.py +0 -0
  291. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/models/test_queryset.py +0 -0
  292. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/test_tasks.py +0 -0
  293. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/tests/tests.py +0 -0
  294. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/urls.py +0 -0
  295. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/utils.py +0 -0
  296. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/__init__.py +0 -0
  297. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/__init__.py +0 -0
  298. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/buttons/__init__.py +0 -0
  299. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/buttons/classifications.py +0 -0
  300. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/buttons/exchanges.py +0 -0
  301. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/buttons/instrument_prices.py +0 -0
  302. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/buttons/instruments.py +0 -0
  303. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/__init__.py +0 -0
  304. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/classifications.py +0 -0
  305. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/esg.py +0 -0
  306. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/exchanges.py +0 -0
  307. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/financial_summary.py +0 -0
  308. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/instrument_lists.py +0 -0
  309. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/instrument_prices.py +0 -0
  310. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/instrument_requests.py +0 -0
  311. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/instruments.py +0 -0
  312. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/instruments_relationships.py +0 -0
  313. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/monthly_performances.py +0 -0
  314. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/officers.py +0 -0
  315. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/prices.py +0 -0
  316. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/statement_with_estimates.py +0 -0
  317. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/display/statements.py +0 -0
  318. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/endpoints/__init__.py +0 -0
  319. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/endpoints/classifications.py +0 -0
  320. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/endpoints/esg.py +0 -0
  321. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/endpoints/exchanges.py +0 -0
  322. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/endpoints/financials_analysis.py +0 -0
  323. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/endpoints/instrument_lists.py +0 -0
  324. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/endpoints/instrument_prices.py +0 -0
  325. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/endpoints/instrument_requests.py +0 -0
  326. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/endpoints/instruments.py +0 -0
  327. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/endpoints/instruments_relationships.py +0 -0
  328. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/endpoints/statements.py +0 -0
  329. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/menus/__init__.py +0 -0
  330. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/menus/classifications.py +0 -0
  331. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/menus/exchanges.py +0 -0
  332. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/menus/instrument_lists.py +0 -0
  333. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/menus/instruments.py +0 -0
  334. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/menus/instruments_relationships.py +0 -0
  335. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/titles/__init__.py +0 -0
  336. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/titles/classifications.py +0 -0
  337. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/titles/esg.py +0 -0
  338. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/titles/exchanges.py +0 -0
  339. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/titles/financial_ratio_analysis.py +0 -0
  340. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/titles/financials_analysis.py +0 -0
  341. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/titles/instrument_prices.py +0 -0
  342. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/titles/instrument_requests.py +0 -0
  343. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/titles/instruments.py +0 -0
  344. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/titles/instruments_relationships.py +0 -0
  345. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/titles/market_data.py +0 -0
  346. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/titles/prices.py +0 -0
  347. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/configs/titles/statement_with_estimates.py +0 -0
  348. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/esg.py +0 -0
  349. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/exchanges.py +0 -0
  350. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/financial_analysis/__init__.py +0 -0
  351. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/financial_analysis/financial_metric_analysis.py +0 -0
  352. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/financial_analysis/financial_ratio_analysis.py +0 -0
  353. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/financial_analysis/financial_summary.py +0 -0
  354. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/instruments/__init__.py +0 -0
  355. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/instruments/classifications.py +0 -0
  356. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/instruments/instrument_lists.py +0 -0
  357. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/instruments/instrument_prices.py +0 -0
  358. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/instruments/instrument_requests.py +0 -0
  359. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/instruments/instruments.py +0 -0
  360. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/instruments/instruments_relationships.py +0 -0
  361. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/instruments/utils.py +0 -0
  362. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/market_data.py +0 -0
  363. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/mixins.py +0 -0
  364. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/officers.py +0 -0
  365. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/prices.py +0 -0
  366. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/statements/__init__.py +0 -0
  367. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/statements/statements.py +0 -0
  368. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/technical_analysis/__init__.py +0 -0
  369. {wbfdm-1.55.10rc0 → wbfdm-1.56.1}/wbfdm/viewsets/technical_analysis/monthly_performances.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wbfdm
3
- Version: 1.55.10rc0
3
+ Version: 1.56.1
4
4
  Summary: The workbench module ensures rapid access to diverse financial data (market, fundamental, forecasts, ESG), with features for storing instruments, classifying them, and conducting financial analysis.
5
5
  Author-email: Christopher Wittlinger <c.wittlinger@stainly.com>
6
6
  Requires-Dist: roman==4.*
@@ -39,7 +39,7 @@ class DS2MarketData(Enum):
39
39
 
40
40
 
41
41
  class DatastreamMarketDataDataloader(MarketDataProtocol, Dataloader):
42
- def market_data(
42
+ def market_data( # noqa: C901
43
43
  self,
44
44
  values: list[MarketData] | None = None,
45
45
  from_date: date | None = None,
@@ -148,12 +148,15 @@ def _delist_existing_duplicates(instrument: Instrument) -> None:
148
148
 
149
149
  for identifier_field in unique_identifiers:
150
150
  if identifier := getattr(instrument, identifier_field):
151
- with suppress(Instrument.DoesNotExist):
152
- duplicate = Instrument.objects.get(
153
- is_security=True, delisted_date__isnull=True, **{identifier_field: identifier}
154
- )
155
- duplicate.delisted_date = date.today() - timedelta(days=1)
156
- duplicate.save()
151
+ if instrument.delisted_date: # if delisted, we unset the identifier that can lead to constraint error
152
+ setattr(instrument, identifier_field, None)
153
+ else:
154
+ with suppress(Instrument.DoesNotExist):
155
+ duplicate = Instrument.objects.get(
156
+ is_security=True, delisted_date__isnull=True, **{identifier_field: identifier}
157
+ )
158
+ duplicate.delisted_date = date.today() - timedelta(days=1)
159
+ duplicate.save()
157
160
 
158
161
 
159
162
  def _save_single_instrument(instrument: Instrument) -> None:
@@ -211,7 +214,7 @@ def _bulk_create_instruments_chunk(instruments: list[Instrument], update_unique_
211
214
  )
212
215
  except IntegrityError:
213
216
  # we caught an integrity error on the bulk save, so we try to save one by one
214
- logger.info(
217
+ logger.error(
215
218
  "we detected an integrity error while bulk saving instruments. We save them one by one and delist the already existing instrument from the db if we can. "
216
219
  )
217
220
  for instrument in instruments:
@@ -290,7 +293,7 @@ def trigger_partial_update(
290
293
  else:
291
294
  with connections["qa"].cursor() as cursor:
292
295
  cursor.execute(
293
- "SELECT MAX(last_user_update) FROM sys.dm_db_index_usage_stats WHERE OBJECT_NAME(object_id) = %S'",
296
+ "SELECT MAX(last_user_update) FROM sys.dm_db_index_usage_stats WHERE OBJECT_NAME(object_id) = %s'",
294
297
  (table_change_name,),
295
298
  )
296
299
  max_last_updated_qa = (
@@ -26,7 +26,6 @@ class FakeDateRange(wb_filters.FilterSet):
26
26
 
27
27
  class InstrumentPriceFilterSet(wb_filters.FilterSet):
28
28
  date = wb_filters.FinancialPerformanceDateRangeFilter(
29
- method=wb_filters.DateRangeFilter.base_date_range_filter_method,
30
29
  label="Date Range",
31
30
  required=True,
32
31
  clearable=False,
@@ -46,7 +46,7 @@ class InstrumentLookup:
46
46
  cache_key = self._get_cache_key(**kwargs)
47
47
  self.cache[cache_key] = instrument
48
48
 
49
- def _lookup_security(
49
+ def _lookup_security( # noqa: C901
50
50
  self,
51
51
  instrument_type=None,
52
52
  currency=None,
@@ -57,7 +57,6 @@ class InstrumentLookup:
57
57
  **identifiers,
58
58
  ):
59
59
  identifiers = {k: v for k, v in identifiers.items() if v is not None}
60
-
61
60
  instrument = None
62
61
 
63
62
  # We need to lookup ticker because some provider gives us ticker with or without space in it
@@ -113,33 +112,41 @@ class InstrumentLookup:
113
112
  conditions.append(Q(**{f"{field}": field_value}))
114
113
  if field == "isin":
115
114
  conditions.append(Q(old_isins__contains=[field_value]))
115
+ if field == "ticker":
116
+ conditions.append(Q(ticker__regex=rf"^{field_value}([A-Za-z]?|\.?[A-Za-z])$"))
117
+ conditions.append(Q(refinitiv_mnemonic_code=f"@{field_value}"))
118
+
116
119
  if conditions:
117
120
  instruments = instruments.filter(reduce(operator.or_, conditions))
118
-
119
- if currency: # if currency is provides, we use it as validator
121
+ if (
122
+ currency and instruments.filter(currency=currency).exists()
123
+ ): # if currency is provides, we use it as validator
120
124
  instruments = instruments.filter(currency=currency)
121
-
122
125
  if exchange:
123
126
  instruments_tmp = instruments.filter(exchange=exchange)
124
127
  if instruments_tmp.exists():
125
128
  instruments = instruments_tmp
129
+
126
130
  # last chance
127
131
  if name and instruments.count() > 1:
128
132
  instruments = instruments.annotate(similarity_score=TrigramSimilarity("name", name))
129
133
  if instruments.filter(similarity_score__gt=self.trigram_similarity_min_score).count() == 1:
130
134
  instruments = instruments.filter(similarity_score__gt=self.trigram_similarity_min_score)
135
+
131
136
  if instruments.count() == 1:
132
137
  instrument = instruments.first()
133
- elif instrument_type and identifiers:
138
+ elif instrument_type and (name or identifiers):
134
139
  # if instrument type was provided but we still didn't find the security, we try without the instrument type in case it was mislabeled
135
140
  instrument = self._lookup_security(
136
141
  only_investable_universe=only_investable_universe,
137
142
  exact_lookup=exact_lookup,
138
143
  currency=currency,
139
144
  exchange=exchange,
145
+ name=name,
140
146
  **identifiers,
141
147
  )
142
- if not instrument and name and identifiers:
148
+ if not instrument and identifiers:
149
+ identifiers.pop(list(identifiers.keys())[0])
143
150
  # Sometime, identifier provided emptied the queryset of possible instruments. In a last chance approach, we try to only look for security with the given name
144
151
  instrument = self._lookup_security(
145
152
  only_investable_universe=only_investable_universe,
@@ -148,6 +155,7 @@ class InstrumentLookup:
148
155
  currency=currency,
149
156
  exchange=exchange,
150
157
  name=name,
158
+ **identifiers,
151
159
  )
152
160
  if instrument and only_investable_universe and not instrument.is_security and instrument.parent:
153
161
  instrument = instrument.parent
@@ -671,11 +671,11 @@ class Instrument(ComplexToStringMixin, TagModelMixin, ImportMixin, InstrumentPMS
671
671
  raise ValidationError("An instrument in the investable universe cannot have children")
672
672
  return self
673
673
 
674
- def pre_save(self):
674
+ def pre_save(self): # noqa: C901
675
675
  if self.instrument_type:
676
676
  self.is_security = self.instrument_type.is_security
677
- if self.delisted_date:
678
- self.is_security = False
677
+ # if self.delisted_date:
678
+ # self.is_security = False
679
679
  if not self.name_repr:
680
680
  self.name_repr = self.name
681
681
  if not self.founded_year and self.inception_date:
@@ -139,7 +139,7 @@ class StatementWithEstimatesPandasViewSet(InstrumentMixin, ExportPandasAPIViewSe
139
139
  return self.df.columns
140
140
 
141
141
  def get_ordering_fields(self):
142
- return self.columns
142
+ return [x for x in self.columns if x != "progress"]
143
143
 
144
144
  @cached_property
145
145
  def year_columns(self):
@@ -118,7 +118,7 @@ class ValuationRatiosChartView(InstrumentMixin, viewsets.ChartViewSet):
118
118
  filterset_class = FinancialAnalysisValuationRatiosFilterSet
119
119
  LIST_DOCUMENTATION = "wbfdm/markdown/documentation/financial_analysis_instrument_ratios.md"
120
120
 
121
- def get_plotly(self, queryset):
121
+ def get_plotly(self, queryset): # noqa: C901
122
122
  # Set plotly as the default plotting lib
123
123
  pd.options.plotting.backend = "plotly"
124
124
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes