wbfdm 1.45.0__tar.gz → 1.46.0__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.45.0 → wbfdm-1.46.0}/PKG-INFO +1 -1
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/handlers/instrument.py +8 -9
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/serializers/instruments/__init__.py +1 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/serializers/instruments/instrument_relationships.py +5 -8
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/serializers/instruments/instruments.py +0 -1
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/endpoints/__init__.py +1 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/endpoints/instruments_relationships.py +10 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/instruments/instruments_relationships.py +16 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/.gitignore +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/pyproject.toml +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/admin/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/admin/classifications.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/admin/esg.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/admin/exchanges.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/admin/instrument_lists.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/admin/instrument_prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/admin/instrument_requests.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/admin/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/admin/instruments_relationships.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/admin/options.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/esg/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/esg/enums.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/esg/esg_analysis.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/esg/utils.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/financial_analysis/financial_statistics_analysis.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/financial_analysis/utils.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/technical_analysis/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/technical_analysis/technical_analysis.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/technical_analysis/traces.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/analysis/utils.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/apps.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/backends/dto.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/dsws/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/dsws/client.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/dsws/dataloaders/market_data.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/internal/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/internal/dataloaders/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/internal/dataloaders/market_data.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/admin/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/admin/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/admin/metrics.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/apps.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/backends/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/backends/base.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/backends/performances.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/backends/statistics.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/decorators.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/dispatch.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/dto.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/exceptions.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/factories.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/filters.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/migrations/0001_initial.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/migrations/0002_remove_instrumentmetric_unique_instrument_metric_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/migrations/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/models.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/orchestrators.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/registry.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/serializers.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/tasks.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/tests/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/tests/backends/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/tests/backends/test_performances.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/tests/backends/test_statistics.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/tests/conftest.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/tests/test_dto.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/tests/test_models.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/tests/test_tasks.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/tests/test_viewsets.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/urls.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/viewsets/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/viewsets/configs/display.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/viewsets/configs/menus.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/viewsets/configs/utils.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/viewsets/mixins.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/metric/viewsets/viewsets.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/msci/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/msci/client.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/msci/dataloaders/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/msci/dataloaders/esg.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/msci/dataloaders/esg_controversies.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/msci/sync.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/msci/tests/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/msci/tests/conftest.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/msci/tests/test_client.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/apps.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/database_routers.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/dataloaders/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/dataloaders/adjustments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/dataloaders/corporate_actions.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/dataloaders/financials.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/dataloaders/market_data.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/dataloaders/officers.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/dataloaders/reporting_dates.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/dataloaders/statements.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/dataloaders/utils.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/jinja2/qa/sql/companies.sql +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/base_estimates.sql +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/calendarized.sql +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/complete.sql +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/estimates.sql +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/jinja2/qa/sql/ibes/financials.sql +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/jinja2/qa/sql/instruments.sql +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/jinja2/qa/sql/quotes.sql +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/sync/exchanges.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/sync/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/sync/utils.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/contrib/qa/tasks.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/dataloaders/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/dataloaders/cache.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/dataloaders/protocols.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/dataloaders/proxies.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/dataloaders/types.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/dynamic_preferences_registry.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/enums.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/factories/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/factories/classifications.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/factories/controversies.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/factories/exchanges.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/factories/instrument_list.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/factories/instrument_prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/factories/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/factories/instruments_relationships.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/factories/options.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/figures/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/figures/financials/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/figures/financials/financial_analysis_charts.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/figures/financials/financials_charts.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/filters/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/filters/classifications.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/filters/exchanges.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/filters/financials.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/filters/financials_analysis.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/filters/instrument_prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/filters/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/filters/utils.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/cbinsights/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/cbinsights/deals.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/cbinsights/equities.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/cbinsights/mixin.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/cbinsights/utils/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/cbinsights/utils/classifications.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/cbinsights/utils/client.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/refinitiv/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/refinitiv/fiscal_period.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/refinitiv/forecast.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/refinitiv/fundamental.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/refinitiv/instrument.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/refinitiv/mixin.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/refinitiv/utils/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/backends/refinitiv/utils/controller.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/handlers/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/handlers/instrument_list.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/handlers/instrument_price.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/handlers/option.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/handlers/private_equities.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/parsers/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/parsers/cbinsights/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/parsers/cbinsights/deals.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/parsers/cbinsights/equities.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/parsers/cbinsights/fundamentals.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/parsers/refinitiv/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/parsers/refinitiv/daily_fundamental.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/parsers/refinitiv/forecast.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/parsers/refinitiv/fundamental.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/parsers/refinitiv/geographic_segment.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/parsers/refinitiv/instrument.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/parsers/refinitiv/instrument_price.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/parsers/refinitiv/utils.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/resources/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/resources/classification.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/resources/instrument_prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/import_export/resources/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/jinja2.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/management/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/menu.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0001_initial.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0002_rename_statements_instrumentlookup_financials_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0003_instrument_estimate_backend_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0004_rename_financials_instrumentlookup_statements_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0005_instrument_corporate_action_backend.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0006_instrument_officer_backend.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0007_instrument_country_instrument_currency_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0008_controversy.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0009_alter_controversy_flag_alter_controversy_initiated_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0010_classification_classificationgroup_deal_exchange_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0011_delete_instrumentlookup_instrument_corporate_actions_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0012_instrumentprice_created_instrumentprice_modified.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0013_instrument_is_investable_universe_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0014_alter_controversy_instrument.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0015_instrument_instrument_investible_index.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0016_instrumenttype_name_repr.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0017_instrument_instrument_security_index.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0018_instrument_instrument_level_index.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0019_alter_controversy_source.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0020_optionaggregate_option_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0021_delete_instrumentdailystatistics.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0022_instrument_cusip_option_open_interest_20d_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0023_instrument_unique_ric_instrument_unique_rmc_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0024_option_open_interest_10d_option_volume_10d_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0025_instrument_is_primary_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0026_instrument_is_cash_equivalent.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0027_remove_instrument_unique_ric_and_more.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0028_instrumentprice_annualized_daily_volatility.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/0029_alter_instrumentprice_volume.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/migrations/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/esg/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/esg/controversies.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/exchanges/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/exchanges/exchanges.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/fields.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/fk_fields.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/indicators.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/classifications.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/instrument_lists.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/instrument_prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/instrument_relationships.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/instrument_requests.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/llm/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/llm/create_instrument_news_relationships.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/mixin/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/mixin/financials_computed.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/mixin/financials_serializer_fields.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/mixin/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/options.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/private_equities.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/querysets.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/models/instruments/utils.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/preferences.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/serializers/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/serializers/esg.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/serializers/exchanges.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/serializers/instruments/classifications.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/serializers/instruments/instrument_lists.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/serializers/instruments/instrument_prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/serializers/instruments/instrument_requests.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/serializers/instruments/mixins.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/serializers/officers.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/signals.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/sync/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/sync/abstract.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/sync/runner.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tasks.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/analysis/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/analysis/financial_analysis/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/analysis/financial_analysis/test_statement_with_estimates.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/analysis/financial_analysis/test_utils.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/analysis/test_esg.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/conftest.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/dataloaders/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/dataloaders/test_cache.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/models/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/models/test_classifications.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/models/test_exchanges.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/models/test_instrument_list.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/models/test_instrument_prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/models/test_instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/models/test_merge.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/models/test_options.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/test_tasks.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/tests/tests.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/urls.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/utils.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/buttons/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/buttons/classifications.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/buttons/exchanges.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/buttons/instrument_prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/buttons/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/classifications.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/esg.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/exchanges.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/financial_summary.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/instrument_lists.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/instrument_prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/instrument_requests.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/instruments_relationships.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/monthly_performances.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/officers.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/statement_with_estimates.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/display/statements.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/endpoints/classifications.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/endpoints/esg.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/endpoints/exchanges.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/endpoints/financials_analysis.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/endpoints/instrument_lists.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/endpoints/instrument_prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/endpoints/instrument_requests.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/endpoints/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/endpoints/statements.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/menus/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/menus/classifications.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/menus/exchanges.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/menus/instrument_lists.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/menus/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/menus/instruments_relationships.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/titles/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/titles/classifications.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/titles/esg.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/titles/exchanges.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/titles/financial_ratio_analysis.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/titles/financials_analysis.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/titles/instrument_prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/titles/instrument_requests.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/titles/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/titles/instruments_relationships.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/titles/market_data.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/titles/prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/configs/titles/statement_with_estimates.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/esg.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/exchanges.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/financial_analysis/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/financial_analysis/financial_metric_analysis.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/financial_analysis/financial_ratio_analysis.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/financial_analysis/financial_summary.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/financial_analysis/statement_with_estimates.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/instruments/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/instruments/classifications.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/instruments/financials_analysis.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/instruments/instrument_lists.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/instruments/instrument_prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/instruments/instrument_requests.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/instruments/instruments.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/instruments/utils.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/market_data.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/mixins.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/officers.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/prices.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/statements/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/statements/statements.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/wbfdm/viewsets/technical_analysis/__init__.py +0 -0
- {wbfdm-1.45.0 → wbfdm-1.46.0}/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.
|
|
3
|
+
Version: 1.46.0
|
|
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.*
|
|
@@ -67,7 +67,6 @@ class InstrumentLookup:
|
|
|
67
67
|
"refinitiv_mnemonic_code",
|
|
68
68
|
"sedol",
|
|
69
69
|
"cusip",
|
|
70
|
-
"ticker",
|
|
71
70
|
"identifier",
|
|
72
71
|
]:
|
|
73
72
|
if identifier := identifiers.get(identifier_key, None):
|
|
@@ -79,7 +78,6 @@ class InstrumentLookup:
|
|
|
79
78
|
identifier = identifier.upper()
|
|
80
79
|
instrument = instruments.get(**{identifier_key: identifier})
|
|
81
80
|
break
|
|
82
|
-
|
|
83
81
|
if not instrument and not exact_lookup:
|
|
84
82
|
if instrument_type:
|
|
85
83
|
if isinstance(instrument_type, str): # in case we receive a key as instrument type
|
|
@@ -103,14 +101,15 @@ class InstrumentLookup:
|
|
|
103
101
|
conditions.append(Q(old_isins__contains=[field_value]))
|
|
104
102
|
if conditions:
|
|
105
103
|
instruments = instruments.filter(reduce(operator.or_, conditions))
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
if instruments_tmp.
|
|
104
|
+
|
|
105
|
+
if currency: # if currency is provides, we use it as validator
|
|
106
|
+
instruments = instruments.filter(currency=currency)
|
|
107
|
+
|
|
108
|
+
if exchange:
|
|
109
|
+
instruments_tmp = instruments.filter(exchange=exchange)
|
|
110
|
+
if instruments_tmp.exists():
|
|
113
111
|
instruments = instruments_tmp
|
|
112
|
+
|
|
114
113
|
# last chance
|
|
115
114
|
if name and instruments.count() > 1:
|
|
116
115
|
instruments = instruments.annotate(similarity_score=TrigramSimilarity("name", name))
|
|
@@ -19,6 +19,7 @@ from .instrument_relationships import (
|
|
|
19
19
|
RelatedInstrumentThroughInstrumentModelSerializer,
|
|
20
20
|
InstrumentFavoriteGroupRepresentationSerializer,
|
|
21
21
|
InstrumentFavoriteGroupModelSerializer,
|
|
22
|
+
ReadOnlyInstrumentFavoriteGroupModelSerializer,
|
|
22
23
|
InstrumentClassificationThroughModelSerializer,
|
|
23
24
|
)
|
|
24
25
|
from .instrument_requests import InstrumentRequestRepresentationSerializer, InstrumentRequestModelSerializer
|
|
@@ -35,16 +35,8 @@ class InstrumentFavoriteGroupModelSerializer(wb_serializers.ModelSerializer):
|
|
|
35
35
|
owner = wb_serializers.PrimaryKeyRelatedField(
|
|
36
36
|
queryset=lambda: Person.objects.filter_only_internal(),
|
|
37
37
|
default=wb_serializers.CurrentUserDefault("profile"),
|
|
38
|
-
read_only=lambda view: not view.request.user.is_superuser,
|
|
39
38
|
)
|
|
40
39
|
_owner = PersonRepresentationSerializer(source="owner")
|
|
41
|
-
public = wb_serializers.BooleanField(read_only=True)
|
|
42
|
-
|
|
43
|
-
# @wb_serializers.register_only_instance_resource()
|
|
44
|
-
# def instruments(self, instance, request, user, **kwargs):
|
|
45
|
-
# if instance.instruments.exists():
|
|
46
|
-
# return {"instruments": reverse("wbfdm:favoritegroup-instrument-list", args=[instance.id], request=request)}
|
|
47
|
-
# return dict()
|
|
48
40
|
|
|
49
41
|
def validate(self, data):
|
|
50
42
|
if not data.get("owner", None):
|
|
@@ -66,6 +58,11 @@ class InstrumentFavoriteGroupModelSerializer(wb_serializers.ModelSerializer):
|
|
|
66
58
|
)
|
|
67
59
|
|
|
68
60
|
|
|
61
|
+
class ReadOnlyInstrumentFavoriteGroupModelSerializer(InstrumentFavoriteGroupModelSerializer):
|
|
62
|
+
class Meta(InstrumentFavoriteGroupModelSerializer.Meta):
|
|
63
|
+
read_only_fields = InstrumentFavoriteGroupModelSerializer.Meta.fields
|
|
64
|
+
|
|
65
|
+
|
|
69
66
|
class RelatedInstrumentThroughInstrumentModelSerializer(wb_serializers.ModelSerializer):
|
|
70
67
|
_related_instrument = InvestableInstrumentRepresentationSerializer(source="related_instrument")
|
|
71
68
|
_instrument = InvestableInstrumentRepresentationSerializer(source="instrument")
|
|
@@ -36,6 +36,7 @@ from .instrument_prices import (
|
|
|
36
36
|
from .instruments_relationships import (
|
|
37
37
|
ClassifiedInstrumentEndpointConfig,
|
|
38
38
|
RelatedInstrumentThroughInstrumentEndpointConfig,
|
|
39
|
+
InstrumentFavoriteGroupEndpointConfig
|
|
39
40
|
)
|
|
40
41
|
from .exchanges import ExchangeEndpointConfig
|
|
41
42
|
from .esg import InstrumentESGPAIEndpointViewConfig, InstrumentESGControversiesEndpointViewConfig
|
|
@@ -29,3 +29,13 @@ class ClassifiedInstrumentEndpointConfig(EndpointViewConfig):
|
|
|
29
29
|
|
|
30
30
|
def get_delete_endpoint(self, **kwargs):
|
|
31
31
|
return None
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class InstrumentFavoriteGroupEndpointConfig(EndpointViewConfig):
|
|
35
|
+
def get_update_endpoint(self, **kwargs):
|
|
36
|
+
if self.view.is_owner:
|
|
37
|
+
return self.get_instance_endpoint(**kwargs)
|
|
38
|
+
return None
|
|
39
|
+
|
|
40
|
+
def get_delete_endpoint(self, **kwargs):
|
|
41
|
+
return self.get_update_endpoint(**kwargs)
|
|
@@ -29,6 +29,7 @@ from wbfdm.serializers import (
|
|
|
29
29
|
InstrumentClassificationRelatedInstrumentRepresentationSerializer,
|
|
30
30
|
InstrumentFavoriteGroupModelSerializer,
|
|
31
31
|
InstrumentFavoriteGroupRepresentationSerializer,
|
|
32
|
+
ReadOnlyInstrumentFavoriteGroupModelSerializer,
|
|
32
33
|
RelatedInstrumentThroughInstrumentModelSerializer,
|
|
33
34
|
)
|
|
34
35
|
from wbfdm.viewsets.configs.display import ClassifiedInstrumentDisplayConfig
|
|
@@ -39,6 +40,7 @@ from ..configs import (
|
|
|
39
40
|
ClassificationInstrumentRelatedInstrumentEndpointConfig,
|
|
40
41
|
ClassifiedInstrumentEndpointConfig,
|
|
41
42
|
InstrumentFavoriteGroupDisplayConfig,
|
|
43
|
+
InstrumentFavoriteGroupEndpointConfig,
|
|
42
44
|
InstrumentFavoriteGroupTitleConfig,
|
|
43
45
|
RelatedInstrumentThroughInstrumentDisplayConfig,
|
|
44
46
|
RelatedInstrumentThroughInstrumentEndpointConfig,
|
|
@@ -91,6 +93,20 @@ class InstrumentFavoriteGroupModelViewSet(InternalUserPermissionMixin, viewsets.
|
|
|
91
93
|
|
|
92
94
|
display_config_class = InstrumentFavoriteGroupDisplayConfig
|
|
93
95
|
title_config_class = InstrumentFavoriteGroupTitleConfig
|
|
96
|
+
endpoint_config_class = InstrumentFavoriteGroupEndpointConfig
|
|
97
|
+
|
|
98
|
+
@cached_property
|
|
99
|
+
def is_owner(self) -> bool:
|
|
100
|
+
try:
|
|
101
|
+
group = InstrumentFavoriteGroup.objects.get(id=self.kwargs["pk"])
|
|
102
|
+
return group.owner == self.request.user.profile
|
|
103
|
+
except (KeyError, InstrumentFavoriteGroup.DoesNotExist):
|
|
104
|
+
return False
|
|
105
|
+
|
|
106
|
+
def get_serializer_class(self):
|
|
107
|
+
if self.is_owner:
|
|
108
|
+
return InstrumentFavoriteGroupModelSerializer
|
|
109
|
+
return ReadOnlyInstrumentFavoriteGroupModelSerializer
|
|
94
110
|
|
|
95
111
|
def get_queryset(self):
|
|
96
112
|
qs = InstrumentFavoriteGroup.objects.all()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.45.0 → wbfdm-1.46.0}/wbfdm/analysis/financial_analysis/financial_metric_analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
{wbfdm-1.45.0 → wbfdm-1.46.0}/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.45.0 → wbfdm-1.46.0}/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
|