wbfdm 1.50.0__tar.gz → 1.50.2__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.50.0 → wbfdm-1.50.2}/PKG-INFO +1 -1
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/sync/exchanges.py +2 -1
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/exchanges/exchanges.py +3 -3
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/instruments.py +15 -7
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/serializers/instruments/__init__.py +1 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/serializers/instruments/instruments.py +7 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/instruments/instruments.py +7 -5
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/instruments/utils.py +3 -3
- {wbfdm-1.50.0 → wbfdm-1.50.2}/.gitignore +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/pyproject.toml +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/admin/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/admin/classifications.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/admin/esg.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/admin/exchanges.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/admin/instrument_lists.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/admin/instrument_prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/admin/instrument_requests.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/admin/instruments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/admin/instruments_relationships.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/admin/options.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/esg/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/esg/enums.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/esg/esg_analysis.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/esg/utils.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/financial_analysis/financial_statistics_analysis.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/financial_analysis/utils.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/technical_analysis/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/technical_analysis/technical_analysis.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/technical_analysis/traces.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/analysis/utils.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/apps.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/backends/dto.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/dsws/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/dsws/client.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/dsws/dataloaders/market_data.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/internal/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/internal/dataloaders/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/internal/dataloaders/market_data.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/admin/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/admin/instruments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/admin/metrics.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/apps.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/backends/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/backends/base.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/backends/performances.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/backends/statistics.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/backends/utils.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/decorators.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/dispatch.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/dto.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/exceptions.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/factories.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/filters.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/migrations/0001_initial.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/migrations/0002_remove_instrumentmetric_unique_instrument_metric_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/migrations/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/models.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/orchestrators.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/registry.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/serializers.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/tasks.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/tests/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/tests/backends/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/tests/backends/test_performances.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/tests/backends/test_statistics.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/tests/conftest.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/tests/test_dto.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/tests/test_models.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/tests/test_tasks.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/tests/test_viewsets.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/urls.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/viewsets/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/viewsets/configs/display.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/viewsets/configs/menus.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/viewsets/configs/utils.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/viewsets/mixins.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/metric/viewsets/viewsets.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/msci/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/msci/client.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/msci/dataloaders/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/msci/dataloaders/esg.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/msci/dataloaders/esg_controversies.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/msci/sync.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/msci/tests/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/msci/tests/conftest.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/msci/tests/test_client.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/apps.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/database_routers.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/dataloaders/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/dataloaders/adjustments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/dataloaders/corporate_actions.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/dataloaders/financials.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/dataloaders/market_data.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/dataloaders/officers.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/dataloaders/reporting_dates.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/dataloaders/statements.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/dataloaders/utils.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/jinja2/qa/sql/companies.sql +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/base_estimates.sql +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/calendarized.sql +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/complete.sql +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/estimates.sql +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/financials.sql +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/jinja2/qa/sql/instruments.sql +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/jinja2/qa/sql/quotes.sql +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/sync/instruments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/sync/utils.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/contrib/qa/tasks.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/dataloaders/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/dataloaders/cache.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/dataloaders/protocols.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/dataloaders/proxies.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/dataloaders/types.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/dynamic_preferences_registry.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/enums.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/factories/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/factories/classifications.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/factories/controversies.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/factories/exchanges.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/factories/instrument_list.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/factories/instrument_prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/factories/instruments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/factories/instruments_relationships.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/factories/options.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/figures/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/figures/financials/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/figures/financials/financial_analysis_charts.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/figures/financials/financials_charts.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/filters/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/filters/classifications.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/filters/exchanges.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/filters/financials.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/filters/financials_analysis.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/filters/instrument_prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/filters/instruments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/filters/utils.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/cbinsights/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/cbinsights/deals.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/cbinsights/equities.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/cbinsights/mixin.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/cbinsights/utils/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/cbinsights/utils/classifications.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/cbinsights/utils/client.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/refinitiv/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/refinitiv/fiscal_period.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/refinitiv/forecast.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/refinitiv/fundamental.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/refinitiv/instrument.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/refinitiv/mixin.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/refinitiv/utils/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/backends/refinitiv/utils/controller.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/handlers/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/handlers/instrument.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/handlers/instrument_list.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/handlers/instrument_price.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/handlers/option.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/handlers/private_equities.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/parsers/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/parsers/cbinsights/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/parsers/cbinsights/deals.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/parsers/cbinsights/equities.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/parsers/cbinsights/fundamentals.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/parsers/refinitiv/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/parsers/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/parsers/refinitiv/forecast.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/parsers/refinitiv/fundamental.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/parsers/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/parsers/refinitiv/instrument.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/parsers/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/parsers/refinitiv/utils.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/resources/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/resources/classification.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/resources/instrument_prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/import_export/resources/instruments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/jinja2.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/management/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/menu.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0001_initial.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0002_rename_statements_instrumentlookup_financials_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0003_instrument_estimate_backend_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0004_rename_financials_instrumentlookup_statements_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0005_instrument_corporate_action_backend.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0006_instrument_officer_backend.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0007_instrument_country_instrument_currency_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0008_controversy.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0009_alter_controversy_flag_alter_controversy_initiated_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0010_classification_classificationgroup_deal_exchange_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0011_delete_instrumentlookup_instrument_corporate_actions_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0012_instrumentprice_created_instrumentprice_modified.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0013_instrument_is_investable_universe_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0014_alter_controversy_instrument.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0015_instrument_instrument_investible_index.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0016_instrumenttype_name_repr.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0017_instrument_instrument_security_index.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0018_instrument_instrument_level_index.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0019_alter_controversy_source.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0020_optionaggregate_option_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0021_delete_instrumentdailystatistics.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0022_instrument_cusip_option_open_interest_20d_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0023_instrument_unique_ric_instrument_unique_rmc_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0024_option_open_interest_10d_option_volume_10d_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0025_instrument_is_primary_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0026_instrument_is_cash_equivalent.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0027_remove_instrument_unique_ric_and_more.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0028_instrumentprice_annualized_daily_volatility.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0029_alter_instrumentprice_volume.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/0030_alter_relatedinstrumentthroughmodel_related_type.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/migrations/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/esg/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/esg/controversies.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/exchanges/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/fields.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/fk_fields.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/indicators.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/classifications.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/instrument_lists.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/instrument_prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/instrument_relationships.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/instrument_requests.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/llm/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/llm/create_instrument_news_relationships.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/mixin/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/mixin/financials_computed.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/mixin/financials_serializer_fields.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/mixin/instruments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/options.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/private_equities.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/querysets.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/models/instruments/utils.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/preferences.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/serializers/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/serializers/esg.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/serializers/exchanges.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/serializers/instruments/classifications.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/serializers/instruments/instrument_lists.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/serializers/instruments/instrument_prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/serializers/instruments/instrument_relationships.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/serializers/instruments/instrument_requests.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/serializers/instruments/mixins.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/serializers/officers.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/signals.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/sync/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/sync/abstract.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/sync/runner.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tasks.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/analysis/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/analysis/financial_analysis/test_statement_with_estimates.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/analysis/financial_analysis/test_utils.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/analysis/test_esg.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/conftest.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/dataloaders/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/dataloaders/test_cache.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/models/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/models/test_classifications.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/models/test_exchanges.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/models/test_instrument_list.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/models/test_instrument_prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/models/test_instruments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/models/test_merge.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/models/test_options.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/test_tasks.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/tests/tests.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/urls.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/utils.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/buttons/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/buttons/classifications.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/buttons/exchanges.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/buttons/instrument_prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/buttons/instruments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/classifications.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/esg.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/exchanges.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/financial_summary.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/instrument_lists.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/instrument_prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/instrument_requests.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/instruments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/instruments_relationships.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/monthly_performances.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/officers.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/statement_with_estimates.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/display/statements.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/endpoints/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/endpoints/classifications.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/endpoints/esg.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/endpoints/exchanges.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/endpoints/financials_analysis.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/endpoints/instrument_lists.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/endpoints/instrument_prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/endpoints/instrument_requests.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/endpoints/instruments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/endpoints/instruments_relationships.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/endpoints/statements.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/menus/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/menus/classifications.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/menus/exchanges.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/menus/instrument_lists.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/menus/instruments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/menus/instruments_relationships.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/titles/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/titles/classifications.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/titles/esg.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/titles/exchanges.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/titles/financial_ratio_analysis.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/titles/financials_analysis.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/titles/instrument_prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/titles/instrument_requests.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/titles/instruments.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/titles/instruments_relationships.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/titles/market_data.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/titles/prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/configs/titles/statement_with_estimates.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/esg.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/exchanges.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/financial_analysis/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/financial_analysis/financial_summary.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/instruments/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/instruments/classifications.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/instruments/financials_analysis.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/instruments/instrument_lists.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/instruments/instrument_prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/instruments/instrument_requests.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/instruments/instruments_relationships.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/market_data.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/mixins.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/officers.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/prices.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/statements/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/statements/statements.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/wbfdm/viewsets/technical_analysis/__init__.py +0 -0
- {wbfdm-1.50.0 → wbfdm-1.50.2}/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.50.
|
|
3
|
+
Version: 1.50.2
|
|
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.*
|
|
@@ -32,7 +32,8 @@ class QAExchangeSync(Sync[Exchange]):
|
|
|
32
32
|
|
|
33
33
|
def update_or_create_item(self, external_id: int) -> Exchange:
|
|
34
34
|
defaults = self.get_item(external_id)
|
|
35
|
-
|
|
35
|
+
if country_id := defaults.get("country_id"):
|
|
36
|
+
defaults["country_id"] = mapping(Geography.countries, "code_2").get(country_id)
|
|
36
37
|
exchange, _ = Exchange.objects.update_or_create(
|
|
37
38
|
source=self.SOURCE,
|
|
38
39
|
source_id=external_id,
|
|
@@ -175,9 +175,9 @@ class Exchange(WBModel):
|
|
|
175
175
|
def __str__(self) -> str:
|
|
176
176
|
repr = self.identifier_repr
|
|
177
177
|
if self.name:
|
|
178
|
-
repr = f"{self.name}
|
|
178
|
+
repr = f"{self.name} - {self.identifier_repr}"
|
|
179
179
|
elif self.mic_name:
|
|
180
|
-
repr = f"{self.mic_name}
|
|
180
|
+
repr = f"{self.mic_name} - {self.identifier_repr}"
|
|
181
181
|
return repr
|
|
182
182
|
|
|
183
183
|
class Meta:
|
|
@@ -215,7 +215,7 @@ class Exchange(WBModel):
|
|
|
215
215
|
|
|
216
216
|
@classmethod
|
|
217
217
|
def get_representation_label_key(cls):
|
|
218
|
-
return "{{name}}
|
|
218
|
+
return "{{name}}"
|
|
219
219
|
|
|
220
220
|
@property
|
|
221
221
|
def time_zone(self):
|
|
@@ -598,12 +598,17 @@ class Instrument(ComplexToStringMixin, TagModelMixin, ImportMixin, InstrumentPMS
|
|
|
598
598
|
if self.instrument_type and self.instrument_type.key == "product":
|
|
599
599
|
# Then we prioritize ISIN over ticker
|
|
600
600
|
identifiers = ["isin", "ticker", "refinitiv_identifier_code", "refinitiv_mnemonic_code"]
|
|
601
|
+
elif self.is_security:
|
|
602
|
+
identifiers = ["ticker", "refinitiv_identifier_code", "refinitiv_mnemonic_code"]
|
|
601
603
|
else:
|
|
602
|
-
identifiers = ["
|
|
604
|
+
identifiers = ["refinitiv_mnemonic_code"]
|
|
603
605
|
for identifier in identifiers:
|
|
604
606
|
if v := getattr(self, identifier, None):
|
|
605
607
|
identifier_repr = v
|
|
606
608
|
break
|
|
609
|
+
if self.isin and self.is_security:
|
|
610
|
+
identifier_repr += f" - {self.isin}"
|
|
611
|
+
|
|
607
612
|
return identifier_repr.replace(":", "-")
|
|
608
613
|
|
|
609
614
|
@property
|
|
@@ -701,13 +706,16 @@ class Instrument(ComplexToStringMixin, TagModelMixin, ImportMixin, InstrumentPMS
|
|
|
701
706
|
super().save(*args, **kwargs)
|
|
702
707
|
|
|
703
708
|
def compute_str(self):
|
|
704
|
-
repr = self.name_repr
|
|
705
|
-
|
|
709
|
+
repr = self.name_repr or self.name or ""
|
|
710
|
+
repr = repr.title() # we follow bloomberg instrument representation format
|
|
711
|
+
if self.instrument_type and self.is_security:
|
|
706
712
|
repr += f" {self.instrument_type.short_name}"
|
|
707
|
-
if self.
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
713
|
+
if self.is_security or not self.level == 0:
|
|
714
|
+
if self.identifier_repr:
|
|
715
|
+
repr += f" - {self.identifier_repr}"
|
|
716
|
+
# if the object has an exchange and is not a security nor a company (a quote then), we append the exchange representation
|
|
717
|
+
if self.exchange and self.parent is not None and not self.is_security:
|
|
718
|
+
repr += f" ({str(self.exchange)})"
|
|
711
719
|
return repr
|
|
712
720
|
|
|
713
721
|
def is_active_at_date(self, today: date) -> bool:
|
|
@@ -4,6 +4,7 @@ from .instruments import (
|
|
|
4
4
|
InstrumentRepresentationSerializer,
|
|
5
5
|
InstrumentTypeRepresentationSerializer,
|
|
6
6
|
InvestableUniverseRepresentationSerializer,
|
|
7
|
+
CompanyRepresentationSerializer,
|
|
7
8
|
ClassifiableInstrumentRepresentationSerializer,
|
|
8
9
|
SecurityRepresentationSerializer,
|
|
9
10
|
InvestableInstrumentRepresentationSerializer,
|
|
@@ -51,6 +51,13 @@ class ClassifiableInstrumentRepresentationSerializer(InstrumentRepresentationSer
|
|
|
51
51
|
return filter_params
|
|
52
52
|
|
|
53
53
|
|
|
54
|
+
class CompanyRepresentationSerializer(InstrumentRepresentationSerializer):
|
|
55
|
+
def get_filter_params(self, request):
|
|
56
|
+
filter_params = super().get_filter_params(request)
|
|
57
|
+
filter_params["level"] = 0
|
|
58
|
+
return filter_params
|
|
59
|
+
|
|
60
|
+
|
|
54
61
|
class SecurityRepresentationSerializer(InstrumentRepresentationSerializer):
|
|
55
62
|
def get_filter_params(self, request):
|
|
56
63
|
filter_params = super().get_filter_params(request)
|
|
@@ -2,6 +2,7 @@ from django.db.models import Case, Exists, F, IntegerField, OuterRef, When
|
|
|
2
2
|
from rest_framework.filters import OrderingFilter
|
|
3
3
|
from wbcore import viewsets
|
|
4
4
|
from wbcore.contrib.guardian.filters import ObjectPermissionsFilter
|
|
5
|
+
from wbcore.pagination import LimitOffsetPagination
|
|
5
6
|
from wbcore.viewsets.mixins import DjangoFilterBackend
|
|
6
7
|
|
|
7
8
|
from wbfdm.contrib.metric.backends.performances import PERFORMANCE_METRIC
|
|
@@ -35,21 +36,21 @@ class InstrumentTypeRepresentationViewSet(viewsets.RepresentationViewSet):
|
|
|
35
36
|
|
|
36
37
|
|
|
37
38
|
class InstrumentRepresentationViewSet(viewsets.RepresentationViewSet):
|
|
38
|
-
filter_backends = (
|
|
39
|
-
|
|
39
|
+
filter_backends = (ObjectPermissionsFilter, DjangoFilterBackend, OrderingFilter, InstrumentSearchFilter)
|
|
40
|
+
pagination_class = LimitOffsetPagination
|
|
40
41
|
queryset = Instrument.objects.annotate_base_data().exclude(name="")
|
|
41
42
|
serializer_class = InstrumentRepresentationSerializer
|
|
42
43
|
search_fields = ("name", "name_repr", "isin", "ticker")
|
|
43
44
|
|
|
44
45
|
filterset_class = InstrumentFilterSet
|
|
45
46
|
ordering_fields = ("title", "ticker")
|
|
46
|
-
ordering = ["
|
|
47
|
+
ordering = ["name_repr"]
|
|
47
48
|
|
|
48
49
|
|
|
49
50
|
class InstrumentModelViewSet(InstrumentMetricMixin, viewsets.ModelViewSet):
|
|
50
51
|
METRIC_KEYS = (PERFORMANCE_METRIC, STATISTICS_METRIC)
|
|
51
52
|
METRIC_SHOW_AGGREGATES = False
|
|
52
|
-
filter_backends = (
|
|
53
|
+
filter_backends = (ObjectPermissionsFilter, DjangoFilterBackend, OrderingFilter, InstrumentSearchFilter)
|
|
53
54
|
|
|
54
55
|
queryset = Instrument.objects.annotate_all()
|
|
55
56
|
serializer_class = InstrumentModelListSerializer
|
|
@@ -70,7 +71,7 @@ class InstrumentModelViewSet(InstrumentMetricMixin, viewsets.ModelViewSet):
|
|
|
70
71
|
"refinitiv_identifier_code",
|
|
71
72
|
"refinitiv_mnemonic_code",
|
|
72
73
|
)
|
|
73
|
-
ordering = ["
|
|
74
|
+
ordering = ["name_repr"]
|
|
74
75
|
|
|
75
76
|
def get_serializer_class(self):
|
|
76
77
|
if self.get_action() in ["list", "list-metadata"]:
|
|
@@ -102,6 +103,7 @@ class InstrumentModelViewSet(InstrumentMetricMixin, viewsets.ModelViewSet):
|
|
|
102
103
|
|
|
103
104
|
class ChildrenInstrumentModelViewSet(InstrumentMixin, InstrumentModelViewSet):
|
|
104
105
|
button_config_class = ChildrenInstrumentModelViewConfig
|
|
106
|
+
ordering = ("-is_primary", "computed_str")
|
|
105
107
|
|
|
106
108
|
def get_queryset(self):
|
|
107
109
|
return super().get_queryset().filter(parent=self.instrument)
|
|
@@ -12,7 +12,7 @@ class InstrumentSearchFilter:
|
|
|
12
12
|
if search := request.GET.get("search", None):
|
|
13
13
|
min_search_rank = self.get_min_search_rank(view)
|
|
14
14
|
query = SearchQuery(search, search_type="phrase")
|
|
15
|
-
|
|
15
|
+
return (
|
|
16
16
|
queryset.annotate(search_rank=Coalesce(SearchRank(F("search_vector"), query), Value(-1.0)))
|
|
17
17
|
.filter(
|
|
18
18
|
(Q(search_vector=query) & Q(search_rank__gte=min_search_rank))
|
|
@@ -22,6 +22,6 @@ class InstrumentSearchFilter:
|
|
|
22
22
|
)
|
|
23
23
|
.order_by("-search_rank")
|
|
24
24
|
).distinct()
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
elif "parent" in request.GET:
|
|
26
|
+
return queryset.order_by("-is_primary", "computed_str")
|
|
27
27
|
return queryset
|
|
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.50.0 → wbfdm-1.50.2}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
{wbfdm-1.50.0 → wbfdm-1.50.2}/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
|
|
File without changes
|
{wbfdm-1.50.0 → wbfdm-1.50.2}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|