From 44ee276e073c1774191dd7fa5ece632442f4468d Mon Sep 17 00:00:00 2001 From: Danglewood <85772166+deeleeramone@users.noreply.github.com> Date: Tue, 19 Mar 2024 14:45:38 -0700 Subject: [PATCH] [BugFix] Merge Fix FMP Intraday (#6229) From Main (#6235) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Critical] Sync `main` with `develop` (#6202) * feature/intrinio-equity-search: Adds Intrinio to `obb.equity.search()` (#5863) * intrinio equity search * integration tests * test --------- Co-authored-by: James Maslek * feature/yfinance-multi-ticker: Adds support to openbb-yfinance for multi-ticker download. (#5845) * yfinance multi-ticker support * multi-ticker support for market indices * crypto multi-ticker support * recapture tests * yfinance cache and tests * currency historical multi-ticker support * style things * black * missed a values --------- Co-authored-by: James Maslek * Feature/us-treasury-prices: Adds Treasury Prices to Fixed Income (#5776) * add treasury prices endpoint to fixed income router * adds tests * black * ruff * import statements * standard model imports * black * some cleanup * black * async router * make async * str outpuot * bytes object not string * docstring typo * multi-line f-string * encoding * duplicated conditional * black --------- Co-authored-by: James Maslek * feature/sec-etf-holdings: Adds ETF holdings from SEC provider (#5757) * add ETF holdings from SEC provider * black * helper function params * edge cases * ruff * add validator in company filings * remove xml field * update import * cleanup parsing * missing datetime import in company_filings * black * unused import * add missing py.typed files * feature/nasdaq-equity-search: Adds Nasdaq provider for `obb.equity.search()` (#5790) * add nasdaq to equity search * black * unused import * make async --------- Co-authored-by: James Maslek * Excel docs (#5870) * first test * remove old reference * bring this file back * generate sidebar and write empty mds * generate index.mdx * get description from cmd_lib * fix reference card error * rename file * generate markdown * regen * add last+hist * update pages with seo metadata * format types * small fix * css sux * add usage placeholder * set hidden by default * nah * add cmds and menus to reference * lint * fix/Users/diogosousa/opt/anaconda3/envs/platform/bin/python /Users/diogosousa/OpenBB/OpenBBTerminal/website/generate_excel_markdown.py * format mds * remove space * fix commands heading * redo folder structure * add back cmd description * move card to var * different main folder * clean * move vars * refer to editor * rename var * done * recreate folder structure * add section: syntax + minor adjustments * remove return type * remove return type * rename api to library * minor fix * remove api folder * remove api folder * formatting * improve basics * basics * fetch functions.json from website * complete basic * change syntax to use semi-colon * basics * basics * remove space in sig * remove sections * add metadata * Update formula builder * add tabs * Update index.md * complete basics and formula_builder * Update index.md * add windows screenshots * restructure folders * regenerate with latest add-in version * move Excel sidebar * rename function and add comment * now it's working * logic * rename folder * Update formula_builder.md * fix * hide excel for now * some explicit typing --------- Co-authored-by: tehcoderer * Make Pro Fetchers async by replacing `ThreadPoolExecutor` with `asyncio.gather` (#5822) * init * Update helpers.py * filter URL on raise * polygon, fmp done, update cassettes * updates * cleanup * revert tests for now * Update discovery_filings.py * Update helpers.py * add `async` overload to `Fetcher.extract_data` * update merged fred models * tests, improve fred series * Update insider_trading.py * insider * tests * intrinio * Update equity_historical.py * implement abstract async extract on Fetcher, with simple switch * cleanup * Update helpers.py * Update helpers.py * fix fmp historical deprecated urls * Revert "fix fmp historical deprecated urls" This reverts commit 1a760a24737ed3d1439472bdb4c47aa778bcce8b. * fix fmp `index.market` 1day url missing query params * Update test_fmp_market_indices_fetcher.yaml * field fixes * `extract_data_async` -> `aextract_data`, `async_request` -> `amake_request` * `async_requests` -> `amake_requests` * Update company_news.py * add sort to index `integration` params * add `client.py` tests * Update equity_search.py * Add lost v in platform api version string * Resolve linter errors here and there --------- Co-authored-by: Theodore Aptekarev * Allow this to be run in parallel (#5872) * Limit mypy v3 linting to only the diff of the PR (#5878) * Use custom parametrize from news menu tests (#5873) * Use custom parametrize from news menu tests * Update Ultima unit test cassettes * Command Schema (#5874) * POC * Filter by provider * pass base_app as parameter * add typing + TODO * fix some typing * Fix unit tests --------- Co-authored-by: Diogo Sousa * Parameterize `obbject.to_df` with `index` and `sort_by` (#5877) * Parameterize obbject.to_df with index and sort_by * unit tests for obbject * keep using the date as default to use on basemode_to_df() --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Changes to the `obb.fixedincome.corporate.hqm()` output (#5876) * changes to the hqm output * typo --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Refactor method in RegistryMap (#5879) * refactor extract_info * add comment --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * remove Literal from providers in OBBject (#5882) Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Fix version (#5883) * Fix version * Fix linter on terminal * Refactor package builder (#5880) * breakdown builder + remove black * rebuild * rebuild * rebuild * rename method * format built code without black * we still lint if it's available * fix existing tests * add linter tests * add black to dev deps * auto_build as instance method * reorder methods * typing --------- Co-authored-by: Henrique Joaquim * small refactor for simplification (#5886) Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Fix bug. Add router test. (#5888) * Fix bug. Add router test. * Simplify * separate pylint between platform + terminal (#5892) * separate pylint b/w platform + terminal * Explicitly set pylint check scope to files in the diff --------- Co-authored-by: Theodore Aptekarev * sync descriptions (#5893) * Add REST API docs page with advanced settings configuration (#5890) * Don't mention docker in a list of python envs * Create a REST API page * Update docs to get api keys from the hub * Update installation instructions * Mention requirement of poetry and toml in source installation section * move rest page up to the top. and add url to google colab example notebook --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * fix a v3 syntax example (#5891) * Adds federal reserve data points (#5885) * Allow optional input for 2-month treasury rates and add FederalReserve rates model The commit includes two main changes. One being the modification to the standard treasury rate models, where the 2-month input field is now optional, and a default value is set to none. The other main change is the addition of a new module for the FederalReserve treasury rates model, which includes query parameters, a data model, and a data fetcher. * Add Money Measures models and commands This commit introduces new Money Measures models to handle money-related data, defines Money Measures commands in the economy router, and implements the Federal Reserve Money Measures model. The core model includes fields like start_date, end_date, and various components of the money supply. The new command added to the economy router allows the querying of these data. * Add Federal Reserve Money Measures test file This commit adds a test case file for the Federal Reserve Money Measures fetcher in the Federal Reserve module. The test case includes simulating a GET request and the corresponding expected response from the server. * Cleanup * Sneaky unformatted integration tests * its a dawg life for me ...... ruff * add the fed funds rate * didnt mean to commmit this * black * this is why we should pre commit kids * change install name * add providers to int tests * review comments + commit static * replace nan with None * fix float on None * get rid of nans for nulls for json handling * change `_` to `-` in readme pip install. * Update __init__.py docstring --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Theodore Aptekarev * Check if outdated (#5898) * Add econometrics API tests (#5899) * Docs/excel update (#5889) * update xl docs * update syntax line * update again * Fix pylint scope (#5895) * Allow optional input for 2-month treasury rates and add FederalReserve rates model The commit includes two main changes. One being the modification to the standard treasury rate models, where the 2-month input field is now optional, and a default value is set to none. The other main change is the addition of a new module for the FederalReserve treasury rates model, which includes query parameters, a data model, and a data fetcher. * Add Money Measures models and commands This commit introduces new Money Measures models to handle money-related data, defines Money Measures commands in the economy router, and implements the Federal Reserve Money Measures model. The core model includes fields like start_date, end_date, and various components of the money supply. The new command added to the economy router allows the querying of these data. * Add Federal Reserve Money Measures test file This commit adds a test case file for the Federal Reserve Money Measures fetcher in the Federal Reserve module. The test case includes simulating a GET request and the corresponding expected response from the server. * Cleanup * Sneaky unformatted integration tests * its a dawg life for me ...... ruff * add the fed funds rate * didnt mean to commmit this * black * this is why we should pre commit kids * change install name * add providers to int tests * review comments + commit static * replace nan with None * fix float on None * get rid of nans for nulls for json handling * change `_` to `-` in readme pip install. * Update __init__.py docstring * Debug pylint * Adjust the fetch depth --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * fix `from openbb import obb` asyncio lock in python REPL (#5896) Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * feature/financials - PR for working on structure of financial statements. (#5794) * balance sheet draft * balance_sheet draft * cash_flow draft * income_statement draft * intrinio financials * description * period field * ruff * income statement * field * label - gross profit ratio * cash flow statement * investing order * add option for caching to cashflow * add caching to balance and income * typos and update order for financial institutions * replace 0 values with None * add financial ratios from intrinio * black * missing test params * balance cassette * query param description * symbol list warning * black * handle BRK-A and symbols with a dash for Intrinio * fix typo error * add free cash flow to bottom of cash flow statement * amortization_expense * dev_install.py * undo dev_install.. wrong branch * cash flow order things * standardized cash flow * fields * integration tests * cash flow model validator * more polygon cash * black * black * Delete openbb_sdk/providers/polygon/openbb_polygon/utils/definitions.py wrong file * balance sheet * some cleanup * ruff * income statement * black * test params * financial ratios async update * recapture fmp and polygon tests * yFinance financials * yfinance tests * delete financial_statements standard model * intrinio balance sheet order * fiscal year standard param * remove file accidentally committed * add reported_financials end point * fiscal_year param for reported_financials * fix url * fmp test cassette * add safe-guard with warning for fiscal year before 2008 * periods can only be annual and quarter * url in docstring correction * add fiscal_year param to intrinio standardized financials and ratios * fix fmp ratios * black * rename fields as per Minh * rogue field * black * Fix typo in a docstring * Resolve linting errors * type ignore * disable=unused-argument * changing the arg name cc @minhhoang1023 --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Theodore Aptekarev Co-authored-by: hjoaquim * docs/legacy-install: Add warning at top of page - Instructions on this page are for installing the Terminal (#5904) * add warning at top of page - instructions are for installing the Terminal app * pip install openbb-nightly * hotfix/financials-field-maps: Updates A Couple FMP/Polygon Income Statement Fields (#5907) * update income statement fields * another polygon field * ratio -> margin * black * explicit fmp fields * add reported_currency for standardized intrinio * # pylint: disable=unused-argument * another unused-argument * black.. * patch tests * polygon income: eps -> basic earnings per share * re-capture terminal portfolio menu test --------- Co-authored-by: hjoaquim * Fix test (#5916) * Fix test * Skip ultima integration tests --------- Co-authored-by: Pratyush Shukla * hotfix/fmp-price-performance-zeros: Replace returned zero with None and normalize percent values. (#5918) * replace zeros with none and normalize percents * pylint unused argument * Update index.md (#5906) * Release/4.1.0 (#5901) * Hotfix/terminal tests (#5919) * skip supressed arguments * silent way of customly load on quote * specify source for call_load * docs/platform-faq: Start Platform FAQ page with bullet points on Platform vs SDK (#5914) * platform vs sdk faq page * add data and data providers faq section and some style cards * typo * makes changes as per reviews * openbb-nightly as a way to install everything * jupyter-lab instead of jupyter --------- Co-authored-by: Henrique Joaquim * hotfix/backend - Initialize OpenBBFigure (#5912) * create backend * openbb_figure * black * pylint * pylint again --------- Co-authored-by: Henrique Joaquim * hotfix/yf-futures-historical: yfinance historical futures multi-ticker support and symbol parsing (#5923) * multi-ticker support for yfinance futures historical * raise-missing-from * integration test params * equity_historical adjusted kwargs * pylint unused argument * Docs/excel examples (#5920) * regen excel md * add syntax + basic example * fix example * create json with docs map * update docs to latest functions.json + remove tiingo * remove space from examples * minor fix * remove spaces * remove spaces * bug fix: remove folder before generating * fix typo * add link to appsource * fix * Update templates.md * regenerate content * change docs colors * fix light mode * add back tiingo * update functions.json * templates go later * remove Library from reference * Make the excel markdown being generated at runtime * fix reference cards having commands under menu * remove excel/reference folder since this is built at runtime by gh-pages action * black formatting * improve title * add excel to the main page * add excel image bg * make excel sidebar show up next to pro * improve main page * small fix for platform page title * update basics page * add tip to autocomplete --------- Co-authored-by: DidierRLopes * Re-record tests and fix symbol bug (#5924) * Re-record tests and fix symbol bug * nordvpn us ftw * @IgorWounds says "SPY >> IOO" --------- Co-authored-by: Pratyush Shukla * Docs/bug fix (#5926) * fix pro link * fix wrong example * Introduces a limit argument for the `equity.fundamental.trailing_dividend_yield` endpoint (#5925) * introduces a limit argument for the equity.fundamental.trailing_dividend_yield endpoint * add default args to test * Add json_schema_extra to openapi.json (#5930) Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * feature/standardize-quote: Proposal to Standardize EquityQuote (#5922) * standardize EquityQuote * intrinio reference * rogue comma * pylint --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * hotfix/fmp-rev-segments: Adds Fiscal Period to busines/geographic segments revenue. (#5921) * add fiscal_period to revenue by geography and business line * data description and unused imports * update test cassette * Allow multiple symbols `equity.profile` (#5929) * allow multiple symbols * pylint * pylint ignore position * change callback to helper func --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: hjoaquim * Add filtering to AV historical price (#5928) * add filtering to av historical price * lints --------- Co-authored-by: Pratyush Shukla * Fix vwap FMP error (#5936) * Fix vwap FMP error * Linting * Painlint * Add date filter + symbols to comp (#5931) * add date filter + symbols to comp * make sure year is in d * tests fix * Improving Platform's import time (#5894) * missing decorator * missing optional statements * us-gov to optional and right position * removing redundant call * lazy load mappings * docstrings * introducing the extension loader class * misleading docstring * using the extension loader on the router * using the extension loader on the credentials * docstrings * lazy load of entry points * checkout dev_install * using the extension loader to get the entry points instead of recalling the function * improved auth service and charting service * using the extension loader on the registry * typos * adding properties to extension loader for easy access * using the extension loader on the package builder * avoiding circular imports by using forward references * fix charting service tests * test for the extension loader * Update openbb_platform/core/openbb_core/app/model/credentials.py Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * Update openbb_platform/core/openbb_core/app/router.py Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * Update openbb_platform/core/openbb_core/provider/registry.py Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * adjustments --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * Disable auto_build on test run (#5937) * Disable auto_build on test run * Move to conftest * Update excel docs (#5940) * update basics * update reference generator * Categorize release notes based on labels for OpenBB Platform (#5943) * Categorize release notes based on labels for OpenBB Platform * Add environment variable for GitHub token in labels-PR.yml * Update labeler.yml to use "enhancement" label for feature branches --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Custom deprecation message in API endpoints and Python commands (#5942) * add custom deprecation message feature in routers * add custom deprecation message feature in package builder * using an actual DeprecationWarning instead * fix tests --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: hjoaquim * Hotfix/remove unused workflow (#5945) * Disable auto_build on test run * Remove unused workflow * Revert * Hotfix/fix typo (#5948) * Disable auto_build on test run * Fix typo * Revert * docs/data-models-url: Fix URLs on Development Page (#5944) * fix url to the standard models * github links * `equity.fundamental.dividends`: allow filter by date (#5932) * allow filter by date * ruff * pylint * fix tests --------- Co-authored-by: Pratyush Shukla * Create Excel templates page (#5947) * create templates page * Update index.mdx * fix description * update card * remove clsx * Update index.mdx * Update index.mdx * Update index.mdx * Update index.mdx * min height * min height * improve excel docs and point towards hub --------- Co-authored-by: DidierRLopes * hotfix/intrinio-dividends-limit: Fix Limit Param Alias (#5951) * fix limit param * pylint unused argument, recapture test cassette --------- Co-authored-by: Pratyush Shukla * Docs/remove core refs (#5957) * remove references to core: PathHandler + ProviderInterface * remove unused function * add comment * regenerate * fix a few examples * add comment * rename file * Excel tutorials on the docs (#5956) * update workflows name to tutorial * update title * get barebones to bring in Excel videos * tutorial excel videos in * hotfix/float-values: Convert Intrinio balance sheet values to float type (#5961) * convert intrinio balance sheet values to float type * unused import * typo in alias dict * Update to OpenBB Add-in for Excel (#5965) * Log custom headers (#5966) * add custom headers * fix: send on startup and defaults * pylint * unittests * move government-us to community in dev_install (#5963) * fix: adds logic to check whther user is logged in on hub (#5941) Co-authored-by: Luqman * hotfix/fix-company-filings: Fixes too many mandatory fields. (#5909) * Fixes too many mandatory fields. * black * black again --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: James Maslek * `equity.estimates.price_target` - Integrate with Benzinga (#5946) * deprecation message * fix lints * adding equity.estimates.ratings and fmp as its provider * unit tests for fmp * removing unused file * typos * add benzinga to AnalystRatings * revert changes to estimates router * moving it to price target instead * reverting changes * fmp support for multiple ticker * benzinga price target * ruffy * unused argument * fix type hints * tests for the new fetcher * new integration tests * fixing tests * missing std arg --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [DEPRECATION] `index.market` renamed to `index.price.historical` (#5962) * deprecate index.market and add index.price.historical * add index.historical standard model * add index.historical provider models * index extension tests * provider tests * linting * bug fix (#5969) * Uppercase excel reference (#5958) * uppercase reference * fix name header * add tab title * remove reference excel folder * add to gitignore excel reference files --------- Co-authored-by: DidierRLopes * move templates (#5970) * Release 4.1.1. (#5964) * update dev_install * fix effr test * Update dev_install.py * fix fundamental balance test * fix equity price historical test * fix price target model * black * rebuild static files * update publish.md * fixed dev_install * update publishing doc * updated `openbb-core` to 1.1.1 * updated extensions * updated providers * updated `openbb` package * updated static extension map * updated publishing doc * fixed toml for `openbb-finra` * @jmaslek yfinance IS DEFAULT * updated static --------- Co-authored-by: Pratyush Shukla Co-authored-by: hjoaquim * Fix link to discord channel (#5910) Co-authored-by: James Maslek * Fixing Posthog handler for thread safety (#5968) * fixing posthog handler for thread safety * removing loggging init from the global scope - per sensei juan --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Update labeler.yml and labels-PR.yml (#5974) * hotfix/ allow multiple `identify` calls (#5976) * allow multiple `identify` calls * Update posthog_handler.py * regex out any invisible control character from sales_conditions field (#5977) * docs/http-requests: Contributor Guide For Building HTTP Requests (#5973) * contributor guide for http requests * add a docstring * add section on get_querystring * extra space * add note for people installing PyPI in a zsh terminal shell --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * feature/add-yfinance-functions: Add equity.profile for yFinance (#5978) * equity profile for yFinance * pylint * equity quote * unused imports * remove yfinance from extras in toml (#5982) * Release OpenBB Platform v`4.1.3` (#5983) * fixing pyproject.toml * adding pandas-ta to technical package for publishing * bumping technical * test for pyproject toml * feature/cboe-async: Refactor Cboe for Async (#5900) * refactor cboe for async * codespell * unused imports * pylint * more pylint * platform metadata * classmethod decorator * test params * intrinio quote * test param names * date in test needs to be a datetime.date not string * make fmp unix timestamp tz-aware and normalize percent change * different way of parsing datetime string * recapture cboe equity historical test * unused import * index snapshot update * black * extension map * pylint * cboe pyproject.toml * proposal to standardize equity_quote * one more file * removing changes on static assets * index_historical * index_historical again * last_time -> last_timestamp * obsolete router path * fix tests * test param * restore market index deprecation that I forgot about * fixing tests --------- Co-authored-by: hjoaquim * Fix typo in website/README.md (#5980) * Fix typo in website/README.md * Update linting.yml * Update linting.yml * Update linting.yml * Change ref conditions * Update linting.yml --------- Co-authored-by: Luqman Co-authored-by: Luqman * Hotfix/th etfs (#5959) * added etf trading hours * black formatter --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Henrique Joaquim Co-authored-by: Luqman * feature/finviz-provider: Adds Community Finviz Provider Extension (#5952) * add finviz provider * recapture tests * recapture tests again? * invalid test param * static packages * units_measurement -> unit_measurement * static packages as core only * openbb_core version bump in pyproject.toml * try adding user-agent to test response * fix tests * linting * provider model cosmetic changes * fix install script and typo in openbb toml * static * fix: re-record unittests * empty data error * definitions as a file --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Pratyush Shukla Co-authored-by: Diogo Sousa * Add support for multiple symbols on `obb.equity.price.historical` (#5984) * av - support for multiple symbols * tiingo - support for multiple symbols * include symbol only if necessary * update extension descriptions page (#5985) * remove useless file (#5991) * added symbol to headers (#5981) Co-authored-by: Pratyush Shukla * Fixing Docs Typos (#5955) * fixed typo * fixed stocka typo --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: James Maslek Co-authored-by: DidierRLopes * fix nasdaq test cassettes (#5989) * don't include `custom_headers` in openapi schema (#5994) * hotfix/intrinio-index: Drop None Rows From intrinio Historical Index (#5987) * drop None rows from intrinio historical indexes * add empty data error * static assets * hotfix/insider-trading: Fix #5988 (#5990) * fix validation errors * empty strings * validator --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: teh_coderer * CI listing quick fix (#6002) * BIGGGG LINTING * fixing lints * fixing lints * black * very ruff * no export * fix hedge_view again * lints * platform lints * lints * black * black it @hjoaquim * fix some more linting --------- Co-authored-by: hjoaquim * Release `openbb-finviz` `1.0.0` to the public (#6000) * set version to `1.0.0` * Set correct dep version in main package * Add `finviz` to table * Auto Labelling for OpenBB Excel Docs Changes (#5998) * Update pull request labels * Update labeler.yml with new label for Excel files --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Support for custom examples in router commands (#5993) * Disable auto_build on test run * Add support for custom router examples * Revert odd file change * Fix API pollution * Refactor examples with @montezdesousa * Check if model is inside the PI * Fix * feat: add & fix examples (#6001) * feat: add & fix examples * fix: ruff + comment * feat: read parameter pool from file * feat: typing + unit test * Disable auto_build on test run * Add field order to OBBject * Revert * lint and revert * fix test --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Diogo Sousa * hotfix/intrinio-options-date: Fix comparing values between str and datetime (#5997) * fix compare between str and datetime * unused argument * get_weekday * lint --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Field order added to the OBBject extra as preference (#5999) * Disable auto_build on test run * Add field order to OBBject * Improvements * Remove noxfile * Disable auto_build on test run * Add field order to OBBject * Revert * lint * Add docs * Not sure how this happened * lint * Update `openbb-devtools` (#6008) * update deps * unpinned package versions from gh linting action * codespell * updated black dependency * linting * linting * linting * pin codespell version * black * black again * install devtools in linting action * format w new black (#6009) * format w new black * format w new black * black again * black the terminal * ignoring unused arguments --------- Co-authored-by: Pratyush Shukla * remove reviewpad (#6010) * Remove Ultima provider (#6012) * Add OECD unemployment (+more) + data cache idea (#5917) * Add OECD unemployment + data cache idea * Docstring edits * Tests * Add composite leading indicator * i truested ruff --fix too much * Add short + long term interest rates * pylint * pylint2 * was not committing. my b * add csv cache + make it default. remove pyarrow from poetry * Clean up * Didnt run on this file. My bad * Why was this ignored /shrug * pylint --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Feature/improved pr template (#6018) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * better pr templates * developer template * [Feature] - Custom deprecation (#6005) * custom deprecation * custom deprecation * using the new deprecation * custom deprecation on the package builder * remove comment * ruff * black * static assets * tests * using parametrization instead * test for deprecated endpoints (#6014) * Deprecation warning on the reference docs (#6015) * typo/fix * bring back methods needed for markdown generation * add deprecation warning to docs * contributor docs for deprecating endpoints - tks @deeleeramone * small changes on publishing procedure per @the-praxs * moving the deprecation summary class to deprecation file instead * explanation on class variables * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * Update openbb_platform/openbb/package/index.py Co-authored-by: Pratyush Shukla * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * deprecating on 4.3 instead @the-praxs --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Pratyush Shukla * [BugFix] Fix package builder (#6022) * fix: remove specific imports * adjustments for correct deprecation * static assets --------- Co-authored-by: hjoaquim * [Feature] Add support for multiple tags in `historical_attributes` and `latest_attributes` (#6013) * historical attributes standard model - * add support multiple tags * add `tag` field in data * add support for multiple tags in historical attributes * set correct return type in `callback` function * latest attributes standard model - * add support for multiple tags * add `tag` field in data * add support for multiple tags in latest attributes * add test params for the attributes endpoints * add support for multiple `symbol` and add `symbol` field in the data * modified code to fetch data from multiple symbols and throw warning as per @deeleeramone * add params for testing multiple symbols * linting * fix test params * fixed condition to check if its a `Dict` type * updated intrinio fetcher tests for the statements * updated static * [feature]: feature/overview-to-profile: Deprecate `equity.fundamental.overview()` and move to `equity.profile()` (#6011) * fmp overview to equity profile * deprecation warning * urls * wrangle fields * black * pylint unused argument * insert additional securityID fields to standard model * custom deprecation using OpenBBDeprecationWarning * typo - need to have the deprecated=True flag * static assets * fix non related test * minor adjustment - removing the need for the try/except block - using the get and pop removes the need for key existance checking. cc @deeleeramone --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Henrique Joaquim * [BugFix] - Remove duplicate code (#6025) Co-authored-by: Pratyush Shukla * remove `SectorNews` from router and standard models (#6026) * feature/more-yfinance: Adds some more to openbb-yfinance (#5979) * equity profile for yFinance * pylint * equity quote * unused imports * price target consensus * add currency field * add share_statistics * don't append empty result to results * key executives * missing definition in key_executives * pylint * key metrics * add currency to key metrics * add etf_info * rename trailing_annual_dividend -> dividend_rate_ttm * add institutions count to share_statistics * add historical dividends * add logic for start-end dates to historical_dividends * recapture the test..? * funny test * filter on tests? * record test with clean cache..? * year_price_change -> price_return_1y in key_metrics * black * make descriptions clear for beta and dividend_yield fields * add description field to standard model * updated static * clear description of shares_implied_outstanding field * updated static for equity * clean descriptions --------- Co-authored-by: Pratyush Shukla * feature/commodities-lbma-fixing: Adds Commodity Extension and LBMA Gold/Silver daily fixing levels (#5760) * add commodity extension and add lbma fixing endpoint * dev_install.py * readme url * renovate the standard model * makes a query_params model for nasdaq data link * literal not optional * unused imports * missing test params * test cassette * DataLink query param description * test file import * actually fix import * from openbb_core.provider..... * ruff * another import statement * black * async router * move query_params * update version * version numbers * extension_map * satisfy pylint? * pylint * Update pyproject.toml * black * poetry lock * Update extension_map.json * Update __extensions__.py * Update module_map.json * clean descriptions --------- Co-authored-by: Pratyush Shukla * Improve UX for `obb.news` (#5986) * adding date,start_date and end_date to std params * add date to special params which should've another type * change types to dateType * change helper to accomadate changes in types * date filtering * using the date filtering for all providers * date params on the std model instead * adding the right type * filtering dates on world news * integration tests * fix descriptions * static assets * black * Revert "black" This reverts commit 7288b59f87e1b0816733a96ce77fb96e13dcf0e3. * lint * addressing @montezdesousa suggestion: removing qua 31 jan 2024 15:01:20 WET from standard models and using it only on benzing * tests accordingly * static assets * black --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: teh_coderer Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] - Improve Standardization - `IndexHistorical` (#6030) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * small adjustment on the test * index historical * adjust tests accordingly * keep the test skipped * match tests w python * fix tests * keep the skip * fix test * [Feature] - Refactor Response Model (#6024) * Start refactor with @montezdesousa * feat: add response model inside openapi_extra * feat: find+replace return types * fix: ruff * Feature/api response by provider (#6029) * init * Update router.py * Update registry_map.py * check dicts * lint * exclude provider on data model for package build * `results_type_repr` logic for `Annotated`, ignore provider field in `_extract_data` --------- Co-authored-by: Diogo Sousa Co-authored-by: teh_coderer * [BugFix] - Improve Standardization - `CotSearch` (#6031) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * small adjustment on the test * index historical * adjust tests accordingly * keep the test skipped * match tests w python * use cache as std field * fix tests * fix tests * keep the skip * fix test * adding missing param * fix tests accordingly * Docs/byod (#5996) * add byod to reference * fix: rename add-in name * feat: add data conectors page * fix: additional notes * tiny tweaks * update functions.json and openapi.json * fix: fix bug in hedge controller * fix: another bug hedgecontroller * black --------- Co-authored-by: DidierRLopes * Feature/ex-dividend: Renames "date" columns as "ex_dividend_date" for Dividend Calendar and Historical Dividends (#6006) * date -> ex_dividend_date * nasdaq historical dividends * black * pylint * intrinio alias_dict * dividend_currency -> currency * yfinance field name --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] - Adds a timezone to the Unix timestamp conversion to correct localization errors. (#6023) * fix: remove specific imports * make polygon historical tz-aware * undo including that commit * that PR wasn't supposed to be there. * pylint unused argument * fix polygon crypto historical intervals * pylint * new cassette * fix the rest of the polygon historical price query params * black * pylint.. * integration test param * appease daylight savings handling * paginate for crypto currency and index * black * raise EmptyDataError when no results instead of returning an empty list * ruff --------- Co-authored-by: Diogo Sousa * Hotfix/wrong pydantic validator (#6037) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * Use field_validator instead * fix openapi schema fields `to_snake` (#6036) * Fix data connectors link typo (#6038) * [BugFix] - Improve Standardization - `EquitySearch` (#6033) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * small adjustment on the test * index historical * adjust tests accordingly * keep the test skipped * match tests w python * use cache as std field * fix tests * fix tests * use_cache as std * adjust tests * keep the skip * re-record test * black * Docs / only display results for current platform (#6017) * Update index.js * Update index.js * yfinance * tzcache no longer exists * fixxy * ruff --------- Co-authored-by: Henrique Joaquim Co-authored-by: James Maslek Co-authored-by: Andrew * Improve the docstrings (#6040) * Improve the docstrings (#6041) Co-authored-by: Henrique Joaquim * dont run base tests with v4 label (#6046) * Sync excel reference (#6039) * sync excel reference * fix: change delimiter to comma * feat: update data connectors * test skipping wf * Update unit-test.yml * Update unit-test.yml * test skipping wf * watch label changes * Update unit-test.yml * [Enhancement] - Improve `news` router docs and examples (#6047) * better docs * static assets * Feature/platform standardization notebook (#6049) * Add platform standardization overview notebook to examples * Add py.typed marker to openbb-fred * [Enhancement] - Improve `currency` router docs and examples (#6045) * currency search * reference rates * historical price * static assets --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * display warnings based on preference (#6051) * [Enhancement] - Improve `crypto` router docs and examples (#6048) * crypto search add validation for '-'-separated pairs * set default query value to None * improve /crypto description with custom examples * improve /crypto/price/historical description with custom examples * updated static for crypto menu * ignore line too long * linting --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Final Implementation of Changelog V2 (#6050) * Updated the release drafter to process the released changelog for OpenBB Platform * Update release drafter configuration * Add OpenBB Documentation Changes and Create Release * Update process_changelog.py path in draft-release.yml * Update release-drafter version and save changelog * Copy changelog with python * Update draft-release.yml to save Changelog * Update draft-release.yml * Encode and save Changelog to Base64 * Update Changelog saving method * Update Changelog format * Update CHANGELOG.md with release notes * Fix draft release workflow * Add cat command to print CHANGELOG.md * Add platform-drafter.yml and update release-drafter.yml and draft-release.yml * Commented out config-name in release-drafter step * Update branch name validation and process_changelog.py * Refactor process_changelog.py to improve readability and maintainability * Refactor process_changelog.py to handle file I/O errors and remove duplicate PR entries --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * improve discriminator logic, fix package return type docs (#6052) * improve discriminator logic, fix package return type docs * Update registry_map.py * build package * Update registry_map.py * defaults * Update registry_map.py --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Add LLM tools example notebook (#6053) * Add LLM tools example notebook * Update README, rename example notebook --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Remove the preference (#6055) Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * [Feature] - Standardise multiple symbols input (#6056) * feat: remove list of str * fix: update cpi * package builder + cpi * build * fix: update unittests * fix: check_item * fix: unittests * Improve the docstrings (#6057) * update economy router docstrings (#6058) Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] Fix OECD Long Term Interest Rate (#6060) * fix long term interest rate * pylint unused argument * [Bugfix] - Fix economic calendar country (#6059) * fix economic calendar country * lint --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [HotFix] Index Router Docstrings & `sp500_multiples()` Cleanup (#6063) * sp500 multiples cleanup * remove dict from standard model * static pacakge * pylint * [Feature] FMP Current Holdings (#6043) * add fmp current holdings to etf holdings * pylint unused argument --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Replace symbols in company/news (#6061) * feat: replace symbols in /news * fix: integration tests * fix: integration tests api * fix: typo * Update test_intrinio_fetchers.py * [Enhancement] Add function examples to router. (#6042) * options router * fixedincome router * futures router * missing comma * static assets * futures router --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Enhancement] Add function examples to Regulators Router (#6054) * options router * fixedincome router * futures router * missing comma * static assets * futures router * sec router * cftc router * black --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] Fix World News (#6064) * fix fmp * fix intrinio * fix biztoc * actually commit intrinio fix * fix tiingo * unused import * fix tests * black * ruff * benzinga empty strings * codespell * fix test? * more empty strings --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - remove unused validators from standard models (#6067) * update standard models * lint * Update USD Liquidity Example Notebook for V4 (#5902) * Update USD Liquidity Example Notebook for V4 * delete some v3 text in the copperToGold * Update README.md * findSymbols preview image * Google Colab preview image * financialStatements preview * content tsx file * ### title * convert tsx to json * indent size * double quote keys.json * trailing commas * Update content.json * patch --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: James Maslek * Fix QA Examples (#6072) * [Feature] - Ensure Bugfix branches can only do PRs to `develop` branches (#6073) * bugfix branch name checks and few fixes on the linting not to run on pushes to branches outside PRs * Update branch naming guidelines link --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Feature/charting obbject (#5938) * fix circular import issues on the obbject extension framework * settings available on the obbject * extension init * charting assets and code * introduce to_chart functionality * removes the to_chart method from obbject in detriment of the one from the obbject extension * Update openbb_platform/obbject_extensions/charting/charting/__init__.py Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * fix on the show method * adding the example to the to_chart docstring * copying the exsting README from charting extension - needs to be revamped * moving to openbb_charting instead * update the pyproject.toml file * pydocstyle * versions * better docstrings * making accessors public * removing unnecessary credentials variable cc @montezdesousa * removing access to extra/metadata and use designated private attrs instead * Fixes linting for the logging service (#5992) * lints * typing.Type instead * deprecating ChartingService to use the new extension instead - adding function discovery capabilities using it * tests for the obbject charting extension * removing charting service from command runner * filter functions not implemented in the module * remove charting service tests * removing charting service on the tests for int tests * charting integration tests * removing charting service file * removing old charting extension code * revamp builder * fix obbject tests * fix command_runner tests * removing openbb_figure_table * better website docs * reviewed readme * unsetting api key for posthog (pywry) windows * added debug_mode to the system settings * removing api key * update nightly script * fix tests * black * black * Revert "black" This reverts commit 21d76ad689087b4ad38cec55667186263363c89f. * Revert "black" This reverts commit 0904653fd73518c0d345a82f91f4cb06cfa84cb6. * black for henrique * returning a list instead * better docstrings * removing unnecessary indicators docstring * typo * black * intentional access to protected member * changes to publish script * filtering deleted files * black * adding render argument * fixing the df_to_basemodel function: it should include the index in the columns either if flagged or if the index is named * adding the hability to add you own data to to_chart method * tests * black * disable protected access * accept kwargs to eg. save image * adjustment cc Igor * add if statement for protection * remove unused return typing * fix technical charting views * better error message cc @IgorWounds * better structure and fix test * Revert "better structure and fix test" This reverts commit 612ea6117ce064d5e41f74e72e171646be614408. * Revert "better error message cc @IgorWounds" This reverts commit 3d7ee53878b7742d187e83f7e5d4c27438aa40ef. --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: James Maslek * Fix CAPM example (#6075) * Start removing dead v3 commands for deprecation (#6070) * Yeet tokenterminal * Yeet crypto/onchain/hr and gwei * yeet luna * yeet coinglass * yeet dps/ctb * yeet reddit * yeet covid * actually not yeeting hide yfinance future warning * yeet options/hedge * not yeeting. i18n words * something happened on accident * still fixing * git reset/git checkout -f 2516cfbc72d23a7656715314ea94cc34d4c994ee website/content * still not sure whats going on * Edit workflow to not look at deleted files + change bootup message * Dont pin the workflow to my branch always lol * Remove askobb * [Feature] - Comma separated string and list inputs (#6062) * feat: balancesheet * feat: income statement * fix: cash flow statement * feat: financial ratios * feat: reported financials * feat: revenue business line * feat: revenue per geography * fix: warnings * Update balance_sheet.py * fix: remove warning imports * feat: balance sheet growth * feat: calendar ipo * feat: cashflow growth * feat: __validators__ * fix: typing * fix: validator msg * feat: trailing dividend_yield * feat: short volume * feat: share statistics * feat: price target + consensus * fix: update validator * feat: historical dividends * feat: key executives * fix: getattr directly * fix: type hint validator * fix: add default to getattr * typo * feat: otc * feat: options chains * fix: remove list validators * feat: add validator dict to fetchers * lint * update standard models * lint * feat: rename validator * fix: ownership * feat: query params description * fix: balance yfinance * key execs, income statement * remove change * fix: revenue geographic * fix: disable pylint * fix: unusual + balance * unit test validator * minor fix * explicit validators * update test * feat: multiple items allowed * rebuild * move check_single_value * crypto historical * order providers * fix typing * rename extra dict * marking multiple items allowed * Revert "marking multiple items allowed" This reverts commit 7da04817e18b2c9e373ffde9134f3949d11f58dd. * error msg * fix: default provider runtime vs configuration * minor fix * docstring * revert default changes * get provider before executing cmd * fix container bug * clean filter * add comment * prevent bad defaults * update docstring * typing * fix * black * fix docstring generation * [Feature] - Mark multiple item fetchers (#6074) * feat: price target * bezinga company news * equity quote * marking multiple items allowed * more multiple items * black * rebuild * another batch * rebuild * another * cpi * move prop * rebuild --------- Co-authored-by: hjoaquim * rename var * update msg * rename func * fix test * mypy * ruff --------- Co-authored-by: hjoaquim * [Feature] Add Regional Data Endpoint from FRED (#6071) * add regional data endpoint from FRED * codespell * ruff * sort imports * add provder='fred' to integration test * thought I already sorted those imports.. * pylint.. * more test params.... * even more test params... * even more test params.... * static assets * reconfigure params * ruff * alias dict * recapture cassette * router doctstring --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] - Fix most integration tests (#6082) * Fix most integration tests * Lint * Fix price_target column for Benzinga (#6083) * Release/4.1.4 (#6081) * static assets * patch version increase * core update * bumping versions * bump finviz version * bump versions * bump versions on package.extension --------- Co-authored-by: James Maslek * Add dates to /quantitative as needed. (#6078) * Add dates to /quantitative as needed. Run new black * Fix tests * Pycharm is weird sometimes * uncommit * Add default window + error handling + mistake --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] Add end point: `etf.equity_exposure()` with FMP provider (#6079) * add etf.equity_exposure from FMP * empty data error * recapture cassette * pylint unused argument * Fix router example typo * fix test...? * static file to fix test? * fix test..? * __json_schema_extra__ * black --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: James Maslek * [BugFix] Fix Equity Integration Tests (#6086) * fix equity integration tests * black * pylint * black * black * move df_apply to helpers * unused import * remove file that shouldn't have been added * oops. didn't remove a couple lines * [Enhancement] Add `analyst_search` to the Equity/Estimates Router (#6088) * standardize price_target * add analyst search * black * more black * ruff * linter, test parmas * last missing param * get rid of convert to upper * ruff * pylint * [BugFix] - Fix POST docstring examples (#6095) * Fix POST docstring examples. * Move router examples to command decorator * [BugFix] Fix `treasury_rates()` (#6092) * fix treasury_rates * drop rows with no data --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * clean up the remains from my yeeting (#6089) * clean up the remains from my yeeting * was not careful * Add ETF examples (#6102) Co-authored-by: Pratyush Shukla * [BugFix] Fix integration tests (#6100) * fix int tests * fix obbject int tests * fix quant tests * fix index tests * use python 3.10 instead * remove cache * end_date < start_date * [Enhancement]: Add TMX data provider extension. (#5913) * dev install * add TMX provider extension * normalize ytm and coupopn_rate values * black * codespell * ruff * black again * pylint * ftw * undo what Pylint thinks is best * more black * renovate insider_trading standard model * fix tests * typo * tests * empty string * pylint unused argument * nans for some reason * black * static files * static files with openbb-tmx installed this time * yfinance TypeError..? * NA -> N/A * update for version bump * list exchange-calendars as tmx dependency * eod chains date -> eod_date * new line * not that file * more black * one more black * fix weird merge thing * ruff * index constituents params * insider trading * fixing things * black * black AGAIN * news integration params * the other missing param * ruff * historical dividends field update * add json_schema_extra * gainers * symbols -> symbol * company news symbol * unit test param * review items * wrangle a rogue field * index router example * company news thing - symbols -> symbol * field name map --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Henrique Joaquim Co-authored-by: James Maslek * [Feature] - OBB.GET (#6097) * create OBB.GET and data slicer page * remove quotes * format description * wording * functions.json * sidebar position * remove if stamente * [Docs] Remove Reference to `to_chart` in OBBject. (#6096) * remove reference to to_chart in OBBject. * put chart description back in OBBject properties * [Feature] - Create openbb assets folder (#6101) * create openbb assets folder * fix unittest * rebuild --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] Fixes to_df() where the date series contains multiple TZ-offsets. (#6099) * allow mixed utc offset in a tz-aware date column * enforce ascending from all providers for price.historical * fix tests * add comments and apply treatment to basemodel_from_df before JSON output * yfinance consistency * add unit test * add unit test * better test * ruff --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Update the quantitative extension to make more sense (#6087) * Split out a rolling submenu for the rolling functions * Make a performance and a stats submenu. * Test the statistics functions * lint * lint * dupe test * pylint * ruff * Try tests quick * black magic signature funcs * fix my custom tests * Fix the existing imports/urls * push the api update * okay I figured out whats going on * this should be all of them * Correct docstringing examples --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * [BugFix] Fix ECB Yield Curve (#6108) * fix ecb yield curve * standard model update * Update unit-test workflow to check for changes to openbb_platform (#6109) * [Bug fix] - Fix package mypy (#6110) * fix: package mypy * types * black * [Feature] - Equity router descriptions & examples (#6103) * feat: equity/calendar * feat: compare router * fix descriptions * darkpool + discovery * fix paragraph issues * fix descriptions * fundamental part 1 * fundamental part2 * transcipts * ownership * fix * price * shorts * Update darkpool_router.py * minor fix * shorts examples * examples * ruff * black --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Add `exception_handler` decorator to static (#611… * Update deploy to gh pages condition * Update CONTRIBUTING.md * Allow `hotfix` branch to be merged with `develop` branch * Update branch name check to allow docs branch merge to main * Release/3.2.5 (#6214) * Fix bug. Add router test. (#5888) * Fix bug. Add router test. * Simplify * separate pylint between platform + terminal (#5892) * separate pylint b/w platform + terminal * Explicitly set pylint check scope to files in the diff --------- Co-authored-by: Theodore Aptekarev * sync descriptions (#5893) * Add REST API docs page with advanced settings configuration (#5890) * Don't mention docker in a list of python envs * Create a REST API page * Update docs to get api keys from the hub * Update installation instructions * Mention requirement of poetry and toml in source installation section * move rest page up to the top. and add url to google colab example notebook --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * fix a v3 syntax example (#5891) * Adds federal reserve data points (#5885) * Allow optional input for 2-month treasury rates and add FederalReserve rates model The commit includes two main changes. One being the modification to the standard treasury rate models, where the 2-month input field is now optional, and a default value is set to none. The other main change is the addition of a new module for the FederalReserve treasury rates model, which includes query parameters, a data model, and a data fetcher. * Add Money Measures models and commands This commit introduces new Money Measures models to handle money-related data, defines Money Measures commands in the economy router, and implements the Federal Reserve Money Measures model. The core model includes fields like start_date, end_date, and various components of the money supply. The new command added to the economy router allows the querying of these data. * Add Federal Reserve Money Measures test file This commit adds a test case file for the Federal Reserve Money Measures fetcher in the Federal Reserve module. The test case includes simulating a GET request and the corresponding expected response from the server. * Cleanup * Sneaky unformatted integration tests * its a dawg life for me ...... ruff * add the fed funds rate * didnt mean to commmit this * black * this is why we should pre commit kids * change install name * add providers to int tests * review comments + commit static * replace nan with None * fix float on None * get rid of nans for nulls for json handling * change `_` to `-` in readme pip install. * Update __init__.py docstring --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Theodore Aptekarev * Check if outdated (#5898) * Add econometrics API tests (#5899) * Docs/excel update (#5889) * update xl docs * update syntax line * update again * Fix pylint scope (#5895) * Allow optional input for 2-month treasury rates and add FederalReserve rates model The commit includes two main changes. One being the modification to the standard treasury rate models, where the 2-month input field is now optional, and a default value is set to none. The other main change is the addition of a new module for the FederalReserve treasury rates model, which includes query parameters, a data model, and a data fetcher. * Add Money Measures models and commands This commit introduces new Money Measures models to handle money-related data, defines Money Measures commands in the economy router, and implements the Federal Reserve Money Measures model. The core model includes fields like start_date, end_date, and various components of the money supply. The new command added to the economy router allows the querying of these data. * Add Federal Reserve Money Measures test file This commit adds a test case file for the Federal Reserve Money Measures fetcher in the Federal Reserve module. The test case includes simulating a GET request and the corresponding expected response from the server. * Cleanup * Sneaky unformatted integration tests * its a dawg life for me ...... ruff * add the fed funds rate * didnt mean to commmit this * black * this is why we should pre commit kids * change install name * add providers to int tests * review comments + commit static * replace nan with None * fix float on None * get rid of nans for nulls for json handling * change `_` to `-` in readme pip install. * Update __init__.py docstring * Debug pylint * Adjust the fetch depth --------- Co-authored-by: James Maslek Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * fix `from openbb import obb` asyncio lock in python REPL (#5896) Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * feature/financials - PR for working on structure of financial statements. (#5794) * balance sheet draft * balance_sheet draft * cash_flow draft * income_statement draft * intrinio financials * description * period field * ruff * income statement * field * label - gross profit ratio * cash flow statement * investing order * add option for caching to cashflow * add caching to balance and income * typos and update order for financial institutions * replace 0 values with None * add financial ratios from intrinio * black * missing test params * balance cassette * query param description * symbol list warning * black * handle BRK-A and symbols with a dash for Intrinio * fix typo error * add free cash flow to bottom of cash flow statement * amortization_expense * dev_install.py * undo dev_install.. wrong branch * cash flow order things * standardized cash flow * fields * integration tests * cash flow model validator * more polygon cash * black * black * Delete openbb_sdk/providers/polygon/openbb_polygon/utils/definitions.py wrong file * balance sheet * some cleanup * ruff * income statement * black * test params * financial ratios async update * recapture fmp and polygon tests * yFinance financials * yfinance tests * delete financial_statements standard model * intrinio balance sheet order * fiscal year standard param * remove file accidentally committed * add reported_financials end point * fiscal_year param for reported_financials * fix url * fmp test cassette * add safe-guard with warning for fiscal year before 2008 * periods can only be annual and quarter * url in docstring correction * add fiscal_year param to intrinio standardized financials and ratios * fix fmp ratios * black * rename fields as per Minh * rogue field * black * Fix typo in a docstring * Resolve linting errors * type ignore * disable=unused-argument * changing the arg name cc @minhhoang1023 --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Theodore Aptekarev Co-authored-by: hjoaquim * docs/legacy-install: Add warning at top of page - Instructions on this page are for installing the Terminal (#5904) * add warning at top of page - instructions are for installing the Terminal app * pip install openbb-nightly * hotfix/financials-field-maps: Updates A Couple FMP/Polygon Income Statement Fields (#5907) * update income statement fields * another polygon field * ratio -> margin * black * explicit fmp fields * add reported_currency for standardized intrinio * # pylint: disable=unused-argument * another unused-argument * black.. * patch tests * polygon income: eps -> basic earnings per share * re-capture terminal portfolio menu test --------- Co-authored-by: hjoaquim * Fix test (#5916) * Fix test * Skip ultima integration tests --------- Co-authored-by: Pratyush Shukla * hotfix/fmp-price-performance-zeros: Replace returned zero with None and normalize percent values. (#5918) * replace zeros with none and normalize percents * pylint unused argument * Update index.md (#5906) * Release/4.1.0 (#5901) * Hotfix/terminal tests (#5919) * skip supressed arguments * silent way of customly load on quote * specify source for call_load * docs/platform-faq: Start Platform FAQ page with bullet points on Platform vs SDK (#5914) * platform vs sdk faq page * add data and data providers faq section and some style cards * typo * makes changes as per reviews * openbb-nightly as a way to install everything * jupyter-lab instead of jupyter --------- Co-authored-by: Henrique Joaquim * hotfix/backend - Initialize OpenBBFigure (#5912) * create backend * openbb_figure * black * pylint * pylint again --------- Co-authored-by: Henrique Joaquim * hotfix/yf-futures-historical: yfinance historical futures multi-ticker support and symbol parsing (#5923) * multi-ticker support for yfinance futures historical * raise-missing-from * integration test params * equity_historical adjusted kwargs * pylint unused argument * Docs/excel examples (#5920) * regen excel md * add syntax + basic example * fix example * create json with docs map * update docs to latest functions.json + remove tiingo * remove space from examples * minor fix * remove spaces * remove spaces * bug fix: remove folder before generating * fix typo * add link to appsource * fix * Update templates.md * regenerate content * change docs colors * fix light mode * add back tiingo * update functions.json * templates go later * remove Library from reference * Make the excel markdown being generated at runtime * fix reference cards having commands under menu * remove excel/reference folder since this is built at runtime by gh-pages action * black formatting * improve title * add excel to the main page * add excel image bg * make excel sidebar show up next to pro * improve main page * small fix for platform page title * update basics page * add tip to autocomplete --------- Co-authored-by: DidierRLopes * Re-record tests and fix symbol bug (#5924) * Re-record tests and fix symbol bug * nordvpn us ftw * @IgorWounds says "SPY >> IOO" --------- Co-authored-by: Pratyush Shukla * Docs/bug fix (#5926) * fix pro link * fix wrong example * Introduces a limit argument for the `equity.fundamental.trailing_dividend_yield` endpoint (#5925) * introduces a limit argument for the equity.fundamental.trailing_dividend_yield endpoint * add default args to test * Add json_schema_extra to openapi.json (#5930) Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * feature/standardize-quote: Proposal to Standardize EquityQuote (#5922) * standardize EquityQuote * intrinio reference * rogue comma * pylint --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * hotfix/fmp-rev-segments: Adds Fiscal Period to busines/geographic segments revenue. (#5921) * add fiscal_period to revenue by geography and business line * data description and unused imports * update test cassette * Allow multiple symbols `equity.profile` (#5929) * allow multiple symbols * pylint * pylint ignore position * change callback to helper func --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: hjoaquim * Add filtering to AV historical price (#5928) * add filtering to av historical price * lints --------- Co-authored-by: Pratyush Shukla * Fix vwap FMP error (#5936) * Fix vwap FMP error * Linting * Painlint * Add date filter + symbols to comp (#5931) * add date filter + symbols to comp * make sure year is in d * tests fix * Improving Platform's import time (#5894) * missing decorator * missing optional statements * us-gov to optional and right position * removing redundant call * lazy load mappings * docstrings * introducing the extension loader class * misleading docstring * using the extension loader on the router * using the extension loader on the credentials * docstrings * lazy load of entry points * checkout dev_install * using the extension loader to get the entry points instead of recalling the function * improved auth service and charting service * using the extension loader on the registry * typos * adding properties to extension loader for easy access * using the extension loader on the package builder * avoiding circular imports by using forward references * fix charting service tests * test for the extension loader * Update openbb_platform/core/openbb_core/app/model/credentials.py Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * Update openbb_platform/core/openbb_core/app/router.py Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * Update openbb_platform/core/openbb_core/provider/registry.py Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * adjustments --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * Disable auto_build on test run (#5937) * Disable auto_build on test run * Move to conftest * Update excel docs (#5940) * update basics * update reference generator * Categorize release notes based on labels for OpenBB Platform (#5943) * Categorize release notes based on labels for OpenBB Platform * Add environment variable for GitHub token in labels-PR.yml * Update labeler.yml to use "enhancement" label for feature branches --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Custom deprecation message in API endpoints and Python commands (#5942) * add custom deprecation message feature in routers * add custom deprecation message feature in package builder * using an actual DeprecationWarning instead * fix tests --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: hjoaquim * Hotfix/remove unused workflow (#5945) * Disable auto_build on test run * Remove unused workflow * Revert * Hotfix/fix typo (#5948) * Disable auto_build on test run * Fix typo * Revert * docs/data-models-url: Fix URLs on Development Page (#5944) * fix url to the standard models * github links * `equity.fundamental.dividends`: allow filter by date (#5932) * allow filter by date * ruff * pylint * fix tests --------- Co-authored-by: Pratyush Shukla * Create Excel templates page (#5947) * create templates page * Update index.mdx * fix description * update card * remove clsx * Update index.mdx * Update index.mdx * Update index.mdx * Update index.mdx * min height * min height * improve excel docs and point towards hub --------- Co-authored-by: DidierRLopes * hotfix/intrinio-dividends-limit: Fix Limit Param Alias (#5951) * fix limit param * pylint unused argument, recapture test cassette --------- Co-authored-by: Pratyush Shukla * Docs/remove core refs (#5957) * remove references to core: PathHandler + ProviderInterface * remove unused function * add comment * regenerate * fix a few examples * add comment * rename file * Excel tutorials on the docs (#5956) * update workflows name to tutorial * update title * get barebones to bring in Excel videos * tutorial excel videos in * hotfix/float-values: Convert Intrinio balance sheet values to float type (#5961) * convert intrinio balance sheet values to float type * unused import * typo in alias dict * Update to OpenBB Add-in for Excel (#5965) * Log custom headers (#5966) * add custom headers * fix: send on startup and defaults * pylint * unittests * move government-us to community in dev_install (#5963) * fix: adds logic to check whther user is logged in on hub (#5941) Co-authored-by: Luqman * hotfix/fix-company-filings: Fixes too many mandatory fields. (#5909) * Fixes too many mandatory fields. * black * black again --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: James Maslek * `equity.estimates.price_target` - Integrate with Benzinga (#5946) * deprecation message * fix lints * adding equity.estimates.ratings and fmp as its provider * unit tests for fmp * removing unused file * typos * add benzinga to AnalystRatings * revert changes to estimates router * moving it to price target instead * reverting changes * fmp support for multiple ticker * benzinga price target * ruffy * unused argument * fix type hints * tests for the new fetcher * new integration tests * fixing tests * missing std arg --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [DEPRECATION] `index.market` renamed to `index.price.historical` (#5962) * deprecate index.market and add index.price.historical * add index.historical standard model * add index.historical provider models * index extension tests * provider tests * linting * bug fix (#5969) * Uppercase excel reference (#5958) * uppercase reference * fix name header * add tab title * remove reference excel folder * add to gitignore excel reference files --------- Co-authored-by: DidierRLopes * move templates (#5970) * Release 4.1.1. (#5964) * update dev_install * fix effr test * Update dev_install.py * fix fundamental balance test * fix equity price historical test * fix price target model * black * rebuild static files * update publish.md * fixed dev_install * update publishing doc * updated `openbb-core` to 1.1.1 * updated extensions * updated providers * updated `openbb` package * updated static extension map * updated publishing doc * fixed toml for `openbb-finra` * @jmaslek yfinance IS DEFAULT * updated static --------- Co-authored-by: Pratyush Shukla Co-authored-by: hjoaquim * Fix link to discord channel (#5910) Co-authored-by: James Maslek * Fixing Posthog handler for thread safety (#5968) * fixing posthog handler for thread safety * removing loggging init from the global scope - per sensei juan --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Update labeler.yml and labels-PR.yml (#5974) * hotfix/ allow multiple `identify` calls (#5976) * allow multiple `identify` calls * Update posthog_handler.py * regex out any invisible control character from sales_conditions field (#5977) * docs/http-requests: Contributor Guide For Building HTTP Requests (#5973) * contributor guide for http requests * add a docstring * add section on get_querystring * extra space * add note for people installing PyPI in a zsh terminal shell --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * feature/add-yfinance-functions: Add equity.profile for yFinance (#5978) * equity profile for yFinance * pylint * equity quote * unused imports * remove yfinance from extras in toml (#5982) * Release OpenBB Platform v`4.1.3` (#5983) * fixing pyproject.toml * adding pandas-ta to technical package for publishing * bumping technical * test for pyproject toml * feature/cboe-async: Refactor Cboe for Async (#5900) * refactor cboe for async * codespell * unused imports * pylint * more pylint * platform metadata * classmethod decorator * test params * intrinio quote * test param names * date in test needs to be a datetime.date not string * make fmp unix timestamp tz-aware and normalize percent change * different way of parsing datetime string * recapture cboe equity historical test * unused import * index snapshot update * black * extension map * pylint * cboe pyproject.toml * proposal to standardize equity_quote * one more file * removing changes on static assets * index_historical * index_historical again * last_time -> last_timestamp * obsolete router path * fix tests * test param * restore market index deprecation that I forgot about * fixing tests --------- Co-authored-by: hjoaquim * Fix typo in website/README.md (#5980) * Fix typo in website/README.md * Update linting.yml * Update linting.yml * Update linting.yml * Change ref conditions * Update linting.yml --------- Co-authored-by: Luqman Co-authored-by: Luqman * Hotfix/th etfs (#5959) * added etf trading hours * black formatter --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Henrique Joaquim Co-authored-by: Luqman * feature/finviz-provider: Adds Community Finviz Provider Extension (#5952) * add finviz provider * recapture tests * recapture tests again? * invalid test param * static packages * units_measurement -> unit_measurement * static packages as core only * openbb_core version bump in pyproject.toml * try adding user-agent to test response * fix tests * linting * provider model cosmetic changes * fix install script and typo in openbb toml * static * fix: re-record unittests * empty data error * definitions as a file --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Pratyush Shukla Co-authored-by: Diogo Sousa * Add support for multiple symbols on `obb.equity.price.historical` (#5984) * av - support for multiple symbols * tiingo - support for multiple symbols * include symbol only if necessary * update extension descriptions page (#5985) * remove useless file (#5991) * added symbol to headers (#5981) Co-authored-by: Pratyush Shukla * Fixing Docs Typos (#5955) * fixed typo * fixed stocka typo --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: James Maslek Co-authored-by: DidierRLopes * fix nasdaq test cassettes (#5989) * don't include `custom_headers` in openapi schema (#5994) * hotfix/intrinio-index: Drop None Rows From intrinio Historical Index (#5987) * drop None rows from intrinio historical indexes * add empty data error * static assets * hotfix/insider-trading: Fix #5988 (#5990) * fix validation errors * empty strings * validator --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: teh_coderer * CI listing quick fix (#6002) * BIGGGG LINTING * fixing lints * fixing lints * black * very ruff * no export * fix hedge_view again * lints * platform lints * lints * black * black it @hjoaquim * fix some more linting --------- Co-authored-by: hjoaquim * Release `openbb-finviz` `1.0.0` to the public (#6000) * set version to `1.0.0` * Set correct dep version in main package * Add `finviz` to table * Auto Labelling for OpenBB Excel Docs Changes (#5998) * Update pull request labels * Update labeler.yml with new label for Excel files --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Support for custom examples in router commands (#5993) * Disable auto_build on test run * Add support for custom router examples * Revert odd file change * Fix API pollution * Refactor examples with @montezdesousa * Check if model is inside the PI * Fix * feat: add & fix examples (#6001) * feat: add & fix examples * fix: ruff + comment * feat: read parameter pool from file * feat: typing + unit test * Disable auto_build on test run * Add field order to OBBject * Revert * lint and revert * fix test --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Diogo Sousa * hotfix/intrinio-options-date: Fix comparing values between str and datetime (#5997) * fix compare between str and datetime * unused argument * get_weekday * lint --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Field order added to the OBBject extra as preference (#5999) * Disable auto_build on test run * Add field order to OBBject * Improvements * Remove noxfile * Disable auto_build on test run * Add field order to OBBject * Revert * lint * Add docs * Not sure how this happened * lint * Update `openbb-devtools` (#6008) * update deps * unpinned package versions from gh linting action * codespell * updated black dependency * linting * linting * linting * pin codespell version * black * black again * install devtools in linting action * format w new black (#6009) * format w new black * format w new black * black again * black the terminal * ignoring unused arguments --------- Co-authored-by: Pratyush Shukla * remove reviewpad (#6010) * Remove Ultima provider (#6012) * Add OECD unemployment (+more) + data cache idea (#5917) * Add OECD unemployment + data cache idea * Docstring edits * Tests * Add composite leading indicator * i truested ruff --fix too much * Add short + long term interest rates * pylint * pylint2 * was not committing. my b * add csv cache + make it default. remove pyarrow from poetry * Clean up * Didnt run on this file. My bad * Why was this ignored /shrug * pylint --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Feature/improved pr template (#6018) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * better pr templates * developer template * [Feature] - Custom deprecation (#6005) * custom deprecation * custom deprecation * using the new deprecation * custom deprecation on the package builder * remove comment * ruff * black * static assets * tests * using parametrization instead * test for deprecated endpoints (#6014) * Deprecation warning on the reference docs (#6015) * typo/fix * bring back methods needed for markdown generation * add deprecation warning to docs * contributor docs for deprecating endpoints - tks @deeleeramone * small changes on publishing procedure per @the-praxs * moving the deprecation summary class to deprecation file instead * explanation on class variables * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * Update openbb_platform/openbb/package/index.py Co-authored-by: Pratyush Shukla * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * Update website/content/platform/development/contributor-guidelines/deprecating_endpoints.md Co-authored-by: Pratyush Shukla * deprecating on 4.3 instead @the-praxs --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Pratyush Shukla * [BugFix] Fix package builder (#6022) * fix: remove specific imports * adjustments for correct deprecation * static assets --------- Co-authored-by: hjoaquim * [Feature] Add support for multiple tags in `historical_attributes` and `latest_attributes` (#6013) * historical attributes standard model - * add support multiple tags * add `tag` field in data * add support for multiple tags in historical attributes * set correct return type in `callback` function * latest attributes standard model - * add support for multiple tags * add `tag` field in data * add support for multiple tags in latest attributes * add test params for the attributes endpoints * add support for multiple `symbol` and add `symbol` field in the data * modified code to fetch data from multiple symbols and throw warning as per @deeleeramone * add params for testing multiple symbols * linting * fix test params * fixed condition to check if its a `Dict` type * updated intrinio fetcher tests for the statements * updated static * [feature]: feature/overview-to-profile: Deprecate `equity.fundamental.overview()` and move to `equity.profile()` (#6011) * fmp overview to equity profile * deprecation warning * urls * wrangle fields * black * pylint unused argument * insert additional securityID fields to standard model * custom deprecation using OpenBBDeprecationWarning * typo - need to have the deprecated=True flag * static assets * fix non related test * minor adjustment - removing the need for the try/except block - using the get and pop removes the need for key existance checking. cc @deeleeramone --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Henrique Joaquim * [BugFix] - Remove duplicate code (#6025) Co-authored-by: Pratyush Shukla * remove `SectorNews` from router and standard models (#6026) * feature/more-yfinance: Adds some more to openbb-yfinance (#5979) * equity profile for yFinance * pylint * equity quote * unused imports * price target consensus * add currency field * add share_statistics * don't append empty result to results * key executives * missing definition in key_executives * pylint * key metrics * add currency to key metrics * add etf_info * rename trailing_annual_dividend -> dividend_rate_ttm * add institutions count to share_statistics * add historical dividends * add logic for start-end dates to historical_dividends * recapture the test..? * funny test * filter on tests? * record test with clean cache..? * year_price_change -> price_return_1y in key_metrics * black * make descriptions clear for beta and dividend_yield fields * add description field to standard model * updated static * clear description of shares_implied_outstanding field * updated static for equity * clean descriptions --------- Co-authored-by: Pratyush Shukla * feature/commodities-lbma-fixing: Adds Commodity Extension and LBMA Gold/Silver daily fixing levels (#5760) * add commodity extension and add lbma fixing endpoint * dev_install.py * readme url * renovate the standard model * makes a query_params model for nasdaq data link * literal not optional * unused imports * missing test params * test cassette * DataLink query param description * test file import * actually fix import * from openbb_core.provider..... * ruff * another import statement * black * async router * move query_params * update version * version numbers * extension_map * satisfy pylint? * pylint * Update pyproject.toml * black * poetry lock * Update extension_map.json * Update __extensions__.py * Update module_map.json * clean descriptions --------- Co-authored-by: Pratyush Shukla * Improve UX for `obb.news` (#5986) * adding date,start_date and end_date to std params * add date to special params which should've another type * change types to dateType * change helper to accomadate changes in types * date filtering * using the date filtering for all providers * date params on the std model instead * adding the right type * filtering dates on world news * integration tests * fix descriptions * static assets * black * Revert "black" This reverts commit 7288b59f87e1b0816733a96ce77fb96e13dcf0e3. * lint * addressing @montezdesousa suggestion: removing qua 31 jan 2024 15:01:20 WET from standard models and using it only on benzing * tests accordingly * static assets * black --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: teh_coderer Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] - Improve Standardization - `IndexHistorical` (#6030) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * small adjustment on the test * index historical * adjust tests accordingly * keep the test skipped * match tests w python * fix tests * keep the skip * fix test * [Feature] - Refactor Response Model (#6024) * Start refactor with @montezdesousa * feat: add response model inside openapi_extra * feat: find+replace return types * fix: ruff * Feature/api response by provider (#6029) * init * Update router.py * Update registry_map.py * check dicts * lint * exclude provider on data model for package build * `results_type_repr` logic for `Annotated`, ignore provider field in `_extract_data` --------- Co-authored-by: Diogo Sousa Co-authored-by: teh_coderer * [BugFix] - Improve Standardization - `CotSearch` (#6031) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * small adjustment on the test * index historical * adjust tests accordingly * keep the test skipped * match tests w python * use cache as std field * fix tests * fix tests * keep the skip * fix test * adding missing param * fix tests accordingly * Docs/byod (#5996) * add byod to reference * fix: rename add-in name * feat: add data conectors page * fix: additional notes * tiny tweaks * update functions.json and openapi.json * fix: fix bug in hedge controller * fix: another bug hedgecontroller * black --------- Co-authored-by: DidierRLopes * Feature/ex-dividend: Renames "date" columns as "ex_dividend_date" for Dividend Calendar and Historical Dividends (#6006) * date -> ex_dividend_date * nasdaq historical dividends * black * pylint * intrinio alias_dict * dividend_currency -> currency * yfinance field name --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] - Adds a timezone to the Unix timestamp conversion to correct localization errors. (#6023) * fix: remove specific imports * make polygon historical tz-aware * undo including that commit * that PR wasn't supposed to be there. * pylint unused argument * fix polygon crypto historical intervals * pylint * new cassette * fix the rest of the polygon historical price query params * black * pylint.. * integration test param * appease daylight savings handling * paginate for crypto currency and index * black * raise EmptyDataError when no results instead of returning an empty list * ruff --------- Co-authored-by: Diogo Sousa * Hotfix/wrong pydantic validator (#6037) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * Use field_validator instead * fix openapi schema fields `to_snake` (#6036) * Fix data connectors link typo (#6038) * [BugFix] - Improve Standardization - `EquitySearch` (#6033) * format w new black * Revert "format w new black" This reverts commit 74b9619cc6b565f85aef1e89fc01900b86c8b991. * small adjustment on the test * index historical * adjust tests accordingly * keep the test skipped * match tests w python * use cache as std field * fix tests * fix tests * use_cache as std * adjust tests * keep the skip * re-record test * black * Docs / only display results for current platform (#6017) * Update index.js * Update index.js * yfinance * tzcache no longer exists * fixxy * ruff --------- Co-authored-by: Henrique Joaquim Co-authored-by: James Maslek Co-authored-by: Andrew * Improve the docstrings (#6040) * Improve the docstrings (#6041) Co-authored-by: Henrique Joaquim * dont run base tests with v4 label (#6046) * Sync excel reference (#6039) * sync excel reference * fix: change delimiter to comma * feat: update data connectors * test skipping wf * Update unit-test.yml * Update unit-test.yml * test skipping wf * watch label changes * Update unit-test.yml * [Enhancement] - Improve `news` router docs and examples (#6047) * better docs * static assets * Feature/platform standardization notebook (#6049) * Add platform standardization overview notebook to examples * Add py.typed marker to openbb-fred * [Enhancement] - Improve `currency` router docs and examples (#6045) * currency search * reference rates * historical price * static assets --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * display warnings based on preference (#6051) * [Enhancement] - Improve `crypto` router docs and examples (#6048) * crypto search add validation for '-'-separated pairs * set default query value to None * improve /crypto description with custom examples * improve /crypto/price/historical description with custom examples * updated static for crypto menu * ignore line too long * linting --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Final Implementation of Changelog V2 (#6050) * Updated the release drafter to process the released changelog for OpenBB Platform * Update release drafter configuration * Add OpenBB Documentation Changes and Create Release * Update process_changelog.py path in draft-release.yml * Update release-drafter version and save changelog * Copy changelog with python * Update draft-release.yml to save Changelog * Update draft-release.yml * Encode and save Changelog to Base64 * Update Changelog saving method * Update Changelog format * Update CHANGELOG.md with release notes * Fix draft release workflow * Add cat command to print CHANGELOG.md * Add platform-drafter.yml and update release-drafter.yml and draft-release.yml * Commented out config-name in release-drafter step * Update branch name validation and process_changelog.py * Refactor process_changelog.py to improve readability and maintainability * Refactor process_changelog.py to handle file I/O errors and remove duplicate PR entries --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * improve discriminator logic, fix package return type docs (#6052) * improve discriminator logic, fix package return type docs * Update registry_map.py * build package * Update registry_map.py * defaults * Update registry_map.py --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Add LLM tools example notebook (#6053) * Add LLM tools example notebook * Update README, rename example notebook --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Remove the preference (#6055) Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * [Feature] - Standardise multiple symbols input (#6056) * feat: remove list of str * fix: update cpi * package builder + cpi * build * fix: update unittests * fix: check_item * fix: unittests * Improve the docstrings (#6057) * update economy router docstrings (#6058) Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] Fix OECD Long Term Interest Rate (#6060) * fix long term interest rate * pylint unused argument * [Bugfix] - Fix economic calendar country (#6059) * fix economic calendar country * lint --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [HotFix] Index Router Docstrings & `sp500_multiples()` Cleanup (#6063) * sp500 multiples cleanup * remove dict from standard model * static pacakge * pylint * [Feature] FMP Current Holdings (#6043) * add fmp current holdings to etf holdings * pylint unused argument --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Replace symbols in company/news (#6061) * feat: replace symbols in /news * fix: integration tests * fix: integration tests api * fix: typo * Update test_intrinio_fetchers.py * [Enhancement] Add function examples to router. (#6042) * options router * fixedincome router * futures router * missing comma * static assets * futures router --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Enhancement] Add function examples to Regulators Router (#6054) * options router * fixedincome router * futures router * missing comma * static assets * futures router * sec router * cftc router * black --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] Fix World News (#6064) * fix fmp * fix intrinio * fix biztoc * actually commit intrinio fix * fix tiingo * unused import * fix tests * black * ruff * benzinga empty strings * codespell * fix test? * more empty strings --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - remove unused validators from standard models (#6067) * update standard models * lint * Update USD Liquidity Example Notebook for V4 (#5902) * Update USD Liquidity Example Notebook for V4 * delete some v3 text in the copperToGold * Update README.md * findSymbols preview image * Google Colab preview image * financialStatements preview * content tsx file * ### title * convert tsx to json * indent size * double quote keys.json * trailing commas * Update content.json * patch --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: James Maslek * Fix QA Examples (#6072) * [Feature] - Ensure Bugfix branches can only do PRs to `develop` branches (#6073) * bugfix branch name checks and few fixes on the linting not to run on pushes to branches outside PRs * Update branch naming guidelines link --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Feature/charting obbject (#5938) * fix circular import issues on the obbject extension framework * settings available on the obbject * extension init * charting assets and code * introduce to_chart functionality * removes the to_chart method from obbject in detriment of the one from the obbject extension * Update openbb_platform/obbject_extensions/charting/charting/__init__.py Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * fix on the show method * adding the example to the to_chart docstring * copying the exsting README from charting extension - needs to be revamped * moving to openbb_charting instead * update the pyproject.toml file * pydocstyle * versions * better docstrings * making accessors public * removing unnecessary credentials variable cc @montezdesousa * removing access to extra/metadata and use designated private attrs instead * Fixes linting for the logging service (#5992) * lints * typing.Type instead * deprecating ChartingService to use the new extension instead - adding function discovery capabilities using it * tests for the obbject charting extension * removing charting service from command runner * filter functions not implemented in the module * remove charting service tests * removing charting service on the tests for int tests * charting integration tests * removing charting service file * removing old charting extension code * revamp builder * fix obbject tests * fix command_runner tests * removing openbb_figure_table * better website docs * reviewed readme * unsetting api key for posthog (pywry) windows * added debug_mode to the system settings * removing api key * update nightly script * fix tests * black * black * Revert "black" This reverts commit 21d76ad689087b4ad38cec55667186263363c89f. * Revert "black" This reverts commit 0904653fd73518c0d345a82f91f4cb06cfa84cb6. * black for henrique * returning a list instead * better docstrings * removing unnecessary indicators docstring * typo * black * intentional access to protected member * changes to publish script * filtering deleted files * black * adding render argument * fixing the df_to_basemodel function: it should include the index in the columns either if flagged or if the index is named * adding the hability to add you own data to to_chart method * tests * black * disable protected access * accept kwargs to eg. save image * adjustment cc Igor * add if statement for protection * remove unused return typing * fix technical charting views * better error message cc @IgorWounds * better structure and fix test * Revert "better structure and fix test" This reverts commit 612ea6117ce064d5e41f74e72e171646be614408. * Revert "better error message cc @IgorWounds" This reverts commit 3d7ee53878b7742d187e83f7e5d4c27438aa40ef. --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: James Maslek * Fix CAPM example (#6075) * Start removing dead v3 commands for deprecation (#6070) * Yeet tokenterminal * Yeet crypto/onchain/hr and gwei * yeet luna * yeet coinglass * yeet dps/ctb * yeet reddit * yeet covid * actually not yeeting hide yfinance future warning * yeet options/hedge * not yeeting. i18n words * something happened on accident * still fixing * git reset/git checkout -f 2516cfbc72d23a7656715314ea94cc34d4c994ee website/content * still not sure whats going on * Edit workflow to not look at deleted files + change bootup message * Dont pin the workflow to my branch always lol * Remove askobb * [Feature] - Comma separated string and list inputs (#6062) * feat: balancesheet * feat: income statement * fix: cash flow statement * feat: financial ratios * feat: reported financials * feat: revenue business line * feat: revenue per geography * fix: warnings * Update balance_sheet.py * fix: remove warning imports * feat: balance sheet growth * feat: calendar ipo * feat: cashflow growth * feat: __validators__ * fix: typing * fix: validator msg * feat: trailing dividend_yield * feat: short volume * feat: share statistics * feat: price target + consensus * fix: update validator * feat: historical dividends * feat: key executives * fix: getattr directly * fix: type hint validator * fix: add default to getattr * typo * feat: otc * feat: options chains * fix: remove list validators * feat: add validator dict to fetchers * lint * update standard models * lint * feat: rename validator * fix: ownership * feat: query params description * fix: balance yfinance * key execs, income statement * remove change * fix: revenue geographic * fix: disable pylint * fix: unusual + balance * unit test validator * minor fix * explicit validators * update test * feat: multiple items allowed * rebuild * move check_single_value * crypto historical * order providers * fix typing * rename extra dict * marking multiple items allowed * Revert "marking multiple items allowed" This reverts commit 7da04817e18b2c9e373ffde9134f3949d11f58dd. * error msg * fix: default provider runtime vs configuration * minor fix * docstring * revert default changes * get provider before executing cmd * fix container bug * clean filter * add comment * prevent bad defaults * update docstring * typing * fix * black * fix docstring generation * [Feature] - Mark multiple item fetchers (#6074) * feat: price target * bezinga company news * equity quote * marking multiple items allowed * more multiple items * black * rebuild * another batch * rebuild * another * cpi * move prop * rebuild --------- Co-authored-by: hjoaquim * rename var * update msg * rename func * fix test * mypy * ruff --------- Co-authored-by: hjoaquim * [Feature] Add Regional Data Endpoint from FRED (#6071) * add regional data endpoint from FRED * codespell * ruff * sort imports * add provder='fred' to integration test * thought I already sorted those imports.. * pylint.. * more test params.... * even more test params... * even more test params.... * static assets * reconfigure params * ruff * alias dict * recapture cassette * router doctstring --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] - Fix most integration tests (#6082) * Fix most integration tests * Lint * Fix price_target column for Benzinga (#6083) * Release/4.1.4 (#6081) * static assets * patch version increase * core update * bumping versions * bump finviz version * bump versions * bump versions on package.extension --------- Co-authored-by: James Maslek * Add dates to /quantitative as needed. (#6078) * Add dates to /quantitative as needed. Run new black * Fix tests * Pycharm is weird sometimes * uncommit * Add default window + error handling + mistake --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] Add end point: `etf.equity_exposure()` with FMP provider (#6079) * add etf.equity_exposure from FMP * empty data error * recapture cassette * pylint unused argument * Fix router example typo * fix test...? * static file to fix test? * fix test..? * __json_schema_extra__ * black --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: James Maslek * [BugFix] Fix Equity Integration Tests (#6086) * fix equity integration tests * black * pylint * black * black * move df_apply to helpers * unused import * remove file that shouldn't have been added * oops. didn't remove a couple lines * [Enhancement] Add `analyst_search` to the Equity/Estimates Router (#6088) * standardize price_target * add analyst search * black * more black * ruff * linter, test parmas * last missing param * get rid of convert to upper * ruff * pylint * [BugFix] - Fix POST docstring examples (#6095) * Fix POST docstring examples. * Move router examples to command decorator * [BugFix] Fix `treasury_rates()` (#6092) * fix treasury_rates * drop rows with no data --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * clean up the remains from my yeeting (#6089) * clean up the remains from my yeeting * was not careful * Add ETF examples (#6102) Co-authored-by: Pratyush Shukla * [BugFix] Fix integration tests (#6100) * fix int tests * fix obbject int tests * fix quant tests * fix index tests * use python 3.10 instead * remove cache * end_date < start_date * [Enhancement]: Add TMX data provider extension. (#5913) * dev install * add TMX provider extension * normalize ytm and coupopn_rate values * black * codespell * ruff * black again * pylint * ftw * undo what Pylint thinks is best * more black * renovate insider_trading standard model * fix tests * typo * tests * empty string * pylint unused argument * nans for some reason * black * static files * static files with openbb-tmx installed this time * yfinance TypeError..? * NA -> N/A * update for version bump * list exchange-calendars as tmx dependency * eod chains date -> eod_date * new line * not that file * more black * one more black * fix weird merge thing * ruff * index constituents params * insider trading * fixing things * black * black AGAIN * news integration params * the other missing param * ruff * historical dividends field update * add json_schema_extra * gainers * symbols -> symbol * company news symbol * unit test param * review items * wrangle a rogue field * index router example * company news thing - symbols -> symbol * field name map --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Henrique Joaquim Co-authored-by: James Maslek * [Feature] - OBB.GET (#6097) * create OBB.GET and data slicer page * remove quotes * format description * wording * functions.json * sidebar position * remove if stamente * [Docs] Remove Reference to `to_chart` in OBBject. (#6096) * remove reference to to_chart in OBBject. * put chart description back in OBBject properties * [Feature] - Create openbb assets folder (#6101) * create openbb assets folder * fix unittest * rebuild --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] Fixes to_df() where the date series contains multiple TZ-offsets. (#6099) * allow mixed utc offset in a tz-aware date column * enforce ascending from all providers for price.historical * fix tests * add comments and apply treatment to basemodel_from_df before JSON output * yfinance consistency * add unit test * add unit test * better test * ruff --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * Update the quantitative extension to make more sense (#6087) * Split out a rolling submenu for the rolling functions * Make a performance and a stats submenu. * Test the statistics functions * lint * lint * dupe test * pylint * ruff * Try tests quick * black magic signature funcs * fix my custom tests * Fix the existing imports/urls * push the api update * okay I figured out whats going on * this should be all of them * Correct docstringing examples --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * [BugFix] Fix ECB Yield Curve (#6108) * fix ecb yield curve * standard model update * Update unit-test workflow to check for changes to openbb_platform (#6109) * [Bug fix] - Fix package mypy (#6110) * fix: package mypy * types * black * [Feature] - Equity router descriptions & examples (#6103) * feat: equity/calendar * feat: compare router * fix descriptions * darkpool + discovery * fix paragraph issues * fix descriptions * fundamental part 1 * fundamental part2 * transcipts * ownership * fix * price * shorts * Update darkpool_router.py * minor fix * shorts examples * examples * ruff * black --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Feature] - Add `exception_handler` decorator to static (#6112) * add exception handler decorator * add exception handler decorator code * updated static * rebuild to fix docstring indentation --------- Co-authored-by: Diogo Sousa * update extensions list (#6114) * add missing field descriptions to yfinance equity price historical (#6116) Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * remove charting extension env var (#6118) * [BugFix] Fix Company News (#6111) * fix company news * update tests * multiple symbols for polygon * don't include pageSize in Benzinga querystring, fixed as 100 * remove extra space * black * unused imports * make benzinga test cassette smaller * missing params * clear empty strings --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [BugFix] Allow Multiple Symbols in `equity.fundamental.metrics()` from `yfinance` (#6124) * allow multiple symbols in key_metrics from yfinance * field order thing * remove unnecessary function (#6125) * [Docs] Update OpenBB Copilot docs (#6106) * WIP: Tweak description. * WIP: Experimenting with react-player * WIP: Add copilot docs. * fixes videos width/height * WIP: Refine videos and copy. * WIP: Add last videos and sections. * Add bring-your-own-copilot section. * Tweak grammar. * Add copilot link. * Fix typos. --------- Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> * [Enhancement] Add Previous Close to DATA_DESCRIPTIONS (#6120) * add data description for previous close * ..just the one * update the model tripped by this change --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * added australia as a country also (#6131) * [Bug fix] - Fix regulator cik map standard model (#6129) * Fix regulator cik map standard model * fix description * Update cik_map.py * increase timeout to 30 (#6115) Co-authored-by: James Maslek * clean up some v3 deps (#6105) * clean up some v3 deps * forgot we need to do the requirements txt files * not sure it matters, but run ruff + black * am addicted to bug fixes --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * [Bug fix] - explicit multiple items docstring (#6127) * explicit multiple items docstring * rebuiild * rebuild again --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> * [Feature] Pretty Pydantic `ValidationError` exceptions (#6130) * fix validator in fmp IndexHistorical model * make ValidationError pretty * modify arg error * linting fmp IndexHistorical * black * remove unused code * tmx etf info (#6132) Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> * [Feature] - Platform V4 Markdown Generator V2 (#6094) * add recent `openapi.json` * fix data types in models * removed `openapi.json` * set default date value as None in PolygonCurrencyPairs class * add function to generate reference.json file * reworked function to improve readability * reword function to add seo metadata * add functions for creating markdown sections * add code to extract data card markdown title * add additional functions for generating index and data models file * extract first sentence of the description for cards * code cleanup and documentation * linting * linting polygon models * add openbb import statement in create_reference_markdown_examples function * add POST method functions * cleanup; reworked generate_reference_index_files function * moved development section to 7th position in the sidebar * fix POST function params default value add standard flag to QueryParams and Data fields cleanup * add type expansion from package_builder.MethodDefinition * sort data models cards alphabetically make printing less verbose * make MAX_CARDS global display less content in cards in Commannds section * cleanup * Remove '_' from the cards under Commands section * " to ' in econometrics/causality * replace ' with " in ReferenceCard for reference dir index files * remove extra . from the quantile function description * shoutout to @deeleeramone for finding POST method description bug! * set correct value for standard field * handle BaseModel types in provider data fields * unit tests for the platform markdown generator v2 * yeet 'Default' and 'Optional' columns in the 'Data' section * last minute bug fix * add info for multiple symbols * make multiple items info same as platform static * organize sections properly * sort reference sub-directories alphabetically * extra space in 'OBBject extra' description * add type expansion for fields with multiple items POST method cleanup --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> * [Docs] Adds Example Notebook for the Implied Earnings Move (#6128) * adds example notebook for the implied earnings move * remove commented out line --------- Co-authored-by: James Maslek * [Feature] - Sync with new openapi.json (#6137) * feat: create data tabs * fix: uncomment * fix: remove unecessary comment * sort side bar * comment * uncomment * use .dev functions.json + clean traverse * fix futures example * fix example * point to .co * Fix the v3 markdown generation workflow (#6138) * fix workflow * debug time * see if the docs generate at least * ahhhh i found it * getting there * put the test first * some keys cleanup * small change to error message * remove ultima + althub * update functions.json (#6140) * move twitter keys * fix intraday check in charting ta_class (#6119) Co-authored-by: Henrique Joaquim * [BugFix] Display EconDB as source for macro (#6143) * [BugFix] Disable Intrinio `InstitutionalOwnership` model (#6142) * disable fetcher in init and fetcher tests * disable provider test params from equity python and api tests * updated static * add more examples into findSymbols (#6139) Co-authored-by: James Maslek * [BugFix] Fix SEC ETF Holdings Parsing Exception (#6121) * fix etf holdings * linting * black --------- Co-authored-by: James Maslek * Docs/update xl docs (#6145) * remove print * update obb.get docs * example * md lint * fix g… * [Docs] - Update BYOD page (#6207) * update byod docs * regenerate docs --------- Co-authored-by: Luqman * [HotFix] Fix FMP Intraday (#6229) * fix fmp intraday * clean up error messages * ruff * fix merge conflict artifact --------- Co-authored-by: Pratyush Shukla Co-authored-by: James Maslek Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: tehcoderer Co-authored-by: Theodore Aptekarev Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com> Co-authored-by: Diogo Sousa Co-authored-by: Henrique Joaquim Co-authored-by: DidierRLopes Co-authored-by: Luqman Co-authored-by: minhhoang1023 <40023817+minhhoang1023@users.noreply.github.com> Co-authored-by: jose-donato <43375532+jose-donato@users.noreply.github.com> Co-authored-by: Ayrton Parkinson Co-authored-by: northern-64bit <75195383+northern-64bit@users.noreply.github.com> Co-authored-by: Luqman Co-authored-by: Eric Li <38477812+EricLi-Dev@users.noreply.github.com> Co-authored-by: Andrew Co-authored-by: Michael Struwig Co-authored-by: capital0 <72140796+capital0@users.noreply.github.com> Co-authored-by: Ben Van Doren Co-authored-by: Adi Sai Co-authored-by: Sandip Saha Co-authored-by: Adwait <111136306+AdwaitSalankar@users.noreply.github.com> Co-authored-by: Abhishek Amar <66067391+abhishek-amar@users.noreply.github.com> Co-authored-by: professssor <62937125+professssor@users.noreply.github.com> Co-authored-by: Farookh Zaheer Siddiqui <129654632+FarukhS52@users.noreply.github.com> Co-authored-by: MAX SHESTOV <57421753+maxxsh@users.noreply.github.com> Co-authored-by: jose-donato Co-authored-by: Mohamad Fadil Co-authored-by: Ramazan Co-authored-by: joshuabuildsthings Co-authored-by: wojda <114031148+polooner@users.noreply.github.com> Co-authored-by: Bim Phomthong <118195204+bimbolimbo@users.noreply.github.com> Co-authored-by: Ramazan Co-authored-by: omahs <73983677+omahs@users.noreply.github.com> --- .../crypto/integration/test_crypto_api.py | 9 ++ .../crypto/integration/test_crypto_python.py | 9 ++ .../currency/integration/test_currency_api.py | 9 ++ .../integration/test_currency_python.py | 9 ++ .../equity/integration/test_equity_api.py | 9 ++ .../equity/integration/test_equity_python.py | 9 ++ .../index/integration/test_index_api.py | 9 ++ .../index/integration/test_index_python.py | 9 ++ .../openbb_fmp/models/crypto_historical.py | 81 ++++++++++++------ .../openbb_fmp/models/currency_historical.py | 81 ++++++++++++------ .../openbb_fmp/models/equity_historical.py | 81 ++++++++++++------ .../fmp/openbb_fmp/models/index_historical.py | 83 +++++++++++++------ 12 files changed, 300 insertions(+), 98 deletions(-) diff --git a/openbb_platform/extensions/crypto/integration/test_crypto_api.py b/openbb_platform/extensions/crypto/integration/test_crypto_api.py index 161bf9960a8a..6d38f1681a57 100644 --- a/openbb_platform/extensions/crypto/integration/test_crypto_api.py +++ b/openbb_platform/extensions/crypto/integration/test_crypto_api.py @@ -50,6 +50,15 @@ def test_crypto_search(params, headers): "end_date": "2023-01-02", } ), + ( + { + "interval": "1h", + "provider": "fmp", + "symbol": "BTCUSD,ETHUSD", + "start_date": None, + "end_date": None, + } + ), ( { "interval": "1m", diff --git a/openbb_platform/extensions/crypto/integration/test_crypto_python.py b/openbb_platform/extensions/crypto/integration/test_crypto_python.py index 6d3f49e1ae2a..b22c29d4daed 100644 --- a/openbb_platform/extensions/crypto/integration/test_crypto_python.py +++ b/openbb_platform/extensions/crypto/integration/test_crypto_python.py @@ -45,6 +45,15 @@ def test_crypto_search(params, obb): "end_date": "2023-01-02", } ), + ( + { + "interval": "1h", + "provider": "fmp", + "symbol": "BTCUSD,ETHUSD", + "start_date": None, + "end_date": None, + } + ), ( { "interval": "1m", diff --git a/openbb_platform/extensions/currency/integration/test_currency_api.py b/openbb_platform/extensions/currency/integration/test_currency_api.py index 90449a69e3fb..bc80a5d75bc7 100644 --- a/openbb_platform/extensions/currency/integration/test_currency_api.py +++ b/openbb_platform/extensions/currency/integration/test_currency_api.py @@ -70,6 +70,15 @@ def test_currency_search(params, headers): "provider": "fmp", } ), + ( + { + "interval": "1h", + "provider": "fmp", + "symbol": "EURUSD,USDJPY", + "start_date": None, + "end_date": None, + } + ), ( { "interval": "1m", diff --git a/openbb_platform/extensions/currency/integration/test_currency_python.py b/openbb_platform/extensions/currency/integration/test_currency_python.py index 0c91b7b19b08..445e42938380 100644 --- a/openbb_platform/extensions/currency/integration/test_currency_python.py +++ b/openbb_platform/extensions/currency/integration/test_currency_python.py @@ -65,6 +65,15 @@ def test_currency_search(params, obb): "provider": "fmp", } ), + ( + { + "interval": "1h", + "provider": "fmp", + "symbol": "EURUSD,USDJPY", + "start_date": None, + "end_date": None, + } + ), ( { "interval": "1m", diff --git a/openbb_platform/extensions/equity/integration/test_equity_api.py b/openbb_platform/extensions/equity/integration/test_equity_api.py index 9b60930f4b5b..97b56b200454 100644 --- a/openbb_platform/extensions/equity/integration/test_equity_api.py +++ b/openbb_platform/extensions/equity/integration/test_equity_api.py @@ -939,6 +939,15 @@ def test_equity_compare_groups(params, headers): "interval": "1d", } ), + ( + { + "interval": "1h", + "provider": "fmp", + "symbol": "AAPL,MSFT", + "start_date": None, + "end_date": None, + } + ), ( { "timezone": "UTC", diff --git a/openbb_platform/extensions/equity/integration/test_equity_python.py b/openbb_platform/extensions/equity/integration/test_equity_python.py index 68f8daffef29..8b802da8dcf0 100644 --- a/openbb_platform/extensions/equity/integration/test_equity_python.py +++ b/openbb_platform/extensions/equity/integration/test_equity_python.py @@ -878,6 +878,15 @@ def test_equity_compare_groups(params, obb): "interval": "1d", } ), + ( + { + "interval": "1h", + "provider": "fmp", + "symbol": "AAPL,MSFT", + "start_date": None, + "end_date": None, + } + ), ( { "timezone": "UTC", diff --git a/openbb_platform/extensions/index/integration/test_index_api.py b/openbb_platform/extensions/index/integration/test_index_api.py index cd6e2868384a..0b5006c80f5d 100644 --- a/openbb_platform/extensions/index/integration/test_index_api.py +++ b/openbb_platform/extensions/index/integration/test_index_api.py @@ -60,6 +60,15 @@ def test_index_constituents(params, headers): "end_date": "2024-02-05", } ), + ( + { + "interval": "1h", + "provider": "fmp", + "symbol": "^DJI,^NDX", + "start_date": None, + "end_date": None, + } + ), ( { "interval": "1m", diff --git a/openbb_platform/extensions/index/integration/test_index_python.py b/openbb_platform/extensions/index/integration/test_index_python.py index 29f20b5f34ac..1082fce00baa 100644 --- a/openbb_platform/extensions/index/integration/test_index_python.py +++ b/openbb_platform/extensions/index/integration/test_index_python.py @@ -56,6 +56,15 @@ def test_index_constituents(params, obb): "end_date": "2024-02-05", } ), + ( + { + "interval": "1h", + "provider": "fmp", + "symbol": "^DJI,^NDX", + "start_date": None, + "end_date": None, + } + ), ( { "interval": "1m", diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/crypto_historical.py b/openbb_platform/providers/fmp/openbb_fmp/models/crypto_historical.py index ab4c7074f6cb..8486d46f69a3 100644 --- a/openbb_platform/providers/fmp/openbb_fmp/models/crypto_historical.py +++ b/openbb_platform/providers/fmp/openbb_fmp/models/crypto_historical.py @@ -2,9 +2,10 @@ # pylint: disable=unused-argument -import warnings +import asyncio from datetime import datetime from typing import Any, Dict, List, Literal, Optional +from warnings import warn from dateutil.relativedelta import relativedelta from openbb_core.provider.abstract.fetcher import Fetcher @@ -16,16 +17,14 @@ DATA_DESCRIPTIONS, QUERY_DESCRIPTIONS, ) +from openbb_core.provider.utils.errors import EmptyDataError from openbb_core.provider.utils.helpers import ( - ClientResponse, - amake_requests, + amake_request, get_querystring, ) from openbb_fmp.utils.helpers import get_interval from pydantic import Field -_warn = warnings.warn - class FMPCryptoHistoricalQueryParams(CryptoHistoricalQueryParams): """ @@ -104,29 +103,55 @@ def get_url_params(symbol: str) -> str: url = f"{base_url}/historical-price-full/crypto/{url_params}" return url - # if there are more than 20 symbols, we need to increase the timeout - if len(query.symbol.split(",")) > 20: - kwargs.update({"preferences": {"request_timeout": 30}}) + symbols = query.symbol.split(",") + + results = [] + messages = [] + + async def get_one(symbol): + """Get data for one symbol.""" + + url = get_url_params(symbol) + + data = [] + + response = await amake_request(url, **kwargs) - async def callback(response: ClientResponse, _: Any) -> List[Dict]: - data = await response.json() - symbol = response.url.parts[-1] - results = [] - if not data: - _warn(f"No data found the the symbol: {symbol}") - return results + if isinstance(response, dict) and response.get("Error Message"): + message = f"Error fetching data for {symbol}: {response.get('Error Message', '')}" + warn(message) + messages.append(message) - if isinstance(data, dict): - results = data.get("historical", []) + if not response: + message = f"No data found for {symbol}." + warn(message) + messages.append(message) - if "," in query.symbol: - for d in results: - d["symbol"] = symbol - return results + if isinstance(response, list) and len(response) > 0: + data = response + if len(symbols) > 1: + for d in data: + d["symbol"] = symbol - urls = [get_url_params(symbol) for symbol in query.symbol.split(",")] + if isinstance(response, dict) and response.get("historical"): + data = response["historical"] + if len(symbols) > 1: + for d in data: + d["symbol"] = symbol - return await amake_requests(urls, callback, **kwargs) + if data: + results.extend(data) + + tasks = [get_one(symbol) for symbol in symbols] + + await asyncio.gather(*tasks) + + if not results: + raise EmptyDataError( + f"{str(','.join(messages)).replace(',',' ') if messages else 'No data found'}" + ) + + return results @staticmethod def transform_data( @@ -138,7 +163,15 @@ def transform_data( to_pop = ["label", "changePercent", "unadjustedVolume"] results: List[FMPCryptoHistoricalData] = [] - for d in sorted(data, key=lambda x: x["date"], reverse=False): + for d in sorted( + data, + key=lambda x: ( + (x["date"], x["symbol"]) + if len(query.symbol.split(",")) > 1 + else x["date"] + ), + reverse=False, + ): _ = [d.pop(pop) for pop in to_pop if pop in d] if d.get("unadjusted_volume") == d.get("volume"): _ = d.pop("unadjusted_volume") diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/currency_historical.py b/openbb_platform/providers/fmp/openbb_fmp/models/currency_historical.py index 3c9a9668f827..02fceedc5ee2 100644 --- a/openbb_platform/providers/fmp/openbb_fmp/models/currency_historical.py +++ b/openbb_platform/providers/fmp/openbb_fmp/models/currency_historical.py @@ -2,9 +2,10 @@ # pylint: disable=unused-argument -import warnings +import asyncio from datetime import datetime from typing import Any, Dict, List, Literal, Optional +from warnings import warn from dateutil.relativedelta import relativedelta from openbb_core.provider.abstract.fetcher import Fetcher @@ -16,16 +17,14 @@ DATA_DESCRIPTIONS, QUERY_DESCRIPTIONS, ) +from openbb_core.provider.utils.errors import EmptyDataError from openbb_core.provider.utils.helpers import ( - ClientResponse, - amake_requests, + amake_request, get_querystring, ) from openbb_fmp.utils.helpers import get_interval from pydantic import Field -_warn = warnings.warn - class FMPCurrencyHistoricalQueryParams(CurrencyHistoricalQueryParams): """FMP Currency Historical Price Query. @@ -102,29 +101,55 @@ def get_url_params(symbol: str) -> str: url = f"{base_url}/historical-price-full/forex/{url_params}" return url - # if there are more than 20 symbols, we need to increase the timeout - if len(query.symbol.split(",")) > 20: - kwargs.update({"preferences": {"request_timeout": 30}}) + symbols = query.symbol.split(",") + + results = [] + messages = [] + + async def get_one(symbol): + """Get data for one symbol.""" + + url = get_url_params(symbol) + + data = [] + + response = await amake_request(url, **kwargs) - async def callback(response: ClientResponse, _: Any) -> List[Dict]: - data = await response.json() - symbol = response.url.parts[-1] - results = [] - if not data: - _warn(f"No data found the the symbol: {symbol}") - return results + if isinstance(response, dict) and response.get("Error Message"): + message = f"Error fetching data for {symbol}: {response.get('Error Message', '')}" + warn(message) + messages.append(message) - if isinstance(data, dict): - results = data.get("historical", []) + if not response: + message = f"No data found for {symbol}." + warn(message) + messages.append(message) - if "," in query.symbol: - for d in results: - d["symbol"] = symbol - return results + if isinstance(response, list) and len(response) > 0: + data = response + if len(symbols) > 1: + for d in data: + d["symbol"] = symbol - urls = [get_url_params(symbol) for symbol in query.symbol.split(",")] + if isinstance(response, dict) and response.get("historical"): + data = response["historical"] + if len(symbols) > 1: + for d in data: + d["symbol"] = symbol - return await amake_requests(urls, callback, **kwargs) + if data: + results.extend(data) + + tasks = [get_one(symbol) for symbol in symbols] + + await asyncio.gather(*tasks) + + if not results: + raise EmptyDataError( + f"{str(','.join(messages)).replace(',',' ') if messages else 'No data found'}" + ) + + return results @staticmethod def transform_data( @@ -136,7 +161,15 @@ def transform_data( to_pop = ["label", "changePercent", "unadjustedVolume"] results: List[FMPCurrencyHistoricalData] = [] - for d in sorted(data, key=lambda x: x["date"], reverse=False): + for d in sorted( + data, + key=lambda x: ( + (x["date"], x["symbol"]) + if len(query.symbol.split(",")) > 1 + else x["date"] + ), + reverse=False, + ): _ = [d.pop(pop) for pop in to_pop if pop in d] if d.get("unadjusted_volume") == d.get("volume"): _ = d.pop("unadjusted_volume") diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/equity_historical.py b/openbb_platform/providers/fmp/openbb_fmp/models/equity_historical.py index 79651c71c2fd..5225a0daa183 100644 --- a/openbb_platform/providers/fmp/openbb_fmp/models/equity_historical.py +++ b/openbb_platform/providers/fmp/openbb_fmp/models/equity_historical.py @@ -2,9 +2,10 @@ # pylint: disable=unused-argument -import warnings +import asyncio from datetime import datetime from typing import Any, Dict, List, Literal, Optional +from warnings import warn from dateutil.relativedelta import relativedelta from openbb_core.provider.abstract.fetcher import Fetcher @@ -16,16 +17,14 @@ DATA_DESCRIPTIONS, QUERY_DESCRIPTIONS, ) +from openbb_core.provider.utils.errors import EmptyDataError from openbb_core.provider.utils.helpers import ( - ClientResponse, - amake_requests, + amake_request, get_querystring, ) from openbb_fmp.utils.helpers import get_interval from pydantic import Field -_warn = warnings.warn - class FMPEquityHistoricalQueryParams(EquityHistoricalQueryParams): """FMP Equity Historical Price Query. @@ -105,29 +104,55 @@ def get_url_params(symbol: str) -> str: url = f"{base_url}/historical-price-full/{url_params}" return url - # if there are more than 20 symbols, we need to increase the timeout - if len(query.symbol.split(",")) > 20: - kwargs.update({"preferences": {"request_timeout": 30}}) + symbols = query.symbol.split(",") + + results = [] + messages = [] + + async def get_one(symbol): + """Get data for one symbol.""" + + url = get_url_params(symbol) + + data = [] + + response = await amake_request(url, **kwargs) - async def callback(response: ClientResponse, _: Any) -> List[Dict]: - data = await response.json() - symbol = response.url.parts[-1] - results = [] - if not data: - _warn(f"No data found the the symbol: {symbol}") - return results + if isinstance(response, dict) and response.get("Error Message"): + message = f"Error fetching data for {symbol}: {response.get('Error Message', '')}" + warn(message) + messages.append(message) - if isinstance(data, dict): - results = data.get("historical", []) + if not response: + message = f"No data found for {symbol}." + warn(message) + messages.append(message) - if "," in query.symbol: - for d in results: - d["symbol"] = symbol - return results + if isinstance(response, list) and len(response) > 0: + data = response + if len(symbols) > 1: + for d in data: + d["symbol"] = symbol - urls = [get_url_params(symbol) for symbol in query.symbol.split(",")] + if isinstance(response, dict) and response.get("historical"): + data = response["historical"] + if len(symbols) > 1: + for d in data: + d["symbol"] = symbol - return await amake_requests(urls, callback, **kwargs) + if data: + results.extend(data) + + tasks = [get_one(symbol) for symbol in symbols] + + await asyncio.gather(*tasks) + + if not results: + raise EmptyDataError( + f"{str(','.join(messages)).replace(',',' ') if messages else 'No data found'}" + ) + + return results @staticmethod def transform_data( @@ -139,7 +164,15 @@ def transform_data( to_pop = ["label", "changePercent"] results: List[FMPEquityHistoricalData] = [] - for d in sorted(data, key=lambda x: x["date"], reverse=False): + for d in sorted( + data, + key=lambda x: ( + (x["date"], x["symbol"]) + if len(query.symbol.split(",")) > 1 + else x["date"] + ), + reverse=False, + ): _ = [d.pop(pop) for pop in to_pop if pop in d] if d.get("unadjusted_volume") == d.get("volume"): _ = d.pop("unadjusted_volume") diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/index_historical.py b/openbb_platform/providers/fmp/openbb_fmp/models/index_historical.py index 13d5582a3f9b..33eabd6f5b3f 100644 --- a/openbb_platform/providers/fmp/openbb_fmp/models/index_historical.py +++ b/openbb_platform/providers/fmp/openbb_fmp/models/index_historical.py @@ -2,9 +2,10 @@ # pylint: disable=unused-argument -import warnings +import asyncio from datetime import datetime from typing import Any, Dict, List, Literal, Optional +from warnings import warn from dateutil.relativedelta import relativedelta from openbb_core.provider.abstract.fetcher import Fetcher @@ -18,15 +19,12 @@ ) from openbb_core.provider.utils.errors import EmptyDataError from openbb_core.provider.utils.helpers import ( - ClientResponse, - amake_requests, + amake_request, get_querystring, ) from openbb_fmp.utils.helpers import get_interval from pydantic import Field -_warn = warnings.warn - class FMPIndexHistoricalQueryParams(IndexHistoricalQueryParams): """FMP Index Historical Query. @@ -103,30 +101,55 @@ def get_url_params(symbol: str) -> str: url = f"{base_url}/historical-price-full/{url_params}" return url - # if there are more than 20 symbols, we need to increase the timeout - if len(query.symbol.split(",")) > 20: - kwargs.update({"preferences": {"request_timeout": 30}}) + symbols = query.symbol.split(",") + + results = [] + messages = [] + + async def get_one(symbol): + """Get data for one symbol.""" + + url = get_url_params(symbol) + + data = [] + + response = await amake_request(url, **kwargs) - async def callback(response: ClientResponse, _: Any) -> List[Dict]: - data = await response.json() - symbol = response.url.parts[-1] - results = [] - if not data: - _warn(f"No data found the the symbol: {symbol}") - return results + if isinstance(response, dict) and response.get("Error Message"): + message = f"Error fetching data for {symbol}: {response.get('Error Message', '')}" + warn(message) + messages.append(message) - if isinstance(data, dict): - results = data.get("historical", []) - if isinstance(data, list): - results = data + if not response: + message = f"No data found for {symbol}." + warn(message) + messages.append(message) - if "," in query.symbol: - for d in results: - d["symbol"] = symbol - return results + if isinstance(response, list) and len(response) > 0: + data = response + if len(symbols) > 1: + for d in data: + d["symbol"] = symbol - urls = [get_url_params(symbol) for symbol in query.symbol.split(",")] - return await amake_requests(urls, callback, **kwargs) + if isinstance(response, dict) and response.get("historical"): + data = response["historical"] + if len(symbols) > 1: + for d in data: + d["symbol"] = symbol + + if data: + results.extend(data) + + tasks = [get_one(symbol) for symbol in symbols] + + await asyncio.gather(*tasks) + + if not results: + raise EmptyDataError( + f"{str(','.join(messages)).replace(',',' ') if messages else 'No data found'}" + ) + + return results @staticmethod def transform_data( @@ -142,7 +165,15 @@ def transform_data( to_pop = ["label", "changePercent", "unadjustedVolume", "adjClose"] results: List[FMPIndexHistoricalData] = [] - for d in sorted(data, key=lambda x: x["date"], reverse=False): + for d in sorted( + data, + key=lambda x: ( + (x["date"], x["symbol"]) + if len(query.symbol.split(",")) > 1 + else x["date"] + ), + reverse=False, + ): _ = [d.pop(pop) for pop in to_pop if pop in d] if d.get("volume") == 0: _ = d.pop("volume")