openbb-core 1.2.0__tar.gz → 1.2.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.
- {openbb_core-1.2.0 → openbb_core-1.2.2}/PKG-INFO +9 -6
- openbb_core-1.2.2/openbb_core/__init__.py +1 -0
- openbb_core-1.2.2/openbb_core/api/app_loader.py +36 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/api/auth/user.py +2 -1
- openbb_core-1.2.2/openbb_core/api/dependency/__init__.py +1 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/api/rest_api.py +13 -4
- openbb_core-1.2.2/openbb_core/api/router/__init__.py +1 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/api/router/commands.py +59 -23
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/api/router/coverage.py +1 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/api/router/helpers/coverage_helpers.py +1 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/api/router/system.py +1 -0
- openbb_core-1.2.2/openbb_core/app/__init__.py +1 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/command_runner.py +187 -99
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/constants.py +1 -0
- openbb_core-1.2.2/openbb_core/app/deprecation.py +65 -0
- openbb_core-1.2.2/openbb_core/app/extension_loader.py +175 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/logs/formatters/formatter_with_exceptions.py +20 -8
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/logs/handlers/path_tracking_file_handler.py +9 -2
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/logs/handlers/posthog_handler.py +42 -34
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/logs/handlers_manager.py +11 -3
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/logs/logging_service.py +28 -22
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/logs/models/logging_settings.py +5 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/logs/utils/expired_files.py +5 -5
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/logs/utils/utils.py +6 -4
- openbb_core-1.2.2/openbb_core/app/model/__init__.py +1 -0
- openbb_core-1.2.2/openbb_core/app/model/abstract/__init__.py +1 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/abstract/error.py +3 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/abstract/results.py +2 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/abstract/singleton.py +6 -1
- openbb_core-1.2.2/openbb_core/app/model/abstract/tagged.py +10 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/abstract/warning.py +6 -1
- openbb_core-1.2.0/openbb_core/app/model/fast_api_settings.py → openbb_core-1.2.2/openbb_core/app/model/api_settings.py +6 -2
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/charts/chart.py +7 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/charts/charting_settings.py +6 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/command_context.py +4 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/credentials.py +17 -18
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/defaults.py +3 -0
- openbb_core-1.2.2/openbb_core/app/model/example.py +229 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/extension.py +14 -5
- openbb_core-1.2.2/openbb_core/app/model/field.py +28 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/hub/hub_session.py +6 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/hub/hub_user_settings.py +6 -3
- openbb_core-1.2.2/openbb_core/app/model/metadata.py +141 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/obbject.py +67 -82
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/preferences.py +20 -11
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/profile.py +5 -0
- openbb_core-1.2.2/openbb_core/app/model/python_settings.py +23 -0
- openbb_core-1.2.2/openbb_core/app/model/results/__init__.py +1 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/results/empty.py +3 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/system_settings.py +11 -4
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/model/user_settings.py +1 -2
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/provider_interface.py +199 -76
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/query.py +3 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/router.py +144 -59
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/service/auth_service.py +22 -11
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/service/hub_service.py +54 -51
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/service/system_service.py +6 -3
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/service/user_service.py +2 -0
- openbb_core-1.2.2/openbb_core/app/static/__init__.py +1 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/static/account.py +20 -20
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/static/app_factory.py +12 -5
- openbb_core-1.2.2/openbb_core/app/static/container.py +41 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/static/coverage.py +11 -4
- openbb_core-1.2.2/openbb_core/app/static/package_builder.py +1808 -0
- openbb_core-1.2.2/openbb_core/app/static/reference_loader.py +43 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/static/utils/console.py +1 -0
- openbb_core-1.2.2/openbb_core/app/static/utils/decorators.py +93 -0
- openbb_core-1.2.2/openbb_core/app/static/utils/filters.py +67 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/static/utils/linters.py +1 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/utils.py +37 -8
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/app/version.py +12 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/env.py +11 -13
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/__init__.py +1 -0
- openbb_core-1.2.2/openbb_core/provider/abstract/annotated_result.py +20 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/abstract/data.py +6 -2
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/abstract/fetcher.py +52 -31
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/abstract/provider.py +15 -2
- openbb_core-1.2.2/openbb_core/provider/abstract/query_params.py +71 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/query_executor.py +2 -5
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/registry.py +5 -7
- openbb_core-1.2.2/openbb_core/provider/registry_map.py +210 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/ameribor_rates.py +0 -1
- openbb_core-1.2.2/openbb_core/provider/standard_models/analyst_estimates.py +92 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/analyst_search.py +50 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/available_indicators.py +43 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/available_indices.py +0 -1
- openbb_core-1.2.2/openbb_core/provider/standard_models/balance_sheet.py +49 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/balance_sheet_growth.py +7 -8
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/bond_prices.py +2 -11
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/bond_reference.py +2 -3
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/bond_trades.py +1 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/calendar_dividend.py +3 -4
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/calendar_earnings.py +0 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/calendar_ipo.py +2 -2
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/calendar_splits.py +0 -1
- openbb_core-1.2.2/openbb_core/provider/standard_models/cash_flow.py +47 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/cash_flow_growth.py +7 -8
- openbb_core-1.2.2/openbb_core/provider/standard_models/cik_map.py +32 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/company_filings.py +14 -19
- openbb_core-1.2.2/openbb_core/provider/standard_models/company_news.py +76 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/company_overview.py +5 -8
- openbb_core-1.2.2/openbb_core/provider/standard_models/compare_groups.py +27 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/composite_leading_indicator.py +37 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/cot_search.py +4 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/country_profile.py +89 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/cp.py +8 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/cpi.py +17 -4
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/crypto_historical.py +7 -4
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/crypto_search.py +1 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/currency_historical.py +7 -4
- openbb_core-1.2.2/openbb_core/provider/standard_models/currency_pairs.py +24 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/currency_snapshots.py +82 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/dwpcr_rates.py +1 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/earnings_call_transcript.py +5 -8
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/ecb_interest_rates.py +8 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/economic_calendar.py +13 -18
- openbb_core-1.2.2/openbb_core/provider/standard_models/economic_indicators.py +51 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/equity_ftd.py +2 -2
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/equity_historical.py +19 -16
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/equity_info.py +11 -7
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/equity_nbbo.py +2 -2
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/equity_ownership.py +4 -7
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/equity_peers.py +4 -6
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/equity_performance.py +10 -2
- openbb_core-1.2.2/openbb_core/provider/standard_models/equity_quote.py +152 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/equity_screener.py +2 -2
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/equity_search.py +5 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/equity_short_interest.py +1 -5
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/equity_valuation_multiples.py +4 -6
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/esg_risk_rating.py +5 -8
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/esg_score.py +5 -8
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/esg_sector.py +0 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/estr_rates.py +0 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/etf_countries.py +3 -7
- openbb_core-1.2.2/openbb_core/provider/standard_models/etf_equity_exposure.py +43 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/etf_historical.py +14 -9
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/etf_historical_nav.py +3 -6
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/etf_holdings.py +7 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/etf_holdings_performance.py +1 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/etf_info.py +7 -6
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/etf_performance.py +10 -2
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/etf_sectors.py +4 -6
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/eu_yield_curve.py +7 -10
- openbb_core-1.2.2/openbb_core/provider/standard_models/executive_compensation.py +59 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/fed_projections.py +0 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/fed_rates.py +0 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/ffrmc.py +8 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/financial_attributes.py +7 -1
- openbb_core-1.2.2/openbb_core/provider/standard_models/financial_ratios.py +44 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/form_13FHR.py +105 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/forward_eps_estimates.py +67 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/forward_pe_estimates.py +54 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/forward_sales_estimates.py +68 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/fred_series.py +5 -7
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/futures_curve.py +5 -7
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/futures_historical.py +4 -7
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/gdp_forecast.py +8 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/gdp_nominal.py +8 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/gdp_real.py +8 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/historical_attributes.py +27 -3
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/historical_dividends.py +15 -10
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/historical_employees.py +5 -7
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/historical_eps.py +4 -7
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/historical_splits.py +15 -11
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/hqm.py +8 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/ice_bofa.py +8 -1
- openbb_core-1.2.2/openbb_core/provider/standard_models/income_statement.py +49 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/income_statement_growth.py +11 -8
- openbb_core-1.2.2/openbb_core/provider/standard_models/index_constituents.py +27 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/index_historical.py +76 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/index_info.py +4 -6
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/index_sectors.py +3 -7
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/index_snapshots.py +12 -6
- openbb_core-1.2.2/openbb_core/provider/standard_models/insider_trading.py +94 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/institutional_ownership.py +5 -8
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/key_executives.py +4 -6
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/key_metrics.py +10 -14
- openbb_core-1.2.2/openbb_core/provider/standard_models/latest_attributes.py +45 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/lbma_fixing.py +93 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/long_term_interest_rate.py +40 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/market_indices.py +4 -6
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/market_snapshots.py +13 -8
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/money_measures.py +0 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/moody.py +7 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/options_chains.py +94 -36
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/options_unusual.py +3 -2
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/otc_aggregate.py +2 -2
- openbb_core-1.2.2/openbb_core/provider/standard_models/price_target.py +86 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/price_target_consensus.py +11 -9
- openbb_core-1.2.2/openbb_core/provider/standard_models/recent_performance.py +112 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/reported_financials.py +70 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/revenue_business_line.py +22 -10
- openbb_core-1.2.2/openbb_core/provider/standard_models/revenue_geographic.py +54 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/risk_premium.py +0 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/share_statistics.py +5 -8
- openbb_core-1.2.2/openbb_core/provider/standard_models/short_term_interest_rate.py +40 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/short_volume.py +2 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/sofr_rates.py +0 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/sonia_rates.py +0 -1
- openbb_core-1.2.2/openbb_core/provider/standard_models/sp500_multiples.py +73 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/spot.py +12 -15
- openbb_core-1.2.2/openbb_core/provider/standard_models/symbol_map.py +17 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/tbffr.py +8 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/tmc.py +8 -1
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/trailing_dividend_yield.py +7 -2
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/treasury_auctions.py +3 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/treasury_prices.py +90 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/treasury_rates.py +97 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/unemployment.py +40 -0
- openbb_core-1.2.2/openbb_core/provider/standard_models/world_news.py +65 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/utils/client.py +5 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/utils/descriptions.py +2 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/utils/helpers.py +80 -8
- {openbb_core-1.2.0 → openbb_core-1.2.2}/pyproject.toml +8 -7
- openbb_core-1.2.0/openbb_core/__init__.py +0 -0
- openbb_core-1.2.0/openbb_core/api/app_loader.py +0 -18
- openbb_core-1.2.0/openbb_core/api/dependency/__init__.py +0 -0
- openbb_core-1.2.0/openbb_core/api/router/__init__.py +0 -0
- openbb_core-1.2.0/openbb_core/app/__init__.py +0 -0
- openbb_core-1.2.0/openbb_core/app/charting_service.py +0 -307
- openbb_core-1.2.0/openbb_core/app/model/__init__.py +0 -0
- openbb_core-1.2.0/openbb_core/app/model/abstract/__init__.py +0 -0
- openbb_core-1.2.0/openbb_core/app/model/abstract/tagged.py +0 -6
- openbb_core-1.2.0/openbb_core/app/model/custom_parameter.py +0 -26
- openbb_core-1.2.0/openbb_core/app/model/hub/features_keys.py +0 -42
- openbb_core-1.2.0/openbb_core/app/model/metadata.py +0 -118
- openbb_core-1.2.0/openbb_core/app/model/results/__init__.py +0 -0
- openbb_core-1.2.0/openbb_core/app/static/__init__.py +0 -0
- openbb_core-1.2.0/openbb_core/app/static/container.py +0 -21
- openbb_core-1.2.0/openbb_core/app/static/package_builder.py +0 -1091
- openbb_core-1.2.0/openbb_core/app/static/utils/decorators.py +0 -37
- openbb_core-1.2.0/openbb_core/app/static/utils/filters.py +0 -13
- openbb_core-1.2.0/openbb_core/provider/abstract/query_params.py +0 -26
- openbb_core-1.2.0/openbb_core/provider/registry_map.py +0 -181
- openbb_core-1.2.0/openbb_core/provider/standard_models/analyst_estimates.py +0 -79
- openbb_core-1.2.0/openbb_core/provider/standard_models/balance_sheet.py +0 -189
- openbb_core-1.2.0/openbb_core/provider/standard_models/cash_flow.py +0 -143
- openbb_core-1.2.0/openbb_core/provider/standard_models/company_news.py +0 -51
- openbb_core-1.2.0/openbb_core/provider/standard_models/currency_pairs.py +0 -17
- openbb_core-1.2.0/openbb_core/provider/standard_models/equity_quote.py +0 -46
- openbb_core-1.2.0/openbb_core/provider/standard_models/european_index_constituents.py +0 -50
- openbb_core-1.2.0/openbb_core/provider/standard_models/european_indices.py +0 -44
- openbb_core-1.2.0/openbb_core/provider/standard_models/executive_compensation.py +0 -64
- openbb_core-1.2.0/openbb_core/provider/standard_models/financial_ratios.py +0 -190
- openbb_core-1.2.0/openbb_core/provider/standard_models/income_statement.py +0 -156
- openbb_core-1.2.0/openbb_core/provider/standard_models/index_constituents.py +0 -56
- openbb_core-1.2.0/openbb_core/provider/standard_models/insider_trading.py +0 -87
- openbb_core-1.2.0/openbb_core/provider/standard_models/latest_attributes.py +0 -24
- openbb_core-1.2.0/openbb_core/provider/standard_models/price_target.py +0 -62
- openbb_core-1.2.0/openbb_core/provider/standard_models/recent_performance.py +0 -46
- openbb_core-1.2.0/openbb_core/provider/standard_models/revenue_geographic.py +0 -58
- openbb_core-1.2.0/openbb_core/provider/standard_models/sector_news.py +0 -44
- openbb_core-1.2.0/openbb_core/provider/standard_models/sp500_multiples.py +0 -72
- openbb_core-1.2.0/openbb_core/provider/standard_models/treasury_prices.py +0 -51
- openbb_core-1.2.0/openbb_core/provider/standard_models/treasury_rates.py +0 -45
- openbb_core-1.2.0/openbb_core/provider/standard_models/world_news.py +0 -39
- {openbb_core-1.2.0 → openbb_core-1.2.2}/README.md +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/api/dependency/coverage.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/api/dependency/system.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/api/router/helpers/__init__.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/api/router/user.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/abstract/__init__.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/py.typed +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/__init__.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/balance_of_payments.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/cot.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/currency_reference_rates.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/discovery_filings.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/etf_holdings_date.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/etf_search.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/fred_search.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/index_search.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/industry_pe.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/iorb_rates.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/market_movers.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/search_attributes.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/search_financial_attributes.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/sector_pe.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/sector_performance.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/top_retail.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/upcoming_release_days.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/standard_models/us_yield_curve.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/utils/__init__.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/provider/utils/errors.py +0 -0
- {openbb_core-1.2.0 → openbb_core-1.2.2}/openbb_core/py.typed +0 -0
|
@@ -1,26 +1,29 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: openbb-core
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
4
4
|
Summary: OpenBB package with core functionality
|
|
5
|
+
License: AGPL-3.0-only
|
|
5
6
|
Author: OpenBB Team
|
|
6
7
|
Author-email: hello@openbb.co
|
|
7
8
|
Requires-Python: >=3.8,<4.0
|
|
9
|
+
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
|
|
8
10
|
Classifier: Programming Language :: Python :: 3
|
|
9
11
|
Classifier: Programming Language :: Python :: 3.8
|
|
10
12
|
Classifier: Programming Language :: Python :: 3.9
|
|
11
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
12
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
-
Requires-Dist: aiohttp (>=3.9.
|
|
15
|
-
Requires-Dist:
|
|
16
|
+
Requires-Dist: aiohttp (>=3.9.5,<4.0.0)
|
|
17
|
+
Requires-Dist: anyio (>=3.7.0,<4.0.0)
|
|
18
|
+
Requires-Dist: fastapi (>=0.111.0,<0.112.0)
|
|
16
19
|
Requires-Dist: html5lib (>=1.1,<2.0)
|
|
17
20
|
Requires-Dist: importlib-metadata (>=6.8.0,<7.0.0)
|
|
18
21
|
Requires-Dist: pandas (>=1.5.3)
|
|
19
|
-
Requires-Dist: posthog (>=3.
|
|
22
|
+
Requires-Dist: posthog (>=3.3.1,<4.0.0)
|
|
20
23
|
Requires-Dist: pydantic (>=2.5.1,<3.0.0)
|
|
24
|
+
Requires-Dist: pyjwt (>=2.8.0,<3.0.0)
|
|
21
25
|
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
|
|
22
|
-
Requires-Dist: python-
|
|
23
|
-
Requires-Dist: python-multipart (>=0.0.6,<0.0.7)
|
|
26
|
+
Requires-Dist: python-multipart (>=0.0.7,<0.0.8)
|
|
24
27
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
|
25
28
|
Requires-Dist: ruff (>=0.1.6,<0.2.0)
|
|
26
29
|
Requires-Dist: uuid7 (>=0.1.0,<0.2.0)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""OpenBB Core."""
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"""App loader module."""
|
|
2
|
+
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
|
|
5
|
+
from fastapi import APIRouter, FastAPI
|
|
6
|
+
from openbb_core.app.router import RouterLoader
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class AppLoader:
|
|
10
|
+
"""App loader."""
|
|
11
|
+
|
|
12
|
+
@staticmethod
|
|
13
|
+
def get_openapi_tags() -> List[dict]:
|
|
14
|
+
"""Get openapi tags."""
|
|
15
|
+
main_router = RouterLoader.from_extensions()
|
|
16
|
+
openapi_tags = []
|
|
17
|
+
# Add tag data for each router in the main router
|
|
18
|
+
for r in main_router.routers:
|
|
19
|
+
openapi_tags.append(
|
|
20
|
+
{
|
|
21
|
+
"name": r,
|
|
22
|
+
"description": main_router.get_attr(r, "description"),
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
return openapi_tags
|
|
26
|
+
|
|
27
|
+
@staticmethod
|
|
28
|
+
def from_routers(
|
|
29
|
+
app: FastAPI, routers: List[Optional[APIRouter]], prefix: str
|
|
30
|
+
) -> FastAPI:
|
|
31
|
+
"""Load routers to app."""
|
|
32
|
+
for router in routers:
|
|
33
|
+
if router:
|
|
34
|
+
app.include_router(router=router, prefix=prefix)
|
|
35
|
+
|
|
36
|
+
return app
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
"""User authentication."""
|
|
2
|
+
|
|
1
3
|
import secrets
|
|
2
4
|
from typing import Optional
|
|
3
5
|
|
|
@@ -15,7 +17,6 @@ async def authenticate_user(
|
|
|
15
17
|
credentials: Annotated[Optional[HTTPBasicCredentials], Depends(security)]
|
|
16
18
|
):
|
|
17
19
|
"""Authenticate the user."""
|
|
18
|
-
|
|
19
20
|
if credentials:
|
|
20
21
|
username = Env().API_USERNAME
|
|
21
22
|
password = Env().API_PASSWORD
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""OpenBB Core API Dependency."""
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""REST API for the OpenBB Platform."""
|
|
2
|
+
|
|
2
3
|
import logging
|
|
3
4
|
from contextlib import asynccontextmanager
|
|
4
5
|
|
|
@@ -66,18 +67,20 @@ app = FastAPI(
|
|
|
66
67
|
],
|
|
67
68
|
lifespan=lifespan,
|
|
68
69
|
)
|
|
69
|
-
|
|
70
70
|
app.add_middleware(
|
|
71
71
|
CORSMiddleware,
|
|
72
72
|
allow_origins=system.api_settings.cors.allow_origins,
|
|
73
73
|
allow_methods=system.api_settings.cors.allow_methods,
|
|
74
74
|
allow_headers=system.api_settings.cors.allow_headers,
|
|
75
75
|
)
|
|
76
|
+
app.openapi_tags = AppLoader.get_openapi_tags()
|
|
76
77
|
AppLoader.from_routers(
|
|
77
78
|
app=app,
|
|
78
|
-
routers=
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
routers=(
|
|
80
|
+
[AuthService().router, router_system, router_coverage, router_commands]
|
|
81
|
+
if Env().DEV_MODE
|
|
82
|
+
else [router_commands]
|
|
83
|
+
),
|
|
81
84
|
prefix=system.api_settings.prefix,
|
|
82
85
|
)
|
|
83
86
|
|
|
@@ -85,6 +88,9 @@ AppLoader.from_routers(
|
|
|
85
88
|
@app.exception_handler(Exception)
|
|
86
89
|
async def api_exception_handler(_: Request, exc: Exception):
|
|
87
90
|
"""Exception handler for all other exceptions."""
|
|
91
|
+
if Env().DEBUG_MODE:
|
|
92
|
+
raise exc
|
|
93
|
+
logger.error(exc)
|
|
88
94
|
return JSONResponse(
|
|
89
95
|
status_code=404,
|
|
90
96
|
content={
|
|
@@ -97,6 +103,9 @@ async def api_exception_handler(_: Request, exc: Exception):
|
|
|
97
103
|
@app.exception_handler(OpenBBError)
|
|
98
104
|
async def openbb_exception_handler(_: Request, exc: OpenBBError):
|
|
99
105
|
"""Exception handler for OpenBB errors."""
|
|
106
|
+
if Env().DEBUG_MODE:
|
|
107
|
+
raise exc
|
|
108
|
+
logger.error(exc.original)
|
|
100
109
|
openbb_error = exc.original
|
|
101
110
|
status_code = 400 if "No results" in str(openbb_error) else 500
|
|
102
111
|
return JSONResponse(
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""OpenBB Core API Router."""
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
"""Commands: generates the command map."""
|
|
2
|
+
|
|
1
3
|
import inspect
|
|
2
4
|
from functools import partial, wraps
|
|
3
5
|
from inspect import Parameter, Signature, signature
|
|
4
|
-
from typing import Any, Callable, Dict, Tuple, TypeVar
|
|
6
|
+
from typing import Any, Callable, Dict, Optional, Tuple, TypeVar
|
|
5
7
|
|
|
6
|
-
from fastapi import APIRouter, Depends
|
|
8
|
+
from fastapi import APIRouter, Depends, Header
|
|
7
9
|
from fastapi.routing import APIRoute
|
|
8
|
-
from openbb_core.app.charting_service import ChartingService
|
|
9
10
|
from openbb_core.app.command_runner import CommandRunner
|
|
10
11
|
from openbb_core.app.model.command_context import CommandContext
|
|
11
12
|
from openbb_core.app.model.obbject import OBBject
|
|
@@ -18,6 +19,13 @@ from openbb_core.env import Env
|
|
|
18
19
|
from pydantic import BaseModel
|
|
19
20
|
from typing_extensions import Annotated, ParamSpec
|
|
20
21
|
|
|
22
|
+
try:
|
|
23
|
+
from openbb_charting import Charting
|
|
24
|
+
|
|
25
|
+
CHARTING_INSTALLED = True
|
|
26
|
+
except ImportError:
|
|
27
|
+
CHARTING_INSTALLED = False
|
|
28
|
+
|
|
21
29
|
T = TypeVar("T")
|
|
22
30
|
P = ParamSpec("P")
|
|
23
31
|
|
|
@@ -43,11 +51,16 @@ def build_new_signature(path: str, func: Callable) -> Signature:
|
|
|
43
51
|
parameter_list = sig.parameters.values()
|
|
44
52
|
return_annotation = sig.return_annotation
|
|
45
53
|
new_parameter_list = []
|
|
46
|
-
|
|
47
|
-
for parameter in parameter_list:
|
|
54
|
+
var_kw_pos = len(parameter_list)
|
|
55
|
+
for pos, parameter in enumerate(parameter_list):
|
|
48
56
|
if parameter.name == "cc" and parameter.annotation == CommandContext:
|
|
49
57
|
continue
|
|
50
58
|
|
|
59
|
+
if parameter.kind == Parameter.VAR_KEYWORD:
|
|
60
|
+
# We track VAR_KEYWORD parameter to insert the any additional
|
|
61
|
+
# parameters we need to add before it and avoid a SyntaxError
|
|
62
|
+
var_kw_pos = pos
|
|
63
|
+
|
|
51
64
|
new_parameter_list.append(
|
|
52
65
|
Parameter(
|
|
53
66
|
parameter.name,
|
|
@@ -57,21 +70,36 @@ def build_new_signature(path: str, func: Callable) -> Signature:
|
|
|
57
70
|
)
|
|
58
71
|
)
|
|
59
72
|
|
|
60
|
-
if (
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
):
|
|
64
|
-
new_parameter_list.append(
|
|
73
|
+
if CHARTING_INSTALLED and path.replace("/", "_")[1:] in Charting.functions():
|
|
74
|
+
new_parameter_list.insert(
|
|
75
|
+
var_kw_pos,
|
|
65
76
|
Parameter(
|
|
66
77
|
"chart",
|
|
67
78
|
kind=Parameter.POSITIONAL_OR_KEYWORD,
|
|
68
79
|
default=False,
|
|
69
80
|
annotation=bool,
|
|
70
|
-
)
|
|
81
|
+
),
|
|
71
82
|
)
|
|
83
|
+
var_kw_pos += 1
|
|
84
|
+
|
|
85
|
+
if custom_headers := SystemService().system_settings.api_settings.custom_headers:
|
|
86
|
+
for name, default in custom_headers.items():
|
|
87
|
+
new_parameter_list.insert(
|
|
88
|
+
var_kw_pos,
|
|
89
|
+
Parameter(
|
|
90
|
+
name.replace("-", "_"),
|
|
91
|
+
kind=Parameter.POSITIONAL_OR_KEYWORD,
|
|
92
|
+
default=default,
|
|
93
|
+
annotation=Annotated[
|
|
94
|
+
Optional[str], Header(include_in_schema=False)
|
|
95
|
+
],
|
|
96
|
+
),
|
|
97
|
+
)
|
|
98
|
+
var_kw_pos += 1
|
|
72
99
|
|
|
73
100
|
if Env().API_AUTH:
|
|
74
|
-
new_parameter_list.
|
|
101
|
+
new_parameter_list.insert(
|
|
102
|
+
var_kw_pos,
|
|
75
103
|
Parameter(
|
|
76
104
|
"__authenticated_user_settings",
|
|
77
105
|
kind=Parameter.POSITIONAL_OR_KEYWORD,
|
|
@@ -79,8 +107,9 @@ def build_new_signature(path: str, func: Callable) -> Signature:
|
|
|
79
107
|
annotation=Annotated[
|
|
80
108
|
UserSettings, Depends(AuthService().user_settings_hook)
|
|
81
109
|
],
|
|
82
|
-
)
|
|
110
|
+
),
|
|
83
111
|
)
|
|
112
|
+
var_kw_pos += 1
|
|
84
113
|
|
|
85
114
|
return Signature(
|
|
86
115
|
parameters=new_parameter_list,
|
|
@@ -91,6 +120,7 @@ def build_new_signature(path: str, func: Callable) -> Signature:
|
|
|
91
120
|
def validate_output(c_out: OBBject) -> OBBject:
|
|
92
121
|
"""
|
|
93
122
|
Validate OBBject object.
|
|
123
|
+
|
|
94
124
|
Checks against the OBBject schema and removes fields that contain the
|
|
95
125
|
`exclude_from_api` extra `pydantic.Field` kwarg.
|
|
96
126
|
Note that the modification to the `OBBject` object is done in-place.
|
|
@@ -102,8 +132,8 @@ def validate_output(c_out: OBBject) -> OBBject:
|
|
|
102
132
|
|
|
103
133
|
Returns
|
|
104
134
|
-------
|
|
105
|
-
|
|
106
|
-
|
|
135
|
+
Dict
|
|
136
|
+
Serialized OBBject.
|
|
107
137
|
"""
|
|
108
138
|
|
|
109
139
|
def is_model(type_):
|
|
@@ -115,25 +145,32 @@ def validate_output(c_out: OBBject) -> OBBject:
|
|
|
115
145
|
json_schema_extra = field.json_schema_extra if field else None
|
|
116
146
|
|
|
117
147
|
# case where 1st layer field needs to be excluded
|
|
118
|
-
if
|
|
148
|
+
if (
|
|
149
|
+
json_schema_extra
|
|
150
|
+
and isinstance(json_schema_extra, dict)
|
|
151
|
+
and json_schema_extra.get("exclude_from_api", None)
|
|
152
|
+
):
|
|
119
153
|
delattr(c_out, key)
|
|
120
154
|
|
|
121
155
|
# if it's a model with nested fields
|
|
122
156
|
elif is_model(type_):
|
|
123
157
|
for field_name, field in type_.__fields__.items():
|
|
124
|
-
|
|
125
|
-
|
|
158
|
+
extra = getattr(field, "json_schema_extra", None)
|
|
159
|
+
if (
|
|
160
|
+
extra
|
|
161
|
+
and isinstance(extra, dict)
|
|
162
|
+
and extra.get("exclude_from_api", None)
|
|
126
163
|
):
|
|
127
164
|
delattr(value, field_name)
|
|
128
165
|
|
|
129
166
|
# if it's a yet a nested model we need to go deeper in the recursion
|
|
130
|
-
elif is_model(field
|
|
167
|
+
elif is_model(getattr(field, "annotation", None)):
|
|
131
168
|
exclude_fields_from_api(field_name, getattr(value, field_name))
|
|
132
169
|
|
|
133
170
|
for k, v in c_out.model_copy():
|
|
134
171
|
exclude_fields_from_api(k, v)
|
|
135
172
|
|
|
136
|
-
return c_out
|
|
173
|
+
return c_out
|
|
137
174
|
|
|
138
175
|
|
|
139
176
|
def build_api_wrapper(
|
|
@@ -151,7 +188,7 @@ def build_api_wrapper(
|
|
|
151
188
|
func.__annotations__ = new_annotations_map
|
|
152
189
|
|
|
153
190
|
@wraps(wrapped=func)
|
|
154
|
-
async def wrapper(*args: Tuple[Any], **kwargs: Dict[str, Any]):
|
|
191
|
+
async def wrapper(*args: Tuple[Any], **kwargs: Dict[str, Any]) -> OBBject:
|
|
155
192
|
user_settings: UserSettings = UserSettings.model_validate(
|
|
156
193
|
kwargs.pop(
|
|
157
194
|
"__authenticated_user_settings",
|
|
@@ -161,8 +198,7 @@ def build_api_wrapper(
|
|
|
161
198
|
execute = partial(command_runner.run, path, user_settings)
|
|
162
199
|
output: OBBject = await execute(*args, **kwargs)
|
|
163
200
|
|
|
164
|
-
|
|
165
|
-
return output
|
|
201
|
+
return validate_output(output)
|
|
166
202
|
|
|
167
203
|
return wrapper
|
|
168
204
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""OpenBB Core App Module."""
|