wbfdm 1.49.1__tar.gz → 1.49.3__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.49.1 → wbfdm-1.49.3}/PKG-INFO +1 -1
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/dsws/dataloaders/market_data.py +2 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/dataloaders/market_data.py +1 -1
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/instruments.py +16 -12
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/querysets.py +7 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/instrument_lists.py +10 -9
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/instruments.py +1 -1
- {wbfdm-1.49.1 → wbfdm-1.49.3}/.gitignore +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/pyproject.toml +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/admin/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/admin/classifications.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/admin/esg.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/admin/exchanges.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/admin/instrument_lists.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/admin/instrument_prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/admin/instrument_requests.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/admin/instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/admin/instruments_relationships.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/admin/options.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/esg/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/esg/enums.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/esg/esg_analysis.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/esg/utils.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/financial_analysis/financial_statistics_analysis.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/financial_analysis/utils.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/technical_analysis/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/technical_analysis/technical_analysis.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/technical_analysis/traces.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/analysis/utils.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/apps.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/backends/dto.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/dsws/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/dsws/client.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/internal/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/internal/dataloaders/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/internal/dataloaders/market_data.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/admin/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/admin/instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/admin/metrics.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/apps.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/backends/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/backends/base.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/backends/performances.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/backends/statistics.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/backends/utils.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/decorators.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/dispatch.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/dto.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/exceptions.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/factories.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/filters.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/migrations/0001_initial.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/migrations/0002_remove_instrumentmetric_unique_instrument_metric_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/migrations/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/models.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/orchestrators.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/registry.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/serializers.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/tasks.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/tests/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/tests/backends/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/tests/backends/test_performances.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/tests/backends/test_statistics.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/tests/conftest.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/tests/test_dto.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/tests/test_models.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/tests/test_tasks.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/tests/test_viewsets.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/urls.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/viewsets/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/viewsets/configs/display.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/viewsets/configs/menus.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/viewsets/configs/utils.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/viewsets/mixins.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/metric/viewsets/viewsets.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/msci/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/msci/client.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/msci/dataloaders/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/msci/dataloaders/esg.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/msci/dataloaders/esg_controversies.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/msci/sync.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/msci/tests/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/msci/tests/conftest.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/msci/tests/test_client.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/apps.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/database_routers.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/dataloaders/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/dataloaders/adjustments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/dataloaders/corporate_actions.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/dataloaders/financials.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/dataloaders/officers.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/dataloaders/reporting_dates.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/dataloaders/statements.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/dataloaders/utils.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/jinja2/qa/sql/companies.sql +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/base_estimates.sql +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/calendarized.sql +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/complete.sql +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/estimates.sql +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/financials.sql +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/jinja2/qa/sql/instruments.sql +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/jinja2/qa/sql/quotes.sql +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/sync/exchanges.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/sync/instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/sync/utils.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/contrib/qa/tasks.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/dataloaders/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/dataloaders/cache.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/dataloaders/protocols.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/dataloaders/proxies.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/dataloaders/types.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/dynamic_preferences_registry.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/enums.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/factories/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/factories/classifications.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/factories/controversies.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/factories/exchanges.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/factories/instrument_list.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/factories/instrument_prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/factories/instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/factories/instruments_relationships.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/factories/options.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/figures/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/figures/financials/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/figures/financials/financial_analysis_charts.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/figures/financials/financials_charts.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/filters/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/filters/classifications.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/filters/exchanges.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/filters/financials.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/filters/financials_analysis.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/filters/instrument_prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/filters/instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/filters/utils.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/cbinsights/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/cbinsights/deals.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/cbinsights/equities.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/cbinsights/mixin.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/cbinsights/utils/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/cbinsights/utils/classifications.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/cbinsights/utils/client.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/refinitiv/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/refinitiv/fiscal_period.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/refinitiv/forecast.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/refinitiv/fundamental.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/refinitiv/instrument.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/refinitiv/mixin.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/refinitiv/utils/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/backends/refinitiv/utils/controller.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/handlers/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/handlers/instrument.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/handlers/instrument_list.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/handlers/instrument_price.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/handlers/option.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/handlers/private_equities.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/parsers/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/parsers/cbinsights/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/parsers/cbinsights/deals.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/parsers/cbinsights/equities.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/parsers/cbinsights/fundamentals.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/parsers/refinitiv/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/parsers/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/parsers/refinitiv/forecast.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/parsers/refinitiv/fundamental.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/parsers/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/parsers/refinitiv/instrument.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/parsers/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/parsers/refinitiv/utils.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/resources/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/resources/classification.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/resources/instrument_prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/import_export/resources/instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/jinja2.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/management/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/menu.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0001_initial.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0002_rename_statements_instrumentlookup_financials_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0003_instrument_estimate_backend_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0004_rename_financials_instrumentlookup_statements_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0005_instrument_corporate_action_backend.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0006_instrument_officer_backend.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0007_instrument_country_instrument_currency_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0008_controversy.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0009_alter_controversy_flag_alter_controversy_initiated_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0010_classification_classificationgroup_deal_exchange_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0011_delete_instrumentlookup_instrument_corporate_actions_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0012_instrumentprice_created_instrumentprice_modified.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0013_instrument_is_investable_universe_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0014_alter_controversy_instrument.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0015_instrument_instrument_investible_index.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0016_instrumenttype_name_repr.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0017_instrument_instrument_security_index.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0018_instrument_instrument_level_index.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0019_alter_controversy_source.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0020_optionaggregate_option_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0021_delete_instrumentdailystatistics.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0022_instrument_cusip_option_open_interest_20d_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0023_instrument_unique_ric_instrument_unique_rmc_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0024_option_open_interest_10d_option_volume_10d_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0025_instrument_is_primary_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0026_instrument_is_cash_equivalent.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0027_remove_instrument_unique_ric_and_more.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0028_instrumentprice_annualized_daily_volatility.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0029_alter_instrumentprice_volume.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/0030_alter_relatedinstrumentthroughmodel_related_type.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/migrations/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/esg/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/esg/controversies.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/exchanges/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/exchanges/exchanges.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/fields.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/fk_fields.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/indicators.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/classifications.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/instrument_lists.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/instrument_prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/instrument_relationships.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/instrument_requests.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/llm/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/llm/create_instrument_news_relationships.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/mixin/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/mixin/financials_computed.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/mixin/financials_serializer_fields.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/mixin/instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/options.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/private_equities.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/models/instruments/utils.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/preferences.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/serializers/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/serializers/esg.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/serializers/exchanges.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/serializers/instruments/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/serializers/instruments/classifications.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/serializers/instruments/instrument_lists.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/serializers/instruments/instrument_prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/serializers/instruments/instrument_relationships.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/serializers/instruments/instrument_requests.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/serializers/instruments/instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/serializers/instruments/mixins.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/serializers/officers.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/signals.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/sync/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/sync/abstract.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/sync/runner.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tasks.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/analysis/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/analysis/financial_analysis/test_statement_with_estimates.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/analysis/financial_analysis/test_utils.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/analysis/test_esg.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/conftest.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/dataloaders/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/dataloaders/test_cache.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/models/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/models/test_classifications.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/models/test_exchanges.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/models/test_instrument_list.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/models/test_instrument_prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/models/test_instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/models/test_merge.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/models/test_options.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/test_tasks.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/tests/tests.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/urls.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/utils.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/buttons/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/buttons/classifications.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/buttons/exchanges.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/buttons/instrument_prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/buttons/instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/classifications.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/esg.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/exchanges.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/financial_summary.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/instrument_prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/instrument_requests.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/instruments_relationships.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/monthly_performances.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/officers.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/statement_with_estimates.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/display/statements.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/endpoints/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/endpoints/classifications.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/endpoints/esg.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/endpoints/exchanges.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/endpoints/financials_analysis.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/endpoints/instrument_lists.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/endpoints/instrument_prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/endpoints/instrument_requests.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/endpoints/instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/endpoints/instruments_relationships.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/endpoints/statements.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/menus/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/menus/classifications.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/menus/exchanges.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/menus/instrument_lists.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/menus/instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/menus/instruments_relationships.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/titles/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/titles/classifications.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/titles/esg.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/titles/exchanges.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/titles/financial_ratio_analysis.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/titles/financials_analysis.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/titles/instrument_prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/titles/instrument_requests.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/titles/instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/titles/instruments_relationships.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/titles/market_data.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/titles/prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/configs/titles/statement_with_estimates.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/esg.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/exchanges.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/financial_analysis/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/financial_analysis/financial_summary.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/instruments/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/instruments/classifications.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/instruments/financials_analysis.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/instruments/instrument_lists.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/instruments/instrument_prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/instruments/instrument_requests.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/instruments/instruments.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/instruments/instruments_relationships.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/instruments/utils.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/market_data.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/mixins.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/officers.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/prices.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/statements/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/statements/statements.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/wbfdm/viewsets/technical_analysis/__init__.py +0 -0
- {wbfdm-1.49.1 → wbfdm-1.49.3}/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.49.
|
|
3
|
+
Version: 1.49.3
|
|
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.*
|
|
@@ -75,6 +75,8 @@ class DSWSMarketDataDataloader(MarketDataProtocol, Dataloader):
|
|
|
75
75
|
parameters["end"] = to_date.strftime("%Y-%m-%d")
|
|
76
76
|
for chunked_identifiers in client.get_chunked_list(identifiers, len(fields)):
|
|
77
77
|
df = client.get_timeserie_df(chunked_identifiers, fields, **parameters)
|
|
78
|
+
if exact_date:
|
|
79
|
+
df = df[df["Dates"] == exact_date]
|
|
78
80
|
for row in df.to_dict("records"):
|
|
79
81
|
jsondate = row["Dates"].date()
|
|
80
82
|
external_id = row["Instrument"]
|
|
@@ -118,7 +118,7 @@ class DatastreamMarketDataDataloader(MarketDataProtocol, Dataloader):
|
|
|
118
118
|
|
|
119
119
|
# if market cap or shares outstanding are required we need to join with an additional table
|
|
120
120
|
if MarketData.MARKET_CAPITALIZATION in values or MarketData.SHARES_OUTSTANDING in values:
|
|
121
|
-
query = query.
|
|
121
|
+
query = query.left_join(market_val).on(
|
|
122
122
|
(pricing.InfoCode == market_val.InfoCode) & (pricing.MarketDate == market_val.MarketDate)
|
|
123
123
|
)
|
|
124
124
|
|
|
@@ -130,6 +130,9 @@ class InstrumentManager(TreeManager):
|
|
|
130
130
|
def annotate_all(self):
|
|
131
131
|
return self.get_queryset().annotate_all()
|
|
132
132
|
|
|
133
|
+
def filter_active_at_date(self, val_date: date):
|
|
134
|
+
return self.get_queryset().filter_active_at_date(val_date)
|
|
135
|
+
|
|
133
136
|
|
|
134
137
|
class SecurityInstrumentManager(InstrumentManager):
|
|
135
138
|
def get_queryset(self) -> InstrumentQuerySet:
|
|
@@ -142,19 +145,8 @@ class ClassifiableInstrumentManager(InstrumentManager):
|
|
|
142
145
|
|
|
143
146
|
|
|
144
147
|
class ActiveInstrumentManager(InstrumentManager):
|
|
145
|
-
def get_queryset_at_date(self, val_date: date):
|
|
146
|
-
return (
|
|
147
|
-
super()
|
|
148
|
-
.get_queryset()
|
|
149
|
-
.filter(
|
|
150
|
-
(models.Q(delisted_date__isnull=True) | models.Q(delisted_date__gte=val_date))
|
|
151
|
-
& models.Q(inception_date__isnull=False)
|
|
152
|
-
& models.Q(inception_date__lte=val_date)
|
|
153
|
-
)
|
|
154
|
-
)
|
|
155
|
-
|
|
156
148
|
def get_queryset(self):
|
|
157
|
-
return
|
|
149
|
+
return super().get_queryset().filter_active_at_date(date.today())
|
|
158
150
|
|
|
159
151
|
|
|
160
152
|
class InvestableUniverseManager(InstrumentManager):
|
|
@@ -579,6 +571,18 @@ class Instrument(ComplexToStringMixin, TagModelMixin, ImportMixin, InstrumentPMS
|
|
|
579
571
|
if favorite_classification := self.classifications.filter(group=get_default_classification_group()).first():
|
|
580
572
|
return favorite_classification
|
|
581
573
|
|
|
574
|
+
def get_primary_quote(self):
|
|
575
|
+
if self.children.exists():
|
|
576
|
+
# we try the primary children first, then the first children within the investable universe and we fallback to the first children otherwise
|
|
577
|
+
try:
|
|
578
|
+
instrument = self.children.get(is_primary=True)
|
|
579
|
+
except Instrument.DoesNotExist:
|
|
580
|
+
instrument = self.children.filter(is_investable_universe=True).first()
|
|
581
|
+
if not instrument:
|
|
582
|
+
instrument = self.children.first()
|
|
583
|
+
return instrument.get_primary_quote()
|
|
584
|
+
return self
|
|
585
|
+
|
|
582
586
|
@property
|
|
583
587
|
def active(self) -> bool:
|
|
584
588
|
today = date.today()
|
|
@@ -10,6 +10,7 @@ from django.db.models import (
|
|
|
10
10
|
ExpressionWrapper,
|
|
11
11
|
F,
|
|
12
12
|
OuterRef,
|
|
13
|
+
Q,
|
|
13
14
|
QuerySet,
|
|
14
15
|
Subquery,
|
|
15
16
|
)
|
|
@@ -20,6 +21,12 @@ from wbfdm.enums import MarketData
|
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
class InstrumentQuerySet(QuerySet):
|
|
24
|
+
def filter_active_at_date(self, val_date: date):
|
|
25
|
+
return self.filter(
|
|
26
|
+
(Q(delisted_date__isnull=True) | Q(delisted_date__gte=val_date))
|
|
27
|
+
& (Q(inception_date__isnull=True) | Q(inception_date__lte=val_date))
|
|
28
|
+
)
|
|
29
|
+
|
|
23
30
|
def annotate_classification_for_group(
|
|
24
31
|
self, classification_group, classification_height: int = 0, **kwargs
|
|
25
32
|
) -> QuerySet:
|
|
@@ -2,7 +2,7 @@ from typing import Optional
|
|
|
2
2
|
|
|
3
3
|
from django.utils.translation import gettext as _
|
|
4
4
|
from wbcore.contrib.color.enums import WBColor
|
|
5
|
-
from wbcore.enums import Operator
|
|
5
|
+
from wbcore.enums import Operator, Unit
|
|
6
6
|
from wbcore.metadata.configs import display as dp
|
|
7
7
|
from wbcore.metadata.configs.display.instance_display import (
|
|
8
8
|
Display,
|
|
@@ -82,16 +82,17 @@ class InstrumentListThroughModelDisplayConfig(dp.DisplayViewConfig):
|
|
|
82
82
|
def get_list_display(self) -> Optional[dp.ListDisplay]:
|
|
83
83
|
fields = []
|
|
84
84
|
if self.view.kwargs.get("instrument_id", None):
|
|
85
|
-
fields = [dp.Field(key="instrument_list", label="Instrument List")]
|
|
86
|
-
|
|
87
|
-
fields = [
|
|
85
|
+
fields = [dp.Field(key="instrument_list", label="Instrument List", width=Unit.PIXEL(250))]
|
|
86
|
+
elif self.view.kwargs.get("instrument_list_id", None):
|
|
87
|
+
fields = [
|
|
88
|
+
dp.Field(key="instrument", label="Instrument", width=Unit.PIXEL(300)),
|
|
89
|
+
dp.Field(key="instrument_str", label="Instrument Scraped", width=Unit.PIXEL(300)),
|
|
90
|
+
]
|
|
88
91
|
fields.extend(
|
|
89
92
|
[
|
|
90
|
-
dp.Field(key="
|
|
91
|
-
dp.Field(key="
|
|
92
|
-
dp.Field(key="
|
|
93
|
-
dp.Field(key="comment", label="Comment"),
|
|
94
|
-
dp.Field(key="validated", label="Validated"),
|
|
93
|
+
dp.Field(key="from_date", label="From Date", width=Unit.PIXEL(125)),
|
|
94
|
+
dp.Field(key="to_date", label="To Date", width=Unit.PIXEL(125)),
|
|
95
|
+
dp.Field(key="comment", label="Comment", width=Unit.PIXEL(350)),
|
|
95
96
|
]
|
|
96
97
|
)
|
|
97
98
|
return dp.ListDisplay(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.49.1 → wbfdm-1.49.3}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
{wbfdm-1.49.1 → wbfdm-1.49.3}/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.49.1 → wbfdm-1.49.3}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|