wbfdm 1.55.6__tar.gz → 1.55.8__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.
- {wbfdm-1.55.6 → wbfdm-1.55.8}/PKG-INFO +1 -1
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/dispatch.py +3 -0
- wbfdm-1.55.8/wbfdm/contrib/metric/signals.py +7 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/tasks.py +2 -3
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/msci/client.py +3 -2
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/handlers/instrument.py +1 -1
- wbfdm-1.55.8/wbfdm/migrations/0033_alter_controversy_review.py +18 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/esg/controversies.py +16 -23
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tasks.py +4 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/.gitignore +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/pyproject.toml +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/admin/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/admin/classifications.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/admin/esg.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/admin/exchanges.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/admin/instrument_lists.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/admin/instrument_prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/admin/instrument_requests.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/admin/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/admin/instruments_relationships.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/admin/options.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/esg/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/esg/enums.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/esg/esg_analysis.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/esg/utils.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/financial_analysis/change_point_detection.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/financial_analysis/financial_statistics_analysis.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/financial_analysis/utils.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/technical_analysis/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/technical_analysis/technical_analysis.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/technical_analysis/traces.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/utils.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/apps.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/backends/dto.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/dsws/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/dsws/client.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/dsws/dataloaders/market_data.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/internal/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/internal/dataloaders/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/internal/dataloaders/market_data.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/admin/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/admin/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/admin/metrics.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/apps.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/backends/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/backends/base.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/backends/performances.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/backends/statistics.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/backends/utils.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/decorators.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/dto.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/exceptions.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/factories.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/filters.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/migrations/0001_initial.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/migrations/0002_remove_instrumentmetric_unique_instrument_metric_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/migrations/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/models.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/orchestrators.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/registry.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/serializers.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/tests/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/tests/backends/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/tests/backends/test_performances.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/tests/backends/test_statistics.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/tests/conftest.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/tests/test_dto.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/tests/test_models.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/tests/test_tasks.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/tests/test_viewsets.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/urls.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/viewsets/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/viewsets/configs/display.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/viewsets/configs/menus.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/viewsets/configs/utils.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/viewsets/mixins.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/metric/viewsets/viewsets.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/msci/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/msci/dataloaders/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/msci/dataloaders/esg.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/msci/dataloaders/esg_controversies.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/msci/sync.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/msci/tests/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/msci/tests/conftest.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/msci/tests/test_client.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/apps.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/database_routers.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/dataloaders/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/dataloaders/adjustments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/dataloaders/corporate_actions.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/dataloaders/financials.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/dataloaders/fx_rates.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/dataloaders/market_data.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/dataloaders/officers.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/dataloaders/reporting_dates.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/dataloaders/statements.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/dataloaders/utils.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/jinja2/qa/sql/companies.sql +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/base_estimates.sql +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/calendarized.sql +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/complete.sql +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/estimates.sql +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/financials.sql +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/jinja2/qa/sql/instruments.sql +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/jinja2/qa/sql/quotes.sql +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/sync/exchanges.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/sync/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/sync/utils.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/contrib/qa/tasks.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/dataloaders/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/dataloaders/cache.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/dataloaders/protocols.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/dataloaders/proxies.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/dataloaders/types.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/dynamic_preferences_registry.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/enums.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/factories/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/factories/classifications.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/factories/controversies.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/factories/exchanges.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/factories/instrument_list.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/factories/instrument_prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/factories/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/factories/instruments_relationships.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/factories/options.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/figures/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/figures/financials/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/figures/financials/financial_analysis_charts.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/figures/financials/financials_charts.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/filters/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/filters/classifications.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/filters/exchanges.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/filters/financials.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/filters/financials_analysis.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/filters/instrument_prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/filters/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/filters/utils.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/cbinsights/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/cbinsights/deals.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/cbinsights/equities.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/cbinsights/mixin.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/cbinsights/utils/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/cbinsights/utils/classifications.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/cbinsights/utils/client.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/refinitiv/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/refinitiv/fiscal_period.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/refinitiv/forecast.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/refinitiv/fundamental.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/refinitiv/instrument.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/refinitiv/mixin.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/refinitiv/utils/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/refinitiv/utils/controller.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/handlers/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/handlers/instrument_list.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/handlers/instrument_price.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/handlers/option.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/handlers/private_equities.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/parsers/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/parsers/cbinsights/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/parsers/cbinsights/deals.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/parsers/cbinsights/equities.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/parsers/cbinsights/fundamentals.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/parsers/refinitiv/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/parsers/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/parsers/refinitiv/forecast.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/parsers/refinitiv/fundamental.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/parsers/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/parsers/refinitiv/instrument.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/parsers/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/parsers/refinitiv/utils.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/resources/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/resources/classification.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/resources/instrument_prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/resources/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/jinja2.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/locale/de/LC_MESSAGES/django.mo +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/locale/de/LC_MESSAGES/django.po +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/locale/en/LC_MESSAGES/django.mo +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/locale/en/LC_MESSAGES/django.po +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/locale/fr/LC_MESSAGES/django.mo +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/locale/fr/LC_MESSAGES/django.po +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/management/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0001_initial.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0002_rename_statements_instrumentlookup_financials_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0003_instrument_estimate_backend_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0004_rename_financials_instrumentlookup_statements_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0005_instrument_corporate_action_backend.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0006_instrument_officer_backend.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0007_instrument_country_instrument_currency_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0008_controversy.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0009_alter_controversy_flag_alter_controversy_initiated_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0010_classification_classificationgroup_deal_exchange_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0011_delete_instrumentlookup_instrument_corporate_actions_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0012_instrumentprice_created_instrumentprice_modified.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0013_instrument_is_investable_universe_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0014_alter_controversy_instrument.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0015_instrument_instrument_investible_index.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0016_instrumenttype_name_repr.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0017_instrument_instrument_security_index.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0018_instrument_instrument_level_index.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0019_alter_controversy_source.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0020_optionaggregate_option_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0021_delete_instrumentdailystatistics.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0022_instrument_cusip_option_open_interest_20d_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0023_instrument_unique_ric_instrument_unique_rmc_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0024_option_open_interest_10d_option_volume_10d_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0025_instrument_is_primary_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0026_instrument_is_cash_equivalent.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0027_remove_instrument_unique_ric_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0028_instrumentprice_annualized_daily_volatility.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0029_alter_instrumentprice_volume.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0030_alter_relatedinstrumentthroughmodel_related_type.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0031_exchange_apply_round_lot_size_and_more.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/0032_alter_instrumentprice_outstanding_shares.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/migrations/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/esg/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/exchanges/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/exchanges/exchanges.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/fields.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/fk_fields.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/indicators.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/classifications.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/instrument_lists.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/instrument_prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/instrument_relationships.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/instrument_requests.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/llm/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/llm/create_instrument_news_relationships.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/mixin/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/mixin/financials_computed.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/mixin/financials_serializer_fields.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/mixin/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/options.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/private_equities.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/querysets.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/models/instruments/utils.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/preferences.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/serializers/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/serializers/esg.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/serializers/exchanges.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/serializers/instruments/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/serializers/instruments/classifications.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/serializers/instruments/instrument_lists.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/serializers/instruments/instrument_prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/serializers/instruments/instrument_relationships.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/serializers/instruments/instrument_requests.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/serializers/instruments/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/serializers/instruments/mixins.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/serializers/officers.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/signals.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/sync/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/sync/abstract.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/sync/runner.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/analysis/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/analysis/financial_analysis/test_statement_with_estimates.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/analysis/financial_analysis/test_utils.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/analysis/test_esg.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/conftest.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/dataloaders/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/dataloaders/test_cache.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/models/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/models/test_classifications.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/models/test_exchanges.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/models/test_instrument_list.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/models/test_instrument_prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/models/test_instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/models/test_merge.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/models/test_options.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/models/test_queryset.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/test_tasks.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/tests/tests.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/urls.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/utils.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/buttons/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/buttons/classifications.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/buttons/exchanges.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/buttons/instrument_prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/buttons/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/classifications.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/esg.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/exchanges.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/financial_summary.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/instrument_lists.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/instrument_prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/instrument_requests.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/instruments_relationships.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/monthly_performances.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/officers.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/statement_with_estimates.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/display/statements.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/endpoints/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/endpoints/classifications.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/endpoints/esg.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/endpoints/exchanges.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/endpoints/financials_analysis.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/endpoints/instrument_lists.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/endpoints/instrument_prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/endpoints/instrument_requests.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/endpoints/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/endpoints/instruments_relationships.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/endpoints/statements.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/menus/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/menus/classifications.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/menus/exchanges.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/menus/instrument_lists.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/menus/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/menus/instruments_relationships.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/titles/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/titles/classifications.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/titles/esg.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/titles/exchanges.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/titles/financial_ratio_analysis.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/titles/financials_analysis.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/titles/instrument_prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/titles/instrument_requests.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/titles/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/titles/instruments_relationships.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/titles/market_data.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/titles/prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/configs/titles/statement_with_estimates.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/esg.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/exchanges.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/financial_analysis/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/financial_analysis/financial_summary.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/instruments/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/instruments/classifications.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/instruments/financials_analysis.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/instruments/instrument_lists.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/instruments/instrument_prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/instruments/instrument_requests.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/instruments/instruments.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/instruments/instruments_relationships.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/instruments/utils.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/market_data.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/mixins.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/officers.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/prices.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/statements/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/statements/statements.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/viewsets/technical_analysis/__init__.py +0 -0
- {wbfdm-1.55.6 → wbfdm-1.55.8}/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.
|
|
3
|
+
Version: 1.55.8
|
|
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.*
|
|
@@ -2,6 +2,8 @@ from contextlib import suppress
|
|
|
2
2
|
from datetime import date
|
|
3
3
|
from typing import Any
|
|
4
4
|
|
|
5
|
+
from wbfdm.contrib.metric.signals import instrument_metric_updated
|
|
6
|
+
|
|
5
7
|
|
|
6
8
|
def compute_metrics(val_date: date, key: str | None = None, basket: Any | None = None, **kwargs):
|
|
7
9
|
"""
|
|
@@ -21,3 +23,4 @@ def compute_metrics(val_date: date, key: str | None = None, basket: Any | None =
|
|
|
21
23
|
with suppress(KeyError):
|
|
22
24
|
orchestrator = MetricOrchestrator(val_date, key=key, basket=basket, **kwargs)
|
|
23
25
|
orchestrator.process()
|
|
26
|
+
instrument_metric_updated.send(sender=basket.__class__, basket=basket, key=key, val_date=val_date)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
from django.db.models.signals import ModelSignal
|
|
2
|
+
|
|
3
|
+
# this signal is triggered whenever all instruments metrics are updated. Temporary solution until we rework the framework for more dynamicity
|
|
4
|
+
|
|
5
|
+
instrument_metric_updated = ModelSignal(
|
|
6
|
+
use_caching=True
|
|
7
|
+
) # the sender model is the type model class being updated (e.g. Instrument), expect a "basket", "key" and "val_date" keyword argument (null if all are updated)
|
|
@@ -3,7 +3,7 @@ from datetime import date
|
|
|
3
3
|
from celery import shared_task
|
|
4
4
|
from django.contrib.contenttypes.models import ContentType
|
|
5
5
|
|
|
6
|
-
from wbfdm.contrib.metric.
|
|
6
|
+
from wbfdm.contrib.metric.dispatch import compute_metrics
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
@shared_task(queue="portfolio")
|
|
@@ -24,5 +24,4 @@ def compute_metrics_as_task(
|
|
|
24
24
|
basket = None
|
|
25
25
|
if basket_content_type_id and basket_id:
|
|
26
26
|
basket = ContentType.objects.get(id=basket_content_type_id).get_object_for_this_type(pk=basket_id)
|
|
27
|
-
|
|
28
|
-
routine.process()
|
|
27
|
+
compute_metrics(val_date=val_date, key=key, basket=basket, **kwargs)
|
|
@@ -66,6 +66,7 @@ class MSCIClient:
|
|
|
66
66
|
def controversies(self, identifiers: list[str], factors: list[str]) -> Generator[dict[str, str], None, None]:
|
|
67
67
|
next_url = "https://api2.msci.com/esg/data/v2.0/issuers"
|
|
68
68
|
offset = 0
|
|
69
|
+
limit = 100
|
|
69
70
|
while next_url:
|
|
70
71
|
with suppress(ConnectionError):
|
|
71
72
|
response = requests.post(
|
|
@@ -73,7 +74,7 @@ class MSCIClient:
|
|
|
73
74
|
json={
|
|
74
75
|
"issuer_identifier_list": identifiers,
|
|
75
76
|
"factor_name_list": factors,
|
|
76
|
-
"limit":
|
|
77
|
+
"limit": limit,
|
|
77
78
|
"offset": offset,
|
|
78
79
|
},
|
|
79
80
|
headers={"AUTHORIZATION": f"Bearer {self.oauth_token}"},
|
|
@@ -87,6 +88,6 @@ class MSCIClient:
|
|
|
87
88
|
next_url = json_res["paging"]["links"]["next"]
|
|
88
89
|
except KeyError:
|
|
89
90
|
next_url = None
|
|
90
|
-
offset +=
|
|
91
|
+
offset += limit
|
|
91
92
|
for row in json_res.get("result", {}).get("issuers", []):
|
|
92
93
|
yield row
|
|
@@ -149,7 +149,7 @@ class InstrumentLookup:
|
|
|
149
149
|
exchange=exchange,
|
|
150
150
|
name=name,
|
|
151
151
|
)
|
|
152
|
-
if instrument and only_investable_universe and instrument.parent:
|
|
152
|
+
if instrument and only_investable_universe and not instrument.is_security and instrument.parent:
|
|
153
153
|
instrument = instrument.parent
|
|
154
154
|
return instrument
|
|
155
155
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Generated by Django 5.0.12 on 2025-09-08 11:39
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('wbfdm', '0032_alter_instrumentprice_outstanding_shares'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AlterField(
|
|
14
|
+
model_name='controversy',
|
|
15
|
+
name='review',
|
|
16
|
+
field=models.DateField(blank=True, null=True, verbose_name='Reviewed'),
|
|
17
|
+
),
|
|
18
|
+
]
|
|
@@ -8,7 +8,6 @@ from wbfdm.enums import (
|
|
|
8
8
|
ESGControveryStatus,
|
|
9
9
|
ESGControveryType,
|
|
10
10
|
)
|
|
11
|
-
from wbfdm.models.instruments.instruments import Instrument
|
|
12
11
|
|
|
13
12
|
|
|
14
13
|
class Controversy(models.Model):
|
|
@@ -54,29 +53,23 @@ class Controversy(models.Model):
|
|
|
54
53
|
direct_involvement = models.BooleanField(default=True, verbose_name="Direct Involvement")
|
|
55
54
|
company_response = models.CharField(max_length=512, null=True, blank=True)
|
|
56
55
|
|
|
57
|
-
review = models.DateField(verbose_name="Reviewed")
|
|
56
|
+
review = models.DateField(verbose_name="Reviewed", null=True, blank=True)
|
|
58
57
|
initiated = models.DateField(verbose_name="initiated", null=True, blank=True)
|
|
59
58
|
|
|
60
59
|
@classmethod
|
|
61
|
-
def
|
|
62
|
-
|
|
63
|
-
pk=controversy["instrument_id"]
|
|
64
|
-
).get_root() # we link it only to root level
|
|
65
|
-
|
|
66
|
-
return cls.objects.update_or_create(
|
|
60
|
+
def dict_to_model(cls, controversy: dict[str, Any], instrument) -> Self:
|
|
61
|
+
return Controversy(
|
|
67
62
|
external_id=controversy["id"],
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
},
|
|
82
|
-
)[0]
|
|
63
|
+
instrument=instrument,
|
|
64
|
+
headline=controversy["headline"],
|
|
65
|
+
description=controversy["narrative"],
|
|
66
|
+
source=controversy["source"],
|
|
67
|
+
direct_involvement=controversy.get("direct_involvement", True),
|
|
68
|
+
company_response=controversy["response"],
|
|
69
|
+
review=controversy["review"],
|
|
70
|
+
initiated=controversy["initiated"],
|
|
71
|
+
flag=controversy["flag"],
|
|
72
|
+
status=controversy["status"],
|
|
73
|
+
type=controversy["type"],
|
|
74
|
+
severity=controversy["assessment"],
|
|
75
|
+
)
|
|
@@ -6,6 +6,7 @@ from django.db import transaction
|
|
|
6
6
|
from django.db.models import ProtectedError, Q
|
|
7
7
|
from pandas.tseries.offsets import BDay
|
|
8
8
|
from tqdm import tqdm
|
|
9
|
+
from wbcore.utils.cache import mapping
|
|
9
10
|
|
|
10
11
|
from wbfdm.models import Instrument, InstrumentPrice
|
|
11
12
|
from wbfdm.sync.runner import ( # noqa: F401
|
|
@@ -15,6 +16,7 @@ from wbfdm.sync.runner import ( # noqa: F401
|
|
|
15
16
|
synchronize_instruments,
|
|
16
17
|
)
|
|
17
18
|
|
|
19
|
+
from .contrib.metric.signals import instrument_metric_updated
|
|
18
20
|
from .signals import investable_universe_updated
|
|
19
21
|
|
|
20
22
|
|
|
@@ -71,6 +73,7 @@ def update_instrument_metrics_as_task():
|
|
|
71
73
|
instruments = Instrument.active_objects.filter(is_investable_universe=True)
|
|
72
74
|
for instrument in tqdm(instruments, total=instruments.count()):
|
|
73
75
|
instrument.update_last_valuation_date()
|
|
76
|
+
instrument_metric_updated.send(sender=Instrument, basket=None, date=None, key=None)
|
|
74
77
|
|
|
75
78
|
|
|
76
79
|
@shared_task(queue="portfolio")
|
|
@@ -92,6 +95,7 @@ def full_synchronization_as_task():
|
|
|
92
95
|
for instrument in qs:
|
|
93
96
|
with suppress(ProtectedError):
|
|
94
97
|
instrument.delete()
|
|
98
|
+
mapping.cache_clear() # we need to clear the mapping cache because we might have deleted parent instruments
|
|
95
99
|
initialize_exchanges()
|
|
96
100
|
initialize_instruments()
|
|
97
101
|
with transaction.atomic():
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
{wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/analysis/financial_analysis/financial_statistics_analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wbfdm-1.55.6 → wbfdm-1.55.8}/wbfdm/import_export/backends/cbinsights/utils/classifications.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|