diff --git a/cookbook/Semi_Structured_RAG.ipynb b/cookbook/Semi_Structured_RAG.ipynb index 2dcf8e57a31de..4df3745b3e154 100644 --- a/cookbook/Semi_Structured_RAG.ipynb +++ b/cookbook/Semi_Structured_RAG.ipynb @@ -39,7 +39,7 @@ "metadata": {}, "outputs": [], "source": [ - "! pip install langchain langchain-chroma unstructured[all-docs] pydantic lxml langchainhub" + "! pip install langchain langchain-chroma \"unstructured[all-docs]\" pydantic lxml langchainhub" ] }, { diff --git a/cookbook/Semi_structured_and_multi_modal_RAG.ipynb b/cookbook/Semi_structured_and_multi_modal_RAG.ipynb index b440826509aa6..b1bf61437a71b 100644 --- a/cookbook/Semi_structured_and_multi_modal_RAG.ipynb +++ b/cookbook/Semi_structured_and_multi_modal_RAG.ipynb @@ -59,7 +59,7 @@ "metadata": {}, "outputs": [], "source": [ - "! pip install langchain langchain-chroma unstructured[all-docs] pydantic lxml" + "! pip install langchain langchain-chroma \"unstructured[all-docs]\" pydantic lxml" ] }, { diff --git a/cookbook/Semi_structured_multi_modal_RAG_LLaMA2.ipynb b/cookbook/Semi_structured_multi_modal_RAG_LLaMA2.ipynb index a82c0b4dc89f2..7ed8e4d6a8a1c 100644 --- a/cookbook/Semi_structured_multi_modal_RAG_LLaMA2.ipynb +++ b/cookbook/Semi_structured_multi_modal_RAG_LLaMA2.ipynb @@ -59,7 +59,7 @@ "metadata": {}, "outputs": [], "source": [ - "! pip install langchain langchain-chroma unstructured[all-docs] pydantic lxml" + "! pip install langchain langchain-chroma \"unstructured[all-docs]\" pydantic lxml" ] }, { diff --git a/docs/Makefile b/docs/Makefile index adc664d37cfdc..2b90623fe86ea 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -41,12 +41,8 @@ generate-files: cp -r $(SOURCE_DIR)/* $(INTERMEDIATE_DIR) mkdir -p $(INTERMEDIATE_DIR)/templates - $(PYTHON) scripts/model_feat_table.py $(INTERMEDIATE_DIR) - $(PYTHON) scripts/tool_feat_table.py $(INTERMEDIATE_DIR) - $(PYTHON) scripts/document_loader_feat_table.py $(INTERMEDIATE_DIR) - $(PYTHON) scripts/kv_store_feat_table.py $(INTERMEDIATE_DIR) $(PYTHON) scripts/partner_pkg_table.py $(INTERMEDIATE_DIR) @@ -86,7 +82,7 @@ vercel-build: install-vercel-deps build generate-references rm -rf docs mv $(OUTPUT_NEW_DOCS_DIR) docs rm -rf build - yarn run docusaurus build + NODE_OPTIONS="--max-old-space-size=5000" yarn run docusaurus build mv build v0.2 mkdir build mv v0.2 build diff --git a/docs/docs/how_to/functions.ipynb b/docs/docs/how_to/functions.ipynb index aa67935c50c04..be5aff9aacbff 100644 --- a/docs/docs/how_to/functions.ipynb +++ b/docs/docs/how_to/functions.ipynb @@ -28,7 +28,7 @@ "\n", "You can use arbitrary functions as [Runnables](https://api.python.langchain.com/en/latest/runnables/langchain_core.runnables.base.Runnable.html#langchain_core.runnables.base.Runnable). This is useful for formatting or when you need functionality not provided by other LangChain components, and custom functions used as Runnables are called [`RunnableLambdas`](https://api.python.langchain.com/en/latest/runnables/langchain_core.runnables.base.RunnableLambda.html).\n", "\n", - "Note that all inputs to these functions need to be a SINGLE argument. If you have a function that accepts multiple arguments, you should write a wrapper that accepts a single dict input and unpacks it into multiple argument.\n", + "Note that all inputs to these functions need to be a SINGLE argument. If you have a function that accepts multiple arguments, you should write a wrapper that accepts a single dict input and unpacks it into multiple arguments.\n", "\n", "This guide will cover:\n", "\n", diff --git a/docs/docs/how_to/qa_chat_history_how_to.ipynb b/docs/docs/how_to/qa_chat_history_how_to.ipynb index 64e3f737a66d1..fc82be236277f 100644 --- a/docs/docs/how_to/qa_chat_history_how_to.ipynb +++ b/docs/docs/how_to/qa_chat_history_how_to.ipynb @@ -721,9 +721,9 @@ "metadata": {}, "outputs": [], "source": [ - "from langgraph.checkpoint.sqlite import SqliteSaver\n", + "from langgraph.checkpoint.memory import MemorySaver\n", "\n", - "memory = SqliteSaver.from_conn_string(\":memory:\")\n", + "memory = MemorySaver()\n", "\n", "agent_executor = create_react_agent(llm, tools, checkpointer=memory)" ] @@ -890,9 +890,9 @@ "from langchain_community.document_loaders import WebBaseLoader\n", "from langchain_openai import ChatOpenAI, OpenAIEmbeddings\n", "from langchain_text_splitters import RecursiveCharacterTextSplitter\n", - "from langgraph.checkpoint.sqlite import SqliteSaver\n", + "from langgraph.checkpoint.memory import MemorySaver\n", "\n", - "memory = SqliteSaver.from_conn_string(\":memory:\")\n", + "memory = MemorySaver()\n", "llm = ChatOpenAI(model=\"gpt-3.5-turbo\", temperature=0)\n", "\n", "\n", diff --git a/docs/docs/integrations/chat/index.mdx b/docs/docs/integrations/chat/index.mdx new file mode 100644 index 0000000000000..c30c33207a5bb --- /dev/null +++ b/docs/docs/integrations/chat/index.mdx @@ -0,0 +1,30 @@ +--- +sidebar_position: 0 +sidebar_class_name: hidden +keywords: [compatibility] +--- + +# Chat models + +:::info + +If you'd like to write your own chat model, see [this how-to](/docs/how_to/custom_chat_model/). +If you'd like to contribute an integration, see [Contributing integrations](/docs/contributing/integrations/). + +::: + +## Featured Providers + +:::info +While all these LangChain classes support the indicated advanced feature, you may have +to open the provider-specific documentation to learn which hosted models or backends support +the feature. +::: + +import { CategoryTable, IndexTable } from "@theme/FeatureTables"; + + + +## All chat models + + \ No newline at end of file diff --git a/docs/docs/integrations/document_loaders/firecrawl.ipynb b/docs/docs/integrations/document_loaders/firecrawl.ipynb index f369b7c95c0ff..5a1218cb7a4aa 100644 --- a/docs/docs/integrations/document_loaders/firecrawl.ipynb +++ b/docs/docs/integrations/document_loaders/firecrawl.ipynb @@ -35,7 +35,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -78,7 +78,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -102,7 +102,7 @@ { "data": { "text/plain": [ - "Document(metadata={'ogUrl': 'https://www.firecrawl.dev/', 'title': 'Home - Firecrawl', 'robots': 'follow, index', 'ogImage': 'https://www.firecrawl.dev/og.png?123', 'ogTitle': 'Firecrawl', 'sitemap': {'lastmod': '2024-08-02T12:09:44.527Z', 'priority': 0.5, 'changefreq': 'weekly'}, 'keywords': 'Firecrawl,Markdown,Data,Mendable,Langchain', 'sourceURL': 'https://www.firecrawl.dev/', 'ogSiteName': 'Firecrawl', 'description': 'Firecrawl crawls and converts any website into clean markdown.', 'ogDescription': 'Turn any website into LLM-ready data.', 'pageStatusCode': 500, 'ogLocaleAlternate': []}, page_content='Introducing [Smart Crawl!](https://www.firecrawl.dev/smart-crawl)\\n Join the waitlist to turn any website into an API with AI\\n\\n\\n\\n[🔥 Firecrawl](/)\\n\\n* [Playground](/playground)\\n \\n* [Docs](https://docs.firecrawl.dev)\\n \\n* [Pricing](/pricing)\\n \\n* [Blog](/blog)\\n \\n* Beta Features\\n\\n[Log In](/signin)\\n[Log In](/signin)\\n[Sign Up](/signin/signup)\\n 8.6k\\n\\n[💥 Get 2 months free with yearly plan](/pricing)\\n\\nTurn websites into \\n_LLM-ready_ data\\n=====================================\\n\\nPower your AI apps with clean data crawled from any website. It\\'s also open-source.\\n\\nStart for free (500 credits)Start for free[Talk to us](https://calendly.com/d/cj83-ngq-knk/meet-firecrawl)\\n\\nA product by\\n\\n[![Mendable Logo](https://www.firecrawl.dev/images/mendable_logo_transparent.png)Mendable](https://mendable.ai)\\n\\n![Example Webpage](https://www.firecrawl.dev/multiple-websites.png)\\n\\nCrawl, Scrape, Clean\\n--------------------\\n\\nWe crawl all accessible subpages and give you clean markdown for each. No sitemap required.\\n\\n \\n [\\\\\\n {\\\\\\n \"url\": \"https://www.firecrawl.dev/\",\\\\\\n \"markdown\": \"## Welcome to Firecrawl\\\\\\n Firecrawl is a web scraper that allows you to extract the content of a webpage.\"\\\\\\n },\\\\\\n {\\\\\\n \"url\": \"https://www.firecrawl.dev/features\",\\\\\\n \"markdown\": \"## Features\\\\\\n Discover how Firecrawl\\'s cutting-edge features can \\\\\\n transform your data operations.\"\\\\\\n },\\\\\\n {\\\\\\n \"url\": \"https://www.firecrawl.dev/pricing\",\\\\\\n \"markdown\": \"## Pricing Plans\\\\\\n Choose the perfect plan that fits your needs.\"\\\\\\n },\\\\\\n {\\\\\\n \"url\": \"https://www.firecrawl.dev/about\",\\\\\\n \"markdown\": \"## About Us\\\\\\n Learn more about Firecrawl\\'s mission and the \\\\\\n team behind our innovative platform.\"\\\\\\n }\\\\\\n ]\\n \\n\\nNote: The markdown has been edited for display purposes.\\n\\nTrusted by Top Companies\\n------------------------\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/zapier.png)](https://www.zapier.com)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/gamma.svg)](https://gamma.app)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/nvidia-com.png)](https://www.nvidia.com)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/teller-io.svg)](https://www.teller.io)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/stackai.svg)](https://www.stack-ai.com)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/palladiumdigital-co-uk.svg)](https://www.palladiumdigital.co.uk)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/worldwide-casting-com.svg)](https://www.worldwide-casting.com)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/open-gov-sg.png)](https://www.open.gov.sg)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/bain-com.svg)](https://www.bain.com)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/demand-io.svg)](https://www.demand.io)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/nocodegarden-io.png)](https://www.nocodegarden.io)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/cyberagent-co-jp.svg)](https://www.cyberagent.co.jp)\\n\\nIntegrate today\\n---------------\\n\\nEnhance your applications with top-tier web scraping and crawling capabilities.\\n\\n#### Scrape\\n\\nExtract markdown or structured data from websites quickly and efficiently.\\n\\n#### Crawling\\n\\nNavigate and retrieve data from all accessible subpages, even without a sitemap.\\n\\nNode.js\\n\\nPython\\n\\ncURL\\n\\n1\\n\\n2\\n\\n3\\n\\n4\\n\\n5\\n\\n6\\n\\n7\\n\\n8\\n\\n9\\n\\n10\\n\\n// npm install @mendable/firecrawl-js \\n \\nimport FirecrawlApp from \\'@mendable/firecrawl-js\\'; \\n \\nconst app \\\\= new FirecrawlApp({ apiKey: \"fc-YOUR\\\\_API\\\\_KEY\" }); \\n \\n// Scrape a website: \\nconst scrapeResult \\\\= await app.scrapeUrl(\\'firecrawl.dev\\'); \\n \\nconsole.log(scrapeResult.data.markdown)\\n\\n#### Use well-known tools\\n\\nAlready fully integrated with the greatest existing tools and workflows.\\n\\n[![LlamaIndex](https://www.firecrawl.dev/logos/llamaindex.svg)](https://docs.llamaindex.ai/en/stable/examples/data_connectors/WebPageDemo/#using-firecrawl-reader/)\\n[![Langchain](https://www.firecrawl.dev/integrations/langchain.png)](https://python.langchain.com/v0.2/docs/integrations/document_loaders/firecrawl/)\\n[![Dify](https://www.firecrawl.dev/logos/dify.png)](https://dify.ai/blog/dify-ai-blog-integrated-with-firecrawl/)\\n[![Dify](https://www.firecrawl.dev/integrations/langflow_2.png)](https://www.langflow.org/)\\n[![Flowise](https://www.firecrawl.dev/integrations/flowise.png)](https://flowiseai.com/)\\n[![CrewAI](https://www.firecrawl.dev/integrations/crewai.png)](https://crewai.com/)\\n\\n#### Start for free, scale easily\\n\\nKick off your journey for free and scale seamlessly as your project expands.\\n\\n[Try it out](/signin/signup)\\n\\n#### Open-source\\n\\nDeveloped transparently and collaboratively. Join our community of contributors.\\n\\n[Check out our repo](https://github.com/mendableai/firecrawl)\\n\\nWe handle the hard stuff\\n------------------------\\n\\nRotating proxies, caching, rate limits, js-blocked content and more\\n\\n#### Crawling\\n\\nFirecrawl crawls all accessible subpages, even without a sitemap.\\n\\n#### Dynamic content\\n\\nFirecrawl gathers data even if a website uses javascript to render content.\\n\\n#### To Markdown\\n\\nFirecrawl returns clean, well formatted markdown - ready for use in LLM applications\\n\\n#### Crawling Orchestration\\n\\nFirecrawl orchestrates the crawling process in parallel for the fastest results.\\n\\n#### Caching\\n\\nFirecrawl caches content, so you don\\'t have to wait for a full scrape unless new content exists.\\n\\n#### Built for AI\\n\\nBuilt by LLM engineers, for LLM engineers. Giving you clean data the way you want it.\\n\\nOur wall of love\\n\\nDon\\'t take our word for it\\n--------------------------\\n\\n![Greg Kamradt](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-02.0afeb750.jpg&w=96&q=75)\\n\\nGreg Kamradt\\n\\n[@GregKamradt](https://twitter.com/GregKamradt/status/1780300642197840307)\\n\\nLLM structured data via API, handling requests, cleaning, and crawling. Enjoyed the early preview.\\n\\n![Amit Naik](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-03.ff5dbe11.jpg&w=96&q=75)\\n\\nAmit Naik\\n\\n[@suprgeek](https://twitter.com/suprgeek/status/1780338213351035254)\\n\\n#llm success with RAG relies on Retrieval. Firecrawl by @mendableai structures web content for processing. 👏\\n\\n![Jerry Liu](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-04.76bef0df.jpg&w=96&q=75)\\n\\nJerry Liu\\n\\n[@jerryjliu0](https://twitter.com/jerryjliu0/status/1781122933349572772)\\n\\nFirecrawl is awesome 🔥 Turns web pages into structured markdown for LLM apps, thanks to @mendableai.\\n\\n![Bardia Pourvakil](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-01.025350bc.jpeg&w=96&q=75)\\n\\nBardia Pourvakil\\n\\n[@thepericulum](https://twitter.com/thepericulum/status/1781397799487078874)\\n\\nThese guys ship. I wanted types for their node SDK, and less than an hour later, I got them. Can\\'t recommend them enough.\\n\\n![latentsauce 🧘🏽](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-07.c2285d35.jpeg&w=96&q=75)\\n\\nlatentsauce 🧘🏽\\n\\n[@latentsauce](https://twitter.com/latentsauce/status/1781738253927735331)\\n\\nFirecrawl simplifies data preparation significantly, exactly what I was hoping for. Thank you for creating Firecrawl ❤️❤️❤️\\n\\n![Greg Kamradt](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-02.0afeb750.jpg&w=96&q=75)\\n\\nGreg Kamradt\\n\\n[@GregKamradt](https://twitter.com/GregKamradt/status/1780300642197840307)\\n\\nLLM structured data via API, handling requests, cleaning, and crawling. Enjoyed the early preview.\\n\\n![Amit Naik](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-03.ff5dbe11.jpg&w=96&q=75)\\n\\nAmit Naik\\n\\n[@suprgeek](https://twitter.com/suprgeek/status/1780338213351035254)\\n\\n#llm success with RAG relies on Retrieval. Firecrawl by @mendableai structures web content for processing. 👏\\n\\n![Jerry Liu](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-04.76bef0df.jpg&w=96&q=75)\\n\\nJerry Liu\\n\\n[@jerryjliu0](https://twitter.com/jerryjliu0/status/1781122933349572772)\\n\\nFirecrawl is awesome 🔥 Turns web pages into structured markdown for LLM apps, thanks to @mendableai.\\n\\n![Bardia Pourvakil](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-01.025350bc.jpeg&w=96&q=75)\\n\\nBardia Pourvakil\\n\\n[@thepericulum](https://twitter.com/thepericulum/status/1781397799487078874)\\n\\nThese guys ship. I wanted types for their node SDK, and less than an hour later, I got them. Can\\'t recommend them enough.\\n\\n![latentsauce 🧘🏽](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-07.c2285d35.jpeg&w=96&q=75)\\n\\nlatentsauce 🧘🏽\\n\\n[@latentsauce](https://twitter.com/latentsauce/status/1781738253927735331)\\n\\nFirecrawl simplifies data preparation significantly, exactly what I was hoping for. Thank you for creating Firecrawl ❤️❤️❤️\\n\\n![Michael Ning](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-05.76d7cd3e.png&w=96&q=75)\\n\\nMichael Ning\\n\\n[](#)\\n\\nFirecrawl is impressive, saving us 2/3 the tokens and allowing gpt3.5turbo use over gpt4. Major savings in time and money.\\n\\n![Alex Reibman 🖇️](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-06.4ee7cf5a.jpeg&w=96&q=75)\\n\\nAlex Reibman 🖇️\\n\\n[@AlexReibman](https://twitter.com/AlexReibman/status/1780299595484131836)\\n\\nMoved our internal agent\\'s web scraping tool from Apify to Firecrawl because it benchmarked 50x faster with AgentOps.\\n\\n![Michael](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-08.0bed40be.jpeg&w=96&q=75)\\n\\nMichael\\n\\n[@michael\\\\_chomsky](#)\\n\\nI really like some of the design decisions Firecrawl made, so I really want to share with others.\\n\\n![Paul Scott](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-09.d303b5b4.png&w=96&q=75)\\n\\nPaul Scott\\n\\n[@palebluepaul](https://twitter.com/palebluepaul)\\n\\nAppreciating your lean approach, Firecrawl ticks off everything on our list without the cost prohibitive overkill.\\n\\n![Michael Ning](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-05.76d7cd3e.png&w=96&q=75)\\n\\nMichael Ning\\n\\n[](#)\\n\\nFirecrawl is impressive, saving us 2/3 the tokens and allowing gpt3.5turbo use over gpt4. Major savings in time and money.\\n\\n![Alex Reibman 🖇️](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-06.4ee7cf5a.jpeg&w=96&q=75)\\n\\nAlex Reibman 🖇️\\n\\n[@AlexReibman](https://twitter.com/AlexReibman/status/1780299595484131836)\\n\\nMoved our internal agent\\'s web scraping tool from Apify to Firecrawl because it benchmarked 50x faster with AgentOps.\\n\\n![Michael](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-08.0bed40be.jpeg&w=96&q=75)\\n\\nMichael\\n\\n[@michael\\\\_chomsky](#)\\n\\nI really like some of the design decisions Firecrawl made, so I really want to share with others.\\n\\n![Paul Scott](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-09.d303b5b4.png&w=96&q=75)\\n\\nPaul Scott\\n\\n[@palebluepaul](https://twitter.com/palebluepaul)\\n\\nAppreciating your lean approach, Firecrawl ticks off everything on our list without the cost prohibitive overkill.\\n\\nFlexible Pricing\\n----------------\\n\\nStart for free, then scale as you grow\\n\\nYearly (17% off)Yearly (2 months free)Monthly\\n\\nFree Plan\\n---------\\n\\n500 credits\\n\\n$0/month\\n\\n* Scrape 500 pages\\n* 5 /scrape per min\\n* 1 /crawl per min\\n\\nGet Started\\n\\nHobby\\n-----\\n\\n3,000 credits\\n\\n$16/month\\n\\n* Scrape 3,000 pages\\n* 10 /scrape per min\\n* 3 /crawl per min\\n\\nSubscribe\\n\\nStandardMost Popular\\n--------------------\\n\\n100,000 credits\\n\\n$83/month\\n\\n* Scrape 100,000 pages\\n* 50 /scrape per min\\n* 10 /crawl per min\\n\\nSubscribe\\n\\nGrowth\\n------\\n\\n500,000 credits\\n\\n$333/month\\n\\n* Scrape 500,000 pages\\n* 500 /scrape per min\\n* 50 /crawl per min\\n* Priority Support\\n\\nSubscribe\\n\\nEnterprise Plan\\n---------------\\n\\nUnlimited credits. Custom RPMs.\\n\\nTalk to us\\n\\n* Top priority support\\n* Feature Acceleration\\n* SLAs\\n* Account Manager\\n* Custom rate limits volume\\n* Custom concurrency limits\\n* Beta features access\\n* CEO\\'s number\\n\\n\\\\* a /scrape refers to the [scrape](https://docs.firecrawl.dev/api-reference/endpoint/scrape)\\n API endpoint.\\n\\n\\\\* a /crawl refers to the [crawl](https://docs.firecrawl.dev/api-reference/endpoint/crawl)\\n API endpoint.\\n\\nScrape Credits\\n--------------\\n\\nScrape credits are consumed for each API request, varying by endpoint and feature.\\n\\n| Features | Credits per page |\\n| --- | --- |\\n| Scrape(/scrape) | 1 |\\n| Crawl(/crawl) | 1 |\\n| Search(/search) | 1 |\\n| Scrape + LLM extraction (/scrape) | 50 |\\n\\n[](/)\\n\\nReady to _Build?_\\n-----------------\\n\\nStart scraping web data for your AI apps today. \\nNo credit card needed.\\n\\n[Get Started](/signin)\\n\\n[Talk to us](https://calendly.com/d/cj83-ngq-knk/meet-firecrawl)\\n\\nFAQ\\n---\\n\\nFrequently asked questions about Firecrawl\\n\\n#### General\\n\\nWhat is Firecrawl?\\n\\nFirecrawl turns entire websites into clean, LLM-ready markdown or structured data. Scrape, crawl and extract the web with a single API. Ideal for AI companies looking to empower their LLM applications with web data.\\n\\nWhat sites work?\\n\\nFirecrawl is best suited for business websites, docs and help centers. We currently don\\'t support social media platforms.\\n\\nWho can benefit from using Firecrawl?\\n\\nFirecrawl is tailored for LLM engineers, data scientists, AI researchers, and developers looking to harness web data for training machine learning models, market research, content aggregation, and more. It simplifies the data preparation process, allowing professionals to focus on insights and model development.\\n\\nIs Firecrawl open-source?\\n\\nYes, it is. You can check out the repository on GitHub. Keep in mind that this repository is currently in its early stages of development. We are in the process of merging custom modules into this mono repository.\\n\\n#### Scraping & Crawling\\n\\nHow does Firecrawl handle dynamic content on websites?\\n\\nUnlike traditional web scrapers, Firecrawl is equipped to handle dynamic content rendered with JavaScript. It ensures comprehensive data collection from all accessible subpages, making it a reliable tool for scraping websites that rely heavily on JS for content delivery.\\n\\nWhy is it not crawling all the pages?\\n\\nThere are a few reasons why Firecrawl may not be able to crawl all the pages of a website. Some common reasons include rate limiting, and anti-scraping mechanisms, disallowing the crawler from accessing certain pages. If you\\'re experiencing issues with the crawler, please reach out to our support team at hello@firecrawl.com.\\n\\nCan Firecrawl crawl websites without a sitemap?\\n\\nYes, Firecrawl can access and crawl all accessible subpages of a website, even in the absence of a sitemap. This feature enables users to gather data from a wide array of web sources with minimal setup.\\n\\nWhat formats can Firecrawl convert web data into?\\n\\nFirecrawl specializes in converting web data into clean, well-formatted markdown. This format is particularly suited for LLM applications, offering a structured yet flexible way to represent web content.\\n\\nHow does Firecrawl ensure the cleanliness of the data?\\n\\nFirecrawl employs advanced algorithms to clean and structure the scraped data, removing unnecessary elements and formatting the content into readable markdown. This process ensures that the data is ready for use in LLM applications without further preprocessing.\\n\\nIs Firecrawl suitable for large-scale data scraping projects?\\n\\nAbsolutely. Firecrawl offers various pricing plans, including a Scale plan that supports scraping of millions of pages. With features like caching and scheduled syncs, it\\'s designed to efficiently handle large-scale data scraping and continuous updates, making it ideal for enterprises and large projects.\\n\\nDoes it respect robots.txt?\\n\\nYes, Firecrawl crawler respects the rules set in a website\\'s robots.txt file. If you notice any issues with the way Firecrawl interacts with your website, you can adjust the robots.txt file to control the crawler\\'s behavior. Firecrawl user agent name is \\'FirecrawlAgent\\'. If you notice any behavior that is not expected, please let us know at hello@firecrawl.com.\\n\\nWhat measures does Firecrawl take to handle web scraping challenges like rate limits and caching?\\n\\nFirecrawl is built to navigate common web scraping challenges, including reverse proxies, rate limits, and caching. It smartly manages requests and employs caching techniques to minimize bandwidth usage and avoid triggering anti-scraping mechanisms, ensuring reliable data collection.\\n\\nDoes Firecrawl handle captcha or authentication?\\n\\nFirecrawl avoids captcha by using stealth proxyies. When it encounters captcha, it attempts to solve it automatically, but this is not always possible. We are working to add support for more captcha solving methods. Firecrawl can handle authentication by providing auth headers to the API.\\n\\n#### API Related\\n\\nWhere can I find my API key?\\n\\nClick on the dashboard button on the top navigation menu when logged in and you will find your API key in the main screen and under API Keys.\\n\\n#### Billing\\n\\nIs Firecrawl free?\\n\\nFirecrawl is free for the first 500 scraped pages (500 free credits). After that, you can upgrade to our Standard or Scale plans for more credits.\\n\\nIs there a pay per use plan instead of monthly?\\n\\nNo we do not currently offer a pay per use plan, instead you can upgrade to our Standard or Growth plans for more credits and higher rate limits.\\n\\nHow many credit does scraping, crawling, and extraction cost?\\n\\nScraping costs 1 credit per page. Crawling costs 1 credit per page.\\n\\nDo you charge for failed requests (scrape, crawl, extract)?\\n\\nWe do not charge for any failed requests (scrape, crawl, extract). Please contact support at help@firecrawl.dev if you have any questions.\\n\\nWhat payment methods do you accept?\\n\\nWe accept payments through Stripe which accepts most major credit cards, debit cards, and PayPal.\\n\\n[🔥](/)\\n\\n© A product by Mendable.ai - All rights reserved.\\n\\n[StatusStatus](https://firecrawl.betteruptime.com)\\n[Terms of ServiceTerms of Service](/terms-of-service)\\n[Privacy PolicyPrivacy Policy](/privacy-policy)\\n\\n[Twitter](https://twitter.com/mendableai)\\n[GitHub](https://github.com/mendableai)\\n[Discord](https://discord.gg/gSmWdAkdwd)\\n\\n###### Helpful Links\\n\\n* [Status](https://firecrawl.betteruptime.com/)\\n \\n* [Pricing](/pricing)\\n \\n* [Blog](https://www.firecrawl.dev/blog)\\n \\n* [Docs](https://docs.firecrawl.dev)\\n \\n\\nBacked by![Y Combinator Logo](https://www.firecrawl.dev/images/yc.svg)\\n\\n![SOC 2 Type II](https://www.firecrawl.dev/soc2type2badge.png)\\n\\n###### Resources\\n\\n* [Community](#0)\\n \\n* [Terms of service](#0)\\n \\n* [Collaboration features](#0)\\n \\n\\n###### Legals\\n\\n* [Refund policy](#0)\\n \\n* [Terms & Conditions](#0)\\n \\n* [Privacy policy](#0)\\n \\n* [Brand Kit](#0)')" + "Document(metadata={'ogUrl': 'https://www.firecrawl.dev/', 'title': 'Home - Firecrawl', 'robots': 'follow, index', 'ogImage': 'https://www.firecrawl.dev/og.png?123', 'ogTitle': 'Firecrawl', 'sitemap': {'lastmod': '2024-08-12T00:28:16.681Z', 'changefreq': 'weekly'}, 'keywords': 'Firecrawl,Markdown,Data,Mendable,Langchain', 'sourceURL': 'https://www.firecrawl.dev/', 'ogSiteName': 'Firecrawl', 'description': 'Firecrawl crawls and converts any website into clean markdown.', 'ogDescription': 'Turn any website into LLM-ready data.', 'pageStatusCode': 200, 'ogLocaleAlternate': []}, page_content='Introducing [Smart Crawl!](https://www.firecrawl.dev/smart-crawl)\\n Join the waitlist to turn any website into an API with AI\\n\\n\\n\\n[🔥 Firecrawl](/)\\n\\n* [Playground](/playground)\\n \\n* [Docs](https://docs.firecrawl.dev)\\n \\n* [Pricing](/pricing)\\n \\n* [Blog](/blog)\\n \\n* Beta Features\\n\\n[Log In](/signin)\\n[Log In](/signin)\\n[Sign Up](/signin/signup)\\n 8.9k\\n\\n[💥 Get 2 months free with yearly plan](/pricing)\\n\\nTurn websites into \\n_LLM-ready_ data\\n=====================================\\n\\nPower your AI apps with clean data crawled from any website. It\\'s also open-source.\\n\\nStart for free (500 credits)Start for free[Talk to us](https://calendly.com/d/cj83-ngq-knk/meet-firecrawl)\\n\\nA product by\\n\\n[![Mendable Logo](https://www.firecrawl.dev/images/mendable_logo_transparent.png)Mendable](https://mendable.ai)\\n\\n![Example Webpage](https://www.firecrawl.dev/multiple-websites.png)\\n\\nCrawl, Scrape, Clean\\n--------------------\\n\\nWe crawl all accessible subpages and give you clean markdown for each. No sitemap required.\\n\\n \\n [\\\\\\n {\\\\\\n \"url\": \"https://www.firecrawl.dev/\",\\\\\\n \"markdown\": \"## Welcome to Firecrawl\\\\\\n Firecrawl is a web scraper that allows you to extract the content of a webpage.\"\\\\\\n },\\\\\\n {\\\\\\n \"url\": \"https://www.firecrawl.dev/features\",\\\\\\n \"markdown\": \"## Features\\\\\\n Discover how Firecrawl\\'s cutting-edge features can \\\\\\n transform your data operations.\"\\\\\\n },\\\\\\n {\\\\\\n \"url\": \"https://www.firecrawl.dev/pricing\",\\\\\\n \"markdown\": \"## Pricing Plans\\\\\\n Choose the perfect plan that fits your needs.\"\\\\\\n },\\\\\\n {\\\\\\n \"url\": \"https://www.firecrawl.dev/about\",\\\\\\n \"markdown\": \"## About Us\\\\\\n Learn more about Firecrawl\\'s mission and the \\\\\\n team behind our innovative platform.\"\\\\\\n }\\\\\\n ]\\n \\n\\nNote: The markdown has been edited for display purposes.\\n\\nTrusted by Top Companies\\n------------------------\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/zapier.png)](https://www.zapier.com)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/gamma.svg)](https://gamma.app)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/nvidia-com.png)](https://www.nvidia.com)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/teller-io.svg)](https://www.teller.io)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/stackai.svg)](https://www.stack-ai.com)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/palladiumdigital-co-uk.svg)](https://www.palladiumdigital.co.uk)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/worldwide-casting-com.svg)](https://www.worldwide-casting.com)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/open-gov-sg.png)](https://www.open.gov.sg)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/bain-com.svg)](https://www.bain.com)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/demand-io.svg)](https://www.demand.io)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/nocodegarden-io.png)](https://www.nocodegarden.io)\\n\\n[![Customer Logo](https://www.firecrawl.dev/logos/cyberagent-co-jp.svg)](https://www.cyberagent.co.jp)\\n\\nIntegrate today\\n---------------\\n\\nEnhance your applications with top-tier web scraping and crawling capabilities.\\n\\n#### Scrape\\n\\nExtract markdown or structured data from websites quickly and efficiently.\\n\\n#### Crawling\\n\\nNavigate and retrieve data from all accessible subpages, even without a sitemap.\\n\\nNode.js\\n\\nPython\\n\\ncURL\\n\\n1\\n\\n2\\n\\n3\\n\\n4\\n\\n5\\n\\n6\\n\\n7\\n\\n8\\n\\n9\\n\\n10\\n\\n// npm install @mendable/firecrawl-js \\n \\nimport FirecrawlApp from \\'@mendable/firecrawl-js\\'; \\n \\nconst app \\\\= new FirecrawlApp({ apiKey: \"fc-YOUR\\\\_API\\\\_KEY\" }); \\n \\n// Scrape a website: \\nconst scrapeResult \\\\= await app.scrapeUrl(\\'firecrawl.dev\\'); \\n \\nconsole.log(scrapeResult.data.markdown)\\n\\n#### Use well-known tools\\n\\nAlready fully integrated with the greatest existing tools and workflows.\\n\\n[![LlamaIndex](https://www.firecrawl.dev/logos/llamaindex.svg)](https://docs.llamaindex.ai/en/stable/examples/data_connectors/WebPageDemo/#using-firecrawl-reader/)\\n[![Langchain](https://www.firecrawl.dev/integrations/langchain.png)](https://python.langchain.com/v0.2/docs/integrations/document_loaders/firecrawl/)\\n[![Dify](https://www.firecrawl.dev/logos/dify.png)](https://dify.ai/blog/dify-ai-blog-integrated-with-firecrawl/)\\n[![Dify](https://www.firecrawl.dev/integrations/langflow_2.png)](https://www.langflow.org/)\\n[![Flowise](https://www.firecrawl.dev/integrations/flowise.png)](https://flowiseai.com/)\\n[![CrewAI](https://www.firecrawl.dev/integrations/crewai.png)](https://crewai.com/)\\n\\n#### Start for free, scale easily\\n\\nKick off your journey for free and scale seamlessly as your project expands.\\n\\n[Try it out](/signin/signup)\\n\\n#### Open-source\\n\\nDeveloped transparently and collaboratively. Join our community of contributors.\\n\\n[Check out our repo](https://github.com/mendableai/firecrawl)\\n\\nWe handle the hard stuff\\n------------------------\\n\\nRotating proxies, caching, rate limits, js-blocked content and more\\n\\n#### Crawling\\n\\nFirecrawl crawls all accessible subpages, even without a sitemap.\\n\\n#### Dynamic content\\n\\nFirecrawl gathers data even if a website uses javascript to render content.\\n\\n#### To Markdown\\n\\nFirecrawl returns clean, well formatted markdown - ready for use in LLM applications\\n\\n#### Crawling Orchestration\\n\\nFirecrawl orchestrates the crawling process in parallel for the fastest results.\\n\\n#### Caching\\n\\nFirecrawl caches content, so you don\\'t have to wait for a full scrape unless new content exists.\\n\\n#### Built for AI\\n\\nBuilt by LLM engineers, for LLM engineers. Giving you clean data the way you want it.\\n\\nOur wall of love\\n\\nDon\\'t take our word for it\\n--------------------------\\n\\n![Greg Kamradt](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-02.0afeb750.jpg&w=96&q=75)\\n\\nGreg Kamradt\\n\\n[@GregKamradt](https://twitter.com/GregKamradt/status/1780300642197840307)\\n\\nLLM structured data via API, handling requests, cleaning, and crawling. Enjoyed the early preview.\\n\\n![Amit Naik](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-03.ff5dbe11.jpg&w=96&q=75)\\n\\nAmit Naik\\n\\n[@suprgeek](https://twitter.com/suprgeek/status/1780338213351035254)\\n\\n#llm success with RAG relies on Retrieval. Firecrawl by @mendableai structures web content for processing. 👏\\n\\n![Jerry Liu](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-04.76bef0df.jpg&w=96&q=75)\\n\\nJerry Liu\\n\\n[@jerryjliu0](https://twitter.com/jerryjliu0/status/1781122933349572772)\\n\\nFirecrawl is awesome 🔥 Turns web pages into structured markdown for LLM apps, thanks to @mendableai.\\n\\n![Bardia Pourvakil](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-01.025350bc.jpeg&w=96&q=75)\\n\\nBardia Pourvakil\\n\\n[@thepericulum](https://twitter.com/thepericulum/status/1781397799487078874)\\n\\nThese guys ship. I wanted types for their node SDK, and less than an hour later, I got them. Can\\'t recommend them enough.\\n\\n![latentsauce 🧘🏽](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-07.c2285d35.jpeg&w=96&q=75)\\n\\nlatentsauce 🧘🏽\\n\\n[@latentsauce](https://twitter.com/latentsauce/status/1781738253927735331)\\n\\nFirecrawl simplifies data preparation significantly, exactly what I was hoping for. Thank you for creating Firecrawl ❤️❤️❤️\\n\\n![Greg Kamradt](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-02.0afeb750.jpg&w=96&q=75)\\n\\nGreg Kamradt\\n\\n[@GregKamradt](https://twitter.com/GregKamradt/status/1780300642197840307)\\n\\nLLM structured data via API, handling requests, cleaning, and crawling. Enjoyed the early preview.\\n\\n![Amit Naik](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-03.ff5dbe11.jpg&w=96&q=75)\\n\\nAmit Naik\\n\\n[@suprgeek](https://twitter.com/suprgeek/status/1780338213351035254)\\n\\n#llm success with RAG relies on Retrieval. Firecrawl by @mendableai structures web content for processing. 👏\\n\\n![Jerry Liu](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-04.76bef0df.jpg&w=96&q=75)\\n\\nJerry Liu\\n\\n[@jerryjliu0](https://twitter.com/jerryjliu0/status/1781122933349572772)\\n\\nFirecrawl is awesome 🔥 Turns web pages into structured markdown for LLM apps, thanks to @mendableai.\\n\\n![Bardia Pourvakil](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-01.025350bc.jpeg&w=96&q=75)\\n\\nBardia Pourvakil\\n\\n[@thepericulum](https://twitter.com/thepericulum/status/1781397799487078874)\\n\\nThese guys ship. I wanted types for their node SDK, and less than an hour later, I got them. Can\\'t recommend them enough.\\n\\n![latentsauce 🧘🏽](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-07.c2285d35.jpeg&w=96&q=75)\\n\\nlatentsauce 🧘🏽\\n\\n[@latentsauce](https://twitter.com/latentsauce/status/1781738253927735331)\\n\\nFirecrawl simplifies data preparation significantly, exactly what I was hoping for. Thank you for creating Firecrawl ❤️❤️❤️\\n\\n![Michael Ning](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-05.76d7cd3e.png&w=96&q=75)\\n\\nMichael Ning\\n\\n[](#)\\n\\nFirecrawl is impressive, saving us 2/3 the tokens and allowing gpt3.5turbo use over gpt4. Major savings in time and money.\\n\\n![Alex Reibman 🖇️](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-06.4ee7cf5a.jpeg&w=96&q=75)\\n\\nAlex Reibman 🖇️\\n\\n[@AlexReibman](https://twitter.com/AlexReibman/status/1780299595484131836)\\n\\nMoved our internal agent\\'s web scraping tool from Apify to Firecrawl because it benchmarked 50x faster with AgentOps.\\n\\n![Michael](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-08.0bed40be.jpeg&w=96&q=75)\\n\\nMichael\\n\\n[@michael\\\\_chomsky](#)\\n\\nI really like some of the design decisions Firecrawl made, so I really want to share with others.\\n\\n![Paul Scott](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-09.d303b5b4.png&w=96&q=75)\\n\\nPaul Scott\\n\\n[@palebluepaul](https://twitter.com/palebluepaul)\\n\\nAppreciating your lean approach, Firecrawl ticks off everything on our list without the cost prohibitive overkill.\\n\\n![Michael Ning](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-05.76d7cd3e.png&w=96&q=75)\\n\\nMichael Ning\\n\\n[](#)\\n\\nFirecrawl is impressive, saving us 2/3 the tokens and allowing gpt3.5turbo use over gpt4. Major savings in time and money.\\n\\n![Alex Reibman 🖇️](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-06.4ee7cf5a.jpeg&w=96&q=75)\\n\\nAlex Reibman 🖇️\\n\\n[@AlexReibman](https://twitter.com/AlexReibman/status/1780299595484131836)\\n\\nMoved our internal agent\\'s web scraping tool from Apify to Firecrawl because it benchmarked 50x faster with AgentOps.\\n\\n![Michael](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-08.0bed40be.jpeg&w=96&q=75)\\n\\nMichael\\n\\n[@michael\\\\_chomsky](#)\\n\\nI really like some of the design decisions Firecrawl made, so I really want to share with others.\\n\\n![Paul Scott](https://www.firecrawl.dev/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Ftestimonial-09.d303b5b4.png&w=96&q=75)\\n\\nPaul Scott\\n\\n[@palebluepaul](https://twitter.com/palebluepaul)\\n\\nAppreciating your lean approach, Firecrawl ticks off everything on our list without the cost prohibitive overkill.\\n\\nFlexible Pricing\\n----------------\\n\\nStart for free, then scale as you grow\\n\\nYearly (17% off)Yearly (2 months free)Monthly\\n\\nFree Plan\\n---------\\n\\n500 credits\\n\\n$0/month\\n\\n* Scrape 500 pages\\n* 5 /scrape per min\\n* 1 /crawl per min\\n\\nGet Started\\n\\nHobby\\n-----\\n\\n3,000 credits\\n\\n$16/month\\n\\n* Scrape 3,000 pages\\n* 10 /scrape per min\\n* 3 /crawl per min\\n\\nSubscribe\\n\\nStandardMost Popular\\n--------------------\\n\\n100,000 credits\\n\\n$83/month\\n\\n* Scrape 100,000 pages\\n* 50 /scrape per min\\n* 10 /crawl per min\\n\\nSubscribe\\n\\nGrowth\\n------\\n\\n500,000 credits\\n\\n$333/month\\n\\n* Scrape 500,000 pages\\n* 500 /scrape per min\\n* 50 /crawl per min\\n* Priority Support\\n\\nSubscribe\\n\\nEnterprise Plan\\n---------------\\n\\nUnlimited credits. Custom RPMs.\\n\\nTalk to us\\n\\n* Top priority support\\n* Feature Acceleration\\n* SLAs\\n* Account Manager\\n* Custom rate limits volume\\n* Custom concurrency limits\\n* Beta features access\\n* CEO\\'s number\\n\\n\\\\* a /scrape refers to the [scrape](https://docs.firecrawl.dev/api-reference/endpoint/scrape)\\n API endpoint.\\n\\n\\\\* a /crawl refers to the [crawl](https://docs.firecrawl.dev/api-reference/endpoint/crawl)\\n API endpoint.\\n\\nScrape Credits\\n--------------\\n\\nScrape credits are consumed for each API request, varying by endpoint and feature.\\n\\n| Features | Credits per page |\\n| --- | --- |\\n| Scrape(/scrape) | 1 |\\n| Crawl(/crawl) | 1 |\\n| Search(/search) | 1 |\\n| Scrape + LLM extraction (/scrape) | 50 |\\n\\n[🔥](/)\\n\\nReady to _Build?_\\n-----------------\\n\\nStart scraping web data for your AI apps today. \\nNo credit card needed.\\n\\n[Get Started](/signin)\\n\\n[Talk to us](https://calendly.com/d/cj83-ngq-knk/meet-firecrawl)\\n\\nFAQ\\n---\\n\\nFrequently asked questions about Firecrawl\\n\\n#### General\\n\\nWhat is Firecrawl?\\n\\nFirecrawl turns entire websites into clean, LLM-ready markdown or structured data. Scrape, crawl and extract the web with a single API. Ideal for AI companies looking to empower their LLM applications with web data.\\n\\nWhat sites work?\\n\\nFirecrawl is best suited for business websites, docs and help centers. We currently don\\'t support social media platforms.\\n\\nWho can benefit from using Firecrawl?\\n\\nFirecrawl is tailored for LLM engineers, data scientists, AI researchers, and developers looking to harness web data for training machine learning models, market research, content aggregation, and more. It simplifies the data preparation process, allowing professionals to focus on insights and model development.\\n\\nIs Firecrawl open-source?\\n\\nYes, it is. You can check out the repository on GitHub. Keep in mind that this repository is currently in its early stages of development. We are in the process of merging custom modules into this mono repository.\\n\\n#### Scraping & Crawling\\n\\nHow does Firecrawl handle dynamic content on websites?\\n\\nUnlike traditional web scrapers, Firecrawl is equipped to handle dynamic content rendered with JavaScript. It ensures comprehensive data collection from all accessible subpages, making it a reliable tool for scraping websites that rely heavily on JS for content delivery.\\n\\nWhy is it not crawling all the pages?\\n\\nThere are a few reasons why Firecrawl may not be able to crawl all the pages of a website. Some common reasons include rate limiting, and anti-scraping mechanisms, disallowing the crawler from accessing certain pages. If you\\'re experiencing issues with the crawler, please reach out to our support team at hello@firecrawl.com.\\n\\nCan Firecrawl crawl websites without a sitemap?\\n\\nYes, Firecrawl can access and crawl all accessible subpages of a website, even in the absence of a sitemap. This feature enables users to gather data from a wide array of web sources with minimal setup.\\n\\nWhat formats can Firecrawl convert web data into?\\n\\nFirecrawl specializes in converting web data into clean, well-formatted markdown. This format is particularly suited for LLM applications, offering a structured yet flexible way to represent web content.\\n\\nHow does Firecrawl ensure the cleanliness of the data?\\n\\nFirecrawl employs advanced algorithms to clean and structure the scraped data, removing unnecessary elements and formatting the content into readable markdown. This process ensures that the data is ready for use in LLM applications without further preprocessing.\\n\\nIs Firecrawl suitable for large-scale data scraping projects?\\n\\nAbsolutely. Firecrawl offers various pricing plans, including a Scale plan that supports scraping of millions of pages. With features like caching and scheduled syncs, it\\'s designed to efficiently handle large-scale data scraping and continuous updates, making it ideal for enterprises and large projects.\\n\\nDoes it respect robots.txt?\\n\\nYes, Firecrawl crawler respects the rules set in a website\\'s robots.txt file. If you notice any issues with the way Firecrawl interacts with your website, you can adjust the robots.txt file to control the crawler\\'s behavior. Firecrawl user agent name is \\'FirecrawlAgent\\'. If you notice any behavior that is not expected, please let us know at hello@firecrawl.com.\\n\\nWhat measures does Firecrawl take to handle web scraping challenges like rate limits and caching?\\n\\nFirecrawl is built to navigate common web scraping challenges, including reverse proxies, rate limits, and caching. It smartly manages requests and employs caching techniques to minimize bandwidth usage and avoid triggering anti-scraping mechanisms, ensuring reliable data collection.\\n\\nDoes Firecrawl handle captcha or authentication?\\n\\nFirecrawl avoids captcha by using stealth proxyies. When it encounters captcha, it attempts to solve it automatically, but this is not always possible. We are working to add support for more captcha solving methods. Firecrawl can handle authentication by providing auth headers to the API.\\n\\n#### API Related\\n\\nWhere can I find my API key?\\n\\nClick on the dashboard button on the top navigation menu when logged in and you will find your API key in the main screen and under API Keys.\\n\\n#### Billing\\n\\nIs Firecrawl free?\\n\\nFirecrawl is free for the first 500 scraped pages (500 free credits). After that, you can upgrade to our Standard or Scale plans for more credits.\\n\\nIs there a pay per use plan instead of monthly?\\n\\nNo we do not currently offer a pay per use plan, instead you can upgrade to our Standard or Growth plans for more credits and higher rate limits.\\n\\nHow many credit does scraping, crawling, and extraction cost?\\n\\nScraping costs 1 credit per page. Crawling costs 1 credit per page.\\n\\nDo you charge for failed requests (scrape, crawl, extract)?\\n\\nWe do not charge for any failed requests (scrape, crawl, extract). Please contact support at help@firecrawl.dev if you have any questions.\\n\\nWhat payment methods do you accept?\\n\\nWe accept payments through Stripe which accepts most major credit cards, debit cards, and PayPal.\\n\\n[🔥](/)\\n\\n© A product by Mendable.ai - All rights reserved.\\n\\n[StatusStatus](https://firecrawl.betteruptime.com)\\n[Terms of ServiceTerms of Service](/terms-of-service)\\n[Privacy PolicyPrivacy Policy](/privacy-policy)\\n\\n[Twitter](https://twitter.com/mendableai)\\n[GitHub](https://github.com/mendableai)\\n[Discord](https://discord.gg/gSmWdAkdwd)\\n\\n###### Helpful Links\\n\\n* [Status](https://firecrawl.betteruptime.com/)\\n \\n* [Pricing](/pricing)\\n \\n* [Blog](https://www.firecrawl.dev/blog)\\n \\n* [Docs](https://docs.firecrawl.dev)\\n \\n\\nBacked by![Y Combinator Logo](https://www.firecrawl.dev/images/yc.svg)\\n\\n![SOC 2 Type II](https://www.firecrawl.dev/soc2type2badge.png)\\n\\n###### Resources\\n\\n* [Community](#0)\\n \\n* [Terms of service](#0)\\n \\n* [Collaboration features](#0)\\n \\n\\n###### Legals\\n\\n* [Refund policy](#0)\\n \\n* [Terms & Conditions](#0)\\n \\n* [Privacy policy](#0)\\n \\n* [Brand Kit](#0)')" ] }, "execution_count": 4, @@ -118,14 +118,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'ogUrl': 'https://www.firecrawl.dev/', 'title': 'Home - Firecrawl', 'robots': 'follow, index', 'ogImage': 'https://www.firecrawl.dev/og.png?123', 'ogTitle': 'Firecrawl', 'sitemap': {'lastmod': '2024-08-02T12:09:44.527Z', 'priority': 0.5, 'changefreq': 'weekly'}, 'keywords': 'Firecrawl,Markdown,Data,Mendable,Langchain', 'sourceURL': 'https://www.firecrawl.dev/', 'ogSiteName': 'Firecrawl', 'description': 'Firecrawl crawls and converts any website into clean markdown.', 'ogDescription': 'Turn any website into LLM-ready data.', 'pageStatusCode': 500, 'ogLocaleAlternate': []}\n" + "{'ogUrl': 'https://www.firecrawl.dev/', 'title': 'Home - Firecrawl', 'robots': 'follow, index', 'ogImage': 'https://www.firecrawl.dev/og.png?123', 'ogTitle': 'Firecrawl', 'sitemap': {'lastmod': '2024-08-12T00:28:16.681Z', 'changefreq': 'weekly'}, 'keywords': 'Firecrawl,Markdown,Data,Mendable,Langchain', 'sourceURL': 'https://www.firecrawl.dev/', 'ogSiteName': 'Firecrawl', 'description': 'Firecrawl crawls and converts any website into clean markdown.', 'ogDescription': 'Turn any website into LLM-ready data.', 'pageStatusCode': 200, 'ogLocaleAlternate': []}\n" ] } ], @@ -144,38 +144,58 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ - "page = []\n", + "pages = []\n", "for doc in loader.lazy_load():\n", - " page.append(doc)\n", - " if len(page) >= 10:\n", + " pages.append(doc)\n", + " if len(pages) >= 10:\n", " # do some paged operation, e.g.\n", " # index.upsert(page)\n", "\n", - " page = []" + " pages = []" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "1" + "8" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "len(page)" + "len(pages)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Introducing [Smart Crawl!](https://www.firecrawl.dev/smart-crawl)\n", + " Join the waitlist to turn any web\n", + "{'ogUrl': 'https://www.firecrawl.dev/blog/introducing-fire-engine-for-firecrawl', 'title': 'Introducing Fire Engine for Firecrawl', 'robots': 'follow, index', 'ogImage': 'https://www.firecrawl.dev/images/blog/fire-engine-launch.png', 'ogTitle': 'Introducing Fire Engine for Firecrawl', 'sitemap': {'lastmod': '2024-08-06T00:00:00.000Z', 'changefreq': 'weekly'}, 'keywords': 'firecrawl,fireengine,web crawling,dashboard,web scraping,LLM,data extraction', 'sourceURL': 'https://www.firecrawl.dev/blog/introducing-fire-engine-for-firecrawl', 'ogSiteName': 'Firecrawl', 'description': 'The most scalable, reliable, and fast way to get web data for Firecrawl.', 'ogDescription': 'The most scalable, reliable, and fast way to get web data for Firecrawl.', 'pageStatusCode': 200, 'ogLocaleAlternate': []}\n" + ] + } + ], + "source": [ + "print(pages[0].page_content[:100])\n", + "print(pages[0].metadata)" ] }, { diff --git a/docs/docs/integrations/document_loaders/index.mdx b/docs/docs/integrations/document_loaders/index.mdx new file mode 100644 index 0000000000000..32bb8e4f74eb1 --- /dev/null +++ b/docs/docs/integrations/document_loaders/index.mdx @@ -0,0 +1,12 @@ +--- +sidebar_position: 0 +sidebar_class_name: hidden +--- + +# Document loaders + +import { CategoryTable, IndexTable } from "@theme/FeatureTables"; + +## All document loaders + + diff --git a/docs/docs/integrations/document_loaders/pypdfloader.ipynb b/docs/docs/integrations/document_loaders/pypdfloader.ipynb index a10d096121b44..9debf5cf1837b 100644 --- a/docs/docs/integrations/document_loaders/pypdfloader.ipynb +++ b/docs/docs/integrations/document_loaders/pypdfloader.ipynb @@ -122,7 +122,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -131,21 +131,41 @@ "6" ] }, - "execution_count": 5, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "page = []\n", + "pages = []\n", "for doc in loader.lazy_load():\n", - " page.append(doc)\n", - " if len(page) >= 10:\n", + " pages.append(doc)\n", + " if len(pages) >= 10:\n", " # do some paged operation, e.g.\n", " # index.upsert(page)\n", "\n", - " page = []\n", - "len(page)" + " pages = []\n", + "len(pages)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "LayoutParser : A Unified Toolkit for DL-Based DIA 11\n", + "focuses on precision, efficiency, and robustness. \n", + "{'source': './example_data/layout-parser-paper.pdf', 'page': 10}\n" + ] + } + ], + "source": [ + "print(pages[0].page_content[:100])\n", + "print(pages[0].metadata)" ] }, { diff --git a/docs/docs/integrations/document_loaders/recursive_url.ipynb b/docs/docs/integrations/document_loaders/recursive_url.ipynb index 310fc33a5e02e..4ea5731726c97 100644 --- a/docs/docs/integrations/document_loaders/recursive_url.ipynb +++ b/docs/docs/integrations/document_loaders/recursive_url.ipynb @@ -229,14 +229,14 @@ } ], "source": [ - "page = []\n", + "pages = []\n", "for doc in loader.lazy_load():\n", - " page.append(doc)\n", - " if len(page) >= 10:\n", + " pages.append(doc)\n", + " if len(pages) >= 10:\n", " # do some paged operation, e.g.\n", " # index.upsert(page)\n", "\n", - " page = []" + " pages = []" ] }, { diff --git a/docs/docs/integrations/document_loaders/url.ipynb b/docs/docs/integrations/document_loaders/url.ipynb index 71747c7d5cd7a..0efdd3867a0cd 100644 --- a/docs/docs/integrations/document_loaders/url.ipynb +++ b/docs/docs/integrations/document_loaders/url.ipynb @@ -138,6 +138,8 @@ "source": [ "## Playwright URL Loader\n", "\n", + ">[Playwright](https://github.com/microsoft/playwright) is an open-source automation tool developed by `Microsoft` that allows you to programmatically control and automate web browsers. It is designed for end-to-end testing, scraping, and automating tasks across various web browsers such as `Chromium`, `Firefox`, and `WebKit`.\n", + "\n", "This covers how to load HTML documents from a list of URLs using the `PlaywrightURLLoader`.\n", "\n", "[Playwright](https://playwright.dev/) enables reliable end-to-end testing for modern web apps.\n", @@ -224,7 +226,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.5" + "version": "3.10.12" } }, "nbformat": 4, diff --git a/docs/docs/integrations/document_loaders/web_base.ipynb b/docs/docs/integrations/document_loaders/web_base.ipynb index 6a233b30e5ad5..e41c40244e16b 100644 --- a/docs/docs/integrations/document_loaders/web_base.ipynb +++ b/docs/docs/integrations/document_loaders/web_base.ipynb @@ -250,27 +250,80 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "id": "303d2f4e", "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "Document(metadata={'source': 'https://www.espn.com/', 'title': 'ESPN - Serving Sports Fans. Anytime. Anywhere.', 'description': 'Visit ESPN for live scores, highlights and sports news. Stream exclusive games on ESPN+ and play fantasy sports.', 'language': 'en'}, page_content=\"\\n\\n\\n\\n\\n\\n\\n\\n\\nESPN - Serving Sports Fans. Anytime. Anywhere.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n Skip to main content\\n \\n\\n Skip to navigation\\n \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n<\\n\\n>\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nMenuESPN\\n\\n\\n\\n\\n\\nscores\\n\\n\\n\\nNFLNBAMLBOlympicsSoccerWNBA…BoxingCFLNCAACricketF1GolfHorseLLWSMMANASCARNBA G LeagueNBA Summer LeagueNCAAFNCAAMNCAAWNHLNWSLPLLProfessional WrestlingRacingRN BBRN FBRugbySports BettingTennisX GamesUFLMore ESPNFantasyWatchESPN BETESPN+\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n \\n\\nSubscribe Now\\n\\n\\n\\n\\n\\nBoxing: Crawford vs. Madrimov (ESPN+ PPV)\\n\\n\\n\\n\\n\\n\\n\\nPFL Playoffs: Heavyweights & Women's Flyweights\\n\\n\\n\\n\\n\\n\\n\\nMLB\\n\\n\\n\\n\\n\\n\\n\\nLittle League Baseball: Regionals\\n\\n\\n\\n\\n\\n\\n\\nIn The Arena: Serena Williams\\n\\n\\n\\n\\n\\n\\n\\nThe 30 College Football Playoff Contenders\\n\\n\\nQuick Links\\n\\n\\n\\n\\n2024 Paris Olympics\\n\\n\\n\\n\\n\\n\\n\\nOlympics: Everything to Know\\n\\n\\n\\n\\n\\n\\n\\nMLB Standings\\n\\n\\n\\n\\n\\n\\n\\nSign up: Fantasy Football\\n\\n\\n\\n\\n\\n\\n\\nWNBA Rookie Tracker\\n\\n\\n\\n\\n\\n\\n\\nNBA Free Agency Buzz\\n\\n\\n\\n\\n\\n\\n\\nLittle League Baseball, Softball\\n\\n\\n\\n\\n\\n\\n\\nESPN Radio: Listen Live\\n\\n\\n\\n\\n\\n\\n\\nWatch Golf on ESPN\\n\\n\\n\\n\\n\\n\\nFavorites\\n\\n\\n\\n\\n\\n\\n Manage Favorites\\n \\n\\n\\n\\nCustomize ESPNCreate AccountLog InFantasy\\n\\n\\n\\n\\nFootball\\n\\n\\n\\n\\n\\n\\n\\nBaseball\\n\\n\\n\\n\\n\\n\\n\\nBasketball\\n\\n\\n\\n\\n\\n\\n\\nHockey\\n\\n\\nESPN Sites\\n\\n\\n\\n\\nESPN Deportes\\n\\n\\n\\n\\n\\n\\n\\nAndscape\\n\\n\\n\\n\\n\\n\\n\\nespnW\\n\\n\\n\\n\\n\\n\\n\\nESPNFC\\n\\n\\n\\n\\n\\n\\n\\nX Games\\n\\n\\n\\n\\n\\n\\n\\nSEC Network\\n\\n\\nESPN Apps\\n\\n\\n\\n\\nESPN\\n\\n\\n\\n\\n\\n\\n\\nESPN Fantasy\\n\\n\\n\\n\\n\\n\\n\\nTournament Challenge\\n\\n\\nFollow ESPN\\n\\n\\n\\n\\nFacebook\\n\\n\\n\\n\\n\\n\\n\\nX/Twitter\\n\\n\\n\\n\\n\\n\\n\\nInstagram\\n\\n\\n\\n\\n\\n\\n\\nSnapchat\\n\\n\\n\\n\\n\\n\\n\\nTikTok\\n\\n\\n\\n\\n\\n\\n\\nYouTube\\n\\n\\nCollege football's most entertaining conference? Why the 16-team Big 12 is wiiiiiide open this seasonLong known as one of the sport's most unpredictable conferences, the new-look Big 12 promises another dose of chaos.11hBill ConnellyScott Winters/Icon SportswireUSC, Oregon and the quest to bulk up for the Big TenTo improve on D, the Trojans wanted to bulk up for a new league. They're not the only team trying to do that.10hAdam RittenbergThe 30 teams that can reach the CFPConnelly's best games of the 2024 seasonTOP HEADLINESTeam USA sets world record in 4x400 mixed relayGermany beats France, undefeated in men's hoopsU.S. men's soccer exits Games after Morocco routHungary to protest Khelif's Olympic participationKobe's Staples Center locker sells for record $2.9MDjokovic, Alcaraz to meet again, this time for goldKerr: Team USA lineups based on players' rolesMarchand wins 200m IM; McEvoy takes 50 freeScouting Shedeur Sanders' NFL futureLATEST FROM PARISBreakout stars, best moments and what comes next: Breaking down the Games halfway throughAt the midpoint of the Olympics, we look back at some of the best moments and forward at what's still to come in the second week.35mESPNMustafa Yalcin/Anadolu via Getty ImagesThe numbers behind USA's world record in 4x400 mixed relay4h0:46Medal trackerFull resultsFull coverage of the OlympicsPRESEASON HAS BEGUN!New kickoff rules on display to start Hall of Fame Game19h0:41McAfee on NFL's new kickoff: It looks like a practice drill6h1:11NFL's new kickoff rules debut to mixed reviewsTexans-Bears attracts more bets than MLBTOP RANK BOXINGSATURDAY ON ESPN+ PPVWhy Terence Crawford is playing the long game for a chance to face CaneloCrawford is approaching Saturday's marquee matchup against Israil Madrimov with his sights set on landing a bigger one next: against Canelo Alvarez.10hMike CoppingerMark Robinson/Matchroom BoxingBradley's take: Crawford's power vs. Israil Madrimov's disciplined styleTimothy Bradley Jr. breaks down the junior middleweight title fight.2dTimothy Bradley Jr.Buy Crawford vs. Madrimov on ESPN+ PPVChance to impress for Madrimov -- and UzbekistanHOW FRIDAY WENTMORE FROM THE PARIS OLYMPICSGrant Fisher makes U.S. track history, Marchand wins 4th gold and more Friday at the Paris GamesSha'Carri Richardson made her long-awaited Olympic debut during the women's 100m preliminary round on Friday. Here's everything else you might have missed from Paris.31mESPNGetty ImagesU.S. men's loss to Morocco is a wake-up call before World CupOutclassed by Morocco, the U.S. men's Olympic team can take plenty of lessons with the World Cup on the horizon.4hSam BordenFull coverage of the OlympicsOLYMPIC MEN'S HOOPS SCOREBOARDFRIDAY'S GAMESOLYMPIC STANDOUTSWhy Simone Biles is now Stephen A.'s No. 1 Olympian7h0:58Alcaraz on the cusp of history after securing spot in gold medal match8h0:59Simone Biles' gymnastics titles: Olympics, Worlds, more statsOLYMPIC MEN'S SOCCER SCOREBOARDFRIDAY'S GAMESTRADE DEADLINE FALLOUTOlney: Eight big questions for traded MLB playersCan Jazz Chisholm Jr. handle New York? Is Jack Flaherty healthy? Will Jorge Soler's defense play? Key questions for players in new places.10hBuster OlneyWinslow Townson/Getty ImagesRanking the top prospects who changed teams at the MLB trade deadlineYou know the major leaguers who moved by now -- but what about the potential stars of tomorrow?1dKiley McDanielMLB Power RankingsSeries odds: Dodgers still on top; Phillies, Yanks behind them Top HeadlinesTeam USA sets world record in 4x400 mixed relayGermany beats France, undefeated in men's hoopsU.S. men's soccer exits Games after Morocco routHungary to protest Khelif's Olympic participationKobe's Staples Center locker sells for record $2.9MDjokovic, Alcaraz to meet again, this time for goldKerr: Team USA lineups based on players' rolesMarchand wins 200m IM; McEvoy takes 50 freeScouting Shedeur Sanders' NFL futureFavorites FantasyManage FavoritesFantasy HomeCustomize ESPNCreate AccountLog InICYMI0:47Nelson Palacio rips an incredible goal from outside the boxNelson Palacio scores an outside-of-the-box goal for Real Salt Lake in the 79th minute. \\n\\n\\nMedal Tracker\\n\\n\\n\\nCountries\\nAthletes\\n\\nOverall Medal Leaders43USA36FRA31CHNIndividual Medal LeadersGoldCHN 13FRA 11AUS 11SilverUSA 18FRA 12GBR 10BronzeUSA 16FRA 13CHN 9Overall Medal Leaders4MarchandMarchand3O'CallaghanO'Callaghan3McIntoshMcIntoshIndividual Medal LeadersGoldMarchand 4O'Callaghan 3McIntosh 2SilverSmith 3Huske 2Walsh 2BronzeYufei 3Bhaker 2Haughey 2\\n\\n\\nFull Medal Tracker\\n\\n\\nBest of ESPN+ESPNCollege Football Playoff 2024: 30 teams can reach postseasonHeather Dinich analyzes the teams with at least a 10% chance to make the CFP.AP Photo/Ross D. FranklinNFL Hall of Fame predictions: Who will make the next 10 classes?When will Richard Sherman and Marshawn Lynch make it? Who could join Aaron Donald in 2029? Let's map out each Hall of Fame class until 2034.Thearon W. Henderson/Getty ImagesMLB trade deadline 2024: Ranking prospects who changed teamsYou know the major leaguers who moved by now -- but what about the potential stars of tomorrow who went the other way in those deals? Trending NowIllustration by ESPNRanking the top 100 professional athletes since 2000Who tops our list of the top athletes since 2000? We're unveiling the top 25, including our voters' pick for the No. 1 spot.Photo by Kevin C. Cox/Getty Images2024 NFL offseason recap: Signings, coach moves, new rulesThink you missed something in the NFL offseason? We've got you covered with everything important that has happened since February.Stacy Revere/Getty ImagesTop 25 college football stadiums: Rose Bowl, Michigan and moreFourteen of ESPN's college football writers rank the 25 best stadiums in the sport. Who's No. 1, who missed the cut and what makes these stadiums so special?ESPNInside Nate Robinson's silent battle -- and his fight to liveFor nearly 20 years Nate Robinson has been fighting a silent battle -- one he didn't realize until recently could end his life. Sign up to play the #1 Fantasy game!Create A LeagueJoin Public LeagueReactivate A LeagueMock Draft NowSign up for FREE!Create A LeagueJoin a Public LeagueReactivate a LeaguePractice With a Mock DraftSign up for FREE!Create A LeagueJoin a Public LeagueReactivate a LeaguePractice with a Mock DraftGet a custom ESPN experienceEnjoy the benefits of a personalized accountSelect your favorite leagues, teams and players and get the latest scores, news and updates that matter most to you. \\n\\nESPN+\\n\\n\\n\\n\\nBoxing: Crawford vs. Madrimov (ESPN+ PPV)\\n\\n\\n\\n\\n\\n\\n\\nPFL Playoffs: Heavyweights & Women's Flyweights\\n\\n\\n\\n\\n\\n\\n\\nMLB\\n\\n\\n\\n\\n\\n\\n\\nLittle League Baseball: Regionals\\n\\n\\n\\n\\n\\n\\n\\nIn The Arena: Serena Williams\\n\\n\\n\\n\\n\\n\\n\\nThe 30 College Football Playoff Contenders\\n\\n\\nQuick Links\\n\\n\\n\\n\\n2024 Paris Olympics\\n\\n\\n\\n\\n\\n\\n\\nOlympics: Everything to Know\\n\\n\\n\\n\\n\\n\\n\\nMLB Standings\\n\\n\\n\\n\\n\\n\\n\\nSign up: Fantasy Football\\n\\n\\n\\n\\n\\n\\n\\nWNBA Rookie Tracker\\n\\n\\n\\n\\n\\n\\n\\nNBA Free Agency Buzz\\n\\n\\n\\n\\n\\n\\n\\nLittle League Baseball, Softball\\n\\n\\n\\n\\n\\n\\n\\nESPN Radio: Listen Live\\n\\n\\n\\n\\n\\n\\n\\nWatch Golf on ESPN\\n\\n\\nFantasy\\n\\n\\n\\n\\nFootball\\n\\n\\n\\n\\n\\n\\n\\nBaseball\\n\\n\\n\\n\\n\\n\\n\\nBasketball\\n\\n\\n\\n\\n\\n\\n\\nHockey\\n\\n\\nESPN Sites\\n\\n\\n\\n\\nESPN Deportes\\n\\n\\n\\n\\n\\n\\n\\nAndscape\\n\\n\\n\\n\\n\\n\\n\\nespnW\\n\\n\\n\\n\\n\\n\\n\\nESPNFC\\n\\n\\n\\n\\n\\n\\n\\nX Games\\n\\n\\n\\n\\n\\n\\n\\nSEC Network\\n\\n\\nESPN Apps\\n\\n\\n\\n\\nESPN\\n\\n\\n\\n\\n\\n\\n\\nESPN Fantasy\\n\\n\\n\\n\\n\\n\\n\\nTournament Challenge\\n\\n\\nFollow ESPN\\n\\n\\n\\n\\nFacebook\\n\\n\\n\\n\\n\\n\\n\\nX/Twitter\\n\\n\\n\\n\\n\\n\\n\\nInstagram\\n\\n\\n\\n\\n\\n\\n\\nSnapchat\\n\\n\\n\\n\\n\\n\\n\\nTikTok\\n\\n\\n\\n\\n\\n\\n\\nYouTube\\n\\n\\nTerms of UsePrivacy PolicyYour US State Privacy RightsChildren's Online Privacy PolicyInterest-Based AdsAbout Nielsen MeasurementDo Not Sell or Share My Personal InformationContact UsDisney Ad Sales SiteWork for ESPNCorrectionsESPN BET is owned and operated by PENN Entertainment, Inc. and its subsidiaries ('PENN'). ESPN BET is available in states where PENN is licensed to offer sports wagering. Must be 21+ to wager. If you or someone you know has a gambling problem and wants help, call 1-800-GAMBLER.Copyright: © 2024 ESPN Enterprises, Inc. All rights reserved.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\")" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ESPN - Serving Sports Fans. Anytime. Anywhere.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "{'source': 'https://www.espn.com/', 'title': 'ESPN - Serving Sports Fans. Anytime. Anywhere.', 'description': 'Visit ESPN for live scores, highlights and sports news. Stream exclusive games on ESPN+ and play fantasy sports.', 'language': 'en'}\n" + ] } ], "source": [ - "page = []\n", + "pages = []\n", "for doc in loader.lazy_load():\n", - " page.append(doc)\n", + " pages.append(doc)\n", "\n", - "page[0]" + "print(pages[0].page_content[:100])\n", + "print(pages[0].metadata)" ] }, { diff --git a/docs/docs/integrations/llms/anthropic.ipynb b/docs/docs/integrations/llms/anthropic.ipynb index 77c359e87126d..7db347cc1ffd1 100644 --- a/docs/docs/integrations/llms/anthropic.ipynb +++ b/docs/docs/integrations/llms/anthropic.ipynb @@ -23,7 +23,7 @@ "# AnthropicLLM\n", "\n", ":::caution\n", - "You are currently on a page documenting the use of Anthropic legacy Claude 2 models as [text completion models](/docs/concepts/#llms). The latest and most popular Anthropic models are [chat completion models](/docs/concepts/#chat-models).\n", + "You are currently on a page documenting the use of Anthropic legacy Claude 2 models as [text completion models](/docs/concepts/#llms). The latest and most popular Anthropic models are [chat completion models](/docs/concepts/#chat-models), and the text completion models have been deprecated.\n", "\n", "You are probably looking for [this page instead](/docs/integrations/chat/anthropic/).\n", ":::\n", @@ -115,14 +115,6 @@ "\n", "chain.invoke({\"question\": \"What is LangChain?\"})" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a52f765c", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/docs/docs/integrations/llms/cohere.ipynb b/docs/docs/integrations/llms/cohere.ipynb index bfd83a92ac6da..5fa336b389fb6 100644 --- a/docs/docs/integrations/llms/cohere.ipynb +++ b/docs/docs/integrations/llms/cohere.ipynb @@ -15,7 +15,14 @@ "\n", ">[Cohere](https://cohere.ai/about) is a Canadian startup that provides natural language processing models that help companies improve human-machine interactions.\n", "\n", - "Head to the [API reference](https://api.python.langchain.com/en/latest/llms/langchain_community.llms.cohere.Cohere.html) for detailed documentation of all attributes and methods." + "Head to the [API reference](https://api.python.langchain.com/en/latest/llms/langchain_community.llms.cohere.Cohere.html) for detailed documentation of all attributes and methods.\n", + "\n", + "## Overview\n", + "### Integration details\n", + "\n", + "| Class | Package | Local | Serializable | [JS support](https://js.langchain.com/v0.2/docs/integrations/llms/cohere/) | Package downloads | Package latest |\n", + "| :--- | :--- | :---: | :---: | :---: | :---: | :---: |\n", + "| [Cohere](https://api.python.langchain.com/en/latest/llms/langchain_community.llms.cohere.Cohere.html) | [langchain_community](https://api.python.langchain.com/en/latest/community_api_reference.html) | ❌ | beta | ✅ | ![PyPI - Downloads](https://img.shields.io/pypi/dm/langchain_community?style=flat-square&label=%20) | ![PyPI - Version](https://img.shields.io/pypi/v/langchain_community?style=flat-square&label=%20) |\n" ] }, { @@ -29,34 +36,43 @@ "\n", "The integration lives in the `langchain-community` package. We also need to install the `cohere` package itself. We can install these with:\n", "\n", - "```bash\n", - "pip install -U langchain-community langchain-cohere\n", - "```\n", + "### Credentials\n", "\n", - "We'll also need to get a [Cohere API key](https://cohere.com/) and set the `COHERE_API_KEY` environment variable:" + "We'll need to get a [Cohere API key](https://cohere.com/) and set the `COHERE_API_KEY` environment variable:" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "3f5dc9d7-65e3-4b5b-9086-3327d016cfe0", "metadata": { "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " ········\n" - ] - } - ], + "outputs": [], "source": [ "import getpass\n", "import os\n", "\n", - "os.environ[\"COHERE_API_KEY\"] = getpass.getpass()" + "if \"COHERE_API_KEY\" not in os.environ:\n", + " os.environ[\"COHERE_API_KEY\"] = getpass.getpass()" + ] + }, + { + "cell_type": "markdown", + "id": "ff211537", + "metadata": {}, + "source": [ + "### Installation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "318454f9", + "metadata": {}, + "outputs": [], + "source": [ + "pip install -U langchain-community langchain-cohere" ] }, { @@ -83,7 +99,7 @@ "id": "0b4e02bf-5beb-48af-a2a2-52cbcd8ebed6", "metadata": {}, "source": [ - "## Usage\n", + "## Invocation\n", "\n", "Cohere supports all [LLM](/docs/how_to#llms) functionality:" ] @@ -199,6 +215,8 @@ "id": "39198f7d-6fc8-4662-954a-37ad38c4bec4", "metadata": {}, "source": [ + "## Chaining\n", + "\n", "You can also easily combine with a prompt template for easy structuring of user input. We can do this using [LCEL](/docs/concepts#langchain-expression-language-lcel)" ] }, @@ -237,12 +255,14 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "4797d719", + "cell_type": "markdown", + "id": "ac5fcbed", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "## API reference\n", + "\n", + "For detailed documentation of all `Cohere` llm features and configurations head to the API reference: https://api.python.langchain.com/en/latest/llms/langchain_community.llms.cohere.Cohere.html" + ] } ], "metadata": { diff --git a/docs/docs/integrations/llms/fireworks.ipynb b/docs/docs/integrations/llms/fireworks.ipynb index 532ab6874cad5..9127ff4be983d 100644 --- a/docs/docs/integrations/llms/fireworks.ipynb +++ b/docs/docs/integrations/llms/fireworks.ipynb @@ -15,7 +15,14 @@ "\n", ">[Fireworks](https://app.fireworks.ai/) accelerates product development on generative AI by creating an innovative AI experiment and production platform. \n", "\n", - "This example goes over how to use LangChain to interact with `Fireworks` models." + "This example goes over how to use LangChain to interact with `Fireworks` models.\n", + "\n", + "## Overview\n", + "### Integration details\n", + "\n", + "| Class | Package | Local | Serializable | [JS support](https://js.langchain.com/v0.1/docs/integrations/llms/fireworks/) | Package downloads | Package latest |\n", + "| :--- | :--- | :---: | :---: | :---: | :---: | :---: |\n", + "| [Fireworks](https://api.python.langchain.com/en/latest/llms/langchain_fireworks.llms.Fireworks.html#langchain_fireworks.llms.Fireworks) | [langchain_fireworks](https://api.python.langchain.com/en/latest/fireworks_api_reference.html) | ❌ | ❌ | ✅ | ![PyPI - Downloads](https://img.shields.io/pypi/dm/langchain_fireworks?style=flat-square&label=%20) | ![PyPI - Version](https://img.shields.io/pypi/v/langchain_fireworks?style=flat-square&label=%20) |" ] }, { @@ -24,47 +31,72 @@ "id": "fb345268", "metadata": {}, "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "ccff689e", + "metadata": {}, "source": [ - "%pip install -qU langchain-fireworks" + "## Setup\n", + "\n", + "### Credentials \n", + "\n", + "Sign in to [Fireworks AI](http://fireworks.ai) for the an API Key to access our models, and make sure it is set as the `FIREWORKS_API_KEY` environment variable.\n", + "3. Set up your model using a model id. If the model is not set, the default model is fireworks-llama-v2-7b-chat. See the full, most up-to-date model list on [fireworks.ai](https://fireworks.ai)." ] }, { "cell_type": "code", - "execution_count": 2, - "id": "60b6dbb2", + "execution_count": 3, + "id": "9ca87a2e", "metadata": {}, "outputs": [], "source": [ - "from langchain_fireworks import Fireworks" + "import getpass\n", + "import os\n", + "\n", + "if \"FIREWORKS_API_KEY\" not in os.environ:\n", + " os.environ[\"FIREWORKS_API_KEY\"] = getpass.getpass(\"Fireworks API Key:\")" ] }, { "cell_type": "markdown", - "id": "ccff689e", + "id": "e42ced7e", "metadata": {}, "source": [ - "# Setup\n", + "### Installation\n", "\n", - "1. Make sure the `langchain-fireworks` package is installed in your environment.\n", - "2. Sign in to [Fireworks AI](http://fireworks.ai) for the an API Key to access our models, and make sure it is set as the `FIREWORKS_API_KEY` environment variable.\n", - "3. Set up your model using a model id. If the model is not set, the default model is fireworks-llama-v2-7b-chat. See the full, most up-to-date model list on [fireworks.ai](https://fireworks.ai)." + "You need to install the `langchain_fireworks` python package for the rest of the notebook to work." ] }, { "cell_type": "code", - "execution_count": 3, - "id": "9ca87a2e", + "execution_count": null, + "id": "ca824723", + "metadata": {}, + "outputs": [], + "source": [ + "%pip install -qU langchain-fireworks" + ] + }, + { + "cell_type": "markdown", + "id": "acc24d0c", + "metadata": {}, + "source": [ + "## Instantiation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d285fd7f", "metadata": {}, "outputs": [], "source": [ - "import getpass\n", - "import os\n", - "\n", "from langchain_fireworks import Fireworks\n", "\n", - "if \"FIREWORKS_API_KEY\" not in os.environ:\n", - " os.environ[\"FIREWORKS_API_KEY\"] = getpass.getpass(\"Fireworks API Key:\")\n", - "\n", "# Initialize a Fireworks model\n", "llm = Fireworks(\n", " model=\"accounts/fireworks/models/mixtral-8x7b-instruct\",\n", @@ -74,10 +106,10 @@ }, { "cell_type": "markdown", - "id": "acc24d0c", + "id": "a4c29f7b", "metadata": {}, "source": [ - "# Calling the Model Directly\n", + "## Invocation\n", "\n", "You can call the model directly with string prompts to get completions." ] @@ -98,11 +130,18 @@ } ], "source": [ - "# Single prompt\n", "output = llm.invoke(\"Who's the best quarterback in the NFL?\")\n", "print(output)" ] }, + { + "cell_type": "markdown", + "id": "b0283343", + "metadata": {}, + "source": [ + "### Invoking with multiple prompts" + ] + }, { "cell_type": "code", "execution_count": 5, @@ -128,6 +167,14 @@ "print(output.generations)" ] }, + { + "cell_type": "markdown", + "id": "f18f5717", + "metadata": {}, + "source": [ + "### Invoking with additional parameters" + ] + }, { "cell_type": "code", "execution_count": 7, @@ -158,7 +205,7 @@ "id": "137662a6", "metadata": {}, "source": [ - "# Simple Chain with Non-Chat Model" + "## Chaining" ] }, { @@ -206,6 +253,8 @@ "id": "d0a29826", "metadata": {}, "source": [ + "## Streaming\n", + "\n", "You can stream the output, if you want." ] }, @@ -233,12 +282,14 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "fcc0eecb", + "cell_type": "markdown", + "id": "692c5e76", "metadata": {}, - "outputs": [], - "source": [] + "source": [ + "## API reference\n", + "\n", + "For detailed documentation of all `Fireworks` LLM features and configurations head to the API reference: https://api.python.langchain.com/en/latest/llms/langchain_fireworks.llms.Fireworks.html#langchain_fireworks.llms.Fireworks" + ] } ], "metadata": { diff --git a/docs/docs/integrations/llms/index.mdx b/docs/docs/integrations/llms/index.mdx new file mode 100644 index 0000000000000..3d8869f235f91 --- /dev/null +++ b/docs/docs/integrations/llms/index.mdx @@ -0,0 +1,30 @@ +--- +sidebar_position: 0 +sidebar_class_name: hidden +keywords: [compatibility] +--- + +# LLMs + +:::info + +If you'd like to write your own LLM, see [this how-to](/docs/how_to/custom_llm/). +If you'd like to contribute an integration, see [Contributing integrations](/docs/contributing/integrations/). + +::: + +## Features (natively supported) +All LLMs implement the Runnable interface, which comes with default implementations of all methods, ie. `ainvoke`, `batch`, `abatch`, `stream`, `astream`. This gives all LLMs basic support for async, streaming and batch, which by default is implemented as below: +- *Async* support defaults to calling the respective sync method in asyncio's default thread pool executor. This lets other async functions in your application make progress while the LLM is being executed, by moving this call to a background thread. +- *Streaming* support defaults to returning an `Iterator` (or `AsyncIterator` in the case of async streaming) of a single value, the final result returned by the underlying LLM provider. This obviously doesn't give you token-by-token streaming, which requires native support from the LLM provider, but ensures your code that expects an iterator of tokens can work for any of our LLM integrations. +- *Batch* support defaults to calling the underlying LLM in parallel for each input by making use of a thread pool executor (in the sync batch case) or `asyncio.gather` (in the async batch case). The concurrency can be controlled with the `max_concurrency` key in `RunnableConfig`. + +Each LLM integration can optionally provide native implementations for async, streaming or batch, which, for providers that support it, can be more efficient. The table shows, for each integration, which features have been implemented with native support. + +import { CategoryTable, IndexTable } from "@theme/FeatureTables"; + + + +## All LLMs + + diff --git a/docs/docs/integrations/llms/openai.ipynb b/docs/docs/integrations/llms/openai.ipynb index 92dce56dac587..398a48d26d4fb 100644 --- a/docs/docs/integrations/llms/openai.ipynb +++ b/docs/docs/integrations/llms/openai.ipynb @@ -19,127 +19,139 @@ ] }, { - "cell_type": "code", - "execution_count": 1, - "id": "5d71df86-8a17-4283-83d7-4e46e7c06c44", - "metadata": { - "tags": [] - }, - "outputs": [], + "cell_type": "markdown", + "id": "74312161", + "metadata": {}, "source": [ - "# get a token: https://platform.openai.com/account/api-keys\n", + "## Overview\n", + "\n", + "### Integration details\n", + "| Class | Package | Local | Serializable | [JS support](https://js.langchain.com/v0.2/docs/integrations/chat/openai) | Package downloads | Package latest |\n", + "| :--- | :--- | :---: | :---: | :---: | :---: | :---: |\n", + "| [ChatOpenAI](https://api.python.langchain.com/en/latest/chat_models/langchain_openai.chat_models.base.ChatOpenAI.html) | [langchain-openai](https://api.python.langchain.com/en/latest/openai_api_reference.html) | ❌ | beta | ✅ | ![PyPI - Downloads](https://img.shields.io/pypi/dm/langchain-openai?style=flat-square&label=%20) | ![PyPI - Version](https://img.shields.io/pypi/v/langchain-openai?style=flat-square&label=%20) |\n", + "\n", "\n", - "from getpass import getpass\n", + "## Setup\n", "\n", - "OPENAI_API_KEY = getpass()" + "To access OpenAI models you'll need to create an OpenAI account, get an API key, and install the `langchain-openai` integration package.\n", + "\n", + "### Credentials\n", + "\n", + "Head to https://platform.openai.com to sign up to OpenAI and generate an API key. Once you've done this set the OPENAI_API_KEY environment variable:" ] }, { "cell_type": "code", - "execution_count": 2, - "id": "5472a7cd-af26-48ca-ae9b-5f6ae73c74d2", - "metadata": { - "tags": [] - }, - "outputs": [], + "execution_count": null, + "id": "efcdb2b6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Enter your OpenAI API key: ········\n" + ] + } + ], "source": [ + "import getpass\n", "import os\n", "\n", - "os.environ[\"OPENAI_API_KEY\"] = OPENAI_API_KEY" + "if \"OPENAI_API_KEY\" not in os.environ:\n", + " os.environ[\"OPENAI_API_KEY\"] = getpass.getpass(\"Enter your OpenAI API key: \")" ] }, { "cell_type": "markdown", - "id": "129a3275", + "id": "f5d528fa", "metadata": {}, "source": [ - "Should you need to specify your organization ID, you can use the following cell. However, it is not required if you are only part of a single organization or intend to use your default organization. You can check your default organization [here](https://platform.openai.com/account/api-keys).\n", - "\n", - "To specify your organization, you can use this:\n", - "```python\n", - "OPENAI_ORGANIZATION = getpass()\n", - "\n", - "os.environ[\"OPENAI_ORGANIZATION\"] = OPENAI_ORGANIZATION\n", - "```" + "If you want to get automated best in-class tracing of your model calls you can also set your [LangSmith](https://docs.smith.langchain.com/) API key by uncommenting below:" ] }, { "cell_type": "code", - "execution_count": 1, - "id": "6fb585dd", - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "52fa46e8", + "metadata": {}, "outputs": [], "source": [ - "from langchain_core.prompts import PromptTemplate\n", - "from langchain_openai import OpenAI" + "# os.environ[\"LANGSMITH_API_KEY\"] = getpass.getpass(\"Enter your LangSmith API key: \")\n", + "# os.environ[\"LANGSMITH_TRACING\"] = \"true\"" ] }, { - "cell_type": "code", - "execution_count": 2, - "id": "035dea0f", - "metadata": { - "tags": [] - }, - "outputs": [], + "cell_type": "markdown", + "id": "0fad78d8", + "metadata": {}, "source": [ - "template = \"\"\"Question: {question}\n", - "\n", - "Answer: Let's think step by step.\"\"\"\n", + "### Installation\n", "\n", - "prompt = PromptTemplate.from_template(template)" + "The LangChain OpenAI integration lives in the `langchain-openai` package:" ] }, { "cell_type": "code", - "execution_count": 3, - "id": "3f3458d9", - "metadata": { - "tags": [] - }, + "execution_count": null, + "id": "2e300149", + "metadata": {}, "outputs": [], "source": [ - "llm = OpenAI()" + "%pip install -qU langchain-openai" ] }, { "cell_type": "markdown", - "id": "4fc152cd", + "id": "129a3275", "metadata": {}, "source": [ - "If you manually want to specify your OpenAI API key and/or organization ID, you can use the following:\n", + "Should you need to specify your organization ID, you can use the following cell. However, it is not required if you are only part of a single organization or intend to use your default organization. You can check your default organization [here](https://platform.openai.com/account/api-keys).\n", + "\n", + "To specify your organization, you can use this:\n", "```python\n", - "llm = OpenAI(openai_api_key=\"YOUR_API_KEY\", openai_organization=\"YOUR_ORGANIZATION_ID\")\n", + "OPENAI_ORGANIZATION = getpass()\n", + "\n", + "os.environ[\"OPENAI_ORGANIZATION\"] = OPENAI_ORGANIZATION\n", "```\n", - "Remove the openai_organization parameter should it not apply to you." + "\n", + "## Instantiation\n", + "\n", + "Now we can instantiate our model object and generate chat completions:" ] }, { "cell_type": "code", - "execution_count": 4, - "id": "a641dbd9", + "execution_count": 1, + "id": "6fb585dd", "metadata": { "tags": [] }, "outputs": [], "source": [ - "llm_chain = prompt | llm" + "from langchain_openai import OpenAI\n", + "\n", + "llm = OpenAI()" + ] + }, + { + "cell_type": "markdown", + "id": "464003c1", + "metadata": {}, + "source": [ + "## Invocation" ] }, { "cell_type": "code", "execution_count": 5, - "id": "9f844993", - "metadata": { - "tags": [] - }, + "id": "85b49da0", + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "' Justin Bieber was born on March 1, 1994. The Super Bowl is typically played in late January or early February. So, we need to look at the Super Bowl from 1994. In 1994, the Super Bowl was Super Bowl XXVIII, played on January 30, 1994. The winning team of that Super Bowl was the Dallas Cowboys.'" + "\"\\n\\nI'm an AI language model created by OpenAI, so I don't have feelings or emotions. But thank you for asking! How can I assist you today?\"" ] }, "execution_count": 5, @@ -148,9 +160,37 @@ } ], "source": [ - "question = \"What NFL team won the Super Bowl in the year Justin Beiber was born?\"\n", + "llm.invoke(\"Hello how are you?\")" + ] + }, + { + "cell_type": "markdown", + "id": "2b7e0dfc", + "metadata": {}, + "source": [ + "## Chaining" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a641dbd9", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from langchain_core.prompts import PromptTemplate\n", "\n", - "llm_chain.invoke(question)" + "prompt = PromptTemplate(\"How to say {input} in {output_language}:\\n\")\n", + "\n", + "chain = prompt | llm\n", + "chain.invoke(\n", + " {\n", + " \"output_language\": \"German\",\n", + " \"input\": \"I love programming.\",\n", + " }\n", + ")" ] }, { @@ -158,6 +198,8 @@ "id": "58a9ddb1", "metadata": {}, "source": [ + "## Using a proxy\n", + "\n", "If you are behind an explicit proxy, you can specify the http_client to pass through" ] }, @@ -168,11 +210,24 @@ "metadata": {}, "outputs": [], "source": [ - "pip install httpx\n", + "%pip install httpx\n", "\n", "import httpx\n", "\n", - "openai = OpenAI(model_name=\"gpt-3.5-turbo-instruct\", http_client=httpx.Client(proxies=\"http://proxy.yourcompany.com:8080\"))" + "openai = OpenAI(\n", + " model_name=\"gpt-3.5-turbo-instruct\",\n", + " http_client=httpx.Client(proxies=\"http://proxy.yourcompany.com:8080\"),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "73e207dd", + "metadata": {}, + "source": [ + "## API reference\n", + "\n", + "For detailed documentation of all `OpenAI` llm features and configurations head to the API reference: https://api.python.langchain.com/en/latest/llms/langchain_openai.llms.base.OpenAI.html" ] } ], @@ -192,7 +247,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.6" + "version": "3.11.9" }, "vscode": { "interpreter": { diff --git a/docs/docs/integrations/llms/runhouse.ipynb b/docs/docs/integrations/llms/runhouse.ipynb index c086f9c5d4a4b..d4ff8e80dd0f1 100644 --- a/docs/docs/integrations/llms/runhouse.ipynb +++ b/docs/docs/integrations/llms/runhouse.ipynb @@ -7,7 +7,7 @@ "source": [ "# Runhouse\n", "\n", - "The [Runhouse](https://github.com/run-house/runhouse) allows remote compute and data across environments and users. See the [Runhouse docs](https://runhouse-docs.readthedocs-hosted.com/en/latest/).\n", + "[Runhouse](https://github.com/run-house/runhouse) allows remote compute and data across environments and users. See the [Runhouse docs](https://www.run.house/docs).\n", "\n", "This example goes over how to use LangChain and [Runhouse](https://github.com/run-house/runhouse) to interact with models hosted on your own GPU, or on-demand GPUs on AWS, GCP, AWS, or Lambda.\n", "\n", diff --git a/docs/docs/integrations/platforms/microsoft.mdx b/docs/docs/integrations/platforms/microsoft.mdx index 41ac746d8dc29..180b021963e03 100644 --- a/docs/docs/integrations/platforms/microsoft.mdx +++ b/docs/docs/integrations/platforms/microsoft.mdx @@ -237,6 +237,26 @@ See a [usage example](/docs/integrations/document_loaders/microsoft_onenote). from langchain_community.document_loaders.onenote import OneNoteLoader ``` +### Playwright URL Loader + +>[Playwright](https://github.com/microsoft/playwright) is an open-source automation tool +> developed by `Microsoft` that allows you to programmatically control and automate +> web browsers. It is designed for end-to-end testing, scraping, and automating +> tasks across various web browsers such as `Chromium`, `Firefox`, and `WebKit`. + + +First, let's install dependencies: + +```bash +pip install playwright unstructured +``` + +See a [usage example](/docs/integrations/document_loaders/url/#playwright-url-loader). + +```python +from langchain_community.document_loaders.onenote import OneNoteLoader +``` + ## AI Agent Memory System [AI agent](https://learn.microsoft.com/en-us/azure/cosmos-db/ai-agents) needs robust memory systems that support multi-modality, offer strong operational performance, and enable agent memory sharing as well as separation. @@ -406,6 +426,24 @@ from langchain_community.agent_toolkits import PowerBIToolkit from langchain_community.utilities.powerbi import PowerBIDataset ``` +### PlayWright Browser Toolkit + +>[Playwright](https://github.com/microsoft/playwright) is an open-source automation tool +> developed by `Microsoft` that allows you to programmatically control and automate +> web browsers. It is designed for end-to-end testing, scraping, and automating +> tasks across various web browsers such as `Chromium`, `Firefox`, and `WebKit`. + +We need to install several python packages. + +```bash +pip install playwright lxml +``` + +See a [usage example](/docs/integrations/tools/playwright). + +```python +from langchain_community.agent_toolkits import PlayWrightBrowserToolkit +``` ## Graphs diff --git a/docs/docs/integrations/providers/ieit_systems.mdx b/docs/docs/integrations/providers/ieit_systems.mdx new file mode 100644 index 0000000000000..d81d0be3f7484 --- /dev/null +++ b/docs/docs/integrations/providers/ieit_systems.mdx @@ -0,0 +1,31 @@ +# IEIT Systems + +>[IEIT Systems](https://en.ieisystem.com/) is a Chinese information technology company +> established in 1999. It provides the IT infrastructure products, solutions, +> and services, innovative IT products and solutions across cloud computing, +> big data, and artificial intelligence. + + +## LLMs + +See a [usage example](/docs/integrations/llms/yuan2). + +```python +from langchain_community.llms.yuan2 import Yuan2 +``` + +## Chat models + +See the [installation instructions](/docs/integrations/chat/yuan2/#setting-up-your-api-server). + +Yuan2.0 provided an OpenAI compatible API, and ChatYuan2 is integrated into langchain by using `OpenAI client`. +Therefore, ensure the `openai` package is installed. + +```bash +pip install openai +``` +See a [usage example](/docs/integrations/chat/yuan2). + +```python +from langchain_community.chat_models import ChatYuan2 +``` diff --git a/docs/docs/integrations/providers/iflytek.mdx b/docs/docs/integrations/providers/iflytek.mdx new file mode 100644 index 0000000000000..9852830511cf0 --- /dev/null +++ b/docs/docs/integrations/providers/iflytek.mdx @@ -0,0 +1,38 @@ +# iFlytek + +>[iFlytek](https://www.iflytek.com) is a Chinese information technology company +> established in 1999. It creates voice recognition software and +> voice-based internet/mobile products covering education, communication, +> music, intelligent toys industries. + + +## Installation and Setup + +- Get `SparkLLM` app_id, api_key and api_secret from [iFlyTek SparkLLM API Console](https://console.xfyun.cn/services/bm3) (for more info, see [iFlyTek SparkLLM Intro](https://xinghuo.xfyun.cn/sparkapi)). +- Install the Python package (not for the embedding models): + +```bash +pip install websocket-client +``` + +## LLMs + +See a [usage example](/docs/integrations/llms/sparkllm). + +```python +from langchain_community.llms import SparkLLM +``` + +## Chat models + +See a [usage example](/docs/integrations/chat/sparkllm). + +```python +from langchain_community.chat_models import ChatSparkLLM +``` + +## Embedding models + +```python +from langchain_community.embeddings import SparkLLMTextEmbeddings +``` diff --git a/docs/docs/integrations/providers/zhipuai.mdx b/docs/docs/integrations/providers/zhipuai.mdx new file mode 100644 index 0000000000000..0bcad6c4f4850 --- /dev/null +++ b/docs/docs/integrations/providers/zhipuai.mdx @@ -0,0 +1,18 @@ +# Zhipu AI + +>[Zhipu AI](https://www.zhipuai.cn/en/aboutus), originating from the technological +> advancements of `Tsinghua University's Computer Science Department`, +> is an artificial intelligence company with the mission of teaching machines +> to think like humans. Its world-leading AI team has developed the cutting-edge +> large language and multimodal models and built the high-precision billion-scale +> knowledge graphs, the combination of which uniquely empowers us to create a powerful +> data- and knowledge-driven cognitive engine towards artificial general intelligence. + + +## Chat models + +See a [usage example](/docs/integrations/chat/zhipuai). + +```python +from langchain_community.chat_models import ChatZhipuAI +``` diff --git a/docs/docs/integrations/retrievers/arxiv.ipynb b/docs/docs/integrations/retrievers/arxiv.ipynb index 5e56ce2a418cd..9fb9271ed90b1 100644 --- a/docs/docs/integrations/retrievers/arxiv.ipynb +++ b/docs/docs/integrations/retrievers/arxiv.ipynb @@ -1,7 +1,7 @@ { "cells": [ { - "cell_type": "markdown", + "cell_type": "raw", "id": "00a924a0-57e2-43fa-95dc-3ea48a56d3a5", "metadata": {}, "source": [ @@ -17,8 +17,6 @@ "source": [ "# ArxivRetriever\n", "\n", - "## Overview\n", - "\n", ">[arXiv](https://arxiv.org/) is an open-access archive for 2 million scholarly articles in the fields of physics, mathematics, computer science, quantitative biology, quantitative finance, statistics, electrical engineering and systems science, and economics.\n", "\n", "This notebook shows how to retrieve scientific articles from Arxiv.org into the [Document](https://api.python.langchain.com/en/latest/documents/langchain_core.documents.base.Document.html) format that is used downstream.\n", @@ -27,9 +25,9 @@ "\n", "### Integration details\n", "\n", - "| Retriever | Source | Package |\n", - "| :--- | :--- | :---: |\n", - "[ArxivRetriever](https://api.python.langchain.com/en/latest/retrievers/langchain_community.retrievers.arxiv.ArxivRetriever.html) | Scholarly articles on [arxiv.org](https://arxiv.org/) | langchain_community |\n", + "import {ItemTable} from \"@theme/FeatureTables\";\n", + "\n", + "\n", "\n", "## Setup\n", "\n", diff --git a/docs/docs/integrations/retrievers/azure_ai_search.ipynb b/docs/docs/integrations/retrievers/azure_ai_search.ipynb index 29f933c7148e9..c564884edb840 100644 --- a/docs/docs/integrations/retrievers/azure_ai_search.ipynb +++ b/docs/docs/integrations/retrievers/azure_ai_search.ipynb @@ -1,7 +1,7 @@ { "cells": [ { - "cell_type": "markdown", + "cell_type": "raw", "id": "f9a62e19-b00b-4f6c-a700-1e500e4c290a", "metadata": {}, "source": [ @@ -17,7 +17,6 @@ "source": [ "# AzureAISearchRetriever\n", "\n", - "## Overview\n", "[Azure AI Search](https://learn.microsoft.com/azure/search/search-what-is-azure-search) (formerly known as `Azure Cognitive Search`) is a Microsoft cloud search service that gives developers infrastructure, APIs, and tools for information retrieval of vector, keyword, and hybrid queries at scale.\n", "\n", "`AzureAISearchRetriever` is an integration module that returns documents from an unstructured query. It's based on the BaseRetriever class and it targets the 2023-11-01 stable REST API version of Azure AI Search, which means it supports vector indexing and queries.\n", @@ -28,9 +27,9 @@ "\n", "### Integration details\n", "\n", - "| Retriever | Self-host | Cloud offering | Package |\n", - "| :--- | :--- | :---: | :---: |\n", - "[AzureAISearchRetriever](https://api.python.langchain.com/en/latest/retrievers/langchain_community.retrievers.azure_ai_search.AzureAISearchRetriever.html) | ❌ | ✅ | langchain_community |\n", + "import {ItemTable} from \"@theme/FeatureTables\";\n", + "\n", + "\n", "\n", "\n", "## Setup\n", diff --git a/docs/docs/integrations/retrievers/bedrock.ipynb b/docs/docs/integrations/retrievers/bedrock.ipynb index b5ad52bc42ede..d7a5099193c81 100644 --- a/docs/docs/integrations/retrievers/bedrock.ipynb +++ b/docs/docs/integrations/retrievers/bedrock.ipynb @@ -1,7 +1,7 @@ { "cells": [ { - "cell_type": "markdown", + "cell_type": "raw", "id": "b0872249-1af5-4d54-b816-1babad7a8c9e", "metadata": {}, "source": [ @@ -17,8 +17,6 @@ "source": [ "# Bedrock (Knowledge Bases) Retriever\n", "\n", - "## Overview\n", - "\n", "This guide will help you getting started with the AWS Knowledge Bases [retriever](/docs/concepts/#retrievers).\n", "\n", "[Knowledge Bases for Amazon Bedrock](https://aws.amazon.com/bedrock/knowledge-bases/) is an Amazon Web Services (AWS) offering which lets you quickly build RAG applications by using your private data to customize FM response.\n", @@ -29,9 +27,9 @@ "\n", "### Integration details\n", "\n", - "| Retriever | Self-host | Cloud offering | Package |\n", - "| :--- | :--- | :---: | :---: |\n", - "[AmazonKnowledgeBasesRetriever](https://api.python.langchain.com/en/latest/retrievers/langchain_aws.retrievers.bedrock.AmazonKnowledgeBasesRetriever.html) | ❌ | ✅ | langchain_aws |\n" + "import {ItemTable} from \"@theme/FeatureTables\";\n", + "\n", + "\n" ] }, { diff --git a/docs/docs/integrations/retrievers/elasticsearch_retriever.ipynb b/docs/docs/integrations/retrievers/elasticsearch_retriever.ipynb index b7e6b755508e2..282360b7b9ab0 100644 --- a/docs/docs/integrations/retrievers/elasticsearch_retriever.ipynb +++ b/docs/docs/integrations/retrievers/elasticsearch_retriever.ipynb @@ -1,7 +1,7 @@ { "cells": [ { - "cell_type": "markdown", + "cell_type": "raw", "id": "41ccce84-f6d9-4ba0-8281-22cbf29f20d3", "metadata": {}, "source": [ @@ -17,7 +17,6 @@ "source": [ "# ElasticsearchRetriever\n", "\n", - "## Overview\n", ">[Elasticsearch](https://www.elastic.co/elasticsearch/) is a distributed, RESTful search and analytics engine. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. It supports keyword search, vector search, hybrid search and complex filtering.\n", "\n", "The `ElasticsearchRetriever` is a generic wrapper to enable flexible access to all `Elasticsearch` features through the [Query DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html). For most use cases the other classes (`ElasticsearchStore`, `ElasticsearchEmbeddings`, etc.) should suffice, but if they don't you can use `ElasticsearchRetriever`.\n", @@ -26,9 +25,9 @@ "\n", "### Integration details\n", "\n", - "| Retriever | Self-host | Cloud offering | Package |\n", - "| :--- | :--- | :---: | :---: |\n", - "[ElasticsearchRetriever](https://api.python.langchain.com/en/latest/retrievers/langchain_elasticsearch.retrievers.ElasticsearchRetriever.html) | ✅ | ✅ | langchain_elasticsearch |\n", + "import {ItemTable} from \"@theme/FeatureTables\";\n", + "\n", + "\n", "\n", "\n", "## Setup\n", diff --git a/docs/docs/integrations/retrievers/google_vertex_ai_search.ipynb b/docs/docs/integrations/retrievers/google_vertex_ai_search.ipynb index 8a254a1a85a56..7f16b66499cc5 100644 --- a/docs/docs/integrations/retrievers/google_vertex_ai_search.ipynb +++ b/docs/docs/integrations/retrievers/google_vertex_ai_search.ipynb @@ -1,7 +1,7 @@ { "cells": [ { - "cell_type": "markdown", + "cell_type": "raw", "metadata": {}, "source": [ "---\n", @@ -15,8 +15,6 @@ "source": [ "# Google Vertex AI Search\n", "\n", - "## Overview\n", - "\n", ">[Google Vertex AI Search](https://cloud.google.com/enterprise-search) (formerly known as `Enterprise Search` on `Generative AI App Builder`) is a part of the [Vertex AI](https://cloud.google.com/vertex-ai) machine learning platform offered by `Google Cloud`.\n", ">\n", ">`Vertex AI Search` lets organizations quickly build generative AI-powered search engines for customers and employees. It's underpinned by a variety of `Google Search` technologies, including semantic search, which helps deliver more relevant results than traditional keyword-based search techniques by using natural language processing and machine learning techniques to infer relationships within the content and intent from the user’s query input. Vertex AI Search also benefits from Google’s expertise in understanding how users search and factors in content relevance to order displayed results.\n", @@ -29,9 +27,9 @@ "\n", "### Integration details\n", "\n", - "| Retriever | Self-host | Cloud offering | Package |\n", - "| :--- | :--- | :---: | :---: |\n", - "[VertexAISearchRetriever](https://api.python.langchain.com/en/latest/vertex_ai_search/langchain_google_community.vertex_ai_search.VertexAISearchRetriever.html) | ❌ | ✅ | langchain_google_community |\n", + "import {ItemTable} from \"@theme/FeatureTables\";\n", + "\n", + "\n", "\n", "\n", "## Setup\n", diff --git a/docs/docs/integrations/retrievers/index.mdx b/docs/docs/integrations/retrievers/index.mdx index df29551331f07..39d65f936eba3 100644 --- a/docs/docs/integrations/retrievers/index.mdx +++ b/docs/docs/integrations/retrievers/index.mdx @@ -3,6 +3,8 @@ sidebar_position: 0 sidebar_class_name: hidden --- +import {CategoryTable, IndexTable} from '@theme/FeatureTables' + # Retrievers A [retriever](/docs/concepts/#retrievers) is an interface that returns documents given an unstructured query. @@ -22,20 +24,14 @@ This page lists custom retrievers, implemented via subclassing [BaseRetriever](/ The below retrievers allow you to index and search a custom corpus of documents. -| Retriever | Self-host | Cloud offering | Package | -|-----------|-----------|----------------|---------| -| [AmazonKnowledgeBasesRetriever](/docs/integrations/retrievers/bedrock) | ❌ | ✅ | [langchain_aws](https://api.python.langchain.com/en/latest/retrievers/langchain_aws.retrievers.bedrock.AmazonKnowledgeBasesRetriever.html) | -| [AzureAISearchRetriever](/docs/integrations/retrievers/azure_ai_search) | ❌ | ✅ | [langchain_community](https://api.python.langchain.com/en/latest/retrievers/langchain_community.retrievers.azure_ai_search.AzureAISearchRetriever.html) | -| [ElasticsearchRetriever](/docs/integrations/retrievers/elasticsearch_retriever) | ✅ | ✅ | [langchain_elasticsearch](https://api.python.langchain.com/en/latest/retrievers/langchain_elasticsearch.retrievers.ElasticsearchRetriever.html) | -| [MilvusCollectionHybridSearchRetriever](/docs/integrations/retrievers/milvus_hybrid_search) | ✅ | ❌ | [langchain_milvus](https://api.python.langchain.com/en/latest/retrievers/langchain_milvus.retrievers.milvus_hybrid_search.MilvusCollectionHybridSearchRetriever.html) | -| [VertexAISearchRetriever](/docs/integrations/retrievers/google_vertex_ai_search) | ❌ | ✅ | [langchain_google_community](https://api.python.langchain.com/en/latest/vertex_ai_search/langchain_google_community.vertex_ai_search.VertexAISearchRetriever.html) | + ## External index The below retrievers will search over an external index (e.g., constructed from Internet data or similar). -| Retriever | Source | Package | -|-----------|--------|---------| -| [ArxivRetriever](/docs/integrations/retrievers/arxiv) | Scholarly articles on [arxiv.org](https://arxiv.org/) | [langchain_community](https://api.python.langchain.com/en/latest/retrievers/langchain_community.retrievers.arxiv.ArxivRetriever.html) | -| [TavilySearchAPIRetriever](/docs/integrations/retrievers/tavily) | Internet search | [langchain_community](https://api.python.langchain.com/en/latest/retrievers/langchain_community.retrievers.tavily_search_api.TavilySearchAPIRetriever.html) | -| [WikipediaRetriever](/docs/integrations/retrievers/wikipedia) | [Wikipedia](https://www.wikipedia.org/) articles | [langchain_community](https://api.python.langchain.com/en/latest/retrievers/langchain_community.retrievers.wikipedia.WikipediaRetriever.html) | + + +## All retrievers + + diff --git a/docs/docs/integrations/retrievers/milvus_hybrid_search.ipynb b/docs/docs/integrations/retrievers/milvus_hybrid_search.ipynb index dcd4c8cc7bc78..ecbffde98874e 100644 --- a/docs/docs/integrations/retrievers/milvus_hybrid_search.ipynb +++ b/docs/docs/integrations/retrievers/milvus_hybrid_search.ipynb @@ -1,7 +1,7 @@ { "cells": [ { - "cell_type": "markdown", + "cell_type": "raw", "metadata": {}, "source": [ "---\n", @@ -15,8 +15,6 @@ "source": [ "# Milvus Hybrid Search Retriever\n", "\n", - "## Overview\n", - "\n", "> [Milvus](https://milvus.io/docs) is an open-source vector database built to power embedding similarity search and AI applications. Milvus makes unstructured data search more accessible, and provides a consistent user experience regardless of the deployment environment.\n", "\n", "This will help you getting started with the Milvus Hybrid Search [retriever](/docs/concepts/#retrievers), which combines the strengths of both dense and sparse vector search. For detailed documentation of all `MilvusCollectionHybridSearchRetriever` features and configurations head to the [API reference](https://api.python.langchain.com/en/latest/retrievers/langchain_milvus.retrievers.milvus_hybrid_search.MilvusCollectionHybridSearchRetriever.html).\n", @@ -25,11 +23,9 @@ "\n", "### Integration details\n", "\n", - "| Retriever | Self-host | Cloud offering | Package |\n", - "| :--- | :--- | :---: | :---: |\n", - "[MilvusCollectionHybridSearchRetriever](https://api.python.langchain.com/en/latest/retrievers/langchain_milvus.retrievers.milvus_hybrid_search.MilvusCollectionHybridSearchRetriever.html) | ✅ | ❌ | langchain_milvus |\n", - "\n", + "import {ItemTable} from \"@theme/FeatureTables\";\n", "\n", + "\n", "\n", "## Setup\n", "\n", diff --git a/docs/docs/integrations/retrievers/tavily.ipynb b/docs/docs/integrations/retrievers/tavily.ipynb index 604caff33ef60..b74ae5d0b008d 100644 --- a/docs/docs/integrations/retrievers/tavily.ipynb +++ b/docs/docs/integrations/retrievers/tavily.ipynb @@ -1,7 +1,7 @@ { "cells": [ { - "cell_type": "markdown", + "cell_type": "raw", "metadata": {}, "source": [ "---\n", @@ -15,16 +15,15 @@ "source": [ "# TavilySearchAPIRetriever\n", "\n", - "## Overview\n", ">[Tavily's Search API](https://tavily.com) is a search engine built specifically for AI agents (LLMs), delivering real-time, accurate, and factual results at speed.\n", "\n", "We can use this as a [retriever](/docs/how_to#retrievers). It will show functionality specific to this integration. After going through, it may be useful to explore [relevant use-case pages](/docs/how_to#qa-with-rag) to learn how to use this vectorstore as part of a larger chain.\n", "\n", "### Integration details\n", "\n", - "| Retriever | Source | Package |\n", - "| :--- | :--- | :---: |\n", - "[TavilySearchAPIRetriever](https://api.python.langchain.com/en/latest/retrievers/langchain_community.retrievers.tavily_search_api.TavilySearchAPIRetriever.html) | Internet search | langchain_community |\n", + "import {ItemTable} from \"@theme/FeatureTables\";\n", + "\n", + "\n", "\n", "## Setup" ] diff --git a/docs/docs/integrations/retrievers/wikipedia.ipynb b/docs/docs/integrations/retrievers/wikipedia.ipynb index 27b66a8700754..ef0372af7885d 100644 --- a/docs/docs/integrations/retrievers/wikipedia.ipynb +++ b/docs/docs/integrations/retrievers/wikipedia.ipynb @@ -1,7 +1,7 @@ { "cells": [ { - "cell_type": "markdown", + "cell_type": "raw", "id": "62727aaa-bcff-4087-891c-e539f824ee1f", "metadata": {}, "source": [ @@ -24,9 +24,9 @@ "\n", "### Integration details\n", "\n", - "| Retriever | Source | Package |\n", - "| :--- | :--- | :---: |\n", - "[WikipediaRetriever](https://api.python.langchain.com/en/latest/retrievers/langchain_community.retrievers.wikipedia.WikipediaRetriever.html) | [Wikipedia](https://www.wikipedia.org/) articles | langchain_community |" + "import {ItemTable} from \"@theme/FeatureTables\";\n", + "\n", + "" ] }, { diff --git a/docs/docs/integrations/text_embedding/index.mdx b/docs/docs/integrations/text_embedding/index.mdx index e4e191aa88e0d..2b10fd3605bef 100644 --- a/docs/docs/integrations/text_embedding/index.mdx +++ b/docs/docs/integrations/text_embedding/index.mdx @@ -5,110 +5,10 @@ sidebar_class_name: hidden # Embedding models -**Embedding model** classes are implemented by inheriting the [Embeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_core.embeddings.Embeddings.html) class. +import { CategoryTable, IndexTable } from "@theme/FeatureTables"; -This table lists all 100 derived classes. + +## All embedding models -| Namespace 🔻 | Class | -|------------|---------| -| langchain.chains.hyde.base | [HypotheticalDocumentEmbedder](https://api.python.langchain.com/en/latest/chains/langchain.chains.hyde.base.HypotheticalDocumentEmbedder.html) | -| langchain.embeddings.cache | [CacheBackedEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain.embeddings.cache.CacheBackedEmbeddings.html) | -| langchain_ai21.embeddings | [AI21Embeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_ai21.embeddings.AI21Embeddings.html) | -| langchain_aws.embeddings.bedrock | [BedrockEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_aws.embeddings.bedrock.BedrockEmbeddings.html) | -| langchain_cohere.embeddings | [CohereEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_cohere.embeddings.CohereEmbeddings.html) | -| langchain_community.embeddings.aleph_alpha | [AlephAlphaAsymmetricSemanticEmbedding](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.aleph_alpha.AlephAlphaAsymmetricSemanticEmbedding.html) | -| langchain_community.embeddings.aleph_alpha | [AlephAlphaSymmetricSemanticEmbedding](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.aleph_alpha.AlephAlphaSymmetricSemanticEmbedding.html) | -| langchain_community.embeddings.anyscale | [AnyscaleEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.anyscale.AnyscaleEmbeddings.html) | -| langchain_community.embeddings.awa | [AwaEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.awa.AwaEmbeddings.html) | -| langchain_community.embeddings.azure_openai | [AzureOpenAIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.azure_openai.AzureOpenAIEmbeddings.html) | -| langchain_community.embeddings.baichuan | [BaichuanTextEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.baichuan.BaichuanTextEmbeddings.html) | -| langchain_community.embeddings.baidu_qianfan_endpoint | [QianfanEmbeddingsEndpoint](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.baidu_qianfan_endpoint.QianfanEmbeddingsEndpoint.html) | -| langchain_community.embeddings.bedrock | [BedrockEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.bedrock.BedrockEmbeddings.html) | -| langchain_community.embeddings.bookend | [BookendEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.bookend.BookendEmbeddings.html) | -| langchain_community.embeddings.clarifai | [ClarifaiEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.clarifai.ClarifaiEmbeddings.html) | -| langchain_community.embeddings.cloudflare_workersai | [CloudflareWorkersAIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.cloudflare_workersai.CloudflareWorkersAIEmbeddings.html) | -| langchain_community.embeddings.clova | [ClovaEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.clova.ClovaEmbeddings.html) | -| langchain_community.embeddings.cohere | [CohereEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.cohere.CohereEmbeddings.html) | -| langchain_community.embeddings.dashscope | [DashScopeEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.dashscope.DashScopeEmbeddings.html) | -| langchain_community.embeddings.databricks | [DatabricksEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.databricks.DatabricksEmbeddings.html) | -| langchain_community.embeddings.deepinfra | [DeepInfraEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.deepinfra.DeepInfraEmbeddings.html) | -| langchain_community.embeddings.edenai | [EdenAiEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.edenai.EdenAiEmbeddings.html) | -| langchain_community.embeddings.elasticsearch | [ElasticsearchEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.elasticsearch.ElasticsearchEmbeddings.html) | -| langchain_community.embeddings.embaas | [EmbaasEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.embaas.EmbaasEmbeddings.html) | -| langchain_community.embeddings.ernie | [ErnieEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.ernie.ErnieEmbeddings.html) | -| langchain_community.embeddings.fake | [DeterministicFakeEmbedding](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.fake.DeterministicFakeEmbedding.html) | -| langchain_community.embeddings.fake | [FakeEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.fake.FakeEmbeddings.html) | -| langchain_community.embeddings.fastembed | [FastEmbedEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.fastembed.FastEmbedEmbeddings.html) | -| langchain_community.embeddings.gigachat | [GigaChatEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.gigachat.GigaChatEmbeddings.html) | -| langchain_community.embeddings.google_palm | [GooglePalmEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.google_palm.GooglePalmEmbeddings.html) | -| langchain_community.embeddings.gpt4all | [GPT4AllEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.gpt4all.GPT4AllEmbeddings.html) | -| langchain_community.embeddings.gradient_ai | [GradientEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.gradient_ai.GradientEmbeddings.html) | -| langchain_community.embeddings.huggingface | [HuggingFaceBgeEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.huggingface.HuggingFaceBgeEmbeddings.html) | -| langchain_community.embeddings.huggingface | [HuggingFaceEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.huggingface.HuggingFaceEmbeddings.html) | -| langchain_community.embeddings.huggingface | [HuggingFaceInferenceAPIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.huggingface.HuggingFaceInferenceAPIEmbeddings.html) | -| langchain_community.embeddings.huggingface | [HuggingFaceInstructEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.huggingface.HuggingFaceInstructEmbeddings.html) | -| langchain_community.embeddings.huggingface_hub | [HuggingFaceHubEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.huggingface_hub.HuggingFaceHubEmbeddings.html) | -| langchain_community.embeddings.infinity | [InfinityEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.infinity.InfinityEmbeddings.html) | -| langchain_community.embeddings.infinity_local | [InfinityEmbeddingsLocal](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.infinity_local.InfinityEmbeddingsLocal.html) | -| langchain_community.embeddings.ipex_llm | [IpexLLMBgeEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.ipex_llm.IpexLLMBgeEmbeddings.html) | -| langchain_community.embeddings.itrex | [QuantizedBgeEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.itrex.QuantizedBgeEmbeddings.html) | -| langchain_community.embeddings.javelin_ai_gateway | [JavelinAIGatewayEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.javelin_ai_gateway.JavelinAIGatewayEmbeddings.html) | -| langchain_community.embeddings.jina | [JinaEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.jina.JinaEmbeddings.html) | -| langchain_community.embeddings.johnsnowlabs | [JohnSnowLabsEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.johnsnowlabs.JohnSnowLabsEmbeddings.html) | -| langchain_community.embeddings.laser | [LaserEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.laser.LaserEmbeddings.html) | -| langchain_community.embeddings.llamacpp | [LlamaCppEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.llamacpp.LlamaCppEmbeddings.html) | -| langchain_community.embeddings.llamafile | [LlamafileEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.llamafile.LlamafileEmbeddings.html) | -| langchain_community.embeddings.llm_rails | [LLMRailsEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.llm_rails.LLMRailsEmbeddings.html) | -| langchain_community.embeddings.localai | [LocalAIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.localai.LocalAIEmbeddings.html) | -| langchain_community.embeddings.minimax | [MiniMaxEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.minimax.MiniMaxEmbeddings.html) | -| langchain_community.embeddings.mlflow | [MlflowCohereEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.mlflow.MlflowCohereEmbeddings.html) | -| langchain_community.embeddings.mlflow | [MlflowEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.mlflow.MlflowEmbeddings.html) | -| langchain_community.embeddings.mlflow_gateway | [MlflowAIGatewayEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.mlflow_gateway.MlflowAIGatewayEmbeddings.html) | -| langchain_community.embeddings.modelscope_hub | [ModelScopeEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.modelscope_hub.ModelScopeEmbeddings.html) | -| langchain_community.embeddings.mosaicml | [MosaicMLInstructorEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.mosaicml.MosaicMLInstructorEmbeddings.html) | -| langchain_community.embeddings.nemo | [NeMoEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.nemo.NeMoEmbeddings.html) | -| langchain_community.embeddings.nlpcloud | [NLPCloudEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.nlpcloud.NLPCloudEmbeddings.html) | -| langchain_community.embeddings.oci_generative_ai | [OCIGenAIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.oci_generative_ai.OCIGenAIEmbeddings.html) | -| langchain_community.embeddings.octoai_embeddings | [OctoAIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.octoai_embeddings.OctoAIEmbeddings.html) | -| langchain_community.embeddings.ollama | [OllamaEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.ollama.OllamaEmbeddings.html) | -| langchain_community.embeddings.openai | [OpenAIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.openai.OpenAIEmbeddings.html) | -| langchain_community.embeddings.openvino | [OpenVINOBgeEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.openvino.OpenVINOBgeEmbeddings.html) | -| langchain_community.embeddings.openvino | [OpenVINOEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.openvino.OpenVINOEmbeddings.html) | -| langchain_community.embeddings.optimum_intel | [QuantizedBiEncoderEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.optimum_intel.QuantizedBiEncoderEmbeddings.html) | -| langchain_community.embeddings.oracleai | [OracleEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.oracleai.OracleEmbeddings.html) | -| langchain_community.embeddings.ovhcloud | [OVHCloudEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.ovhcloud.OVHCloudEmbeddings.html) | -| langchain_community.embeddings.premai | [PremAIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.premai.PremAIEmbeddings.html) | -| langchain_community.embeddings.sagemaker_endpoint | [SagemakerEndpointEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.sagemaker_endpoint.SagemakerEndpointEmbeddings.html) | -| langchain_community.embeddings.sambanova | [SambaStudioEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.sambanova.SambaStudioEmbeddings.html) | -| langchain_community.embeddings.self_hosted | [SelfHostedEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.self_hosted.SelfHostedEmbeddings.html) | -| langchain_community.embeddings.self_hosted_hugging_face | [SelfHostedHuggingFaceEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.self_hosted_hugging_face.SelfHostedHuggingFaceEmbeddings.html) | -| langchain_community.embeddings.self_hosted_hugging_face | [SelfHostedHuggingFaceInstructEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.self_hosted_hugging_face.SelfHostedHuggingFaceInstructEmbeddings.html) | -| langchain_community.embeddings.solar | [SolarEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.solar.SolarEmbeddings.html) | -| langchain_community.embeddings.spacy_embeddings | [SpacyEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.spacy_embeddings.SpacyEmbeddings.html) | -| langchain_community.embeddings.sparkllm | [SparkLLMTextEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.sparkllm.SparkLLMTextEmbeddings.html) | -| langchain_community.embeddings.tensorflow_hub | [TensorflowHubEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.tensorflow_hub.TensorflowHubEmbeddings.html) | -| langchain_community.embeddings.text2vec | [Text2vecEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.text2vec.Text2vecEmbeddings.html) | -| langchain_community.embeddings.titan_takeoff | [TitanTakeoffEmbed](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.titan_takeoff.TitanTakeoffEmbed.html) | -| langchain_community.embeddings.vertexai | [VertexAIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.vertexai.VertexAIEmbeddings.html) | -| langchain_community.embeddings.volcengine | [VolcanoEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.volcengine.VolcanoEmbeddings.html) | -| langchain_community.embeddings.voyageai | [VoyageEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.voyageai.VoyageEmbeddings.html) | -| langchain_community.embeddings.xinference | [XinferenceEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.xinference.XinferenceEmbeddings.html) | -| langchain_community.embeddings.yandex | [YandexGPTEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.yandex.YandexGPTEmbeddings.html) | -| langchain_community.embeddings.zhipuai | [ZhipuAIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.zhipuai.ZhipuAIEmbeddings.html) | -| langchain_core.embeddings.fake | [DeterministicFakeEmbedding](https://api.python.langchain.com/en/latest/embeddings/langchain_core.embeddings.fake.DeterministicFakeEmbedding.html) | -| langchain_core.embeddings.fake | [FakeEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_core.embeddings.fake.FakeEmbeddings.html) | -| langchain_elasticsearch.embeddings | [ElasticsearchEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_elasticsearch.embeddings.ElasticsearchEmbeddings.html) | -| langchain_fireworks.embeddings | [FireworksEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_fireworks.embeddings.FireworksEmbeddings.html) | -| langchain_google_genai.embeddings | [GoogleGenerativeAIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_google_genai.embeddings.GoogleGenerativeAIEmbeddings.html) | -| langchain_google_genai.google_vector_store | [ServerSideEmbedding](https://api.python.langchain.com/en/latest/google_vector_store/langchain_google_genai.google_vector_store.ServerSideEmbedding.html) | -| langchain_google_vertexai.embeddings | [VertexAIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_google_vertexai.embeddings.VertexAIEmbeddings.html) | -| langchain_huggingface.embeddings.huggingface | [HuggingFaceEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_huggingface.embeddings.huggingface.HuggingFaceEmbeddings.html) | -| langchain_huggingface.embeddings.huggingface_endpoint | [HuggingFaceEndpointEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_huggingface.embeddings.huggingface_endpoint.HuggingFaceEndpointEmbeddings.html) | -| langchain_ibm.embeddings | [WatsonxEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_ibm.embeddings.WatsonxEmbeddings.html) | -| langchain_mistralai.embeddings | [MistralAIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_mistralai.embeddings.MistralAIEmbeddings.html) | -| langchain_nomic.embeddings | [NomicEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_nomic.embeddings.NomicEmbeddings.html) | -| langchain_nvidia_ai_endpoints.embeddings | [NVIDIAEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_nvidia_ai_endpoints.embeddings.NVIDIAEmbeddings.html) | -| langchain_together.embeddings | [TogetherEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_together.embeddings.TogetherEmbeddings.html) | -| langchain_upstage.embeddings | [UpstageEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_upstage.embeddings.UpstageEmbeddings.html) | -| langchain_voyageai.embeddings | [VoyageAIEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_voyageai.embeddings.VoyageAIEmbeddings.html) | + diff --git a/docs/docs/integrations/tools/connery.ipynb b/docs/docs/integrations/tools/connery.ipynb index c1b7cab123f95..6f117c9a2e1ec 100644 --- a/docs/docs/integrations/tools/connery.ipynb +++ b/docs/docs/integrations/tools/connery.ipynb @@ -4,12 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Connery Action Tool\n", + "# Connery Toolkit and Tools\n", "\n", - "Using this tool, you can integrate individual Connery Action into your LangChain agent.\n", - "\n", - "If you want to use more than one Connery Action in your agent,\n", - "check out the [Connery Toolkit](/docs/integrations/tools/connery_toolkit) documentation.\n", + "Using the Connery toolkit and tools, you can integrate Connery Actions into your LangChain agent.\n", "\n", "## What is Connery?\n", "\n", @@ -25,33 +22,136 @@ "- GitHub: https://github.com/connery-io/connery\n", "- Documentation: https://docs.connery.io\n", "\n", - "## Prerequisites\n", + "## Setup\n", + "\n", + "### Installation\n", + "\n", + "You need to install the `langchain_community` package to use the Connery tools." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%pip install -qU langchain-community" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Credentials\n", "\n", "To use Connery Actions in your LangChain agent, you need to do some preparation:\n", "\n", "1. Set up the Connery runner using the [Quickstart](https://docs.connery.io/docs/runner/quick-start/) guide.\n", "2. Install all the plugins with the actions you want to use in your agent.\n", - "3. Set environment variables `CONNERY_RUNNER_URL` and `CONNERY_RUNNER_API_KEY` so the toolkit can communicate with the Connery Runner.\n", + "3. Set environment variables `CONNERY_RUNNER_URL` and `CONNERY_RUNNER_API_KEY` so the toolkit can communicate with the Connery Runner." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "import os\n", + "\n", + "for key in [\"CONNERY_RUNNER_URL\", \"CONNERY_RUNNER_API_KEY\"]:\n", + " if key not in os.environ:\n", + " os.environ[key] = getpass.getpass(f\"Please enter the value for {key}: \")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Toolkit\n", "\n", - "## Example of using Connery Action Tool\n", + "In the example below, we create an agent that uses two Connery Actions to summarize a public webpage and send the summary by email:\n", "\n", - "In the example below, we fetch action by its ID from the Connery Runner and then call it with the specified parameters.\n", + "1. **Summarize public webpage** action from the [Summarization](https://github.com/connery-io/summarization-plugin) plugin.\n", + "2. **Send email** action from the [Gmail](https://github.com/connery-io/gmail) plugin.\n", "\n", - "Here, we use the ID of the **Send email** action from the [Gmail](https://github.com/connery-io/gmail) plugin." + "You can see a LangSmith trace of this example [here](https://smith.langchain.com/public/4af5385a-afe9-46f6-8a53-57fe2d63c5bc/r)." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", + "\u001b[32;1m\u001b[1;3m\n", + "Invoking: `CA72DFB0AB4DF6C830B43E14B0782F70` with `{'publicWebpageUrl': 'http://www.paulgraham.com/vb.html'}`\n", + "\n", + "\n", + "\u001b[0m\u001b[33;1m\u001b[1;3m{'summary': 'The author reflects on the concept of life being short and how having children made them realize the true brevity of life. They discuss how time can be converted into discrete quantities and how limited certain experiences are. The author emphasizes the importance of prioritizing and eliminating unnecessary things in life, as well as actively pursuing meaningful experiences. They also discuss the negative impact of getting caught up in online arguments and the need to be aware of how time is being spent. The author suggests pruning unnecessary activities, not waiting to do things that matter, and savoring the time one has.'}\u001b[0m\u001b[32;1m\u001b[1;3m\n", + "Invoking: `CABC80BB79C15067CA983495324AE709` with `{'recipient': 'test@example.com', 'subject': 'Summary of the webpage', 'body': 'Here is a short summary of the webpage http://www.paulgraham.com/vb.html:\\n\\nThe author reflects on the concept of life being short and how having children made them realize the true brevity of life. They discuss how time can be converted into discrete quantities and how limited certain experiences are. The author emphasizes the importance of prioritizing and eliminating unnecessary things in life, as well as actively pursuing meaningful experiences. They also discuss the negative impact of getting caught up in online arguments and the need to be aware of how time is being spent. The author suggests pruning unnecessary activities, not waiting to do things that matter, and savoring the time one has.\\n\\nYou can find the full webpage [here](http://www.paulgraham.com/vb.html).'}`\n", + "\n", + "\n", + "\u001b[0m\u001b[33;1m\u001b[1;3m{'messageId': '<2f04b00e-122d-c7de-c91e-e78e0c3276d6@gmail.com>'}\u001b[0m\u001b[32;1m\u001b[1;3mI have sent the email with the summary of the webpage to test@example.com. Please check your inbox.\u001b[0m\n", + "\n", + "\u001b[1m> Finished chain.\u001b[0m\n", + "I have sent the email with the summary of the webpage to test@example.com. Please check your inbox.\n" + ] + } + ], "source": [ - "%pip install -upgrade --quiet langchain-community" + "import os\n", + "\n", + "from langchain.agents import AgentType, initialize_agent\n", + "from langchain_community.agent_toolkits.connery import ConneryToolkit\n", + "from langchain_community.tools.connery import ConneryService\n", + "from langchain_openai import ChatOpenAI\n", + "\n", + "# Specify your Connery Runner credentials.\n", + "os.environ[\"CONNERY_RUNNER_URL\"] = \"\"\n", + "os.environ[\"CONNERY_RUNNER_API_KEY\"] = \"\"\n", + "\n", + "# Specify OpenAI API key.\n", + "os.environ[\"OPENAI_API_KEY\"] = \"\"\n", + "\n", + "# Specify your email address to receive the email with the summary from example below.\n", + "recepient_email = \"test@example.com\"\n", + "\n", + "# Create a Connery Toolkit with all the available actions from the Connery Runner.\n", + "connery_service = ConneryService()\n", + "connery_toolkit = ConneryToolkit.create_instance(connery_service)\n", + "\n", + "# Use OpenAI Functions agent to execute the prompt using actions from the Connery Toolkit.\n", + "llm = ChatOpenAI(temperature=0)\n", + "agent = initialize_agent(\n", + " connery_toolkit.get_tools(), llm, AgentType.OPENAI_FUNCTIONS, verbose=True\n", + ")\n", + "result = agent.run(\n", + " f\"\"\"Make a short summary of the webpage http://www.paulgraham.com/vb.html in three sentences\n", + "and send it to {recepient_email}. Include the link to the webpage into the body of the email.\"\"\"\n", + ")\n", + "print(result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "NOTE: Connery Action is a structured tool, so you can only use it in the agents supporting structured tools.\n", + "\n", + "## Tool" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -110,7 +210,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -148,6 +248,18 @@ "source": [ "NOTE: Connery Action is a structured tool, so you can only use it in the agents supporting structured tools." ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## API reference\n", + "\n", + "For detailed documentation of all Connery features and configurations head to the API reference:\n", + "\n", + "- Toolkit: https://api.python.langchain.com/en/latest/agent_toolkits/langchain_community.agent_toolkits.connery.toolkit.ConneryToolkit.html\n", + "- Tool: https://api.python.langchain.com/en/latest/tools/langchain_community.tools.connery.service.ConneryService.html" + ] } ], "metadata": { diff --git a/docs/docs/integrations/tools/connery_toolkit.ipynb b/docs/docs/integrations/tools/connery_toolkit.ipynb deleted file mode 100644 index 846d74908fd4a..0000000000000 --- a/docs/docs/integrations/tools/connery_toolkit.ipynb +++ /dev/null @@ -1,145 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Connery Toolkit\n", - "\n", - "Using this toolkit, you can integrate Connery Actions into your LangChain agent.\n", - "\n", - "If you want to use only one particular Connery Action in your agent,\n", - "check out the [Connery Action Tool](/docs/integrations/tools/connery) documentation.\n", - "\n", - "## What is Connery?\n", - "\n", - "Connery is an open-source plugin infrastructure for AI.\n", - "\n", - "With Connery, you can easily create a custom plugin with a set of actions and seamlessly integrate them into your LangChain agent.\n", - "Connery will take care of critical aspects such as runtime, authorization, secret management, access management, audit logs, and other vital features.\n", - "\n", - "Furthermore, Connery, supported by our community, provides a diverse collection of ready-to-use open-source plugins for added convenience.\n", - "\n", - "Learn more about Connery:\n", - "\n", - "- GitHub: https://github.com/connery-io/connery\n", - "- Documentation: https://docs.connery.io\n", - "\n", - "## Prerequisites\n", - "\n", - "To use Connery Actions in your LangChain agent, you need to do some preparation:\n", - "\n", - "1. Set up the Connery runner using the [Quickstart](https://docs.connery.io/docs/runner/quick-start/) guide.\n", - "2. Install all the plugins with the actions you want to use in your agent.\n", - "3. Set environment variables `CONNERY_RUNNER_URL` and `CONNERY_RUNNER_API_KEY` so the toolkit can communicate with the Connery Runner.\n", - "\n", - "## Example of using Connery Toolkit\n", - "\n", - "In the example below, we create an agent that uses two Connery Actions to summarize a public webpage and send the summary by email:\n", - "\n", - "1. **Summarize public webpage** action from the [Summarization](https://github.com/connery-io/summarization-plugin) plugin.\n", - "2. **Send email** action from the [Gmail](https://github.com/connery-io/gmail) plugin.\n", - "\n", - "You can see a LangSmith trace of this example [here](https://smith.langchain.com/public/4af5385a-afe9-46f6-8a53-57fe2d63c5bc/r)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%pip install -qU langchain-community" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", - "\u001b[32;1m\u001b[1;3m\n", - "Invoking: `CA72DFB0AB4DF6C830B43E14B0782F70` with `{'publicWebpageUrl': 'http://www.paulgraham.com/vb.html'}`\n", - "\n", - "\n", - "\u001b[0m\u001b[33;1m\u001b[1;3m{'summary': 'The author reflects on the concept of life being short and how having children made them realize the true brevity of life. They discuss how time can be converted into discrete quantities and how limited certain experiences are. The author emphasizes the importance of prioritizing and eliminating unnecessary things in life, as well as actively pursuing meaningful experiences. They also discuss the negative impact of getting caught up in online arguments and the need to be aware of how time is being spent. The author suggests pruning unnecessary activities, not waiting to do things that matter, and savoring the time one has.'}\u001b[0m\u001b[32;1m\u001b[1;3m\n", - "Invoking: `CABC80BB79C15067CA983495324AE709` with `{'recipient': 'test@example.com', 'subject': 'Summary of the webpage', 'body': 'Here is a short summary of the webpage http://www.paulgraham.com/vb.html:\\n\\nThe author reflects on the concept of life being short and how having children made them realize the true brevity of life. They discuss how time can be converted into discrete quantities and how limited certain experiences are. The author emphasizes the importance of prioritizing and eliminating unnecessary things in life, as well as actively pursuing meaningful experiences. They also discuss the negative impact of getting caught up in online arguments and the need to be aware of how time is being spent. The author suggests pruning unnecessary activities, not waiting to do things that matter, and savoring the time one has.\\n\\nYou can find the full webpage [here](http://www.paulgraham.com/vb.html).'}`\n", - "\n", - "\n", - "\u001b[0m\u001b[33;1m\u001b[1;3m{'messageId': '<2f04b00e-122d-c7de-c91e-e78e0c3276d6@gmail.com>'}\u001b[0m\u001b[32;1m\u001b[1;3mI have sent the email with the summary of the webpage to test@example.com. Please check your inbox.\u001b[0m\n", - "\n", - "\u001b[1m> Finished chain.\u001b[0m\n", - "I have sent the email with the summary of the webpage to test@example.com. Please check your inbox.\n" - ] - } - ], - "source": [ - "import os\n", - "\n", - "from langchain.agents import AgentType, initialize_agent\n", - "from langchain_community.agent_toolkits.connery import ConneryToolkit\n", - "from langchain_community.tools.connery import ConneryService\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "# Specify your Connery Runner credentials.\n", - "os.environ[\"CONNERY_RUNNER_URL\"] = \"\"\n", - "os.environ[\"CONNERY_RUNNER_API_KEY\"] = \"\"\n", - "\n", - "# Specify OpenAI API key.\n", - "os.environ[\"OPENAI_API_KEY\"] = \"\"\n", - "\n", - "# Specify your email address to receive the email with the summary from example below.\n", - "recepient_email = \"test@example.com\"\n", - "\n", - "# Create a Connery Toolkit with all the available actions from the Connery Runner.\n", - "connery_service = ConneryService()\n", - "connery_toolkit = ConneryToolkit.create_instance(connery_service)\n", - "\n", - "# Use OpenAI Functions agent to execute the prompt using actions from the Connery Toolkit.\n", - "llm = ChatOpenAI(temperature=0)\n", - "agent = initialize_agent(\n", - " connery_toolkit.get_tools(), llm, AgentType.OPENAI_FUNCTIONS, verbose=True\n", - ")\n", - "result = agent.run(\n", - " f\"\"\"Make a short summary of the webpage http://www.paulgraham.com/vb.html in three sentences\n", - "and send it to {recepient_email}. Include the link to the webpage into the body of the email.\"\"\"\n", - ")\n", - "print(result)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "NOTE: Connery Action is a structured tool, so you can only use it in the agents supporting structured tools." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.13" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/docs/integrations/tools/gmail.ipynb b/docs/docs/integrations/tools/gmail.ipynb index bac1672b0d0f8..ad3bf728febae 100644 --- a/docs/docs/integrations/tools/gmail.ipynb +++ b/docs/docs/integrations/tools/gmail.ipynb @@ -243,7 +243,7 @@ "source": [ "## API reference\n", "\n", - "For detailed documentation of all `GmailToolkit` features and configurations head to the [API reference](https://api.python.langchain.com/en/latest/agent_toolkits/langchain_community.agent_toolkits.slack.toolkit.SlackToolkit.html)." + "For detailed documentation of all `GmailToolkit` features and configurations head to the [API reference](https://api.python.langchain.com/en/latest/agent_toolkits/langchain_community.agent_toolkits.gmail.toolkit.GmailToolkit.html)." ] } ], diff --git a/docs/docs/integrations/tools/playwright.ipynb b/docs/docs/integrations/tools/playwright.ipynb index b7f57addef50e..bf397c74236c3 100644 --- a/docs/docs/integrations/tools/playwright.ipynb +++ b/docs/docs/integrations/tools/playwright.ipynb @@ -6,6 +6,8 @@ "source": [ "# PlayWright Browser Toolkit\n", "\n", + ">[Playwright](https://github.com/microsoft/playwright) is an open-source automation tool developed by `Microsoft` that allows you to programmatically control and automate web browsers. It is designed for end-to-end testing, scraping, and automating tasks across various web browsers such as `Chromium`, `Firefox`, and `WebKit`.\n", + "\n", "This toolkit is used to interact with the browser. While other tools (like the `Requests` tools) are fine for static sites, `PlayWright Browser` toolkits let your agent navigate the web and interact with dynamically rendered sites. \n", "\n", "Some tools bundled within the `PlayWright Browser` toolkit include:\n", @@ -296,7 +298,8 @@ "```\n", "\n", "\u001b[0m\n", - "Observation: \u001b[31;1m\u001b[1;3mLangChain We value your privacy We use cookies to analyze our traffic. By clicking \"Accept All\", you consent to our use of cookies. Privacy Policy Customize Reject All Accept All Customize Consent Preferences We may use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below. The cookies that are categorized as \"Necessary\" are stored on your browser as they are essential for enabling the basic functionalities of the site.... Show more Necessary Always Active Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data. Functional Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features. Analytics Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc. Performance Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors. Advertisement Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns. Uncategorized Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet. Reject All Save My Preferences Accept All Products LangChain LangSmith LangGraph Methods Retrieval Agents Evaluation Resources Blog Case Studies Use Case Inspiration Experts Changelog Docs LangChain Docs LangSmith Docs Company About Careers Pricing Get a demo Sign up LangChain’s suite of products supports developers along each step of the LLM application lifecycle. Applications that can reason. Powered by LangChain. Get a demo Sign up for free From startups to global enterprises, ambitious builders choose LangChain products. Build LangChain is a framework to build with LLMs by chaining interoperable components. LangGraph is the framework for building controllable agentic workflows. Run Deploy your LLM applications at scale with LangGraph Cloud, our infrastructure purpose-built for agents. Manage Debug, collaborate, test, and monitor your LLM app in LangSmith - whether it's built with a LangChain framework or not. Build your app with LangChain Build context-aware, reasoning applications with LangChain’s flexible framework that leverages your company’s data and APIs. Future-proof your application by making vendor optionality part of your LLM infrastructure design. Learn more about LangChain Run at scale with LangGraph Cloud Deploy your LangGraph app with LangGraph Cloud for fault-tolerant scalability - including support for async background jobs, built-in persistence, and distributed task queues. Learn more about LangGraph Manage LLM performance with LangSmith Ship faster with LangSmith’s debug, test, deploy, and monitoring workflows. Don’t rely on “vibes” – add engineering rigor to your LLM-development workflow, whether you’re building with LangChain or not. Learn more about LangSmith Hear from our happy customers LangChain, LangGraph, and LangSmith help teams of all sizes, across all industries - from ambitious startups to established enterprises. “LangSmith helped us improve the accuracy and performance of Retool’s fine-tuned models. Not only did we deliver a better product by iterating with LangSmith, but we’re shipping new AI features to our users in a fraction of the time it would have taken without it.” Jamie Cuffe Head of Self-Serve and New Products “By combining the benefits of LangSmith and standing on the shoulders of a gigantic open-source community, we’re able to identify the right approaches of using LLMs in an enterprise-setting faster.” Yusuke Kaji General Manager of AI “Working with LangChain and LangSmith on the Elastic AI Assistant had a significant positive impact on the overall pace and quality of the development and shipping experience. We couldn’t have achieved  the product experience delivered to our customers without LangChain, and we couldn’t have done it at the same pace without LangSmith.” James Spiteri Director of Security Products “As soon as we heard about LangSmith, we moved our entire development stack onto it. We could have built evaluation, testing and monitoring tools in house, but with LangSmith it took us 10x less time to get a 1000x better tool.” Jose Peña Senior Manager The reference architecture enterprises adopt for success. LangChain’s suite of products can be used independently or stacked together for multiplicative impact – guiding you through building, running, and managing your LLM apps. 15M+ Monthly Downloads 100K+ Apps Powered 75K+ GitHub Stars 3K+ Contributors The biggest developer community in GenAI Learn alongside the 1M+ developers who are pushing the industry forward. Explore LangChain Get started with the LangSmith platform today Get a demo Sign up for free Teams building with LangChain are driving operational efficiency, increasing discovery & personalization, and delivering premium products that generate revenue. Discover Use Cases Get inspired by companies who have done it. Financial Services FinTech Technology LangSmith is the enterprise DevOps platform built for LLMs. Explore LangSmith Gain visibility to make trade offs between cost, latency, and quality. Increase developer productivity. Eliminate manual, error-prone testing. Reduce hallucinations and improve reliability. Enterprise deployment options to keep data secure. Ready to start shipping 
reliable GenAI apps faster? Get started with LangChain, LangGraph, and LangSmith to enhance your LLM app development, from prototype to production. Get a demo Sign up for free Products LangChain LangSmith LangGraph Agents Evaluation Retrieval Resources Python Docs JS/TS Docs GitHub Integrations Templates Changelog LangSmith Trust Portal Company About Blog Twitter LinkedIn YouTube Community Marketing Assets Sign up for our newsletter to stay up to date Thank you! Your submission has been received! Oops! Something went wrong while submitting the form. All systems operational Privacy Policy Terms of Service\u001b[0m\n", + "Observation: \u001b[31;1m\u001b[1;3mLangChain We value your privacy We use cookies to analyze our traffic. By clicking \"Accept All\", you consent to our use of cookies. Privacy Policy Customize Reject All Accept All Customize Consent Preferences We may use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below. The cookies that are categorized as \"Necessary\" are stored on your browser as they are essential for enabling the basic functionalities of the site.... Show more Necessary Always Active Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data. Functional Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features. Analytics Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc. Performance Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors. Advertisement Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns. Uncategorized Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet. Reject All Save My Preferences Accept All Products LangChain LangSmith LangGraph Methods Retrieval Agents Evaluation Resources Blog Case Studies Use Case Inspiration Experts Changelog Docs LangChain Docs LangSmith Docs Company About Careers Pricing Get a demo Sign up LangChain’s suite of products supports developers along each step of the LLM application lifecycle. Applications that can reason. Powered by LangChain. Get a demo Sign up for free From startups to global enterprises, ambitious builders choose LangChain products. Build LangChain is a framework to build with LLMs by chaining interoperable components. LangGraph is the framework for building controllable agentic workflows. Run Deploy your LLM applications at scale with LangGraph Cloud, our infrastructure purpose-built for agents. Manage Debug, collaborate, test, and monitor your LLM app in LangSmith - whether it's built with a LangChain framework or not. Build your app with LangChain Build context-aware, reasoning applications with LangChain’s flexible framework that leverages your company’s data and APIs. Future-proof your application by making vendor optionality part of your LLM infrastructure design. Learn more about LangChain Run at scale with LangGraph Cloud Deploy your LangGraph app with LangGraph Cloud for fault-tolerant scalability - including support for async background jobs, built-in persistence, and distributed task queues. Learn more about LangGraph Manage LLM performance with LangSmith Ship faster with LangSmith’s debug, test, deploy, and monitoring workflows. Don’t rely on “vibes” – add engineering rigor to your LLM-development workflow, whether you’re building with LangChain or not. Learn more about LangSmith Hear from our happy customers LangChain, LangGraph, and LangSmith help teams of all sizes, across all industries - from ambitious startups to established enterprises. “LangSmith helped us improve the accuracy and performance of Retool’s fine-tuned models. Not only did we deliver a better product by iterating with LangSmith, but we’re shipping new AI features to our users in a fraction of the time it would have taken without it.” Jamie Cuffe Head of Self-Serve and New Products “By combining the benefits of LangSmith and standing on the shoulders of a gigantic open-source community, we’re able to identify the right approaches of using LLMs in an enterprise-setting faster.” Yusuke Kaji General Manager of AI “Working with LangChain and LangSmith on the Elastic AI Assistant had a significant positive impact on the overall pace and quality of the development and shipping experience. We couldn’t have achieved  the product experience delivered to our customers without LangChain, and we couldn’t have done it at the same pace without LangSmith.” James Spiteri Director of Security Products “As soon as we heard about LangSmith, we moved our entire development stack onto it. We could have built evaluation, testing and monitoring tools in house, but with LangSmith it took us 10x less time to get a 1000x better tool.” Jose Peña Senior Manager The reference architecture enterprises adopt for success. LangChain’s suite of products can be used independently or stacked together for multiplicative impact – guiding you through building, running, and managing your LLM apps. 15M+ Monthly Downloads 100K+ Apps Powered 75K+ GitHub Stars 3K+ Contributors The biggest developer community in GenAI Learn alongside the 1M+ developers who are pushing the industry forward. Explore LangChain Get started with the LangSmith platform today Get a demo Sign up for free Teams building with LangChain are driving operational efficiency, increasing discovery & personalization, and delivering premium products that generate revenue. Discover Use Cases Get inspired by companies who have done it. Financial Services FinTech Technology LangSmith is the enterprise DevOps platform built for LLMs. Explore LangSmith Gain visibility to make trade offs between cost, latency, and quality. Increase developer productivity. Eliminate manual, error-prone testing. Reduce hallucinations and improve reliability. Enterprise deployment options to keep data secure. Ready to start shipping 
", + "reliable GenAI apps faster? Get started with LangChain, LangGraph, and LangSmith to enhance your LLM app development, from prototype to production. Get a demo Sign up for free Products LangChain LangSmith LangGraph Agents Evaluation Retrieval Resources Python Docs JS/TS Docs GitHub Integrations Templates Changelog LangSmith Trust Portal Company About Blog Twitter LinkedIn YouTube Community Marketing Assets Sign up for our newsletter to stay up to date Thank you! Your submission has been received! Oops! Something went wrong while submitting the form. All systems operational Privacy Policy Terms of Service\u001b[0m\n", "Thought:\u001b[32;1m\u001b[1;3mBased on the text extracted from the langchain.com website, the main headers I can see are:\n", "\n", "- LangChain\n", @@ -361,7 +364,6 @@ " - Pricing\n", "- Get a demo\n", "- Sign up\n" - ] } ], @@ -387,7 +389,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.9" + "version": "3.10.12" } }, "nbformat": 4, diff --git a/docs/docs/integrations/tools/polygon.ipynb b/docs/docs/integrations/tools/polygon.ipynb index db0b37caf71e1..fac411b028320 100644 --- a/docs/docs/integrations/tools/polygon.ipynb +++ b/docs/docs/integrations/tools/polygon.ipynb @@ -2,388 +2,670 @@ "cells": [ { "cell_type": "markdown", - "id": "245a954a", - "metadata": { - "id": "245a954a" - }, + "id": "e6fd05db-21c2-4227-9900-0840bc62cb31", + "metadata": {}, + "source": [ + "# Polygon IO Toolkit and Tools\n", + "\n", + "This notebook shows how to use agents to interact with the [Polygon IO](https://polygon.io/) toolkit. The toolkit provides access to Polygon's Stock Market Data API." + ] + }, + { + "cell_type": "markdown", + "id": "a4da342d", + "metadata": {}, "source": [ - "# Polygon IO\n", + "## Setup\n", "\n", - ">[Polygon](https://polygon.io/) The Polygon.io Stocks API provides REST endpoints that let you query the latest market data from all US stock exchanges.\n", + "### Installation\n", "\n", - "This notebook uses tools to get stock market data like the latest quote and news for a ticker from Polygon." + "To use Polygon IO tools, you need to install the `langchain-community` package." ] }, { "cell_type": "code", - "execution_count": 1, - "id": "34bb5968", - "metadata": { - "id": "34bb5968", - "is_executing": true, - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " ········\n" - ] - } - ], + "execution_count": null, + "id": "c17b33e0", + "metadata": {}, + "outputs": [], "source": [ - "import getpass\n", - "import os\n", + "%pip install -qU langchain-community > /dev/null" + ] + }, + { + "cell_type": "markdown", + "id": "3cd00ad2", + "metadata": {}, + "source": [ + "### Credentials\n", "\n", - "os.environ[\"POLYGON_API_KEY\"] = getpass.getpass()" + "Get your Polygon IO API key [here](https://polygon.io/), and then set it below. " ] }, { "cell_type": "code", "execution_count": 2, - "id": "ac4910f8", - "metadata": { - "id": "ac4910f8", - "is_executing": true - }, + "id": "a180a2b8", + "metadata": {}, "outputs": [], "source": [ - "from langchain_community.tools.polygon.aggregates import PolygonAggregates\n", - "from langchain_community.tools.polygon.financials import PolygonFinancials\n", - "from langchain_community.tools.polygon.last_quote import PolygonLastQuote\n", - "from langchain_community.tools.polygon.ticker_news import PolygonTickerNews\n", - "from langchain_community.utilities.polygon import PolygonAPIWrapper" + "import getpass\n", + "import os\n", + "\n", + "if \"POLYGON_API_KEY\" not in os.environ:\n", + " os.environ[\"POLYGON_API_KEY\"] = getpass.getpass()" + ] + }, + { + "cell_type": "markdown", + "id": "ed6f89fa", + "metadata": {}, + "source": [ + "It's also helpful (but not needed) to set up [LangSmith](https://smith.langchain.com/) for best-in-class observability" ] }, { "cell_type": "code", "execution_count": 3, - "id": "8660b910-905b-46f3-9541-920b9fc3d4d6", + "id": "56670cf6", "metadata": {}, "outputs": [], "source": [ - "api_wrapper = PolygonAPIWrapper()\n", - "ticker = \"AAPL\"" + "# os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n", + "# os.environ[\"LANGCHAIN_API_KEY\"] = getpass.getpass()" ] }, { "cell_type": "markdown", - "id": "347f6951-b383-4675-b116-9b7d16c1f505", + "id": "7d93e6bd-03d7-4d3c-b915-8b73164e2ad8", "metadata": {}, "source": [ - "### Get latest quote for ticker" + "## Toolkit\n", + "\n", + "Polygon IO provides both a toolkit and individual tools for each of the tools included in the toolkit. Let's first explore using the toolkit and then we will walk through using the individual tools.\n", + "\n", + "### Initialization\n", + "\n", + "We can initialize the toolkit by importing it alongside the API wrapper needed to use the tools." ] }, { "cell_type": "code", "execution_count": 4, - "id": "84b8f773", + "id": "648a2cb2-308e-4b2e-9b73-37109be4e258", "metadata": { - "id": "84b8f773" + "is_executing": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tool output: {\"P\": 170.5, \"S\": 2, \"T\": \"AAPL\", \"X\": 11, \"i\": [604], \"p\": 170.48, \"q\": 106666224, \"s\": 1, \"t\": 1709945992614283138, \"x\": 12, \"y\": 1709945992614268948, \"z\": 3}\n" - ] - } - ], + "outputs": [], "source": [ - "# Get the last quote for ticker\n", - "last_quote_tool = PolygonLastQuote(api_wrapper=api_wrapper)\n", - "last_quote = last_quote_tool.run(ticker)\n", - "print(f\"Tool output: {last_quote}\")" + "from langchain_community.agent_toolkits.polygon.toolkit import PolygonToolkit\n", + "from langchain_community.utilities.polygon import PolygonAPIWrapper\n", + "\n", + "polygon = PolygonAPIWrapper()\n", + "toolkit = PolygonToolkit.from_polygon_api_wrapper(polygon)" ] }, { - "cell_type": "code", - "execution_count": 5, - "id": "068991a6", - "metadata": { - "id": "068991a6", - "outputId": "c5cdc6ec-03cf-4084-cc6f-6ae792d91d39" - }, - "outputs": [], + "cell_type": "markdown", + "id": "77c3171c", + "metadata": {}, "source": [ - "import json\n", + "### Tools\n", "\n", - "# Convert the last quote response to JSON\n", - "last_quote = last_quote_tool.run(ticker)\n", - "last_quote_json = json.loads(last_quote)" + "We can examine the tools included in this toolkit:" ] }, { "cell_type": "code", - "execution_count": 6, - "id": "174e2556-eb3e-48a4-bde6-9a3309fae9c9", + "execution_count": 5, + "id": "18650040-0ff8-4c0f-a4f2-be6aad7fe63e", "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Latest price for AAPL is $170.48\n" - ] + "data": { + "text/plain": [ + "[PolygonAggregates(api_wrapper=PolygonAPIWrapper(polygon_api_key='K231Rg76pOsN_IdT2eWhCC9npBguCYEj')),\n", + " PolygonLastQuote(api_wrapper=PolygonAPIWrapper(polygon_api_key='K231Rg76pOsN_IdT2eWhCC9npBguCYEj')),\n", + " PolygonTickerNews(api_wrapper=PolygonAPIWrapper(polygon_api_key='K231Rg76pOsN_IdT2eWhCC9npBguCYEj')),\n", + " PolygonFinancials(api_wrapper=PolygonAPIWrapper(polygon_api_key='K231Rg76pOsN_IdT2eWhCC9npBguCYEj'))]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "# Print the latest price for ticker\n", - "latest_price = last_quote_json[\"p\"]\n", - "print(f\"Latest price for {ticker} is ${latest_price}\")" + "toolkit.get_tools()" ] }, { "cell_type": "markdown", - "id": "1f478364-f41b-47f2-ac4b-d3154f1c7faa", + "id": "57ed338d", "metadata": {}, "source": [ - "### Get aggregates (historical prices) for ticker" + "### Use within an agent\n", + "\n", + "Next we can add our toolkit to an agent and use it!" ] }, { "cell_type": "code", - "execution_count": 20, - "id": "5e14e091-3150-4bd5-bfd3-de17caa75ee1", + "execution_count": 11, + "id": "e8e92869", "metadata": {}, "outputs": [], "source": [ - "from langchain_community.tools.polygon.aggregates import PolygonAggregatesSchema\n", + "from langchain import hub\n", + "from langchain.agents import AgentExecutor, create_openai_functions_agent\n", + "from langchain_openai import ChatOpenAI\n", "\n", - "# Define param\n", - "params = PolygonAggregatesSchema(\n", - " ticker=ticker,\n", - " timespan=\"day\",\n", - " timespan_multiplier=1,\n", - " from_date=\"2024-03-01\",\n", - " to_date=\"2024-03-08\",\n", - ")\n", - "# Get aggregates for ticker\n", - "aggregates_tool = PolygonAggregates(api_wrapper=api_wrapper)\n", - "aggregates = aggregates_tool.run(tool_input=params.dict())\n", - "aggregates_json = json.loads(aggregates)" + "llm = ChatOpenAI(temperature=0, model=\"gpt-4o\")\n", + "\n", + "instructions = \"\"\"You are an assistant.\"\"\"\n", + "base_prompt = hub.pull(\"langchain-ai/openai-functions-template\")\n", + "prompt = base_prompt.partial(instructions=instructions)\n", + "\n", + "agent = create_openai_functions_agent(llm, toolkit.get_tools(), prompt)" ] }, { "cell_type": "code", - "execution_count": 25, - "id": "a01f3888-d233-400d-b8c4-298d27c8f793", + "execution_count": 12, + "id": "fd7463e4-8716-4d1d-860a-770533eaa742", + "metadata": {}, + "outputs": [], + "source": [ + "agent_executor = AgentExecutor(\n", + " agent=agent,\n", + " tools=toolkit.get_tools(),\n", + " verbose=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "71f05fc9-d80d-4614-b9a3-e0a5e43cbbbb", + "metadata": {}, + "source": [ + "We can examine yesterdays information for a certain ticker:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b97409f3-dc87-425d-b555-406cf8466a28", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Total aggregates: 6\n", - "Aggregates: [{'v': 73450582.0, 'vw': 179.0322, 'o': 179.55, 'c': 179.66, 'h': 180.53, 'l': 177.38, 't': 1709269200000, 'n': 911077}, {'v': 81505451.0, 'vw': 174.8938, 'o': 176.15, 'c': 175.1, 'h': 176.9, 'l': 173.79, 't': 1709528400000, 'n': 1167166}, {'v': 94702355.0, 'vw': 170.3234, 'o': 170.76, 'c': 170.12, 'h': 172.04, 'l': 169.62, 't': 1709614800000, 'n': 1108820}, {'v': 68568907.0, 'vw': 169.5506, 'o': 171.06, 'c': 169.12, 'h': 171.24, 'l': 168.68, 't': 1709701200000, 'n': 896297}, {'v': 71763761.0, 'vw': 169.3619, 'o': 169.15, 'c': 169, 'h': 170.73, 'l': 168.49, 't': 1709787600000, 'n': 825405}, {'v': 76267041.0, 'vw': 171.5322, 'o': 169, 'c': 170.73, 'h': 173.7, 'l': 168.94, 't': 1709874000000, 'n': 925213}]\n" + "\n", + "\n", + "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", + "\u001b[32;1m\u001b[1;3m\n", + "Invoking: `polygon_aggregates` with `{'ticker': 'AAPL', 'timespan': 'day', 'timespan_multiplier': 1, 'from_date': '2023-10-05', 'to_date': '2023-10-05'}`\n", + "\n", + "\n", + "\u001b[0m\u001b[36;1m\u001b[1;3m[{\"v\": 48527918.0, \"vw\": 174.2297, \"o\": 173.79, \"c\": 174.91, \"h\": 175.45, \"l\": 172.68, \"t\": 1696478400000, \"n\": 509175}]\u001b[0m\u001b[32;1m\u001b[1;3mHere is the financial information for Apple Inc. (AAPL) for October 5, 2023:\n", + "\n", + "- **Opening Price**: $173.79\n", + "- **Closing Price**: $174.91\n", + "- **High Price**: $175.45\n", + "- **Low Price**: $172.68\n", + "- **Volume**: 48,527,918 shares\n", + "- **Volume Weighted Average Price (VWAP)**: $174.2297\n", + "- **Number of Transactions**: 509,175\u001b[0m\n", + "\n", + "\u001b[1m> Finished chain.\u001b[0m\n" ] + }, + { + "data": { + "text/plain": [ + "{'input': 'What was yesterdays financial info for AAPL?',\n", + " 'output': 'Here is the financial information for Apple Inc. (AAPL) for October 5, 2023:\\n\\n- **Opening Price**: $173.79\\n- **Closing Price**: $174.91\\n- **High Price**: $175.45\\n- **Low Price**: $172.68\\n- **Volume**: 48,527,918 shares\\n- **Volume Weighted Average Price (VWAP)**: $174.2297\\n- **Number of Transactions**: 509,175'}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "print(f\"Total aggregates: {len(aggregates_json)}\")\n", - "print(f\"Aggregates: {aggregates_json}\")" + "agent_executor.invoke({\"input\": \"What was yesterdays financial info for AAPL?\"})" ] }, { "cell_type": "markdown", - "id": "04f1b612-f91f-471c-8264-9cc8c14bdaef", + "id": "19ac461e", "metadata": {}, "source": [ - "### Get latest news for ticker" + "We can also ask for recent news regarding a stock:" ] }, { "cell_type": "code", - "execution_count": null, - "id": "024982db-1402-4bd7-9788-6cb369a9565d", - "metadata": {}, - "outputs": [], - "source": [ - "ticker_news_tool = PolygonTickerNews(api_wrapper=api_wrapper)\n", - "ticker_news = ticker_news_tool.run(ticker)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "dfd26ef6-2d92-483e-9780-484091bd3774", + "execution_count": 14, + "id": "9e666ee1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Total news items: 10\n" + "\n", + "\n", + "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", + "\u001b[32;1m\u001b[1;3m\n", + "Invoking: `polygon_ticker_news` with `{'query': 'MSFT'}`\n", + "\n", + "\n", + "\u001b[0m\u001b[38;5;200m\u001b[1;3m[{\"id\": \"931602cbcfeb06e22188e205a1cb6127215b7a62e9a37e5cc7a935e8376ac402\", \"publisher\": {\"name\": \"The Motley Fool\", \"homepage_url\": \"https://www.fool.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/themotleyfool.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/themotleyfool.ico\"}, \"title\": \"Prediction: 1 Unstoppable Stock Will Join Nvidia, Apple, Microsoft, and Alphabet in the $2 Trillion Club Within 3 Years\", \"author\": \"The Motley Fool\", \"published_utc\": \"2024-08-08T10:40:00Z\", \"article_url\": \"https://www.fool.com/investing/2024/08/08/prediction-1-stock-nvidia-microsoft-in-2-trillion/?source=iedfolrf0000001\", \"tickers\": [\"META\", \"NVDA\", \"AAPL\", \"MSFT\", \"GOOG\", \"GOOGL\"], \"image_url\": \"https://g.foolcdn.com/editorial/images/785914/two-people-laughing-while-watching-a-video-on-a-smartphone.jpg\", \"description\": \"Meta Platforms (META) is predicted to join the $2 trillion club within 3 years, driven by its advancements in artificial intelligence and potential to drive significant returns for investors.\", \"keywords\": [\"Meta Platforms\", \"Artificial Intelligence\", \"Stock Prediction\"], \"insights\": [{\"ticker\": \"META\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article predicts that Meta Platforms will join the $2 trillion club within 3 years, driven by its advancements in artificial intelligence and potential to drive significant returns for investors.\"}, {\"ticker\": \"NVDA\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Nvidia is mentioned as one of the companies currently valued at over $2 trillion, indicating its strong market position.\"}, {\"ticker\": \"AAPL\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Apple is mentioned as one of the companies currently valued at over $2 trillion, indicating its strong market position.\"}, {\"ticker\": \"MSFT\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Microsoft is mentioned as one of the companies currently valued at over $2 trillion, indicating its strong market position.\"}, {\"ticker\": \"GOOG\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Alphabet is mentioned as one of the companies currently valued at over $2 trillion, indicating its strong market position.\"}, {\"ticker\": \"GOOGL\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Alphabet is mentioned as one of the companies currently valued at over $2 trillion, indicating its strong market position.\"}]}, {\"id\": \"2fedf0bd60526169295242173be22d9cb07aa9bf492859d16a25357b057ab0be\", \"publisher\": {\"name\": \"The Motley Fool\", \"homepage_url\": \"https://www.fool.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/themotleyfool.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/themotleyfool.ico\"}, \"title\": \"Nasdaq Correction: My Top \\\"Magnificent Seven\\\" Stock to Buy in August\", \"author\": \"Daniel Foelber\", \"published_utc\": \"2024-08-08T10:30:00Z\", \"article_url\": \"https://www.fool.com/investing/2024/08/08/nasdaq-buy-microsoft-stock-magnificent-seven/?source=iedfolrf0000001\", \"tickers\": [\"MSFT\", \"GOOG\", \"GOOGL\", \"AAPL\", \"AMZN\", \"META\", \"NVDA\", \"TSLA\"], \"image_url\": \"https://g.foolcdn.com/editorial/images/785889/gettyimages-1440510600-1201x761-58a9ed0.jpg\", \"description\": \"The article discusses why Microsoft is a compelling investment opportunity among the 'Magnificent Seven' tech stocks, despite the recent market sell-off. It highlights Microsoft's strong profitability, ongoing investments in cloud and AI, and its ability to balance growth and shareholder returns.\", \"keywords\": [\"Microsoft\", \"Magnificent Seven\", \"tech stocks\", \"cloud\", \"AI\", \"growth\", \"shareholder returns\"], \"insights\": [{\"ticker\": \"MSFT\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article argues that Microsoft is a compelling investment opportunity due to its strong profitability, ongoing investments in cloud and AI, and its ability to balance growth and shareholder returns. The author believes Microsoft's strategy of prioritizing innovation and market share growth over short-term profitability is a positive long-term move.\"}, {\"ticker\": \"GOOG\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Alphabet as part of the 'Magnificent Seven' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}, {\"ticker\": \"GOOGL\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Alphabet as part of the 'Magnificent Seven' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}, {\"ticker\": \"AAPL\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Apple as part of the 'Magnificent Seven' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}, {\"ticker\": \"AMZN\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Amazon as part of the 'Magnificent Seven' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}, {\"ticker\": \"META\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Meta Platforms (formerly Facebook) as part of the 'Magnificent Seven' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}, {\"ticker\": \"NVDA\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Nvidia as part of the 'Magnificent Seven' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}, {\"ticker\": \"TSLA\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Tesla as part of the 'Magnificent Seven' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}]}, {\"id\": \"aa33fcaf9302450660f1e64e4c05e13a18e508103afb8933a75db47c26eb5969\", \"publisher\": {\"name\": \"Zacks Investment Research\", \"homepage_url\": \"https://www.zacks.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/zacks.png\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/zacks.ico\"}, \"title\": \"Zacks Earnings Trends Highlights: Microsoft, Alphabet, Amazon, Apple, Meta, Tesla and Nvidia\", \"author\": \"Zacks.Com\", \"published_utc\": \"2024-08-08T08:34:00Z\", \"article_url\": \"https://www.zacks.com/stock/news/2318733/zacks-earnings-trends-highlights-microsoft-alphabet-amazon-apple-meta-tesla-and-nvidia?cid=CS-ZC-FT-press_releases-2318733\", \"tickers\": [\"MSFT\", \"GOOG\", \"GOOGL\", \"AMZN\", \"AAPL\", \"META\", \"TSLA\", \"NVDA\"], \"image_url\": \"https://staticx-tuner.zacks.com/images/articles/main/14/776.jpg\", \"description\": \"The overall earnings picture for Q2 2024 is one of stability and an improving outlook, with management teams providing a reassuring view of the economic situation. However, estimates for Q3 2024 have started to weaken faster than in previous quarters.\", \"keywords\": [\"earnings\", \"Q2 2024\", \"Q3 2024\", \"economic outlook\", \"earnings estimates\"], \"insights\": [{\"ticker\": \"MSFT\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Microsoft's Q2 earnings report, along with those of other 'Magnificent 7' companies, mostly failed to impress market participants, particularly due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"GOOG\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"Similar to Microsoft, the article notes that Alphabet's Q2 earnings report, along with other 'Magnificent 7' companies, mostly failed to impress market participants due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"GOOGL\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"Similar to Microsoft, the article notes that Alphabet's Q2 earnings report, along with other 'Magnificent 7' companies, mostly failed to impress market participants due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"AMZN\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Amazon's Q2 earnings report, along with those of other 'Magnificent 7' companies, mostly failed to impress market participants, particularly due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"AAPL\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article includes Apple as one of the 'Magnificent 7' companies, whose Q2 earnings reports mostly failed to impress market participants due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"META\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"Meta Platforms is included in the 'Magnificent 7' group of companies, whose Q2 earnings reports mostly failed to impress market participants due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"TSLA\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Tesla's Q2 earnings report, along with those of other 'Magnificent 7' companies, mostly failed to impress market participants, particularly due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"NVDA\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"Nvidia is part of the 'Magnificent 7' group of companies, whose Q2 earnings reports mostly failed to impress market participants due to their rising capex levels towards AI projects.\"}]}, {\"id\": \"49ff05860d1cafdaaa3935fd800bfb458f07917849754c424b3e5a794e6f5bb7\", \"publisher\": {\"name\": \"GlobeNewswire Inc.\", \"homepage_url\": \"https://www.globenewswire.com\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/globenewswire.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/globenewswire.ico\"}, \"title\": \"VDS: Steve Chen, Randi Zuckerberg, and Juan Antonio Samaranch Lead Top Speaker Lineup at Valencia\\u2019s Premier Tech Event\", \"author\": \"Globe Newswire\", \"published_utc\": \"2024-08-07T19:58:00Z\", \"article_url\": \"https://www.globenewswire.com/news-release/2024/08/07/2926271/0/en/VDS-Steve-Chen-Randi-Zuckerberg-and-Juan-Antonio-Samaranch-Lead-Top-Speaker-Lineup-at-Valencia-s-Premier-Tech-Event.html\", \"tickers\": [\"MSFT\", \"IBM\", \"SSTK\", \"MA\", \"INTC\"], \"image_url\": \"https://www.globenewswire.com/news-release/2024/08/07/2926271/0/en/VDS-Steve-Chen-Randi-Zuckerberg-and-Juan-Antonio-Samaranch-Lead-Top-Speaker-Lineup-at-Valencia-s-Premier-Tech-Event.html\", \"description\": \"VDS, a prominent tech event in Southern Europe, will feature influential speakers like Steve Chen, Randi Zuckerberg, and Juan Antonio Samaranch. The event aims to empower entrepreneurs and foster connections in the tech ecosystem.\", \"keywords\": [\"tech event\", \"tech innovation\", \"entrepreneurs\", \"startups\", \"investors\"], \"insights\": [{\"ticker\": \"MSFT\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Visionary speakers from top companies like Hugging Face, Stability IA, Microsoft, IBM, Cloudera, Shutterstock, Mastercard, Intel, Babel, Eleven Labs, Multiverse, and Freepik will share insights on Artificial Intelligence.\"}, {\"ticker\": \"IBM\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Visionary speakers from top companies like Hugging Face, Stability IA, Microsoft, IBM, Cloudera, Shutterstock, Mastercard, Intel, Babel, Eleven Labs, Multiverse, and Freepik will share insights on Artificial Intelligence.\"}, {\"ticker\": \"SSTK\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Visionary speakers from top companies like Hugging Face, Stability IA, Microsoft, IBM, Cloudera, Shutterstock, Mastercard, Intel, Babel, Eleven Labs, Multiverse, and Freepik will share insights on Artificial Intelligence.\"}, {\"ticker\": \"MA\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Visionary speakers from top companies like Hugging Face, Stability IA, Microsoft, IBM, Cloudera, Shutterstock, Mastercard, Intel, Babel, Eleven Labs, Multiverse, and Freepik will share insights on Artificial Intelligence.\"}, {\"ticker\": \"INTC\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Visionary speakers from top companies like Hugging Face, Stability IA, Microsoft, IBM, Cloudera, Shutterstock, Mastercard, Intel, Babel, Eleven Labs, Multiverse, and Freepik will share insights on Artificial Intelligence.\"}]}, {\"id\": \"167bf58248666b3a16f986ab7dbeaaa02e1a99f22350fbcb41cf00804471810c\", \"publisher\": {\"name\": \"Investing.com\", \"homepage_url\": \"https://www.investing.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/investing.png\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/investing.ico\"}, \"title\": \"Which 'Magnificent 7' Stock Offers the Most Value for Money Today?\", \"author\": \"The Tokenist\", \"published_utc\": \"2024-08-07T19:23:00Z\", \"article_url\": \"https://www.investing.com/analysis/which-magnificent-7-stock-offers-the-most-value-for-money-today-200650755\", \"tickers\": [\"NVDA\", \"GOOG\", \"GOOGL\", \"AMZN\", \"META\", \"MSFT\", \"AAPL\", \"TSLA\"], \"amp_url\": \"https://m.investing.com/analysis/which-magnificent-7-stock-offers-the-most-value-for-money-today-200650755?ampMode=1\", \"image_url\": \"https://i-invdn-com.investing.com/redesign/images/seo/investingcom_analysis_og.jpg\", \"description\": \"The article analyzes the performance and outlook of the 'Magnificent 7' stocks - Apple, Microsoft, Amazon, Alphabet, Meta, Nvidia, and Tesla - in the current market conditions. It highlights the strengths and challenges faced by each company and provides insights on which stock offers the most value for investors.\", \"keywords\": [\"Magnificent 7\", \"stocks\", \"market performance\", \"company analysis\", \"investment value\"], \"insights\": [{\"ticker\": \"NVDA\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Despite facing a delay in the delivery of its Blackwell architecture chips, the article suggests that Nvidia's AI-reliant business model and its dominance in the AI training framework will likely keep it at the center of the generative AI trend, making it a resilient investment option.\"}, {\"ticker\": \"GOOG\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article argues that despite the recent antitrust ruling against Google, Alphabet is likely to continue its growth trajectory, as it is deeply entrenched in the information landscape and its cloud services are expected to benefit from the integration of AI-based tools.\"}, {\"ticker\": \"GOOGL\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article argues that despite the recent antitrust ruling against Google, Alphabet is likely to continue its growth trajectory, as it is deeply entrenched in the information landscape and its cloud services are expected to benefit from the integration of AI-based tools.\"}, {\"ticker\": \"AMZN\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"While Amazon's cloud business remains strong, the article notes that the company's overall performance has been lackluster, with missed quarterly estimates and a weaker-than-expected Q3 guidance. However, the article suggests that Amazon's diversification into services like Prime Video and advertising could boost its revenue in the long run.\"}, {\"ticker\": \"META\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article highlights Meta's resilience in the recent market pullback, noting that the company beat revenue and profit estimates in Q2 and provided better-than-expected Q3 guidance. The article also suggests that Meta's Llama 3 AI model could be more capable than ChatGPT, further strengthening the company's position.\"}, {\"ticker\": \"MSFT\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"While Microsoft reported better-than-expected total revenue in Q2, the article notes that the company's Azure cloud growth fell short of expectations, and it also faces antitrust concerns related to the bundling of its products. However, the article suggests that severe penalties are unlikely.\"}, {\"ticker\": \"AAPL\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article acknowledges the negative sentiment surrounding Apple, including the canceled Apple car project and declining iPhone sales in China. However, it suggests that the upcoming launch of Apple Intelligence, which combines text, image, and video manipulation capabilities, could bolster the company's position.\"}, {\"ticker\": \"TSLA\", \"sentiment\": \"negative\", \"sentiment_reasoning\": \"The article highlights Tesla's vulnerable position, facing tough competition from Chinese automakers and the challenge of overcoming the technical hurdle of full-self driving (FSD) technology. While the article notes that Tesla's stock has a high valuation, it suggests that the company's precarious position makes it a less attractive investment option compared to the other 'Magnificent 7' stocks.\"}]}, {\"id\": \"65fce379dba5a0e6326879cef7ff51af5bb50245565887d980329f39e991ca75\", \"publisher\": {\"name\": \"The Motley Fool\", \"homepage_url\": \"https://www.fool.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/themotleyfool.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/themotleyfool.ico\"}, \"title\": \"The Starbucks Experience Just Isn't the Same Anymore\", \"author\": \"Mary Long\", \"published_utc\": \"2024-08-07T17:58:00Z\", \"article_url\": \"https://www.fool.com/investing/2024/08/07/the-starbucks-experience-just-isnt-the-same-anymor/?source=iedfolrf0000001\", \"tickers\": [\"MSFT\", \"SBUX\"], \"image_url\": \"https://g.foolcdn.com/editorial/images/785850/mfm_30.jpg\", \"description\": \"Microsoft's Q3 earnings showed strong revenue and profit growth, but investors are impatient about the company's long-term AI investments. Starbucks reported declining same-store sales and profits, as it struggles to reinvent the customer experience.\", \"keywords\": [\"Microsoft\", \"Starbucks\", \"AI\", \"Streaming\", \"Olympics\"], \"insights\": [{\"ticker\": \"MSFT\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Microsoft reported strong revenue and profit growth, but investors are concerned about the long timeline for the company's AI investments, which are expected to take 15 years or more to pay off.\"}, {\"ticker\": \"SBUX\", \"sentiment\": \"negative\", \"sentiment_reasoning\": \"Starbucks reported declining same-store sales and profits, as it struggles to reinvent the customer experience and improve efficiency in its stores.\"}]}, {\"id\": \"e4f1fa2d20d4cf39c305fad8fb157c869b63ac27ed7c33c517cd51ca825a45de\", \"publisher\": {\"name\": \"The Motley Fool\", \"homepage_url\": \"https://www.fool.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/themotleyfool.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/themotleyfool.ico\"}, \"title\": \"Where Will CrowdStrike Stock Be in 5 Years?\", \"author\": \"Will Ebiefung\", \"published_utc\": \"2024-08-07T10:30:00Z\", \"article_url\": \"https://www.fool.com/investing/2024/08/07/where-will-crowdstrike-stock-be-in-5-years/?source=iedfolrf0000001\", \"tickers\": [\"CRWD\", \"PANW\", \"S\", \"MSFT\", \"DAL\", \"NDAQ\"], \"image_url\": \"https://g.foolcdn.com/editorial/images/785642/gettyimages-1289228163.jpg\", \"description\": \"CrowdStrike, a cybersecurity company, faces reputational damage and lawsuits after a recent software update caused a global system outage. While the company's fundamentals remain strong, its valuation is considered high, and its shares are expected to underperform in the near future.\", \"keywords\": [\"CrowdStrike\", \"cybersecurity\", \"system outage\", \"valuation\"], \"insights\": [{\"ticker\": \"CRWD\", \"sentiment\": \"negative\", \"sentiment_reasoning\": \"CrowdStrike's shares have fallen significantly due to the global system outage, which has led to reputational damage, lawsuits, and potential loss of enterprise clients. The company's valuation is considered high, and its shares are expected to underperform in the next five years.\"}, {\"ticker\": \"PANW\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"Palo Alto Networks is mentioned as a rival to CrowdStrike, offering similar cybersecurity services. However, the article does not provide any specific insights or sentiment about the company.\"}, {\"ticker\": \"S\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"SentinelOne is also mentioned as a rival to CrowdStrike, offering similar cybersecurity services. However, the article does not provide any specific insights or sentiment about the company.\"}, {\"ticker\": \"MSFT\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that the CrowdStrike software update caused a system crash on over 8.5 million Microsoft Windows computers worldwide, but it does not provide any specific insights or sentiment about Microsoft.\"}, {\"ticker\": \"DAL\", \"sentiment\": \"negative\", \"sentiment_reasoning\": \"The article states that Delta Airlines was one of the worst affected companies, claiming the crisis cost it $500 million after a five-day service outage that grounded some of its planes, disrupted labor, and forced it to reschedule thousands of consumer flights.\"}, {\"ticker\": \"NDAQ\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions the Nasdaq's forward price-to-earnings (P/E) multiple estimate of 28, which is used as a comparison to CrowdStrike's higher valuation. However, the article does not provide any specific insights or sentiment about the Nasdaq.\"}]}, {\"id\": \"c72d90f54fb21db148b53ece4d66c0ce13b0335677bc633e435da704991f6f1f\", \"publisher\": {\"name\": \"The Motley Fool\", \"homepage_url\": \"https://www.fool.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/themotleyfool.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/themotleyfool.ico\"}, \"title\": \"Prediction: This Will Be One of the World's First $5 Trillion Artificial Intelligence (AI) Stocks\", \"author\": \"The Motley Fool\", \"published_utc\": \"2024-08-07T08:51:00Z\", \"article_url\": \"https://www.fool.com/investing/2024/08/07/prediction-this-will-be-first-5-trillion-ai-stock/?source=iedfolrf0000001\", \"tickers\": [\"MSFT\", \"NVDA\", \"AAPL\", \"AMD\"], \"image_url\": \"https://g.foolcdn.com/editorial/images/785674/the-microsoft-logo-on-a-black-background.jpg\", \"description\": \"Microsoft is quickly becoming a leader in the AI industry, with its Copilot virtual assistant and Azure cloud platform driving significant growth. The article predicts Microsoft could reach a $5 trillion market cap within the next few years, driven by the company's investments in AI infrastructure and software.\", \"keywords\": [\"Microsoft\", \"Artificial Intelligence\", \"Cloud Computing\", \"Copilot\", \"Azure\"], \"insights\": [{\"ticker\": \"MSFT\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article predicts that Microsoft's investments in AI, including Copilot and Azure, will drive the company to a $5 trillion market cap within the next few years, representing significant growth potential.\"}, {\"ticker\": \"NVDA\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article cites Nvidia CEO Jensen Huang's forecast that data center operators can generate $5 in revenue for every $1 spent on chips, which could benefit Microsoft's AI initiatives.\"}, {\"ticker\": \"AAPL\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Apple is similarly valued to Microsoft and has a path to the $5 trillion milestone, but does not provide any specific insights about Apple's AI strategy or potential.\"}, {\"ticker\": \"AMD\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article briefly mentions that Microsoft is building data centers with chips from suppliers like Advanced Micro Devices, but does not provide any further analysis or insights about the company.\"}]}, {\"id\": \"6c94364db9626b7b541c480a0b37c0d3437ffe863588d70ea41728a970bf8877\", \"publisher\": {\"name\": \"The Motley Fool\", \"homepage_url\": \"https://www.fool.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/themotleyfool.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/themotleyfool.ico\"}, \"title\": \"Opinion: This Is the Best Artificial Intelligence (AI) Stock to Buy Right Now\", \"author\": \"The Motley Fool\", \"published_utc\": \"2024-08-06T08:44:00Z\", \"article_url\": \"https://www.fool.com/investing/2024/08/06/opinion-this-is-the-best-artificial-intelligence-a/?source=iedfolrf0000001\", \"tickers\": [\"TSM\", \"NVDA\", \"MSFT\"], \"image_url\": \"https://g.foolcdn.com/editorial/images/784732/person-looking-at-an-artifical-intelligence-ai-dashboard.jpg\", \"description\": \"The article discusses Taiwan Semiconductor Manufacturing (TSMC) as the best AI stock to buy right now, citing its leading position in chip fabrication and upcoming 2nm chip technology that could significantly improve power efficiency for AI applications.\", \"keywords\": [\"Taiwan Semiconductor Manufacturing\", \"AI\", \"semiconductor\", \"chip fabrication\"], \"insights\": [{\"ticker\": \"TSM\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article highlights TSMC's leading position in chip fabrication, its upcoming 2nm chip technology that could improve power efficiency for AI, and its strong financial performance, making it a favorable investment option for AI-related applications.\"}, {\"ticker\": \"NVDA\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Nvidia as one of TSMC's clients, but does not provide a specific sentiment or recommendation for Nvidia as a stock.\"}, {\"ticker\": \"MSFT\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Microsoft as one of TSMC's clients, but does not provide a specific sentiment or recommendation for Microsoft as a stock.\"}]}, {\"id\": \"17e9bfed1413912b6d594f0d8f072c1d39d3b5b665b0758c59ca5e6f02f0d59c\", \"publisher\": {\"name\": \"The Motley Fool\", \"homepage_url\": \"https://www.fool.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/themotleyfool.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/themotleyfool.ico\"}, \"title\": \"Cloud Wars: Amazon Leads, Microsoft Disappoints, Google Surges\", \"author\": \"The Motley Fool\", \"published_utc\": \"2024-08-06T07:19:00Z\", \"article_url\": \"https://www.fool.com/investing/2024/08/06/cloud-wars-amazon--microsoft-google/?source=iedfolrf0000001\", \"tickers\": [\"AMZN\", \"MSFT\", \"GOOG\", \"GOOGL\"], \"image_url\": \"https://g.foolcdn.com/editorial/images/785957/data-center-woman-holding-laptop.jpg\", \"description\": \"The article discusses the performance of the major cloud providers - Amazon, Microsoft, and Alphabet (Google) - in the latest quarter. Amazon remains the market leader, while Microsoft's growth disappointed Wall Street. Google Cloud, on the other hand, saw a surge in revenue and profitability.\", \"keywords\": [\"cloud services\", \"Amazon\", \"Microsoft\", \"Alphabet\", \"Google Cloud\"], \"insights\": [{\"ticker\": \"AMZN\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Amazon remains the undisputed leader in the cloud services market, with its AWS segment reporting strong revenue growth and profitability.\"}, {\"ticker\": \"MSFT\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"Microsoft's Azure platform continues to gain ground, but its growth in the latest quarter disappointed Wall Street, though the company expects acceleration in the second half of 2024.\"}, {\"ticker\": \"GOOG\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Google Cloud's revenue surged and the unit reported its first quarter of over $1 billion in operating profit, indicating strong growth and profitability.\"}, {\"ticker\": \"GOOGL\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Google Cloud's revenue surged and the unit reported its first quarter of over $1 billion in operating profit, indicating strong growth and profitability.\"}]}]\u001b[0m\u001b[32;1m\u001b[1;3mHere are some recent news articles regarding Microsoft (MSFT):\n", + "\n", + "1. **Prediction: 1 Unstoppable Stock Will Join Nvidia, Apple, Microsoft, and Alphabet in the $2 Trillion Club Within 3 Years**\n", + " - **Publisher:** The Motley Fool\n", + " - **Published Date:** August 8, 2024\n", + " - **Summary:** The article predicts that Meta Platforms (META) will join the $2 trillion club within 3 years, driven by its advancements in artificial intelligence and potential to drive significant returns for investors. Microsoft is mentioned as one of the companies currently valued at over $2 trillion.\n", + " - [Read more](https://www.fool.com/investing/2024/08/08/prediction-1-stock-nvidia-microsoft-in-2-trillion/?source=iedfolrf0000001)\n", + "\n", + "2. **Nasdaq Correction: My Top \"Magnificent Seven\" Stock to Buy in August**\n", + " - **Publisher:** The Motley Fool\n", + " - **Published Date:** August 8, 2024\n", + " - **Summary:** The article discusses why Microsoft is a compelling investment opportunity among the 'Magnificent Seven' tech stocks, despite the recent market sell-off. It highlights Microsoft's strong profitability, ongoing investments in cloud and AI, and its ability to balance growth and shareholder returns.\n", + " - [Read more](https://www.fool.com/investing/2024/08/08/nasdaq-buy-microsoft-stock-magnificent-seven/?source=iedfolrf0000001)\n", + "\n", + "3. **Zacks Earnings Trends Highlights: Microsoft, Alphabet, Amazon, Apple, Meta, Tesla and Nvidia**\n", + " - **Publisher:** Zacks Investment Research\n", + " - **Published Date:** August 8, 2024\n", + " - **Summary:** The overall earnings picture for Q2 2024 is one of stability and an improving outlook, with management teams providing a reassuring view of the economic situation. However, estimates for Q3 2024 have started to weaken faster than in previous quarters.\n", + " - [Read more](https://www.zacks.com/stock/news/2318733/zacks-earnings-trends-highlights-microsoft-alphabet-amazon-apple-meta-tesla-and-nvidia?cid=CS-ZC-FT-press_releases-2318733)\n", + "\n", + "4. **VDS: Steve Chen, Randi Zuckerberg, and Juan Antonio Samaranch Lead Top Speaker Lineup at Valencia’s Premier Tech Event**\n", + " - **Publisher:** GlobeNewswire Inc.\n", + " - **Published Date:** August 7, 2024\n", + " - **Summary:** VDS, a prominent tech event in Southern Europe, will feature influential speakers like Steve Chen, Randi Zuckerberg, and Juan Antonio Samaranch. The event aims to empower entrepreneurs and foster connections in the tech ecosystem.\n", + " - [Read more](https://www.globenewswire.com/news-release/2024/08/07/2926271/0/en/VDS-Steve-Chen-Randi-Zuckerberg-and-Juan-Antonio-Samaranch-Lead-Top-Speaker-Lineup-at-Valencia-s-Premier-Tech-Event.html)\n", + "\n", + "5. **Which 'Magnificent 7' Stock Offers the Most Value for Money Today?**\n", + " - **Publisher:** Investing.com\n", + " - **Published Date:** August 7, 2024\n", + " - **Summary:** The article analyzes the performance and outlook of the 'Magnificent 7' stocks - Apple, Microsoft, Amazon, Alphabet, Meta, Nvidia, and Tesla - in the current market conditions. It highlights the strengths and challenges faced by each company and provides insights on which stock offers the most value for investors.\n", + " - [Read more](https://www.investing.com/analysis/which-magnificent-7-stock-offers-the-most-value-for-money-today-200650755)\n", + "\n", + "These articles provide a mix of predictions, investment insights, and event highlights related to Microsoft and its position in the tech industry.\u001b[0m\n", + "\n", + "\u001b[1m> Finished chain.\u001b[0m\n" ] + }, + { + "data": { + "text/plain": [ + "{'input': 'What is the recent new regarding MSFT?',\n", + " 'output': 'Here are some recent news articles regarding Microsoft (MSFT):\\n\\n1. **Prediction: 1 Unstoppable Stock Will Join Nvidia, Apple, Microsoft, and Alphabet in the $2 Trillion Club Within 3 Years**\\n - **Publisher:** The Motley Fool\\n - **Published Date:** August 8, 2024\\n - **Summary:** The article predicts that Meta Platforms (META) will join the $2 trillion club within 3 years, driven by its advancements in artificial intelligence and potential to drive significant returns for investors. Microsoft is mentioned as one of the companies currently valued at over $2 trillion.\\n - [Read more](https://www.fool.com/investing/2024/08/08/prediction-1-stock-nvidia-microsoft-in-2-trillion/?source=iedfolrf0000001)\\n\\n2. **Nasdaq Correction: My Top \"Magnificent Seven\" Stock to Buy in August**\\n - **Publisher:** The Motley Fool\\n - **Published Date:** August 8, 2024\\n - **Summary:** The article discusses why Microsoft is a compelling investment opportunity among the \\'Magnificent Seven\\' tech stocks, despite the recent market sell-off. It highlights Microsoft\\'s strong profitability, ongoing investments in cloud and AI, and its ability to balance growth and shareholder returns.\\n - [Read more](https://www.fool.com/investing/2024/08/08/nasdaq-buy-microsoft-stock-magnificent-seven/?source=iedfolrf0000001)\\n\\n3. **Zacks Earnings Trends Highlights: Microsoft, Alphabet, Amazon, Apple, Meta, Tesla and Nvidia**\\n - **Publisher:** Zacks Investment Research\\n - **Published Date:** August 8, 2024\\n - **Summary:** The overall earnings picture for Q2 2024 is one of stability and an improving outlook, with management teams providing a reassuring view of the economic situation. However, estimates for Q3 2024 have started to weaken faster than in previous quarters.\\n - [Read more](https://www.zacks.com/stock/news/2318733/zacks-earnings-trends-highlights-microsoft-alphabet-amazon-apple-meta-tesla-and-nvidia?cid=CS-ZC-FT-press_releases-2318733)\\n\\n4. **VDS: Steve Chen, Randi Zuckerberg, and Juan Antonio Samaranch Lead Top Speaker Lineup at Valencia’s Premier Tech Event**\\n - **Publisher:** GlobeNewswire Inc.\\n - **Published Date:** August 7, 2024\\n - **Summary:** VDS, a prominent tech event in Southern Europe, will feature influential speakers like Steve Chen, Randi Zuckerberg, and Juan Antonio Samaranch. The event aims to empower entrepreneurs and foster connections in the tech ecosystem.\\n - [Read more](https://www.globenewswire.com/news-release/2024/08/07/2926271/0/en/VDS-Steve-Chen-Randi-Zuckerberg-and-Juan-Antonio-Samaranch-Lead-Top-Speaker-Lineup-at-Valencia-s-Premier-Tech-Event.html)\\n\\n5. **Which \\'Magnificent 7\\' Stock Offers the Most Value for Money Today?**\\n - **Publisher:** Investing.com\\n - **Published Date:** August 7, 2024\\n - **Summary:** The article analyzes the performance and outlook of the \\'Magnificent 7\\' stocks - Apple, Microsoft, Amazon, Alphabet, Meta, Nvidia, and Tesla - in the current market conditions. It highlights the strengths and challenges faced by each company and provides insights on which stock offers the most value for investors.\\n - [Read more](https://www.investing.com/analysis/which-magnificent-7-stock-offers-the-most-value-for-money-today-200650755)\\n\\nThese articles provide a mix of predictions, investment insights, and event highlights related to Microsoft and its position in the tech industry.'}" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "# Convert the news response to JSON array\n", - "ticker_news_json = json.loads(ticker_news)\n", - "print(f\"Total news items: {len(ticker_news_json)}\")" + "agent_executor.invoke({\"input\": \"What is the recent new regarding MSFT?\"})" + ] + }, + { + "cell_type": "markdown", + "id": "24ce5ce7", + "metadata": {}, + "source": [ + "You can also ask about financial information for a company:" ] }, { "cell_type": "code", - "execution_count": 10, - "id": "dbbb4b43-1096-45f3-8000-45538b3c73ee", + "execution_count": 15, + "id": "620e6814", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Title: An AI surprise could fuel a 20% rally for the S&P 500 in 2024, says UBS\n", - "Description: If Gen AI causes a big productivity boost, stocks could see an unexpected rally this year, say UBS strategists.\n", - "Publisher: MarketWatch\n", - "URL: https://www.marketwatch.com/story/an-ai-surprise-could-fuel-a-20-rally-for-the-s-p-500-in-2024-says-ubs-1044d716\n" + "\n", + "\n", + "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", + "\u001b[32;1m\u001b[1;3m\n", + "Invoking: `polygon_financials` with `{'query': 'NVDA'}`\n", + "\n", + "\n", + "\u001b[0m\u001b[36;1m\u001b[1;3m[{\"start_date\": \"2023-04-29\", \"end_date\": \"2024-04-28\", \"timeframe\": \"ttm\", \"fiscal_period\": \"TTM\", \"fiscal_year\": \"\", \"cik\": \"0001045810\", \"sic\": \"3674\", \"tickers\": [\"NVDA\"], \"company_name\": \"NVIDIA CORP\", \"financials\": {\"cash_flow_statement\": {\"net_cash_flow_from_operating_activities\": {\"value\": 40524000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -22598000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_financing_activities\": {\"value\": -22598000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow\": {\"value\": 2508000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_investing_activities\": {\"value\": -15418000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": -15418000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 40524000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_continuing\": {\"value\": 2508000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}}, \"comprehensive_income\": {\"comprehensive_income_loss_attributable_to_parent\": {\"value\": 42538000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"comprehensive_income_loss\": {\"value\": 42538000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"other_comprehensive_income_loss\": {\"value\": -59000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}}, \"income_statement\": {\"income_tax_expense_benefit\": {\"value\": 6291000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"basic_average_shares\": {\"value\": 7402000000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"interest_expense_operating\": {\"value\": 255000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"diluted_earnings_per_share\": {\"value\": 17.09, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"income_tax_expense_benefit_deferred\": {\"value\": -2931000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Deferred\", \"order\": 2400}, \"basic_earnings_per_share\": {\"value\": 17.27, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"operating_income_loss\": {\"value\": 47740000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"net_income_loss_attributable_to_parent\": {\"value\": 42597000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"benefits_costs_expenses\": {\"value\": 30886000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"revenues\": {\"value\": 79774000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 48888000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"nonoperating_income_loss\": {\"value\": 1148000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"cost_of_revenue\": {\"value\": 19715000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"selling_general_and_administrative_expenses\": {\"value\": 2800000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 42597000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"costs_and_expenses\": {\"value\": 30886000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"diluted_average_shares\": {\"value\": 7482000000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"gross_profit\": {\"value\": 60059000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"net_income_loss\": {\"value\": 42597000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 42597000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"operating_expenses\": {\"value\": 12319000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"research_and_development\": {\"value\": 9519000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}}, \"balance_sheet\": {\"intangible_assets\": {\"value\": 986000000.0, \"unit\": \"USD\", \"label\": \"Intangible Assets\", \"order\": 330}, \"other_current_assets\": {\"value\": 47865000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"equity\": {\"value\": 49142000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"other_current_liabilities\": {\"value\": 11869000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"noncurrent_assets\": {\"value\": 23343000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"equity_attributable_to_parent\": {\"value\": 49142000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"inventory\": {\"value\": 5864000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"noncurrent_liabilities\": {\"value\": 12707000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"liabilities\": {\"value\": 27930000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"assets\": {\"value\": 77072000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"other_noncurrent_assets\": {\"value\": 18351000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"wages\": {\"value\": 639000000.0, \"unit\": \"USD\", \"label\": \"Wages\", \"order\": 730}, \"long_term_debt\": {\"value\": 9710000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"liabilities_and_equity\": {\"value\": 77072000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"fixed_assets\": {\"value\": 4006000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"current_assets\": {\"value\": 53729000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"accounts_payable\": {\"value\": 2715000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"other_noncurrent_liabilities\": {\"value\": 2997000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"current_liabilities\": {\"value\": 15223000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}}}}, {\"start_date\": \"2024-01-29\", \"end_date\": \"2024-04-28\", \"filing_date\": \"2024-05-29\", \"acceptance_datetime\": \"2024-05-29T20:36:32Z\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q1\", \"fiscal_year\": \"2025\", \"cik\": \"0001045810\", \"sic\": \"3674\", \"tickers\": [\"NVDA\"], \"company_name\": \"NVIDIA CORP\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0001045810-24-000124\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0001045810-24-000124/files/nvda-20240428_htm.xml\", \"financials\": {\"cash_flow_statement\": {\"net_cash_flow_from_financing_activities\": {\"value\": -9345000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": -5693000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 15345000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow\": {\"value\": 307000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_operating_activities\": {\"value\": 15345000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_investing_activities\": {\"value\": -5693000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow_continuing\": {\"value\": 307000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -9345000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}}, \"comprehensive_income\": {\"comprehensive_income_loss\": {\"value\": 14745000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}, \"comprehensive_income_loss_attributable_to_parent\": {\"value\": 14745000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"other_comprehensive_income_loss\": {\"value\": -136000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}}, \"balance_sheet\": {\"current_assets\": {\"value\": 53729000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"inventory\": {\"value\": 5864000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"long_term_debt\": {\"value\": 9710000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"wages\": {\"value\": 639000000.0, \"unit\": \"USD\", \"label\": \"Wages\", \"order\": 730}, \"intangible_assets\": {\"value\": 986000000.0, \"unit\": \"USD\", \"label\": \"Intangible Assets\", \"order\": 330}, \"other_current_liabilities\": {\"value\": 11869000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"noncurrent_assets\": {\"value\": 23343000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"current_liabilities\": {\"value\": 15223000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"fixed_assets\": {\"value\": 4006000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"equity\": {\"value\": 49142000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"equity_attributable_to_parent\": {\"value\": 49142000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"noncurrent_liabilities\": {\"value\": 12707000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"assets\": {\"value\": 77072000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"other_current_assets\": {\"value\": 47865000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"liabilities\": {\"value\": 27930000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"liabilities_and_equity\": {\"value\": 77072000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"accounts_payable\": {\"value\": 2715000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"other_noncurrent_liabilities\": {\"value\": 2997000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"other_noncurrent_assets\": {\"value\": 18351000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}}, \"income_statement\": {\"diluted_earnings_per_share\": {\"value\": 5.98, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"operating_income_loss\": {\"value\": 16909000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"benefits_costs_expenses\": {\"value\": 8765000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 17279000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 14881000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"costs_and_expenses\": {\"value\": 8765000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"selling_general_and_administrative_expenses\": {\"value\": 777000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"cost_of_revenue\": {\"value\": 5638000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"revenues\": {\"value\": 26044000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"operating_expenses\": {\"value\": 3497000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"income_tax_expense_benefit_deferred\": {\"value\": -1577000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Deferred\", \"order\": 2400}, \"nonoperating_income_loss\": {\"value\": 370000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 14881000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"interest_expense_operating\": {\"value\": 64000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"gross_profit\": {\"value\": 20406000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"basic_average_shares\": {\"value\": 2462000000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"net_income_loss\": {\"value\": 14881000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"income_tax_expense_benefit\": {\"value\": 2398000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"net_income_loss_attributable_to_parent\": {\"value\": 14881000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"research_and_development\": {\"value\": 2720000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"diluted_average_shares\": {\"value\": 2489000000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"basic_earnings_per_share\": {\"value\": 6.04, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}}}}, {\"start_date\": \"2023-10-30\", \"end_date\": \"2024-01-28\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q4\", \"fiscal_year\": \"2024\", \"cik\": \"0001045810\", \"sic\": \"3674\", \"tickers\": [\"NVDA\"], \"company_name\": \"NVIDIA CORP\", \"financials\": {\"cash_flow_statement\": {\"net_cash_flow_from_financing_activities_continuing\": {\"value\": -3629000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 11499000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_continuing\": {\"value\": 1761000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": -6109000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_financing_activities\": {\"value\": -3629000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow\": {\"value\": 1761000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_operating_activities\": {\"value\": 11499000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_investing_activities\": {\"value\": -6109000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}}, \"balance_sheet\": {\"noncurrent_assets\": {\"value\": 21383000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"other_current_assets\": {\"value\": 39063000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"long_term_debt\": {\"value\": 9709000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"inventory\": {\"value\": 5282000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"other_current_liabilities\": {\"value\": 7257000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"other_noncurrent_liabilities\": {\"value\": 2410000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"noncurrent_liabilities\": {\"value\": 12119000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"current_liabilities\": {\"value\": 10631000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"other_noncurrent_assets\": {\"value\": 16357000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"intangible_assets\": {\"value\": 1112000000.0, \"unit\": \"USD\", \"label\": \"Intangible Assets\", \"order\": 330}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"assets\": {\"value\": 65728000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"accounts_payable\": {\"value\": 2699000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"equity\": {\"value\": 42978000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"equity_attributable_to_parent\": {\"value\": 42978000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"liabilities_and_equity\": {\"value\": 65728000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"liabilities\": {\"value\": 22750000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"wages\": {\"value\": 675000000.0, \"unit\": \"USD\", \"label\": \"Wages\", \"order\": 730}, \"current_assets\": {\"value\": 44345000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"fixed_assets\": {\"value\": 3914000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}}, \"comprehensive_income\": {\"comprehensive_income_loss\": {\"value\": 12400000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"comprehensive_income_loss_attributable_to_parent\": {\"value\": 12400000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"other_comprehensive_income_loss\": {\"value\": 115000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}}, \"income_statement\": {\"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 12285000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"benefits_costs_expenses\": {\"value\": 7997000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"costs_and_expenses\": {\"value\": 7997000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"diluted_average_shares\": {\"value\": 0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"basic_average_shares\": {\"value\": -1000000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"net_income_loss\": {\"value\": 12285000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"operating_expenses\": {\"value\": 3177000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"research_and_development\": {\"value\": 2465000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"interest_expense_operating\": {\"value\": 63000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 14106000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"income_tax_expense_benefit\": {\"value\": 1821000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"gross_profit\": {\"value\": 16791000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"net_income_loss_attributable_to_parent\": {\"value\": 12285000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"basic_earnings_per_share\": {\"value\": 4.98, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"cost_of_revenue\": {\"value\": 5312000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"income_tax_expense_benefit_deferred\": {\"value\": -78000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Deferred\", \"order\": 2400}, \"selling_general_and_administrative_expenses\": {\"value\": 712000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 12285000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"revenues\": {\"value\": 22103000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"operating_income_loss\": {\"value\": 13614000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"diluted_earnings_per_share\": {\"value\": 4.92, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"nonoperating_income_loss\": {\"value\": 492000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}}}}, {\"start_date\": \"2023-01-30\", \"end_date\": \"2024-01-28\", \"filing_date\": \"2024-02-21\", \"acceptance_datetime\": \"2024-02-21T21:36:57Z\", \"timeframe\": \"annual\", \"fiscal_period\": \"FY\", \"fiscal_year\": \"2024\", \"cik\": \"0001045810\", \"sic\": \"3674\", \"tickers\": [\"NVDA\"], \"company_name\": \"NVIDIA CORP\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0001045810-24-000029\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0001045810-24-000029/files/nvda-20240128_htm.xml\", \"financials\": {\"balance_sheet\": {\"other_noncurrent_liabilities\": {\"value\": 2410000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"noncurrent_liabilities\": {\"value\": 12119000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"intangible_assets\": {\"value\": 1112000000.0, \"unit\": \"USD\", \"label\": \"Intangible Assets\", \"order\": 330}, \"wages\": {\"value\": 675000000.0, \"unit\": \"USD\", \"label\": \"Wages\", \"order\": 730}, \"other_current_liabilities\": {\"value\": 7257000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"accounts_payable\": {\"value\": 2699000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"current_assets\": {\"value\": 44345000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"assets\": {\"value\": 65728000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"inventory\": {\"value\": 5282000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"long_term_debt\": {\"value\": 9709000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"current_liabilities\": {\"value\": 10631000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"liabilities_and_equity\": {\"value\": 65728000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"other_current_assets\": {\"value\": 39063000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"equity\": {\"value\": 42978000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"liabilities\": {\"value\": 22750000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"fixed_assets\": {\"value\": 3914000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"other_noncurrent_assets\": {\"value\": 16357000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"equity_attributable_to_parent\": {\"value\": 42978000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"noncurrent_assets\": {\"value\": 21383000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}}, \"comprehensive_income\": {\"comprehensive_income_loss_attributable_to_parent\": {\"value\": 29830000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}, \"other_comprehensive_income_loss\": {\"value\": 70000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss\": {\"value\": 29830000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}}, \"cash_flow_statement\": {\"net_cash_flow_continuing\": {\"value\": 3891000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_financing_activities\": {\"value\": -13633000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_operating_activities\": {\"value\": 28090000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -13633000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": -10566000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_investing_activities\": {\"value\": -10566000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow\": {\"value\": 3891000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 28090000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}}, \"income_statement\": {\"net_income_loss\": {\"value\": 29760000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"income_tax_expense_benefit\": {\"value\": 4058000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"gross_profit\": {\"value\": 44301000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"interest_expense_operating\": {\"value\": 257000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"basic_average_shares\": {\"value\": 2469000000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"income_tax_expense_benefit_deferred\": {\"value\": -2489000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Deferred\", \"order\": 2400}, \"costs_and_expenses\": {\"value\": 27104000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"diluted_earnings_per_share\": {\"value\": 11.93, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"operating_expenses\": {\"value\": 11329000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"nonoperating_income_loss\": {\"value\": 846000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"diluted_average_shares\": {\"value\": 2494000000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"operating_income_loss\": {\"value\": 32972000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"income_tax_expense_benefit_current\": {\"value\": 6547000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Current\", \"order\": 2300}, \"benefits_costs_expenses\": {\"value\": 27104000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"selling_general_and_administrative_expenses\": {\"value\": 2654000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"revenues\": {\"value\": 60922000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"net_income_loss_attributable_to_parent\": {\"value\": 29760000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"cost_of_revenue\": {\"value\": 16621000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 33818000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"basic_earnings_per_share\": {\"value\": 12.05, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"research_and_development\": {\"value\": 8675000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 29760000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 29760000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"common_stock_dividends\": {\"value\": 0.16, \"unit\": \"USD / shares\", \"label\": \"Common Stock Dividends\", \"order\": 4600}}}}, {\"start_date\": \"2023-07-31\", \"end_date\": \"2023-10-29\", \"filing_date\": \"2023-11-21\", \"acceptance_datetime\": \"2023-11-21T21:36:29Z\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q3\", \"fiscal_year\": \"2024\", \"cik\": \"0001045810\", \"sic\": \"3674\", \"tickers\": [\"NVDA\"], \"company_name\": \"NVIDIA CORP\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0001045810-23-000227\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0001045810-23-000227/files/nvda-20231029_htm.xml\", \"financials\": {\"balance_sheet\": {\"noncurrent_assets\": {\"value\": 21490000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"other_noncurrent_assets\": {\"value\": 16395000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"assets\": {\"value\": 54148000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"noncurrent_liabilities\": {\"value\": 11782000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"wages\": {\"value\": 516000000.0, \"unit\": \"USD\", \"label\": \"Wages\", \"order\": 730}, \"intangible_assets\": {\"value\": 1251000000.0, \"unit\": \"USD\", \"label\": \"Intangible Assets\", \"order\": 330}, \"long_term_debt\": {\"value\": 9706000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"other_current_assets\": {\"value\": 27879000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"liabilities\": {\"value\": 20883000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"current_assets\": {\"value\": 32658000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"current_liabilities\": {\"value\": 9101000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"fixed_assets\": {\"value\": 3844000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"equity_attributable_to_parent\": {\"value\": 33265000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"other_current_liabilities\": {\"value\": 6205000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"liabilities_and_equity\": {\"value\": 54148000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"accounts_payable\": {\"value\": 2380000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"equity\": {\"value\": 33265000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"inventory\": {\"value\": 4779000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"other_noncurrent_liabilities\": {\"value\": 2076000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}}, \"income_statement\": {\"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 9243000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"diluted_earnings_per_share\": {\"value\": 3.71, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"interest_expense_operating\": {\"value\": 63000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"income_tax_expense_benefit\": {\"value\": 1279000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"net_income_loss_attributable_to_parent\": {\"value\": 9243000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 9243000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"operating_income_loss\": {\"value\": 10417000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"basic_average_shares\": {\"value\": 2468000000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"research_and_development\": {\"value\": 2294000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"revenues\": {\"value\": 18120000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"nonoperating_income_loss\": {\"value\": 105000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"operating_expenses\": {\"value\": 2983000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"benefits_costs_expenses\": {\"value\": 7598000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"gross_profit\": {\"value\": 13400000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"basic_earnings_per_share\": {\"value\": 3.75, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 10522000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"income_tax_expense_benefit_deferred\": {\"value\": -530000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Deferred\", \"order\": 2400}, \"net_income_loss\": {\"value\": 9243000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"cost_of_revenue\": {\"value\": 4720000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"selling_general_and_administrative_expenses\": {\"value\": 689000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"diluted_average_shares\": {\"value\": 2494000000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"costs_and_expenses\": {\"value\": 7598000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}}, \"cash_flow_statement\": {\"net_cash_flow\": {\"value\": -363000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_financing_activities\": {\"value\": -4525000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_operating_activities\": {\"value\": 7332000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -4525000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_continuing\": {\"value\": -363000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": -3170000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 7332000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_from_investing_activities\": {\"value\": -3170000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}}, \"comprehensive_income\": {\"other_comprehensive_income_loss\": {\"value\": -37000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}, \"comprehensive_income_loss_attributable_to_parent\": {\"value\": 9206000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"comprehensive_income_loss\": {\"value\": 9206000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}}}}, {\"start_date\": \"2023-05-01\", \"end_date\": \"2023-07-30\", \"filing_date\": \"2023-08-28\", \"acceptance_datetime\": \"2023-08-25T23:36:34Z\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q2\", \"fiscal_year\": \"2024\", \"cik\": \"0001045810\", \"sic\": \"3674\", \"tickers\": [\"NVDA\"], \"company_name\": \"NVIDIA CORP\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0001045810-23-000175\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0001045810-23-000175/files/nvda-20230730_htm.xml\", \"financials\": {\"cash_flow_statement\": {\"net_cash_flow_from_investing_activities_continuing\": {\"value\": -446000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_operating_activities\": {\"value\": 6348000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_investing_activities\": {\"value\": -446000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow\": {\"value\": 803000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 6348000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_continuing\": {\"value\": 803000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -5099000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_financing_activities\": {\"value\": -5099000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}}, \"income_statement\": {\"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"operating_income_loss\": {\"value\": 6800000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"income_tax_expense_benefit_deferred\": {\"value\": -746000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Deferred\", \"order\": 2400}, \"nonoperating_income_loss\": {\"value\": 181000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 6188000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"benefits_costs_expenses\": {\"value\": 6526000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"costs_and_expenses\": {\"value\": 6526000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"income_tax_expense_benefit\": {\"value\": 793000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"gross_profit\": {\"value\": 9462000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"basic_earnings_per_share\": {\"value\": 2.5, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 6981000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"net_income_loss_attributable_to_parent\": {\"value\": 6188000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"research_and_development\": {\"value\": 2040000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"interest_expense_operating\": {\"value\": 65000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 6188000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"net_income_loss\": {\"value\": 6188000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"selling_general_and_administrative_expenses\": {\"value\": 622000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"revenues\": {\"value\": 13507000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"operating_expenses\": {\"value\": 2662000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"diluted_earnings_per_share\": {\"value\": 2.48, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"cost_of_revenue\": {\"value\": 4045000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"basic_average_shares\": {\"value\": 2473000000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"diluted_average_shares\": {\"value\": 2499000000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}}, \"comprehensive_income\": {\"comprehensive_income_loss_attributable_to_parent\": {\"value\": 6187000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"comprehensive_income_loss\": {\"value\": 6187000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"other_comprehensive_income_loss\": {\"value\": -1000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}}, \"balance_sheet\": {\"noncurrent_assets\": {\"value\": 20758000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"other_noncurrent_liabilities\": {\"value\": 2015000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"equity\": {\"value\": 27501000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"other_current_liabilities\": {\"value\": 7763000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"liabilities_and_equity\": {\"value\": 49555000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"accounts_payable\": {\"value\": 1929000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"fixed_assets\": {\"value\": 3799000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"current_assets\": {\"value\": 28797000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"noncurrent_liabilities\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"current_liabilities\": {\"value\": 10334000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"inventory\": {\"value\": 4319000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"long_term_debt\": {\"value\": 9705000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"equity_attributable_to_parent\": {\"value\": 27501000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"liabilities\": {\"value\": 22054000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"other_current_assets\": {\"value\": 24478000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"other_noncurrent_assets\": {\"value\": 15564000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"intangible_assets\": {\"value\": 1395000000.0, \"unit\": \"USD\", \"label\": \"Intangible Assets\", \"order\": 330}, \"wages\": {\"value\": 642000000.0, \"unit\": \"USD\", \"label\": \"Wages\", \"order\": 730}, \"assets\": {\"value\": 49555000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}}}}, {\"start_date\": \"2023-01-30\", \"end_date\": \"2023-04-30\", \"filing_date\": \"2023-05-26\", \"acceptance_datetime\": \"2023-05-26T20:17:32Z\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q1\", \"fiscal_year\": \"2024\", \"cik\": \"0001045810\", \"sic\": \"3674\", \"tickers\": [\"NVDA\"], \"company_name\": \"NVIDIA CORP\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0001045810-23-000093\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0001045810-23-000093/files/nvda-20230430_htm.xml\", \"financials\": {\"income_statement\": {\"interest_expense_operating\": {\"value\": 66000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"operating_expenses\": {\"value\": 2508000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 2043000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"income_tax_expense_benefit_deferred\": {\"value\": -1135000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Deferred\", \"order\": 2400}, \"operating_income_loss\": {\"value\": 2140000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"selling_general_and_administrative_expenses\": {\"value\": 633000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 2043000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"net_income_loss\": {\"value\": 2043000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"basic_average_shares\": {\"value\": 2470000000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"income_tax_expense_benefit\": {\"value\": 166000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"diluted_average_shares\": {\"value\": 2490000000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"net_income_loss_attributable_to_parent\": {\"value\": 2043000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"costs_and_expenses\": {\"value\": 4983000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"revenues\": {\"value\": 7192000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 2209000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"basic_earnings_per_share\": {\"value\": 0.83, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"gross_profit\": {\"value\": 4648000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"cost_of_revenue\": {\"value\": 2544000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"benefits_costs_expenses\": {\"value\": 4983000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"nonoperating_income_loss\": {\"value\": 69000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"research_and_development\": {\"value\": 1875000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"diluted_earnings_per_share\": {\"value\": 0.82, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}}, \"balance_sheet\": {\"equity_attributable_to_parent\": {\"value\": 24520000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"current_liabilities\": {\"value\": 7260000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"other_noncurrent_liabilities\": {\"value\": 1726000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"wages\": {\"value\": 320000000.0, \"unit\": \"USD\", \"label\": \"Wages\", \"order\": 730}, \"long_term_debt\": {\"value\": 10954000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"fixed_assets\": {\"value\": 3740000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"inventory\": {\"value\": 4611000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"other_current_liabilities\": {\"value\": 5799000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"liabilities_and_equity\": {\"value\": 44460000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"equity\": {\"value\": 24520000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"noncurrent_assets\": {\"value\": 19577000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"liabilities\": {\"value\": 19940000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"other_noncurrent_assets\": {\"value\": 14296000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"other_current_assets\": {\"value\": 20272000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"assets\": {\"value\": 44460000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"accounts_payable\": {\"value\": 1141000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"intangible_assets\": {\"value\": 1541000000.0, \"unit\": \"USD\", \"label\": \"Intangible Assets\", \"order\": 330}, \"current_assets\": {\"value\": 24883000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"noncurrent_liabilities\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}}, \"cash_flow_statement\": {\"net_cash_flow_from_operating_activities\": {\"value\": 2911000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 2911000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_from_financing_activities\": {\"value\": -380000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": -841000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -380000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_continuing\": {\"value\": 1690000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_investing_activities\": {\"value\": -841000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow\": {\"value\": 1690000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}}, \"comprehensive_income\": {\"comprehensive_income_loss_attributable_to_parent\": {\"value\": 2036000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"other_comprehensive_income_loss\": {\"value\": -7000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss\": {\"value\": 2036000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}}}}, {\"start_date\": \"2022-10-31\", \"end_date\": \"2023-01-29\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q4\", \"fiscal_year\": \"2023\", \"cik\": \"0001045810\", \"sic\": \"3674\", \"tickers\": [\"NVDA\"], \"company_name\": \"NVIDIA CORP\", \"financials\": {\"income_statement\": {\"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 1414000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"basic_average_shares\": {\"value\": -8000000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"selling_general_and_administrative_expenses\": {\"value\": 625000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"benefits_costs_expenses\": {\"value\": 4763000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"gross_profit\": {\"value\": 3833000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"other_operating_expenses\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Other Operating Expenses\", \"order\": 1040}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 1414000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"nonoperating_income_loss\": {\"value\": 32000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"cost_of_revenue\": {\"value\": 2218000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"net_income_loss\": {\"value\": 1414000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"operating_expenses\": {\"value\": 2577000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"costs_and_expenses\": {\"value\": 4763000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"operating_income_loss\": {\"value\": 1256000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"interest_expense_operating\": {\"value\": 64000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 1288000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"net_income_loss_attributable_to_parent\": {\"value\": 1414000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"income_tax_expense_benefit\": {\"value\": -126000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"revenues\": {\"value\": 6051000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"diluted_earnings_per_share\": {\"value\": 0.5700000000000001, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"research_and_development\": {\"value\": 1952000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"basic_earnings_per_share\": {\"value\": 0.5800000000000001, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"income_tax_expense_benefit_deferred\": {\"value\": -647000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Deferred\", \"order\": 2400}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"diluted_average_shares\": {\"value\": -10000000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}}, \"cash_flow_statement\": {\"net_cash_flow\": {\"value\": 589000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": -3000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_operating_activities\": {\"value\": 2248000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -1656000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_financing_activities\": {\"value\": -1656000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_investing_activities\": {\"value\": -3000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 2248000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_continuing\": {\"value\": 589000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}}, \"balance_sheet\": {\"other_current_assets\": {\"value\": 17914000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"wages\": {\"value\": 530000000.0, \"unit\": \"USD\", \"label\": \"Wages\", \"order\": 730}, \"liabilities\": {\"value\": 19081000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"noncurrent_liabilities\": {\"value\": 12518000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"assets\": {\"value\": 41182000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"equity_attributable_to_parent\": {\"value\": 22101000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"noncurrent_assets\": {\"value\": 18109000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"other_noncurrent_liabilities\": {\"value\": 1565000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"long_term_debt\": {\"value\": 10953000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"liabilities_and_equity\": {\"value\": 41182000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"inventory\": {\"value\": 5159000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"fixed_assets\": {\"value\": 3807000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"equity\": {\"value\": 22101000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"current_liabilities\": {\"value\": 6563000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"current_assets\": {\"value\": 23073000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"accounts_payable\": {\"value\": 1193000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"other_noncurrent_assets\": {\"value\": 12626000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"other_current_liabilities\": {\"value\": 4840000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"intangible_assets\": {\"value\": 1676000000.0, \"unit\": \"USD\", \"label\": \"Intangible Assets\", \"order\": 330}}, \"comprehensive_income\": {\"other_comprehensive_income_loss\": {\"value\": 80000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss\": {\"value\": 1494000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}, \"comprehensive_income_loss_attributable_to_parent\": {\"value\": 1494000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}}}}, {\"start_date\": \"2022-01-31\", \"end_date\": \"2023-01-29\", \"filing_date\": \"2023-02-24\", \"timeframe\": \"annual\", \"fiscal_period\": \"FY\", \"fiscal_year\": \"2023\", \"cik\": \"0001045810\", \"sic\": \"3674\", \"tickers\": [\"NVDA\"], \"company_name\": \"NVIDIA CORP\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0001045810-23-000017\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0001045810-23-000017/files/nvda-20230129_htm.xml\", \"financials\": {\"income_statement\": {\"income_tax_expense_benefit_deferred\": {\"value\": -2164000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Deferred\", \"order\": 2400}, \"net_income_loss_attributable_to_parent\": {\"value\": 4368000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"basic_average_shares\": {\"value\": 2487000000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 4368000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 4181000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"operating_income_loss\": {\"value\": 4224000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"nonoperating_income_loss\": {\"value\": -43000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"costs_and_expenses\": {\"value\": 22793000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"operating_expenses\": {\"value\": 11132000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"selling_general_and_administrative_expenses\": {\"value\": 2440000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"net_income_loss\": {\"value\": 4368000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 4368000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"cost_of_revenue\": {\"value\": 11618000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"income_tax_expense_benefit\": {\"value\": -187000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"diluted_earnings_per_share\": {\"value\": 1.74, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"gross_profit\": {\"value\": 15356000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"common_stock_dividends\": {\"value\": 0.16, \"unit\": \"USD / shares\", \"label\": \"Common Stock Dividends\", \"order\": 4600}, \"revenues\": {\"value\": 26974000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"research_and_development\": {\"value\": 7339000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"income_tax_expense_benefit_current\": {\"value\": 1977000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Current\", \"order\": 2300}, \"benefits_costs_expenses\": {\"value\": 22793000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"diluted_average_shares\": {\"value\": 2507000000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"other_operating_expenses\": {\"value\": 1353000000.0, \"unit\": \"USD\", \"label\": \"Other Operating Expenses\", \"order\": 1040}, \"interest_expense_operating\": {\"value\": 262000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"basic_earnings_per_share\": {\"value\": 1.76, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}}, \"cash_flow_statement\": {\"net_cash_flow_continuing\": {\"value\": 1399000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow\": {\"value\": 1399000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_operating_activities\": {\"value\": 5641000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": 7375000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -11617000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_investing_activities\": {\"value\": 7375000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow_from_financing_activities\": {\"value\": -11617000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 5641000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}}, \"balance_sheet\": {\"inventory\": {\"value\": 5159000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"current_assets\": {\"value\": 23073000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"noncurrent_liabilities\": {\"value\": 12518000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"noncurrent_assets\": {\"value\": 18109000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"current_liabilities\": {\"value\": 6563000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"equity\": {\"value\": 22101000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"other_current_assets\": {\"value\": 17914000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"intangible_assets\": {\"value\": 1676000000.0, \"unit\": \"USD\", \"label\": \"Intangible Assets\", \"order\": 330}, \"fixed_assets\": {\"value\": 3807000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"wages\": {\"value\": 530000000.0, \"unit\": \"USD\", \"label\": \"Wages\", \"order\": 730}, \"liabilities\": {\"value\": 19081000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"other_current_liabilities\": {\"value\": 4840000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"long_term_debt\": {\"value\": 10953000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"assets\": {\"value\": 41182000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"liabilities_and_equity\": {\"value\": 41182000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"other_noncurrent_assets\": {\"value\": 12626000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"accounts_payable\": {\"value\": 1193000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"equity_attributable_to_parent\": {\"value\": 22101000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"other_noncurrent_liabilities\": {\"value\": 1565000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}}, \"comprehensive_income\": {\"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}, \"comprehensive_income_loss\": {\"value\": 4336000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"comprehensive_income_loss_attributable_to_parent\": {\"value\": 4336000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"other_comprehensive_income_loss\": {\"value\": -32000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}}}}, {\"start_date\": \"2022-08-01\", \"end_date\": \"2022-10-30\", \"filing_date\": \"2022-11-18\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q3\", \"fiscal_year\": \"2023\", \"cik\": \"0001045810\", \"sic\": \"3674\", \"tickers\": [\"NVDA\"], \"company_name\": \"NVIDIA CORP\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0001045810-22-000166\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0001045810-22-000166/files/nvda-20221030_htm.xml\", \"financials\": {\"balance_sheet\": {\"assets\": {\"value\": 40488000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"liabilities\": {\"value\": 19139000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"other_current_assets\": {\"value\": 18769000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"long_term_debt\": {\"value\": 10950000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"equity_attributable_to_parent\": {\"value\": 21349000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"noncurrent_liabilities\": {\"value\": 12284000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"current_liabilities\": {\"value\": 6855000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"liabilities_and_equity\": {\"value\": 40488000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"other_current_liabilities\": {\"value\": 5057000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"accounts_payable\": {\"value\": 1491000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"inventory\": {\"value\": 4454000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"equity\": {\"value\": 21349000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"intangible_assets\": {\"value\": 1850000000.0, \"unit\": \"USD\", \"label\": \"Intangible Assets\", \"order\": 330}, \"other_noncurrent_liabilities\": {\"value\": 1334000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"wages\": {\"value\": 307000000.0, \"unit\": \"USD\", \"label\": \"Wages\", \"order\": 730}, \"noncurrent_assets\": {\"value\": 17265000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"other_noncurrent_assets\": {\"value\": 11641000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"current_assets\": {\"value\": 23223000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"fixed_assets\": {\"value\": 3774000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}}, \"comprehensive_income\": {\"other_comprehensive_income_loss\": {\"value\": -33000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss_attributable_to_parent\": {\"value\": 647000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"comprehensive_income_loss\": {\"value\": 647000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}}, \"cash_flow_statement\": {\"net_cash_flow_from_investing_activities\": {\"value\": 3148000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow_continuing\": {\"value\": -213000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_operating_activities\": {\"value\": 392000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow\": {\"value\": -213000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -3753000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 392000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_from_financing_activities\": {\"value\": -3753000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": 3148000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}}, \"income_statement\": {\"selling_general_and_administrative_expenses\": {\"value\": 631000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"revenues\": {\"value\": 5931000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 680000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"interest_expense_operating\": {\"value\": 65000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"income_tax_expense_benefit_deferred\": {\"value\": -532000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Deferred\", \"order\": 2400}, \"nonoperating_income_loss\": {\"value\": 12000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"operating_income_loss\": {\"value\": 601000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"costs_and_expenses\": {\"value\": 5318000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"income_tax_expense_benefit\": {\"value\": -67000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"operating_expenses\": {\"value\": 2576000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 680000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 613000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"basic_average_shares\": {\"value\": 2483000000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"gross_profit\": {\"value\": 3177000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"net_income_loss_attributable_to_parent\": {\"value\": 680000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"basic_earnings_per_share\": {\"value\": 0.27, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"net_income_loss\": {\"value\": 680000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"research_and_development\": {\"value\": 1945000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"other_operating_expenses\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Other Operating Expenses\", \"order\": 1040}, \"benefits_costs_expenses\": {\"value\": 5318000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"diluted_average_shares\": {\"value\": 2499000000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"cost_of_revenue\": {\"value\": 2754000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"diluted_earnings_per_share\": {\"value\": 0.27, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}}}}]\u001b[0m\u001b[32;1m\u001b[1;3mHere are the financial numbers for Nvidia for the last quarter (Q1 of fiscal year 2025):\n", + "\n", + "### Income Statement\n", + "- **Revenues:** $26,044,000,000\n", + "- **Cost of Revenue:** $5,638,000,000\n", + "- **Gross Profit:** $20,406,000,000\n", + "- **Operating Expenses:** $3,497,000,000\n", + " - **Research and Development:** $2,720,000,000\n", + " - **Selling, General, and Administrative Expenses:** $777,000,000\n", + "- **Operating Income:** $16,909,000,000\n", + "- **Nonoperating Income:** $370,000,000\n", + "- **Income Before Tax:** $17,279,000,000\n", + "- **Income Tax Expense:** $2,398,000,000\n", + "- **Net Income:** $14,881,000,000\n", + "- **Net Income Attributable to Parent:** $14,881,000,000\n", + "- **Basic Earnings Per Share:** $6.04\n", + "- **Diluted Earnings Per Share:** $5.98\n", + "\n", + "### Balance Sheet\n", + "- **Total Assets:** $77,072,000,000\n", + " - **Current Assets:** $53,729,000,000\n", + " - **Inventory:** $5,864,000,000\n", + " - **Other Current Assets:** $47,865,000,000\n", + " - **Noncurrent Assets:** $23,343,000,000\n", + " - **Fixed Assets:** $4,006,000,000\n", + " - **Intangible Assets:** $986,000,000\n", + " - **Other Non-current Assets:** $18,351,000,000\n", + "- **Total Liabilities:** $27,930,000,000\n", + " - **Current Liabilities:** $15,223,000,000\n", + " - **Accounts Payable:** $2,715,000,000\n", + " - **Other Current Liabilities:** $11,869,000,000\n", + " - **Noncurrent Liabilities:** $12,707,000,000\n", + " - **Long-term Debt:** $9,710,000,000\n", + " - **Other Non-current Liabilities:** $2,997,000,000\n", + "- **Total Equity:** $49,142,000,000\n", + " - **Equity Attributable to Parent:** $49,142,000,000\n", + "\n", + "### Cash Flow Statement\n", + "- **Net Cash Flow from Operating Activities:** $15,345,000,000\n", + "- **Net Cash Flow from Investing Activities:** -$5,693,000,000\n", + "- **Net Cash Flow from Financing Activities:** -$9,345,000,000\n", + "- **Net Cash Flow:** $307,000,000\n", + "\n", + "### Comprehensive Income\n", + "- **Comprehensive Income:** $14,745,000,000\n", + "- **Other Comprehensive Income:** -$136,000,000\n", + "- **Comprehensive Income Attributable to Parent:** $14,745,000,000\n", + "\n", + "These numbers reflect Nvidia's strong financial performance in the first quarter of fiscal year 2025.\u001b[0m\n", + "\n", + "\u001b[1m> Finished chain.\u001b[0m\n" ] + }, + { + "data": { + "text/plain": [ + "{'input': 'What were last quarters financial numbers for Nvidia?',\n", + " 'output': \"Here are the financial numbers for Nvidia for the last quarter (Q1 of fiscal year 2025):\\n\\n### Income Statement\\n- **Revenues:** $26,044,000,000\\n- **Cost of Revenue:** $5,638,000,000\\n- **Gross Profit:** $20,406,000,000\\n- **Operating Expenses:** $3,497,000,000\\n - **Research and Development:** $2,720,000,000\\n - **Selling, General, and Administrative Expenses:** $777,000,000\\n- **Operating Income:** $16,909,000,000\\n- **Nonoperating Income:** $370,000,000\\n- **Income Before Tax:** $17,279,000,000\\n- **Income Tax Expense:** $2,398,000,000\\n- **Net Income:** $14,881,000,000\\n- **Net Income Attributable to Parent:** $14,881,000,000\\n- **Basic Earnings Per Share:** $6.04\\n- **Diluted Earnings Per Share:** $5.98\\n\\n### Balance Sheet\\n- **Total Assets:** $77,072,000,000\\n - **Current Assets:** $53,729,000,000\\n - **Inventory:** $5,864,000,000\\n - **Other Current Assets:** $47,865,000,000\\n - **Noncurrent Assets:** $23,343,000,000\\n - **Fixed Assets:** $4,006,000,000\\n - **Intangible Assets:** $986,000,000\\n - **Other Non-current Assets:** $18,351,000,000\\n- **Total Liabilities:** $27,930,000,000\\n - **Current Liabilities:** $15,223,000,000\\n - **Accounts Payable:** $2,715,000,000\\n - **Other Current Liabilities:** $11,869,000,000\\n - **Noncurrent Liabilities:** $12,707,000,000\\n - **Long-term Debt:** $9,710,000,000\\n - **Other Non-current Liabilities:** $2,997,000,000\\n- **Total Equity:** $49,142,000,000\\n - **Equity Attributable to Parent:** $49,142,000,000\\n\\n### Cash Flow Statement\\n- **Net Cash Flow from Operating Activities:** $15,345,000,000\\n- **Net Cash Flow from Investing Activities:** -$5,693,000,000\\n- **Net Cash Flow from Financing Activities:** -$9,345,000,000\\n- **Net Cash Flow:** $307,000,000\\n\\n### Comprehensive Income\\n- **Comprehensive Income:** $14,745,000,000\\n- **Other Comprehensive Income:** -$136,000,000\\n- **Comprehensive Income Attributable to Parent:** $14,745,000,000\\n\\nThese numbers reflect Nvidia's strong financial performance in the first quarter of fiscal year 2025.\"}" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "# Inspect the first news item\n", - "news_item = ticker_news_json[0]\n", - "print(f\"Title: {news_item['title']}\")\n", - "print(f\"Description: {news_item['description']}\")\n", - "print(f\"Publisher: {news_item['publisher']['name']}\")\n", - "print(f\"URL: {news_item['article_url']}\")" + "agent_executor.invoke(\n", + " {\"input\": \"What were last quarters financial numbers for Nvidia?\"}\n", + ")" ] }, { "cell_type": "markdown", - "id": "675cbae0-a754-45b0-be01-738333c3255e", + "id": "7d691721", "metadata": {}, "source": [ - "### Get financials for ticker" + "Lastly, you can get live data, although this requires a \"Stocks Advanced\" subscription" ] }, { "cell_type": "code", - "execution_count": 28, - "id": "f46a8c88-8793-470d-8fce-31e8d4b1f77c", + "execution_count": null, + "id": "46df4d17", "metadata": {}, "outputs": [], "source": [ - "financials_tool = PolygonFinancials(api_wrapper=api_wrapper)\n", - "financials = financials_tool.run(ticker)" + "agent_executor.invoke({\"input\": \"What is Doordash stock price right now?\"})" + ] + }, + { + "cell_type": "markdown", + "id": "74e4c4ae", + "metadata": {}, + "source": [ + "### API reference\n", + "\n", + "For detailed documentation of all the Polygon IO toolkit features and configurations head to the API reference: https://api.python.langchain.com/en/latest/agent_toolkits/langchain_community.agent_toolkits.polygon.toolkit.PolygonToolkit.html" + ] + }, + { + "cell_type": "markdown", + "id": "a8e2e6e3", + "metadata": {}, + "source": [ + "## Tools\n", + "\n", + "First, let's set up the API wrapper that we will use for all the tools and then we will walk through each one of them." ] }, { "cell_type": "code", - "execution_count": 30, - "id": "3495021c-a31b-4dba-8daf-811c43e24bd9", + "execution_count": 16, + "id": "f9958d3c", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total reporting periods: 10\n" - ] - } - ], + "outputs": [], "source": [ - "# Convert the financials response to JSON\n", - "financials_json = json.loads(financials)\n", - "print(f\"Total reporting periods: {len(financials_json)}\")" + "from langchain_community.utilities.polygon import PolygonAPIWrapper\n", + "\n", + "api_wrapper = PolygonAPIWrapper()" + ] + }, + { + "cell_type": "markdown", + "id": "08c095fb", + "metadata": {}, + "source": [ + "### Aggregate\n", + "\n", + "This tool shows aggregate information for a stock." ] }, { "cell_type": "code", - "execution_count": 31, - "id": "86215a03-a927-4334-a82b-54cb9574ed05", + "execution_count": 25, + "id": "9805b04f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Company name: APPLE INC\n", - "CIK: 0000320193\n", - "Fiscal period: TTM\n", - "End date: 2023-12-30\n", - "Start date: 2022-12-31\n" + "content='[{\"v\": 61125243.0, \"vw\": 219.4773, \"o\": 224.37, \"c\": 218.36, \"h\": 224.48, \"l\": 217.02, \"t\": 1722484800000, \"n\": 876046}, {\"v\": 102635321.0, \"vw\": 221.9519, \"o\": 219.15, \"c\": 219.86, \"h\": 225.6, \"l\": 217.71, \"t\": 1722571200000, \"n\": 1132479}, {\"v\": 119382508.0, \"vw\": 207.801, \"o\": 199.09, \"c\": 209.27, \"h\": 213.5, \"l\": 196, \"t\": 1722830400000, \"n\": 1661493}, {\"v\": 69545387.0, \"vw\": 206.739, \"o\": 205.3, \"c\": 207.23, \"h\": 209.99, \"l\": 201.07, \"t\": 1722916800000, \"n\": 921946}, {\"v\": 60109650.0, \"vw\": 210.7375, \"o\": 206.9, \"c\": 209.82, \"h\": 213.64, \"l\": 206.39, \"t\": 1723003200000, \"n\": 741607}]' name='polygon_aggregates' tool_call_id='1'\n" ] } ], "source": [ - "# Print the latest reporting period's financials metadata\n", - "financial_data = financials_json[0]\n", - "print(f\"Company name: {financial_data['company_name']}\")\n", - "print(f\"CIK: {financial_data['cik']}\")\n", - "print(f\"Fiscal period: {financial_data['fiscal_period']}\")\n", - "print(f\"End date: {financial_data['end_date']}\")\n", - "print(f\"Start date: {financial_data['start_date']}\")" + "from langchain_community.tools.polygon.aggregates import PolygonAggregates\n", + "\n", + "aggregate_tool = PolygonAggregates(api_wrapper=api_wrapper)\n", + "\n", + "# We can invoke directly with input\n", + "res = aggregate_tool.invoke(\n", + " {\n", + " \"ticker\": \"AAPL\",\n", + " \"timespan\": \"day\",\n", + " \"timespan_multiplier\": 1,\n", + " \"from_date\": \"2024-08-01\",\n", + " \"to_date\": \"2024-08-07\",\n", + " }\n", + ")\n", + "\n", + "model_generated_tool_call = {\n", + " \"args\": {\n", + " \"ticker\": \"AAPL\",\n", + " \"timespan\": \"day\",\n", + " \"timespan_multiplier\": 1,\n", + " \"from_date\": \"2024-08-01\",\n", + " \"to_date\": \"2024-08-07\",\n", + " },\n", + " \"id\": \"1\",\n", + " \"name\": aggregate_tool.name,\n", + " \"type\": \"tool_call\",\n", + "}\n", + "\n", + "# Or we can invoke with a tool call\n", + "res = aggregate_tool.invoke(model_generated_tool_call)\n", + "\n", + "print(res)" + ] + }, + { + "cell_type": "markdown", + "id": "1495b160", + "metadata": {}, + "source": [ + "### Financials\n", + "\n", + "This tool provides general financial information about a stock" ] }, { "cell_type": "code", - "execution_count": 32, - "id": "2665d48b-fd44-4279-a2fe-e42836d3acdb", + "execution_count": 35, + "id": "47f3c4f6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Income statement: {'diluted_earnings_per_share': {'value': 6.42, 'unit': 'USD / shares', 'label': 'Diluted Earnings Per Share', 'order': 4300}, 'costs_and_expenses': {'value': 267270000000.0, 'unit': 'USD', 'label': 'Costs And Expenses', 'order': 600}, 'net_income_loss_attributable_to_noncontrolling_interest': {'value': 0, 'unit': 'USD', 'label': 'Net Income/Loss Attributable To Noncontrolling Interest', 'order': 3300}, 'net_income_loss_attributable_to_parent': {'value': 100913000000.0, 'unit': 'USD', 'label': 'Net Income/Loss Attributable To Parent', 'order': 3500}, 'income_tax_expense_benefit': {'value': 17523000000.0, 'unit': 'USD', 'label': 'Income Tax Expense/Benefit', 'order': 2200}, 'income_loss_from_continuing_operations_before_tax': {'value': 118436000000.0, 'unit': 'USD', 'label': 'Income/Loss From Continuing Operations Before Tax', 'order': 1500}, 'operating_expenses': {'value': 55013000000.0, 'unit': 'USD', 'label': 'Operating Expenses', 'order': 1000}, 'benefits_costs_expenses': {'value': 267270000000.0, 'unit': 'USD', 'label': 'Benefits Costs and Expenses', 'order': 200}, 'diluted_average_shares': {'value': 47151996000.0, 'unit': 'shares', 'label': 'Diluted Average Shares', 'order': 4500}, 'cost_of_revenue': {'value': 212035000000.0, 'unit': 'USD', 'label': 'Cost Of Revenue', 'order': 300}, 'operating_income_loss': {'value': 118658000000.0, 'unit': 'USD', 'label': 'Operating Income/Loss', 'order': 1100}, 'net_income_loss_available_to_common_stockholders_basic': {'value': 100913000000.0, 'unit': 'USD', 'label': 'Net Income/Loss Available To Common Stockholders, Basic', 'order': 3700}, 'preferred_stock_dividends_and_other_adjustments': {'value': 0, 'unit': 'USD', 'label': 'Preferred Stock Dividends And Other Adjustments', 'order': 3900}, 'research_and_development': {'value': 29902000000.0, 'unit': 'USD', 'label': 'Research and Development', 'order': 1030}, 'revenues': {'value': 385706000000.0, 'unit': 'USD', 'label': 'Revenues', 'order': 100}, 'participating_securities_distributed_and_undistributed_earnings_loss_basic': {'value': 0, 'unit': 'USD', 'label': 'Participating Securities, Distributed And Undistributed Earnings/Loss, Basic', 'order': 3800}, 'selling_general_and_administrative_expenses': {'value': 25111000000.0, 'unit': 'USD', 'label': 'Selling, General, and Administrative Expenses', 'order': 1010}, 'nonoperating_income_loss': {'value': -222000000.0, 'unit': 'USD', 'label': 'Nonoperating Income/Loss', 'order': 900}, 'income_loss_from_continuing_operations_after_tax': {'value': 100913000000.0, 'unit': 'USD', 'label': 'Income/Loss From Continuing Operations After Tax', 'order': 1400}, 'basic_earnings_per_share': {'value': 6.46, 'unit': 'USD / shares', 'label': 'Basic Earnings Per Share', 'order': 4200}, 'basic_average_shares': {'value': 46946265000.0, 'unit': 'shares', 'label': 'Basic Average Shares', 'order': 4400}, 'gross_profit': {'value': 173671000000.0, 'unit': 'USD', 'label': 'Gross Profit', 'order': 800}, 'net_income_loss': {'value': 100913000000.0, 'unit': 'USD', 'label': 'Net Income/Loss', 'order': 3200}}\n" + "content='[{\"start_date\": \"2023-03-31\", \"end_date\": \"2024-03-30\", \"timeframe\": \"ttm\", \"fiscal_period\": \"TTM\", \"fiscal_year\": \"\", \"cik\": \"0000320193\", \"sic\": \"3571\", \"tickers\": [\"AAPL\"], \"company_name\": \"APPLE INC\", \"financials\": {\"cash_flow_statement\": {\"net_cash_flow_from_operating_activities\": {\"value\": 110563000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow\": {\"value\": 6792000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": 4448000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_investing_activities\": {\"value\": 4448000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow_continuing\": {\"value\": 6792000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 110563000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_from_financing_activities\": {\"value\": -108219000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -108219000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}}, \"comprehensive_income\": {\"other_comprehensive_income_loss_attributable_to_parent\": {\"value\": 2786000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss Attributable To Parent\", \"order\": 600}, \"other_comprehensive_income_loss\": {\"value\": 103175000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss_attributable_to_parent\": {\"value\": 103175000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"comprehensive_income_loss\": {\"value\": 103175000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}}, \"income_statement\": {\"income_loss_from_continuing_operations_after_tax\": {\"value\": 100389000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 100389000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"net_income_loss_attributable_to_parent\": {\"value\": 100389000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 118112000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"gross_profit\": {\"value\": 173966000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"operating_expenses\": {\"value\": 55726000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"operating_income_loss\": {\"value\": 118240000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"diluted_earnings_per_share\": {\"value\": 6.43, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"basic_earnings_per_share\": {\"value\": 6.459999999999999, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"research_and_development\": {\"value\": 30348000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"selling_general_and_administrative_expenses\": {\"value\": 25378000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"cost_of_revenue\": {\"value\": 207657000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"benefits_costs_expenses\": {\"value\": 263511000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"net_income_loss\": {\"value\": 100389000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"diluted_average_shares\": {\"value\": 31248980000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"nonoperating_income_loss\": {\"value\": -128000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"income_tax_expense_benefit\": {\"value\": 17723000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"costs_and_expenses\": {\"value\": 263511000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"basic_average_shares\": {\"value\": 31107158000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"revenues\": {\"value\": 381623000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}}, \"balance_sheet\": {\"accounts_payable\": {\"value\": 45753000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"other_noncurrent_assets\": {\"value\": 165449000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"other_noncurrent_liabilities\": {\"value\": 36795000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"assets\": {\"value\": 337411000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"noncurrent_liabilities\": {\"value\": 139395000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"liabilities_and_equity\": {\"value\": 337411000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"noncurrent_assets\": {\"value\": 208995000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"equity\": {\"value\": 74194000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"inventory\": {\"value\": 6232000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"fixed_assets\": {\"value\": 43546000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"other_current_assets\": {\"value\": 122184000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"current_assets\": {\"value\": 128416000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"liabilities\": {\"value\": 263217000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"long_term_debt\": {\"value\": 102600000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"other_current_liabilities\": {\"value\": 78069000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"current_liabilities\": {\"value\": 123822000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"equity_attributable_to_parent\": {\"value\": 74194000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}}}}, {\"start_date\": \"2023-12-31\", \"end_date\": \"2024-03-30\", \"filing_date\": \"2024-05-03\", \"acceptance_datetime\": \"2024-05-02T22:04:25Z\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q2\", \"fiscal_year\": \"2024\", \"cik\": \"0000320193\", \"sic\": \"3571\", \"tickers\": [\"AAPL\"], \"company_name\": \"Apple Inc.\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0000320193-24-000069\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0000320193-24-000069/files/aapl-20240330_htm.xml\", \"financials\": {\"balance_sheet\": {\"other_current_liabilities\": {\"value\": 78069000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"inventory\": {\"value\": 6232000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"long_term_debt\": {\"value\": 102600000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"accounts_payable\": {\"value\": 45753000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"fixed_assets\": {\"value\": 43546000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"equity\": {\"value\": 74194000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"noncurrent_liabilities\": {\"value\": 139395000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"current_assets\": {\"value\": 128416000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"other_noncurrent_liabilities\": {\"value\": 36795000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"equity_attributable_to_parent\": {\"value\": 74194000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"liabilities\": {\"value\": 263217000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"assets\": {\"value\": 337411000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"other_noncurrent_assets\": {\"value\": 165449000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"other_current_assets\": {\"value\": 122184000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"current_liabilities\": {\"value\": 123822000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"liabilities_and_equity\": {\"value\": 337411000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"noncurrent_assets\": {\"value\": 208995000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}}, \"comprehensive_income\": {\"comprehensive_income_loss_attributable_to_parent\": {\"value\": 24054000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"comprehensive_income_loss\": {\"value\": 24054000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}, \"other_comprehensive_income_loss\": {\"value\": 24054000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"other_comprehensive_income_loss_attributable_to_parent\": {\"value\": 418000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss Attributable To Parent\", \"order\": 600}}, \"income_statement\": {\"basic_earnings_per_share\": {\"value\": 1.53, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"net_income_loss\": {\"value\": 23636000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"cost_of_revenue\": {\"value\": 48482000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"revenues\": {\"value\": 90753000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"benefits_costs_expenses\": {\"value\": 62695000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 23636000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"diluted_earnings_per_share\": {\"value\": 1.53, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"selling_general_and_administrative_expenses\": {\"value\": 6468000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"income_tax_expense_benefit\": {\"value\": 4422000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"basic_average_shares\": {\"value\": 15405856000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"gross_profit\": {\"value\": 42271000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"operating_expenses\": {\"value\": 14371000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 28058000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"net_income_loss_attributable_to_parent\": {\"value\": 23636000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 23636000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"research_and_development\": {\"value\": 7903000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"nonoperating_income_loss\": {\"value\": 158000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"costs_and_expenses\": {\"value\": 62695000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"operating_income_loss\": {\"value\": 27900000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"diluted_average_shares\": {\"value\": 15464709000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}}, \"cash_flow_statement\": {\"net_cash_flow_from_operating_activities_continuing\": {\"value\": 22690000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow\": {\"value\": -8053000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_investing_activities\": {\"value\": -310000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -30433000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_financing_activities\": {\"value\": -30433000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": -310000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_continuing\": {\"value\": -8053000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_operating_activities\": {\"value\": 22690000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}}}}, {\"start_date\": \"2023-10-01\", \"end_date\": \"2023-12-30\", \"filing_date\": \"2024-02-02\", \"acceptance_datetime\": \"2024-02-01T23:03:38Z\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q1\", \"fiscal_year\": \"2024\", \"cik\": \"0000320193\", \"sic\": \"3571\", \"tickers\": [\"AAPL\"], \"company_name\": \"Apple Inc.\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0000320193-24-000006\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0000320193-24-000006/files/aapl-20231230_htm.xml\", \"financials\": {\"income_statement\": {\"operating_expenses\": {\"value\": 14482000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"benefits_costs_expenses\": {\"value\": 79252000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"net_income_loss\": {\"value\": 33916000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"research_and_development\": {\"value\": 7696000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"selling_general_and_administrative_expenses\": {\"value\": 6786000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"basic_earnings_per_share\": {\"value\": 2.19, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"gross_profit\": {\"value\": 54855000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"income_tax_expense_benefit\": {\"value\": 6407000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"cost_of_revenue\": {\"value\": 64720000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"diluted_earnings_per_share\": {\"value\": 2.18, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"costs_and_expenses\": {\"value\": 79252000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"operating_income_loss\": {\"value\": 40373000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"basic_average_shares\": {\"value\": 15509763000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"revenues\": {\"value\": 119575000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"nonoperating_income_loss\": {\"value\": -50000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 33916000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 40323000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"net_income_loss_attributable_to_parent\": {\"value\": 33916000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"diluted_average_shares\": {\"value\": 15576641000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 33916000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}}, \"balance_sheet\": {\"noncurrent_liabilities\": {\"value\": 145441000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"current_liabilities\": {\"value\": 133973000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"assets\": {\"value\": 353514000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"other_current_liabilities\": {\"value\": 75827000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"inventory\": {\"value\": 6511000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"equity_attributable_to_parent\": {\"value\": 74100000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"liabilities_and_equity\": {\"value\": 353514000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"other_noncurrent_liabilities\": {\"value\": 39441000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"long_term_debt\": {\"value\": 106000000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"liabilities\": {\"value\": 279414000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"other_current_assets\": {\"value\": 137181000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"fixed_assets\": {\"value\": 43666000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"other_noncurrent_assets\": {\"value\": 166156000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"accounts_payable\": {\"value\": 58146000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"equity\": {\"value\": 74100000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"noncurrent_assets\": {\"value\": 209822000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"current_assets\": {\"value\": 143692000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}}, \"cash_flow_statement\": {\"net_cash_flow\": {\"value\": 11237000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": 1927000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_financing_activities\": {\"value\": -30585000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_continuing\": {\"value\": 11237000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -30585000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 39895000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_from_operating_activities\": {\"value\": 39895000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_investing_activities\": {\"value\": 1927000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}}, \"comprehensive_income\": {\"comprehensive_income_loss\": {\"value\": 35990000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"other_comprehensive_income_loss_attributable_to_parent\": {\"value\": 2074000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss Attributable To Parent\", \"order\": 600}, \"other_comprehensive_income_loss\": {\"value\": 35990000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss_attributable_to_parent\": {\"value\": 35990000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}}}}, {\"start_date\": \"2023-07-02\", \"end_date\": \"2023-09-30\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q4\", \"fiscal_year\": \"2023\", \"cik\": \"0000320193\", \"sic\": \"3571\", \"tickers\": [\"AAPL\"], \"company_name\": \"Apple Inc.\", \"financials\": {\"income_statement\": {\"selling_general_and_administrative_expenses\": {\"value\": 6151000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"nonoperating_income_loss\": {\"value\": 29000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"interest_expense_operating\": {\"value\": 1002000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"research_and_development\": {\"value\": 7307000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"cost_of_revenue\": {\"value\": 49071000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 22956000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"diluted_average_shares\": {\"value\": -46716000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"operating_expenses\": {\"value\": 13458000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"income_tax_expense_benefit\": {\"value\": 4042000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"net_income_loss\": {\"value\": 22956000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"diluted_earnings_per_share\": {\"value\": 1.46, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"operating_income_loss\": {\"value\": 26969000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"costs_and_expenses\": {\"value\": 62500000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 22956000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"gross_profit\": {\"value\": 40427000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"basic_average_shares\": {\"value\": -48266000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"revenues\": {\"value\": 89498000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"basic_earnings_per_share\": {\"value\": 1.4699999999999998, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 26998000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"benefits_costs_expenses\": {\"value\": 62500000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"net_income_loss_attributable_to_parent\": {\"value\": 22956000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}}, \"cash_flow_statement\": {\"net_cash_flow_from_investing_activities\": {\"value\": 2394000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow_continuing\": {\"value\": 839000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow\": {\"value\": 839000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": 2394000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_operating_activities\": {\"value\": 21598000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 21598000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_from_financing_activities\": {\"value\": -23153000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -23153000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}}, \"balance_sheet\": {\"noncurrent_liabilities\": {\"value\": 145129000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"assets\": {\"value\": 352583000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"long_term_debt\": {\"value\": 105103000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"current_liabilities\": {\"value\": 145308000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"current_assets\": {\"value\": 143566000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"accounts_payable\": {\"value\": 62611000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"equity_attributable_to_parent\": {\"value\": 62146000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"liabilities\": {\"value\": 290437000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"other_noncurrent_liabilities\": {\"value\": 40026000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"inventory\": {\"value\": 6331000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"other_current_assets\": {\"value\": 137235000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"equity\": {\"value\": 62146000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"fixed_assets\": {\"value\": 43715000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"other_noncurrent_assets\": {\"value\": 165302000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"noncurrent_assets\": {\"value\": 209017000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"liabilities_and_equity\": {\"value\": 352583000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"other_current_liabilities\": {\"value\": 82697000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}}, \"comprehensive_income\": {\"comprehensive_income_loss_attributable_to_parent\": {\"value\": 23305000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"other_comprehensive_income_loss\": {\"value\": 23305000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss\": {\"value\": 23305000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}, \"other_comprehensive_income_loss_attributable_to_parent\": {\"value\": 349000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss Attributable To Parent\", \"order\": 600}}}}, {\"start_date\": \"2022-09-25\", \"end_date\": \"2023-09-30\", \"filing_date\": \"2023-11-03\", \"acceptance_datetime\": \"2023-11-02T22:08:27Z\", \"timeframe\": \"annual\", \"fiscal_period\": \"FY\", \"fiscal_year\": \"2023\", \"cik\": \"0000320193\", \"sic\": \"3571\", \"tickers\": [\"AAPL\"], \"company_name\": \"Apple Inc.\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0000320193-23-000106\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0000320193-23-000106/files/aapl-20230930_htm.xml\", \"financials\": {\"cash_flow_statement\": {\"net_cash_flow_continuing\": {\"value\": 5760000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -108488000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 110543000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_from_financing_activities\": {\"value\": -108488000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_operating_activities\": {\"value\": 110543000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_investing_activities\": {\"value\": 3705000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": 3705000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow\": {\"value\": 5760000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}}, \"comprehensive_income\": {\"comprehensive_income_loss\": {\"value\": 96652000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}, \"other_comprehensive_income_loss_attributable_to_parent\": {\"value\": -343000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss Attributable To Parent\", \"order\": 600}, \"comprehensive_income_loss_attributable_to_parent\": {\"value\": 96652000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"other_comprehensive_income_loss\": {\"value\": 96652000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}}, \"balance_sheet\": {\"fixed_assets\": {\"value\": 43715000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"liabilities\": {\"value\": 290437000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"current_assets\": {\"value\": 143566000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"equity_attributable_to_parent\": {\"value\": 62146000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"other_current_assets\": {\"value\": 137235000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"inventory\": {\"value\": 6331000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"other_current_liabilities\": {\"value\": 82697000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"noncurrent_assets\": {\"value\": 209017000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"other_noncurrent_assets\": {\"value\": 165302000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"long_term_debt\": {\"value\": 105103000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"liabilities_and_equity\": {\"value\": 352583000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"equity\": {\"value\": 62146000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"assets\": {\"value\": 352583000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"accounts_payable\": {\"value\": 62611000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"other_noncurrent_liabilities\": {\"value\": 40026000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"current_liabilities\": {\"value\": 145308000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"noncurrent_liabilities\": {\"value\": 145129000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}}, \"income_statement\": {\"income_tax_expense_benefit\": {\"value\": 16741000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"research_and_development\": {\"value\": 29915000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"revenues\": {\"value\": 383285000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"basic_earnings_per_share\": {\"value\": 6.16, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"cost_of_revenue\": {\"value\": 214137000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"benefits_costs_expenses\": {\"value\": 269549000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"selling_general_and_administrative_expenses\": {\"value\": 24932000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"operating_income_loss\": {\"value\": 114301000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"interest_expense_operating\": {\"value\": 3933000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"costs_and_expenses\": {\"value\": 269549000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"diluted_earnings_per_share\": {\"value\": 6.13, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"nonoperating_income_loss\": {\"value\": -565000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"diluted_average_shares\": {\"value\": 15812547000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"net_income_loss\": {\"value\": 96995000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"net_income_loss_attributable_to_parent\": {\"value\": 96995000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 96995000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"operating_expenses\": {\"value\": 54847000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"basic_average_shares\": {\"value\": 15744231000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 113736000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"gross_profit\": {\"value\": 169148000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 96995000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}}}}, {\"start_date\": \"2023-04-02\", \"end_date\": \"2023-07-01\", \"filing_date\": \"2023-08-04\", \"acceptance_datetime\": \"2023-08-03T22:04:43Z\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q3\", \"fiscal_year\": \"2023\", \"cik\": \"0000320193\", \"sic\": \"3571\", \"tickers\": [\"AAPL\"], \"company_name\": \"Apple Inc.\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0000320193-23-000077\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0000320193-23-000077/files/aapl-20230701_htm.xml\", \"financials\": {\"cash_flow_statement\": {\"net_cash_flow_from_financing_activities\": {\"value\": -24048000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow\": {\"value\": 2769000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_investing_activities\": {\"value\": 437000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -24048000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": 437000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_operating_activities\": {\"value\": 26380000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_continuing\": {\"value\": 2769000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 26380000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}}, \"balance_sheet\": {\"equity_attributable_to_parent\": {\"value\": 60274000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"inventory\": {\"value\": 7351000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"fixed_assets\": {\"value\": 43550000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"assets\": {\"value\": 335038000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"equity\": {\"value\": 60274000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"other_current_assets\": {\"value\": 115308000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"other_current_liabilities\": {\"value\": 78264000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"other_noncurrent_assets\": {\"value\": 168829000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"liabilities_and_equity\": {\"value\": 335038000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"current_assets\": {\"value\": 122659000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"noncurrent_assets\": {\"value\": 212379000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"other_noncurrent_liabilities\": {\"value\": 44501000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"noncurrent_liabilities\": {\"value\": 149801000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"current_liabilities\": {\"value\": 124963000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"long_term_debt\": {\"value\": 105300000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"accounts_payable\": {\"value\": 46699000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"liabilities\": {\"value\": 274764000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}}, \"comprehensive_income\": {\"comprehensive_income_loss_attributable_to_parent\": {\"value\": 19826000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"other_comprehensive_income_loss\": {\"value\": 19826000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}, \"other_comprehensive_income_loss_attributable_to_parent\": {\"value\": -55000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss Attributable To Parent\", \"order\": 600}, \"comprehensive_income_loss\": {\"value\": 19826000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}}, \"income_statement\": {\"interest_expense_operating\": {\"value\": 998000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 19881000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"selling_general_and_administrative_expenses\": {\"value\": 5973000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"costs_and_expenses\": {\"value\": 59064000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"income_tax_expense_benefit\": {\"value\": 2852000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"operating_income_loss\": {\"value\": 22998000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"basic_average_shares\": {\"value\": 15697614000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"basic_earnings_per_share\": {\"value\": 1.27, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"net_income_loss_attributable_to_parent\": {\"value\": 19881000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"benefits_costs_expenses\": {\"value\": 59064000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"cost_of_revenue\": {\"value\": 45384000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"net_income_loss\": {\"value\": 19881000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"diluted_earnings_per_share\": {\"value\": 1.26, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"research_and_development\": {\"value\": 7442000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"diluted_average_shares\": {\"value\": 15775021000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"gross_profit\": {\"value\": 36413000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"operating_expenses\": {\"value\": 13415000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 19881000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"revenues\": {\"value\": 81797000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"nonoperating_income_loss\": {\"value\": -265000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 22733000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}}}}, {\"start_date\": \"2023-01-01\", \"end_date\": \"2023-04-01\", \"filing_date\": \"2023-05-05\", \"acceptance_datetime\": \"2023-05-04T22:03:52Z\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q2\", \"fiscal_year\": \"2023\", \"cik\": \"0000320193\", \"sic\": \"3571\", \"tickers\": [\"AAPL\"], \"company_name\": \"Apple Inc.\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0000320193-23-000064\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0000320193-23-000064/files/aapl-20230401_htm.xml\", \"financials\": {\"comprehensive_income\": {\"other_comprehensive_income_loss_attributable_to_parent\": {\"value\": 1166000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss Attributable To Parent\", \"order\": 600}, \"comprehensive_income_loss\": {\"value\": 25326000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"other_comprehensive_income_loss\": {\"value\": 25326000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}, \"comprehensive_income_loss_attributable_to_parent\": {\"value\": 25326000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}}, \"balance_sheet\": {\"fixed_assets\": {\"value\": 43398000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"liabilities\": {\"value\": 270002000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"long_term_debt\": {\"value\": 107600000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"liabilities_and_equity\": {\"value\": 332160000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"current_assets\": {\"value\": 112913000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"other_noncurrent_assets\": {\"value\": 175849000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"other_current_liabilities\": {\"value\": 77130000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"assets\": {\"value\": 332160000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"accounts_payable\": {\"value\": 42945000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"inventory\": {\"value\": 7482000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"noncurrent_assets\": {\"value\": 219247000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"noncurrent_liabilities\": {\"value\": 149927000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"other_current_assets\": {\"value\": 105431000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"equity\": {\"value\": 62158000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"other_noncurrent_liabilities\": {\"value\": 42327000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"equity_attributable_to_parent\": {\"value\": 62158000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"current_liabilities\": {\"value\": 120075000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}}, \"cash_flow_statement\": {\"net_cash_flow_from_operating_activities\": {\"value\": 28560000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 28560000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_from_financing_activities\": {\"value\": -25724000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow\": {\"value\": 5155000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": 2319000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -25724000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_investing_activities\": {\"value\": 2319000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow_continuing\": {\"value\": 5155000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}}, \"income_statement\": {\"operating_income_loss\": {\"value\": 28318000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"diluted_earnings_per_share\": {\"value\": 1.52, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"selling_general_and_administrative_expenses\": {\"value\": 6201000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"gross_profit\": {\"value\": 41976000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"net_income_loss_attributable_to_parent\": {\"value\": 24160000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"diluted_average_shares\": {\"value\": 15847050000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"income_tax_expense_benefit\": {\"value\": 4222000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"interest_expense_operating\": {\"value\": 930000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"nonoperating_income_loss\": {\"value\": 64000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"operating_expenses\": {\"value\": 13658000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"benefits_costs_expenses\": {\"value\": 66454000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 24160000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"net_income_loss\": {\"value\": 24160000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 24160000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"cost_of_revenue\": {\"value\": 52860000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 28382000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"research_and_development\": {\"value\": 7457000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"costs_and_expenses\": {\"value\": 66454000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"revenues\": {\"value\": 94836000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"basic_earnings_per_share\": {\"value\": 1.53, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"basic_average_shares\": {\"value\": 15787154000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}}}}, {\"start_date\": \"2022-09-25\", \"end_date\": \"2022-12-31\", \"filing_date\": \"2023-02-03\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q1\", \"fiscal_year\": \"2023\", \"cik\": \"0000320193\", \"sic\": \"3571\", \"tickers\": [\"AAPL\"], \"company_name\": \"Apple Inc.\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0000320193-23-000006\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0000320193-23-000006/files/aapl-20221231_htm.xml\", \"financials\": {\"cash_flow_statement\": {\"net_cash_flow_continuing\": {\"value\": -3003000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 34005000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -35563000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_operating_activities\": {\"value\": 34005000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_from_financing_activities\": {\"value\": -35563000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": -1445000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow\": {\"value\": -3003000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_investing_activities\": {\"value\": -1445000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}}, \"comprehensive_income\": {\"other_comprehensive_income_loss_attributable_to_parent\": {\"value\": -1803000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss Attributable To Parent\", \"order\": 600}, \"other_comprehensive_income_loss\": {\"value\": 28195000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss\": {\"value\": 28195000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"comprehensive_income_loss_attributable_to_parent\": {\"value\": 28195000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}}, \"balance_sheet\": {\"other_noncurrent_liabilities\": {\"value\": 43334000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Liabilities\", \"order\": 820}, \"equity_attributable_to_parent\": {\"value\": 56727000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"long_term_debt\": {\"value\": 109400000000.0, \"unit\": \"USD\", \"label\": \"Long-term Debt\", \"order\": 810}, \"current_assets\": {\"value\": 128777000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"other_current_liabilities\": {\"value\": 79368000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"inventory\": {\"value\": 6820000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"accounts_payable\": {\"value\": 57918000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"noncurrent_assets\": {\"value\": 217970000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"other_noncurrent_assets\": {\"value\": 175019000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"other_current_assets\": {\"value\": 121957000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"liabilities_and_equity\": {\"value\": 346747000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"equity\": {\"value\": 56727000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"fixed_assets\": {\"value\": 42951000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"liabilities\": {\"value\": 290020000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"current_liabilities\": {\"value\": 137286000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"noncurrent_liabilities\": {\"value\": 152734000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"assets\": {\"value\": 346747000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}}, \"income_statement\": {\"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"basic_earnings_per_share\": {\"value\": 1.89, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"nonoperating_income_loss\": {\"value\": -393000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"gross_profit\": {\"value\": 50332000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"basic_average_shares\": {\"value\": 15892723000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"interest_expense_operating\": {\"value\": 1003000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 29998000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"operating_expenses\": {\"value\": 14316000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"operating_income_loss\": {\"value\": 36016000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"net_income_loss\": {\"value\": 29998000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"selling_general_and_administrative_expenses\": {\"value\": 6607000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"income_tax_expense_benefit\": {\"value\": 5625000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 29998000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"cost_of_revenue\": {\"value\": 66822000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"diluted_average_shares\": {\"value\": 15955718000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"costs_and_expenses\": {\"value\": 81531000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"diluted_earnings_per_share\": {\"value\": 1.88, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"benefits_costs_expenses\": {\"value\": 81531000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"revenues\": {\"value\": 117154000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"research_and_development\": {\"value\": 7709000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 35623000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"net_income_loss_attributable_to_parent\": {\"value\": 29998000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}}}}, {\"start_date\": \"2022-06-26\", \"end_date\": \"2022-09-24\", \"timeframe\": \"quarterly\", \"fiscal_period\": \"Q4\", \"fiscal_year\": \"2022\", \"cik\": \"0000320193\", \"sic\": \"3571\", \"tickers\": [\"AAPL\"], \"company_name\": \"Apple Inc.\", \"financials\": {\"comprehensive_income\": {\"comprehensive_income_loss_attributable_to_parent\": {\"value\": 18909000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"comprehensive_income_loss\": {\"value\": 18909000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}, \"other_comprehensive_income_loss_attributable_to_parent\": {\"value\": -1812000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss Attributable To Parent\", \"order\": 600}, \"other_comprehensive_income_loss\": {\"value\": 18909000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}}, \"balance_sheet\": {\"liabilities\": {\"value\": 302083000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"current_assets\": {\"value\": 135405000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"other_current_assets\": {\"value\": 130459000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"noncurrent_liabilities\": {\"value\": 148101000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"inventory\": {\"value\": 4946000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}, \"equity\": {\"value\": 50672000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"liabilities_and_equity\": {\"value\": 352755000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"other_current_liabilities\": {\"value\": 89867000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"equity_attributable_to_parent\": {\"value\": 50672000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"fixed_assets\": {\"value\": 42117000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"accounts_payable\": {\"value\": 64115000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"assets\": {\"value\": 352755000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"other_noncurrent_assets\": {\"value\": 175233000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"current_liabilities\": {\"value\": 153982000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"noncurrent_assets\": {\"value\": 217350000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}}, \"cash_flow_statement\": {\"net_cash_flow_continuing\": {\"value\": -3884000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": -1217000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 24127000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_from_operating_activities\": {\"value\": 24127000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow\": {\"value\": -3884000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_financing_activities\": {\"value\": -26794000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_investing_activities\": {\"value\": -1217000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow_from_financing_activities_continuing\": {\"value\": -26794000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}}, \"income_statement\": {\"interest_expense_operating\": {\"value\": 827000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"net_income_loss_attributable_to_parent\": {\"value\": 20721000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"nonoperating_income_loss\": {\"value\": -237000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"research_and_development\": {\"value\": 6761000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 20721000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"basic_earnings_per_share\": {\"value\": 1.29, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"revenues\": {\"value\": 90146000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"costs_and_expenses\": {\"value\": 65489000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"diluted_average_shares\": {\"value\": -69118000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"benefits_costs_expenses\": {\"value\": 65489000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"operating_expenses\": {\"value\": 13201000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"cost_of_revenue\": {\"value\": 52051000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"income_tax_expense_benefit\": {\"value\": 3936000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"income_tax_expense_benefit_deferred\": {\"value\": -1861000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Deferred\", \"order\": 2400}, \"diluted_earnings_per_share\": {\"value\": 1.29, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}, \"net_income_loss\": {\"value\": 20721000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 20721000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"basic_average_shares\": {\"value\": -61861000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 24657000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"selling_general_and_administrative_expenses\": {\"value\": 6440000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"operating_income_loss\": {\"value\": 24894000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"gross_profit\": {\"value\": 38095000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}}}}, {\"start_date\": \"2021-09-26\", \"end_date\": \"2022-09-24\", \"filing_date\": \"2022-10-28\", \"timeframe\": \"annual\", \"fiscal_period\": \"FY\", \"fiscal_year\": \"2022\", \"cik\": \"0000320193\", \"sic\": \"3571\", \"tickers\": [\"AAPL\"], \"company_name\": \"Apple Inc.\", \"source_filing_url\": \"https://api.polygon.io/v1/reference/sec/filings/0000320193-22-000108\", \"source_filing_file_url\": \"http://api.polygon.io/v1/reference/sec/filings/0000320193-22-000108/files/aapl-20220924_htm.xml\", \"financials\": {\"cash_flow_statement\": {\"net_cash_flow_from_financing_activities_continuing\": {\"value\": -110749000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities, Continuing\", \"order\": 800}, \"net_cash_flow_from_financing_activities\": {\"value\": -110749000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Financing Activities\", \"order\": 700}, \"net_cash_flow_from_investing_activities_continuing\": {\"value\": -22354000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities, Continuing\", \"order\": 500}, \"net_cash_flow_from_operating_activities_continuing\": {\"value\": 122151000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities, Continuing\", \"order\": 200}, \"net_cash_flow_from_investing_activities\": {\"value\": -22354000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Investing Activities\", \"order\": 400}, \"net_cash_flow\": {\"value\": -10952000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow\", \"order\": 1100}, \"net_cash_flow_from_operating_activities\": {\"value\": 122151000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow From Operating Activities\", \"order\": 100}, \"net_cash_flow_continuing\": {\"value\": -10952000000.0, \"unit\": \"USD\", \"label\": \"Net Cash Flow, Continuing\", \"order\": 1200}}, \"balance_sheet\": {\"other_current_assets\": {\"value\": 130459000000.0, \"unit\": \"USD\", \"label\": \"Other Current Assets\", \"order\": 250}, \"equity_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Noncontrolling Interest\", \"order\": 1500}, \"other_noncurrent_assets\": {\"value\": 175233000000.0, \"unit\": \"USD\", \"label\": \"Other Non-current Assets\", \"order\": 350}, \"fixed_assets\": {\"value\": 42117000000.0, \"unit\": \"USD\", \"label\": \"Fixed Assets\", \"order\": 320}, \"equity_attributable_to_parent\": {\"value\": 50672000000.0, \"unit\": \"USD\", \"label\": \"Equity Attributable To Parent\", \"order\": 1600}, \"noncurrent_assets\": {\"value\": 217350000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Assets\", \"order\": 300}, \"accounts_payable\": {\"value\": 64115000000.0, \"unit\": \"USD\", \"label\": \"Accounts Payable\", \"order\": 710}, \"current_assets\": {\"value\": 135405000000.0, \"unit\": \"USD\", \"label\": \"Current Assets\", \"order\": 200}, \"equity\": {\"value\": 50672000000.0, \"unit\": \"USD\", \"label\": \"Equity\", \"order\": 1400}, \"assets\": {\"value\": 352755000000.0, \"unit\": \"USD\", \"label\": \"Assets\", \"order\": 100}, \"other_current_liabilities\": {\"value\": 89867000000.0, \"unit\": \"USD\", \"label\": \"Other Current Liabilities\", \"order\": 740}, \"liabilities\": {\"value\": 302083000000.0, \"unit\": \"USD\", \"label\": \"Liabilities\", \"order\": 600}, \"liabilities_and_equity\": {\"value\": 352755000000.0, \"unit\": \"USD\", \"label\": \"Liabilities And Equity\", \"order\": 1900}, \"noncurrent_liabilities\": {\"value\": 148101000000.0, \"unit\": \"USD\", \"label\": \"Noncurrent Liabilities\", \"order\": 800}, \"current_liabilities\": {\"value\": 153982000000.0, \"unit\": \"USD\", \"label\": \"Current Liabilities\", \"order\": 700}, \"inventory\": {\"value\": 4946000000.0, \"unit\": \"USD\", \"label\": \"Inventory\", \"order\": 230}}, \"comprehensive_income\": {\"comprehensive_income_loss_attributable_to_parent\": {\"value\": 88531000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Parent\", \"order\": 300}, \"other_comprehensive_income_loss_attributable_to_parent\": {\"value\": -11272000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss Attributable To Parent\", \"order\": 600}, \"other_comprehensive_income_loss\": {\"value\": 88531000000.0, \"unit\": \"USD\", \"label\": \"Other Comprehensive Income/Loss\", \"order\": 400}, \"comprehensive_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss Attributable To Noncontrolling Interest\", \"order\": 200}, \"comprehensive_income_loss\": {\"value\": 88531000000.0, \"unit\": \"USD\", \"label\": \"Comprehensive Income/Loss\", \"order\": 100}}, \"income_statement\": {\"basic_average_shares\": {\"value\": 16215963000.0, \"unit\": \"shares\", \"label\": \"Basic Average Shares\", \"order\": 4400}, \"income_tax_expense_benefit_deferred\": {\"value\": 895000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit, Deferred\", \"order\": 2400}, \"diluted_average_shares\": {\"value\": 16325819000.0, \"unit\": \"shares\", \"label\": \"Diluted Average Shares\", \"order\": 4500}, \"preferred_stock_dividends_and_other_adjustments\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Preferred Stock Dividends And Other Adjustments\", \"order\": 3900}, \"revenues\": {\"value\": 394328000000.0, \"unit\": \"USD\", \"label\": \"Revenues\", \"order\": 100}, \"gross_profit\": {\"value\": 170782000000.0, \"unit\": \"USD\", \"label\": \"Gross Profit\", \"order\": 800}, \"research_and_development\": {\"value\": 26251000000.0, \"unit\": \"USD\", \"label\": \"Research and Development\", \"order\": 1030}, \"participating_securities_distributed_and_undistributed_earnings_loss_basic\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Participating Securities, Distributed And Undistributed Earnings/Loss, Basic\", \"order\": 3800}, \"income_loss_from_continuing_operations_before_tax\": {\"value\": 119103000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations Before Tax\", \"order\": 1500}, \"net_income_loss_attributable_to_noncontrolling_interest\": {\"value\": 0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Noncontrolling Interest\", \"order\": 3300}, \"interest_expense_operating\": {\"value\": 2931000000.0, \"unit\": \"USD\", \"label\": \"Interest Expense, Operating\", \"order\": 2700}, \"basic_earnings_per_share\": {\"value\": 6.15, \"unit\": \"USD / shares\", \"label\": \"Basic Earnings Per Share\", \"order\": 4200}, \"costs_and_expenses\": {\"value\": 275225000000.0, \"unit\": \"USD\", \"label\": \"Costs And Expenses\", \"order\": 600}, \"selling_general_and_administrative_expenses\": {\"value\": 25094000000.0, \"unit\": \"USD\", \"label\": \"Selling, General, and Administrative Expenses\", \"order\": 1010}, \"benefits_costs_expenses\": {\"value\": 275225000000.0, \"unit\": \"USD\", \"label\": \"Benefits Costs and Expenses\", \"order\": 200}, \"nonoperating_income_loss\": {\"value\": -334000000.0, \"unit\": \"USD\", \"label\": \"Nonoperating Income/Loss\", \"order\": 900}, \"income_loss_from_continuing_operations_after_tax\": {\"value\": 99803000000.0, \"unit\": \"USD\", \"label\": \"Income/Loss From Continuing Operations After Tax\", \"order\": 1400}, \"net_income_loss_available_to_common_stockholders_basic\": {\"value\": 99803000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Available To Common Stockholders, Basic\", \"order\": 3700}, \"net_income_loss\": {\"value\": 99803000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss\", \"order\": 3200}, \"income_tax_expense_benefit\": {\"value\": 19300000000.0, \"unit\": \"USD\", \"label\": \"Income Tax Expense/Benefit\", \"order\": 2200}, \"cost_of_revenue\": {\"value\": 223546000000.0, \"unit\": \"USD\", \"label\": \"Cost Of Revenue\", \"order\": 300}, \"operating_income_loss\": {\"value\": 119437000000.0, \"unit\": \"USD\", \"label\": \"Operating Income/Loss\", \"order\": 1100}, \"net_income_loss_attributable_to_parent\": {\"value\": 99803000000.0, \"unit\": \"USD\", \"label\": \"Net Income/Loss Attributable To Parent\", \"order\": 3500}, \"operating_expenses\": {\"value\": 51345000000.0, \"unit\": \"USD\", \"label\": \"Operating Expenses\", \"order\": 1000}, \"diluted_earnings_per_share\": {\"value\": 6.11, \"unit\": \"USD / shares\", \"label\": \"Diluted Earnings Per Share\", \"order\": 4300}}}}]' name='polygon_financials' tool_call_id='1'\n" ] } ], "source": [ - "# Print the latest reporting period's income statement\n", - "print(f\"Income statement: {financial_data['financials']['income_statement']}\")" + "from langchain_community.tools.polygon.financials import PolygonFinancials\n", + "\n", + "financials_tool = PolygonFinancials(api_wrapper=api_wrapper)\n", + "\n", + "# We can invoke directly with input\n", + "res = financials_tool.invoke({\"query\": \"AAPL\"})\n", + "\n", + "model_generated_tool_call = {\n", + " \"args\": {\"query\": \"AAPL\"},\n", + " \"id\": \"1\",\n", + " \"name\": financials_tool.name,\n", + " \"type\": \"tool_call\",\n", + "}\n", + "\n", + "# Or we can invoke with a tool call\n", + "res = financials_tool.invoke(model_generated_tool_call)\n", + "\n", + "print(res)" + ] + }, + { + "cell_type": "markdown", + "id": "bb94e685", + "metadata": {}, + "source": [ + "### Last Quote\n", + "\n", + "This tool provides information about the live data of a stock, although it requires a \"Stocks Advanced\" subscription to use." ] }, { "cell_type": "code", - "execution_count": 34, - "id": "9e24d339-c0d5-4b6a-9ba6-3f97e46ff6df", + "execution_count": null, + "id": "4ec10205", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_community.tools.polygon.last_quote import PolygonLastQuote\n", + "\n", + "last_quote_tool = PolygonLastQuote(api_wrapper=api_wrapper)\n", + "\n", + "# We can invoke directly with input\n", + "res = last_quote_tool.invoke({\"query\": \"AAPL\"})\n", + "\n", + "model_generated_tool_call = {\n", + " \"args\": {\"query\": \"AAPL\"},\n", + " \"id\": \"1\",\n", + " \"name\": last_quote_tool.name,\n", + " \"type\": \"tool_call\",\n", + "}\n", + "\n", + "# Or we can invoke with a tool call\n", + "res = last_quote_tool.invoke(model_generated_tool_call)" + ] + }, + { + "cell_type": "markdown", + "id": "ffc4e890", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Balance sheet: {'equity_attributable_to_noncontrolling_interest': {'value': 0, 'unit': 'USD', 'label': 'Equity Attributable To Noncontrolling Interest', 'order': 1500}, 'other_noncurrent_liabilities': {'value': 39441000000.0, 'unit': 'USD', 'label': 'Other Non-current Liabilities', 'order': 820}, 'equity': {'value': 74100000000.0, 'unit': 'USD', 'label': 'Equity', 'order': 1400}, 'liabilities': {'value': 279414000000.0, 'unit': 'USD', 'label': 'Liabilities', 'order': 600}, 'noncurrent_assets': {'value': 209822000000.0, 'unit': 'USD', 'label': 'Noncurrent Assets', 'order': 300}, 'equity_attributable_to_parent': {'value': 74100000000.0, 'unit': 'USD', 'label': 'Equity Attributable To Parent', 'order': 1600}, 'liabilities_and_equity': {'value': 353514000000.0, 'unit': 'USD', 'label': 'Liabilities And Equity', 'order': 1900}, 'other_current_liabilities': {'value': 75827000000.0, 'unit': 'USD', 'label': 'Other Current Liabilities', 'order': 740}, 'inventory': {'value': 6511000000.0, 'unit': 'USD', 'label': 'Inventory', 'order': 230}, 'other_noncurrent_assets': {'value': 166156000000.0, 'unit': 'USD', 'label': 'Other Non-current Assets', 'order': 350}, 'other_current_assets': {'value': 137181000000.0, 'unit': 'USD', 'label': 'Other Current Assets', 'order': 250}, 'current_liabilities': {'value': 133973000000.0, 'unit': 'USD', 'label': 'Current Liabilities', 'order': 700}, 'noncurrent_liabilities': {'value': 145441000000.0, 'unit': 'USD', 'label': 'Noncurrent Liabilities', 'order': 800}, 'fixed_assets': {'value': 43666000000.0, 'unit': 'USD', 'label': 'Fixed Assets', 'order': 320}, 'long_term_debt': {'value': 106000000000.0, 'unit': 'USD', 'label': 'Long-term Debt', 'order': 810}, 'current_assets': {'value': 143692000000.0, 'unit': 'USD', 'label': 'Current Assets', 'order': 200}, 'assets': {'value': 353514000000.0, 'unit': 'USD', 'label': 'Assets', 'order': 100}, 'accounts_payable': {'value': 58146000000.0, 'unit': 'USD', 'label': 'Accounts Payable', 'order': 710}}\n" - ] - } - ], "source": [ - "# Print the latest reporting period's balance sheet\n", - "print(f\"Balance sheet: {financial_data['financials']['balance_sheet']}\")" + "### Ticker News\n", + "\n", + "This tool provides recent news about a certain ticker." ] }, { "cell_type": "code", "execution_count": 33, - "id": "4bfb47f1-8b9e-4293-be18-c4e9ab945d51", + "id": "04bba316", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Cash flow statement: {'net_cash_flow_continuing': {'value': 20000000000.0, 'unit': 'USD', 'label': 'Net Cash Flow, Continuing', 'order': 1200}, 'net_cash_flow_from_investing_activities_continuing': {'value': 7077000000.0, 'unit': 'USD', 'label': 'Net Cash Flow From Investing Activities, Continuing', 'order': 500}, 'net_cash_flow_from_investing_activities': {'value': 7077000000.0, 'unit': 'USD', 'label': 'Net Cash Flow From Investing Activities', 'order': 400}, 'net_cash_flow_from_financing_activities_continuing': {'value': -103510000000.0, 'unit': 'USD', 'label': 'Net Cash Flow From Financing Activities, Continuing', 'order': 800}, 'net_cash_flow_from_operating_activities': {'value': 116433000000.0, 'unit': 'USD', 'label': 'Net Cash Flow From Operating Activities', 'order': 100}, 'net_cash_flow_from_financing_activities': {'value': -103510000000.0, 'unit': 'USD', 'label': 'Net Cash Flow From Financing Activities', 'order': 700}, 'net_cash_flow_from_operating_activities_continuing': {'value': 116433000000.0, 'unit': 'USD', 'label': 'Net Cash Flow From Operating Activities, Continuing', 'order': 200}, 'net_cash_flow': {'value': 20000000000.0, 'unit': 'USD', 'label': 'Net Cash Flow', 'order': 1100}}\n" + "content='[{\"id\": \"4fd9f3a653f3d1c6d99a21d7cc62b883e8547109c95778e34de7c6c9ecaccfe4\", \"publisher\": {\"name\": \"The Motley Fool\", \"homepage_url\": \"https://www.fool.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/themotleyfool.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/themotleyfool.ico\"}, \"title\": \"Warren Buffett Is Slashing Berkshire Hathaway\\'s Position in Apple Stock\", \"author\": \"Parkev Tatevosian, Cfa\", \"published_utc\": \"2024-08-08T14:16:30Z\", \"article_url\": \"https://www.fool.com/investing/2024/08/08/warren-buffett-is-slashing-berkshire-hathaways-pos/?source=iedfolrf0000001\", \"tickers\": [\"AAPL\"], \"image_url\": \"https://g.foolcdn.com/editorial/images/786449/buffett17-tmf.jpg\", \"description\": \"Warren Buffett, the renowned investor, has sold a significant portion of his Apple stock holdings, worth around $90 billion. This move has raised questions about whether it could be Buffett\\'s biggest investing mistake.\", \"keywords\": [\"Warren Buffett\", \"Apple\", \"investing\"], \"insights\": [{\"ticker\": \"AAPL\", \"sentiment\": \"negative\", \"sentiment_reasoning\": \"The article suggests that Buffett\\'s decision to sell a large portion of his Apple stock holdings could be a mistake, implying a negative sentiment towards the company\\'s future performance.\"}]}, {\"id\": \"931602cbcfeb06e22188e205a1cb6127215b7a62e9a37e5cc7a935e8376ac402\", \"publisher\": {\"name\": \"The Motley Fool\", \"homepage_url\": \"https://www.fool.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/themotleyfool.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/themotleyfool.ico\"}, \"title\": \"Prediction: 1 Unstoppable Stock Will Join Nvidia, Apple, Microsoft, and Alphabet in the $2 Trillion Club Within 3 Years\", \"author\": \"The Motley Fool\", \"published_utc\": \"2024-08-08T10:40:00Z\", \"article_url\": \"https://www.fool.com/investing/2024/08/08/prediction-1-stock-nvidia-microsoft-in-2-trillion/?source=iedfolrf0000001\", \"tickers\": [\"META\", \"NVDA\", \"AAPL\", \"MSFT\", \"GOOG\", \"GOOGL\"], \"image_url\": \"https://g.foolcdn.com/editorial/images/785914/two-people-laughing-while-watching-a-video-on-a-smartphone.jpg\", \"description\": \"Meta Platforms (META) is predicted to join the $2 trillion club within 3 years, driven by its advancements in artificial intelligence and potential to drive significant returns for investors.\", \"keywords\": [\"Meta Platforms\", \"Artificial Intelligence\", \"Stock Prediction\"], \"insights\": [{\"ticker\": \"META\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article predicts that Meta Platforms will join the $2 trillion club within 3 years, driven by its advancements in artificial intelligence and potential to drive significant returns for investors.\"}, {\"ticker\": \"NVDA\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Nvidia is mentioned as one of the companies currently valued at over $2 trillion, indicating its strong market position.\"}, {\"ticker\": \"AAPL\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Apple is mentioned as one of the companies currently valued at over $2 trillion, indicating its strong market position.\"}, {\"ticker\": \"MSFT\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Microsoft is mentioned as one of the companies currently valued at over $2 trillion, indicating its strong market position.\"}, {\"ticker\": \"GOOG\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Alphabet is mentioned as one of the companies currently valued at over $2 trillion, indicating its strong market position.\"}, {\"ticker\": \"GOOGL\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Alphabet is mentioned as one of the companies currently valued at over $2 trillion, indicating its strong market position.\"}]}, {\"id\": \"2fedf0bd60526169295242173be22d9cb07aa9bf492859d16a25357b057ab0be\", \"publisher\": {\"name\": \"The Motley Fool\", \"homepage_url\": \"https://www.fool.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/themotleyfool.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/themotleyfool.ico\"}, \"title\": \"Nasdaq Correction: My Top \\\\\"Magnificent Seven\\\\\" Stock to Buy in August\", \"author\": \"Daniel Foelber\", \"published_utc\": \"2024-08-08T10:30:00Z\", \"article_url\": \"https://www.fool.com/investing/2024/08/08/nasdaq-buy-microsoft-stock-magnificent-seven/?source=iedfolrf0000001\", \"tickers\": [\"MSFT\", \"GOOG\", \"GOOGL\", \"AAPL\", \"AMZN\", \"META\", \"NVDA\", \"TSLA\"], \"image_url\": \"https://g.foolcdn.com/editorial/images/785889/gettyimages-1440510600-1201x761-58a9ed0.jpg\", \"description\": \"The article discusses why Microsoft is a compelling investment opportunity among the \\'Magnificent Seven\\' tech stocks, despite the recent market sell-off. It highlights Microsoft\\'s strong profitability, ongoing investments in cloud and AI, and its ability to balance growth and shareholder returns.\", \"keywords\": [\"Microsoft\", \"Magnificent Seven\", \"tech stocks\", \"cloud\", \"AI\", \"growth\", \"shareholder returns\"], \"insights\": [{\"ticker\": \"MSFT\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article argues that Microsoft is a compelling investment opportunity due to its strong profitability, ongoing investments in cloud and AI, and its ability to balance growth and shareholder returns. The author believes Microsoft\\'s strategy of prioritizing innovation and market share growth over short-term profitability is a positive long-term move.\"}, {\"ticker\": \"GOOG\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Alphabet as part of the \\'Magnificent Seven\\' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}, {\"ticker\": \"GOOGL\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Alphabet as part of the \\'Magnificent Seven\\' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}, {\"ticker\": \"AAPL\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Apple as part of the \\'Magnificent Seven\\' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}, {\"ticker\": \"AMZN\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Amazon as part of the \\'Magnificent Seven\\' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}, {\"ticker\": \"META\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Meta Platforms (formerly Facebook) as part of the \\'Magnificent Seven\\' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}, {\"ticker\": \"NVDA\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Nvidia as part of the \\'Magnificent Seven\\' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}, {\"ticker\": \"TSLA\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions Tesla as part of the \\'Magnificent Seven\\' tech stocks, but does not provide any specific analysis or sentiment on the company.\"}]}, {\"id\": \"aa33fcaf9302450660f1e64e4c05e13a18e508103afb8933a75db47c26eb5969\", \"publisher\": {\"name\": \"Zacks Investment Research\", \"homepage_url\": \"https://www.zacks.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/zacks.png\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/zacks.ico\"}, \"title\": \"Zacks Earnings Trends Highlights: Microsoft, Alphabet, Amazon, Apple, Meta, Tesla and Nvidia\", \"author\": \"Zacks.Com\", \"published_utc\": \"2024-08-08T08:34:00Z\", \"article_url\": \"https://www.zacks.com/stock/news/2318733/zacks-earnings-trends-highlights-microsoft-alphabet-amazon-apple-meta-tesla-and-nvidia?cid=CS-ZC-FT-press_releases-2318733\", \"tickers\": [\"MSFT\", \"GOOG\", \"GOOGL\", \"AMZN\", \"AAPL\", \"META\", \"TSLA\", \"NVDA\"], \"image_url\": \"https://staticx-tuner.zacks.com/images/articles/main/14/776.jpg\", \"description\": \"The overall earnings picture for Q2 2024 is one of stability and an improving outlook, with management teams providing a reassuring view of the economic situation. However, estimates for Q3 2024 have started to weaken faster than in previous quarters.\", \"keywords\": [\"earnings\", \"Q2 2024\", \"Q3 2024\", \"economic outlook\", \"earnings estimates\"], \"insights\": [{\"ticker\": \"MSFT\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Microsoft\\'s Q2 earnings report, along with those of other \\'Magnificent 7\\' companies, mostly failed to impress market participants, particularly due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"GOOG\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"Similar to Microsoft, the article notes that Alphabet\\'s Q2 earnings report, along with other \\'Magnificent 7\\' companies, mostly failed to impress market participants due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"GOOGL\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"Similar to Microsoft, the article notes that Alphabet\\'s Q2 earnings report, along with other \\'Magnificent 7\\' companies, mostly failed to impress market participants due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"AMZN\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Amazon\\'s Q2 earnings report, along with those of other \\'Magnificent 7\\' companies, mostly failed to impress market participants, particularly due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"AAPL\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article includes Apple as one of the \\'Magnificent 7\\' companies, whose Q2 earnings reports mostly failed to impress market participants due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"META\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"Meta Platforms is included in the \\'Magnificent 7\\' group of companies, whose Q2 earnings reports mostly failed to impress market participants due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"TSLA\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Tesla\\'s Q2 earnings report, along with those of other \\'Magnificent 7\\' companies, mostly failed to impress market participants, particularly due to their rising capex levels towards AI projects.\"}, {\"ticker\": \"NVDA\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"Nvidia is part of the \\'Magnificent 7\\' group of companies, whose Q2 earnings reports mostly failed to impress market participants due to their rising capex levels towards AI projects.\"}]}, {\"id\": \"209a172471f92a42b472dd6c53f7e969483ae1cc5f3601edaa6ee1e34502e961\", \"publisher\": {\"name\": \"Investing.com\", \"homepage_url\": \"https://www.investing.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/investing.png\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/investing.ico\"}, \"title\": \"Airbnb: Stock Drops Post-Earnings, Why Its a Good Buy Now?\", \"author\": \"Marketbeat.Com\", \"published_utc\": \"2024-08-08T07:10:00Z\", \"article_url\": \"https://www.investing.com/analysis/airbnb-stock-drops-postearnings-why-its-a-good-buy-now-200650772\", \"tickers\": [\"ABNB\", \"AAPL\", \"BAC\", \"BACpB\", \"BACpE\", \"BACpK\", \"BACpL\", \"BACpM\", \"BACpN\", \"BACpO\", \"BACpP\", \"BACpQ\", \"BACpS\", \"BMLpG\", \"BMLpH\", \"BMLpJ\", \"BMLpL\", \"MERpK\", \"BKNG\", \"BRK.A\", \"BRK.B\"], \"amp_url\": \"https://m.investing.com/analysis/airbnb-stock-drops-postearnings-why-its-a-good-buy-now-200650772?ampMode=1\", \"image_url\": \"https://i-invdn-com.investing.com/redesign/images/seo/investingcom_analysis_og.jpg\", \"description\": \"Airbnb stock dropped 14% after reporting strong Q2 2024 earnings, but the company\\'s fundamentals remain strong. Analysts see potential for the stock to rally 45.6% to $190 per share as the weaker dollar boosts tourism in the US.\", \"keywords\": [\"Airbnb\", \"stock market\", \"earnings\", \"tourism\", \"US dollar\"], \"insights\": [{\"ticker\": \"ABNB\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article highlights Airbnb\\'s strong financial performance, including 11% revenue growth, 16% increase in free cash flow, and 9% rise in net bookings. The company is also rewarding shareholders through share buybacks, and Wall Street analysts have a positive outlook on the stock.\"}, {\"ticker\": \"AAPL\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article references Berkshire Hathaway\\'s decision to sell half of its stake in Apple, which could be interpreted as a neutral signal for the stock.\"}, {\"ticker\": \"BAC\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BACpB\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BACpE\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BACpK\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BACpL\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BACpM\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BACpN\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BACpO\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BACpP\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BACpQ\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BACpS\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BMLpG\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BMLpH\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BMLpJ\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BMLpL\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"MERpK\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Berkshire Hathaway has closed some of its positions in Bank of America, which could be seen as a neutral signal for the stock.\"}, {\"ticker\": \"BKNG\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article compares Airbnb\\'s valuation to that of Booking Holdings, but does not provide a specific sentiment for the latter company.\"}, {\"ticker\": \"BRK.A\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Warren Buffett\\'s Berkshire Hathaway has sold half of its stake in Apple and closed some positions in Bank of America, which could be seen as a neutral signal for the broader market.\"}, {\"ticker\": \"BRK.B\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Warren Buffett\\'s Berkshire Hathaway has sold half of its stake in Apple and closed some positions in Bank of America, which could be seen as a neutral signal for the broader market.\"}]}, {\"id\": \"2aff70b4646c05b2e044c3e8df668a0445939b3cfb545b37a8796706d7f7de42\", \"publisher\": {\"name\": \"GlobeNewswire Inc.\", \"homepage_url\": \"https://www.globenewswire.com\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/globenewswire.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/globenewswire.ico\"}, \"title\": \"Global Refurbished Electronics Market Size To Worth USD 123.71 Billion By 2033 | CAGR Of 10.03%\", \"author\": \"Spherical Insights & Consulting\", \"published_utc\": \"2024-08-08T00:00:00Z\", \"article_url\": \"https://www.globenewswire.com/news-release/2024/08/08/2926517/0/en/Global-Refurbished-Electronics-Market-Size-To-Worth-USD-123-71-Billion-By-2033-CAGR-Of-10-03.html\", \"tickers\": [\"AAPL\", \"LNVGY\", \"EBAY\", \"DELL\", \"HPQ\", \"BBY\", \"NEGG\"], \"image_url\": \"https://ml.globenewswire.com/Resource/Download/b27a94e8-407e-46ae-a5c2-47bb2a1c8a2e\", \"description\": \"The global refurbished electronics market is expected to grow from $47.57 billion in 2023 to $123.71 billion by 2033, driven by environmentally conscious consumers and the need for cost-effective alternatives to new electronics.\", \"keywords\": [\"refurbished electronics\", \"e-waste\", \"sustainability\", \"cost-effective alternatives\"], \"insights\": [{\"ticker\": \"AAPL\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Apple is a major player in the refurbished electronics market, indicating the company\\'s focus on sustainability and providing affordable options for consumers.\"}, {\"ticker\": \"LNVGY\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Lenovo\\'s presence in the refurbished electronics market demonstrates the company\\'s diversification and focus on providing affordable technology options.\"}, {\"ticker\": \"EBAY\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"eBay\\'s involvement in the refurbished electronics market suggests the platform\\'s role in facilitating the sale of reconditioned devices, catering to cost-conscious consumers.\"}, {\"ticker\": \"DELL\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Dell\\'s inclusion as a key player in the refurbished electronics market indicates the company\\'s commitment to sustainability and providing affordable technology solutions.\"}, {\"ticker\": \"HPQ\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"HP\\'s refurbished laptop venture in India demonstrates the company\\'s efforts to expand its presence in the growing refurbished electronics market.\"}, {\"ticker\": \"BBY\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Best Buy\\'s presence in the refurbished electronics market demonstrates the company\\'s efforts to cater to cost-conscious consumers and promote sustainability.\"}, {\"ticker\": \"NEGG\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Newegg\\'s involvement in the refurbished electronics market indicates the company\\'s efforts to offer a wide range of affordable and sustainable technology options to consumers.\"}]}, {\"id\": \"167bf58248666b3a16f986ab7dbeaaa02e1a99f22350fbcb41cf00804471810c\", \"publisher\": {\"name\": \"Investing.com\", \"homepage_url\": \"https://www.investing.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/investing.png\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/investing.ico\"}, \"title\": \"Which \\'Magnificent 7\\' Stock Offers the Most Value for Money Today?\", \"author\": \"The Tokenist\", \"published_utc\": \"2024-08-07T19:23:00Z\", \"article_url\": \"https://www.investing.com/analysis/which-magnificent-7-stock-offers-the-most-value-for-money-today-200650755\", \"tickers\": [\"NVDA\", \"GOOG\", \"GOOGL\", \"AMZN\", \"META\", \"MSFT\", \"AAPL\", \"TSLA\"], \"amp_url\": \"https://m.investing.com/analysis/which-magnificent-7-stock-offers-the-most-value-for-money-today-200650755?ampMode=1\", \"image_url\": \"https://i-invdn-com.investing.com/redesign/images/seo/investingcom_analysis_og.jpg\", \"description\": \"The article analyzes the performance and outlook of the \\'Magnificent 7\\' stocks - Apple, Microsoft, Amazon, Alphabet, Meta, Nvidia, and Tesla - in the current market conditions. It highlights the strengths and challenges faced by each company and provides insights on which stock offers the most value for investors.\", \"keywords\": [\"Magnificent 7\", \"stocks\", \"market performance\", \"company analysis\", \"investment value\"], \"insights\": [{\"ticker\": \"NVDA\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"Despite facing a delay in the delivery of its Blackwell architecture chips, the article suggests that Nvidia\\'s AI-reliant business model and its dominance in the AI training framework will likely keep it at the center of the generative AI trend, making it a resilient investment option.\"}, {\"ticker\": \"GOOG\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article argues that despite the recent antitrust ruling against Google, Alphabet is likely to continue its growth trajectory, as it is deeply entrenched in the information landscape and its cloud services are expected to benefit from the integration of AI-based tools.\"}, {\"ticker\": \"GOOGL\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article argues that despite the recent antitrust ruling against Google, Alphabet is likely to continue its growth trajectory, as it is deeply entrenched in the information landscape and its cloud services are expected to benefit from the integration of AI-based tools.\"}, {\"ticker\": \"AMZN\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"While Amazon\\'s cloud business remains strong, the article notes that the company\\'s overall performance has been lackluster, with missed quarterly estimates and a weaker-than-expected Q3 guidance. However, the article suggests that Amazon\\'s diversification into services like Prime Video and advertising could boost its revenue in the long run.\"}, {\"ticker\": \"META\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article highlights Meta\\'s resilience in the recent market pullback, noting that the company beat revenue and profit estimates in Q2 and provided better-than-expected Q3 guidance. The article also suggests that Meta\\'s Llama 3 AI model could be more capable than ChatGPT, further strengthening the company\\'s position.\"}, {\"ticker\": \"MSFT\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"While Microsoft reported better-than-expected total revenue in Q2, the article notes that the company\\'s Azure cloud growth fell short of expectations, and it also faces antitrust concerns related to the bundling of its products. However, the article suggests that severe penalties are unlikely.\"}, {\"ticker\": \"AAPL\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article acknowledges the negative sentiment surrounding Apple, including the canceled Apple car project and declining iPhone sales in China. However, it suggests that the upcoming launch of Apple Intelligence, which combines text, image, and video manipulation capabilities, could bolster the company\\'s position.\"}, {\"ticker\": \"TSLA\", \"sentiment\": \"negative\", \"sentiment_reasoning\": \"The article highlights Tesla\\'s vulnerable position, facing tough competition from Chinese automakers and the challenge of overcoming the technical hurdle of full-self driving (FSD) technology. While the article notes that Tesla\\'s stock has a high valuation, it suggests that the company\\'s precarious position makes it a less attractive investment option compared to the other \\'Magnificent 7\\' stocks.\"}]}, {\"id\": \"f24e849794dc680a12fee8274eb3edd66e8b21cd8d0b441c9662800a3af75db8\", \"publisher\": {\"name\": \"The Motley Fool\", \"homepage_url\": \"https://www.fool.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/themotleyfool.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/themotleyfool.ico\"}, \"title\": \"Where Will Duolingo Be in 5 Years?\", \"author\": \"Anders Bylund\", \"published_utc\": \"2024-08-07T15:37:00Z\", \"article_url\": \"https://www.fool.com/investing/2024/08/07/where-will-duolingo-be-in-5-years/?source=iedfolrf0000001\", \"tickers\": [\"AAPL\"], \"image_url\": \"https://g.foolcdn.com/editorial/images/786227/group-of-happy-teenagers.jpg\", \"description\": \"Duolingo, a leading language learning app, has nearly tripled its revenue in three years and has a higher cash-based profit margin than Apple and Alphabet. The company aims to expand beyond language learning to become a global education platform, similar to the growth trajectories of Netflix and Google.\", \"keywords\": [\"Duolingo\", \"language learning\", \"education platform\", \"revenue growth\", \"profit margin\", \"Netflix\", \"Google\"], \"insights\": [{\"ticker\": \"GOOG\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article compares Duolingo\\'s mission and long-term mindset to that of Alphabet (Google), noting that while Duolingo may not match the market success of its mentor, the mere attempt should generate shareholder value.\"}, {\"ticker\": \"AAPL\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article highlights that Duolingo\\'s cash-based profit margin is higher than that of Apple, indicating the company\\'s strong financial performance.\"}]}, {\"id\": \"c72d90f54fb21db148b53ece4d66c0ce13b0335677bc633e435da704991f6f1f\", \"publisher\": {\"name\": \"The Motley Fool\", \"homepage_url\": \"https://www.fool.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/themotleyfool.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/themotleyfool.ico\"}, \"title\": \"Prediction: This Will Be One of the World\\'s First $5 Trillion Artificial Intelligence (AI) Stocks\", \"author\": \"The Motley Fool\", \"published_utc\": \"2024-08-07T08:51:00Z\", \"article_url\": \"https://www.fool.com/investing/2024/08/07/prediction-this-will-be-first-5-trillion-ai-stock/?source=iedfolrf0000001\", \"tickers\": [\"MSFT\", \"NVDA\", \"AAPL\", \"AMD\"], \"image_url\": \"https://g.foolcdn.com/editorial/images/785674/the-microsoft-logo-on-a-black-background.jpg\", \"description\": \"Microsoft is quickly becoming a leader in the AI industry, with its Copilot virtual assistant and Azure cloud platform driving significant growth. The article predicts Microsoft could reach a $5 trillion market cap within the next few years, driven by the company\\'s investments in AI infrastructure and software.\", \"keywords\": [\"Microsoft\", \"Artificial Intelligence\", \"Cloud Computing\", \"Copilot\", \"Azure\"], \"insights\": [{\"ticker\": \"MSFT\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article predicts that Microsoft\\'s investments in AI, including Copilot and Azure, will drive the company to a $5 trillion market cap within the next few years, representing significant growth potential.\"}, {\"ticker\": \"NVDA\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article cites Nvidia CEO Jensen Huang\\'s forecast that data center operators can generate $5 in revenue for every $1 spent on chips, which could benefit Microsoft\\'s AI initiatives.\"}, {\"ticker\": \"AAPL\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article mentions that Apple is similarly valued to Microsoft and has a path to the $5 trillion milestone, but does not provide any specific insights about Apple\\'s AI strategy or potential.\"}, {\"ticker\": \"AMD\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article briefly mentions that Microsoft is building data centers with chips from suppliers like Advanced Micro Devices, but does not provide any further analysis or insights about the company.\"}]}, {\"id\": \"5397eb0e051db10042f076aa48b1c70f32a7360cf999ac28c16fca2a7dcf4c9c\", \"publisher\": {\"name\": \"The Motley Fool\", \"homepage_url\": \"https://www.fool.com/\", \"logo_url\": \"https://s3.polygon.io/public/assets/news/logos/themotleyfool.svg\", \"favicon_url\": \"https://s3.polygon.io/public/assets/news/favicons/themotleyfool.ico\"}, \"title\": \"Warren Buffett Just Sold $90 Billion of Apple Stock. Could This Be the Biggest Investing Mistake He\\'s Ever Made?\", \"author\": \"The Motley Fool\", \"published_utc\": \"2024-08-07T08:50:00Z\", \"article_url\": \"https://www.fool.com/investing/2024/08/07/warren-buffett-just-sold-90-billion-of-apple-stock/?source=iedfolrf0000001\", \"tickers\": [\"AAPL\", \"BRK.A\", \"BRK.B\"], \"image_url\": \"https://g.foolcdn.com/editorial/images/785927/buffett22-tmf.png\", \"description\": \"Warren Buffett sold $90 billion worth of Apple stock, raising questions about whether it could be his biggest investing mistake. The article discusses Buffett\\'s potential reasons for the sale and whether Apple remains a good investment opportunity.\", \"keywords\": [\"Warren Buffett\", \"Apple\", \"Investing\", \"Mistake\"], \"insights\": [{\"ticker\": \"AAPL\", \"sentiment\": \"positive\", \"sentiment_reasoning\": \"The article suggests that Apple remains a good investment opportunity, particularly due to its new artificial intelligence capabilities and the potential for an \\'AI-driven iPhone upgrade supercycle\\'.\"}, {\"ticker\": \"BRK.A\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article discusses Buffett\\'s sale of Apple stock from Berkshire Hathaway\\'s portfolio, but does not make a clear judgment on the overall sentiment towards Berkshire Hathaway.\"}, {\"ticker\": \"BRK.B\", \"sentiment\": \"neutral\", \"sentiment_reasoning\": \"The article discusses Buffett\\'s sale of Apple stock from Berkshire Hathaway\\'s portfolio, but does not make a clear judgment on the overall sentiment towards Berkshire Hathaway.\"}]}]' name='polygon_ticker_news' tool_call_id='1'\n" ] } ], "source": [ - "# Print the latest reporting period's cash flow statement\n", - "print(f\"Cash flow statement: {financial_data['financials']['cash_flow_statement']}\")" + "from langchain_community.tools.polygon.ticker_news import PolygonTickerNews\n", + "\n", + "news_tool = PolygonTickerNews(api_wrapper=api_wrapper)\n", + "\n", + "# We can invoke directly with input\n", + "res = news_tool.invoke({\"query\": \"AAPL\"})\n", + "\n", + "model_generated_tool_call = {\n", + " \"args\": {\"query\": \"AAPL\"},\n", + " \"id\": \"1\",\n", + " \"name\": news_tool.name,\n", + " \"type\": \"tool_call\",\n", + "}\n", + "\n", + "# Or we can invoke with a tool call\n", + "res = news_tool.invoke(model_generated_tool_call)\n", + "\n", + "print(res)" + ] + }, + { + "cell_type": "markdown", + "id": "89786297", + "metadata": {}, + "source": [ + "### API reference\n", + "\n", + "For detailed documentation of all Polygon IO tools head to the API reference for each:\n", + "\n", + "- Aggregate: https://api.python.langchain.com/en/latest/tools/langchain_community.tools.polygon.aggregates.PolygonAggregates.html\n", + "- Financials: https://api.python.langchain.com/en/latest/tools/langchain_community.tools.polygon.financials.PolygonFinancials.html\n", + "- Last Quote: https://api.python.langchain.com/en/latest/tools/langchain_community.tools.polygon.last_quote.PolygonLastQuote.html\n", + "- Ticker News: https://api.python.langchain.com/en/latest/tools/langchain_community.tools.polygon.ticker_news.PolygonTickerNews.html" ] } ], "metadata": { - "colab": { - "provenance": [] - }, "kernelspec": { - "display_name": "Python (langchain)", + "display_name": "Python 3 (ipykernel)", "language": "python", - "name": "langchain" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -395,12 +677,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.18" - }, - "vscode": { - "interpreter": { - "hash": "53f3bc57609c7a84333bb558594977aa5b4026b1d6070b93987956689e367341" - } + "version": "3.11.9" } }, "nbformat": 4, diff --git a/docs/docs/integrations/tools/polygon_toolkit.ipynb b/docs/docs/integrations/tools/polygon_toolkit.ipynb deleted file mode 100644 index 87c8aa0af9982..0000000000000 --- a/docs/docs/integrations/tools/polygon_toolkit.ipynb +++ /dev/null @@ -1,187 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "e6fd05db-21c2-4227-9900-0840bc62cb31", - "metadata": {}, - "source": [ - "# Polygon IO Toolkit\n", - "\n", - "This notebook shows how to use agents to interact with the [Polygon IO](https://polygon.io/) toolkit. The toolkit provides access to Polygon's Stock Market Data API." - ] - }, - { - "cell_type": "markdown", - "id": "a4da342d", - "metadata": {}, - "source": [ - "## Example Use\n", - "\n", - "\n", - "### Setup" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c17b33e0", - "metadata": {}, - "outputs": [], - "source": [ - "%pip install --upgrade --quiet langchain-community > /dev/null" - ] - }, - { - "cell_type": "markdown", - "id": "3cd00ad2", - "metadata": {}, - "source": [ - "Get your Polygon IO API key [here](https://polygon.io/), and then set it below.\n", - "Note that the tool used in this example requires a \"Stocks Advanced\" subscription" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "a180a2b8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "········\n" - ] - } - ], - "source": [ - "import getpass\n", - "import os\n", - "\n", - "os.environ[\"POLYGON_API_KEY\"] = getpass.getpass()" - ] - }, - { - "cell_type": "markdown", - "id": "ed6f89fa", - "metadata": {}, - "source": [ - "It's also helpful (but not needed) to set up [LangSmith](https://smith.langchain.com/) for best-in-class observability" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "56670cf6", - "metadata": {}, - "outputs": [], - "source": [ - "# os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n", - "# os.environ[\"LANGCHAIN_API_KEY\"] = getpass.getpass()" - ] - }, - { - "cell_type": "markdown", - "id": "7d93e6bd-03d7-4d3c-b915-8b73164e2ad8", - "metadata": {}, - "source": [ - "### Initializing the agent" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "648a2cb2-308e-4b2e-9b73-37109be4e258", - "metadata": { - "is_executing": true - }, - "outputs": [], - "source": [ - "from langchain import hub\n", - "from langchain.agents import AgentExecutor, create_openai_functions_agent\n", - "from langchain_community.agent_toolkits.polygon.toolkit import PolygonToolkit\n", - "from langchain_community.utilities.polygon import PolygonAPIWrapper\n", - "from langchain_openai import ChatOpenAI\n", - "\n", - "llm = ChatOpenAI(temperature=0)\n", - "\n", - "instructions = \"\"\"You are an assistant.\"\"\"\n", - "base_prompt = hub.pull(\"langchain-ai/openai-functions-template\")\n", - "prompt = base_prompt.partial(instructions=instructions)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "18650040-0ff8-4c0f-a4f2-be6aad7fe63e", - "metadata": {}, - "outputs": [], - "source": [ - "polygon = PolygonAPIWrapper()\n", - "toolkit = PolygonToolkit.from_polygon_api_wrapper(polygon)\n", - "agent = create_openai_functions_agent(llm, toolkit.get_tools(), prompt)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "fd7463e4-8716-4d1d-860a-770533eaa742", - "metadata": {}, - "outputs": [], - "source": [ - "agent_executor = AgentExecutor(\n", - " agent=agent,\n", - " tools=toolkit.get_tools(),\n", - " verbose=True,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "71f05fc9-d80d-4614-b9a3-e0a5e43cbbbb", - "metadata": {}, - "source": [ - "### Get the last price quote for a stock" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b97409f3-dc87-425d-b555-406cf8466a28", - "metadata": {}, - "outputs": [], - "source": [ - "agent_executor.invoke({\"input\": \"What is the latest stock price for AAPL?\"})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9e666ee1", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.1" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/docs/integrations/vectorstores/index.mdx b/docs/docs/integrations/vectorstores/index.mdx index fb35683b6443c..02622072a55e1 100644 --- a/docs/docs/integrations/vectorstores/index.mdx +++ b/docs/docs/integrations/vectorstores/index.mdx @@ -1,29 +1,15 @@ --- sidebar_position: 0 sidebar_class_name: hidden -keywords: [compatibility] -custom_edit_url: --- # Vectorstores -## Features +import { CategoryTable, IndexTable } from "@theme/FeatureTables"; -The table below lists the features for some of our most popular vector stores. + -Vectorstore|Delete by ID|Filtering|Search by Vector|Search with score|Async|Passes Standard Tests|Multi Tenancy|Local/Cloud|IDs in add Documents -:-|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-: -AstraDBVectorStore|✅|✅|✅|✅|✅|❌|❌|❌|Local|✅ -Chroma|✅|✅|✅|✅|✅|❌|❌|❌|Local|✅ -Clickhouse|✅|✅|❌|✅|❌|❌|❌|❌|Local|✅ -CouchbaseVectorStore|✅|✅|❌|✅|✅|❌|❌|❌|Local|✅ -ElasticsearchStore|✅|✅|✅|❌|✅|❌|❌|❌|Local|✅ -FAISS|✅|✅|✅|✅|✅|❌|❌|❌|Local|✅ -InMemoryVectorStore|✅|✅|❌|✅|✅|❌|❌|❌|Local|✅ -Milvus|✅|✅|❌|✅|✅|❌|❌|❌|Local|✅ -MongoDBAtlasVectorSearch|✅|✅|❌|❌|✅|❌|❌|❌|Local|✅ -PGVector|✅|✅|✅|✅|✅|❌|❌|❌|Local|✅ -PineconeVectorStore|✅|✅|✅|❌|✅|❌|❌|❌|Local|✅ -QdrantVectorStore|✅|✅|✅|✅|✅|❌|❌|❌|Local|✅ -Redis|✅|✅|✅|✅|✅|❌|❌|❌|Local|✅ +## All Vectorstores + + diff --git a/docs/docs/integrations/vectorstores/qdrant.ipynb b/docs/docs/integrations/vectorstores/qdrant.ipynb index fe5544e7e820e..42b456b5a979f 100644 --- a/docs/docs/integrations/vectorstores/qdrant.ipynb +++ b/docs/docs/integrations/vectorstores/qdrant.ipynb @@ -34,7 +34,7 @@ }, "outputs": [], "source": [ - "%pip install -qU langchain-qdrant 'qdrant-client[fastembed]'" + "%pip install -qU langchain-qdrant" ] }, { @@ -628,7 +628,7 @@ "id": "525e3582", "metadata": {}, "source": [ - "For a full list of all the search functions available for a `QdrantVectorStore`, read the [API reference](https://api.python.langchain.com/en/latest/vectorstores/langchain_qdrant.vectorstores.Qdrant.html)\n", + "For a full list of all the search functions available for a `QdrantVectorStore`, read the [API reference](https://api.python.langchain.com/en/latest/qdrant/langchain_qdrant.qdrant.QdrantVectorStore.html)\n", "\n", "### Metadata filtering\n", "\n", @@ -814,7 +814,7 @@ "source": [ "## API reference\n", "\n", - "For detailed documentation of all `QdrantVectorStore` features and configurations head to the API reference: https://api.python.langchain.com/en/latest/vectorstores/langchain_qdrant.vectorstores.Qdrant.html" + "For detailed documentation of all `QdrantVectorStore` features and configurations head to the API reference: https://api.python.langchain.com/en/latest/qdrant/langchain_qdrant.qdrant.QdrantVectorStore.html" ] } ], diff --git a/docs/docs/integrations/vectorstores/upstash.ipynb b/docs/docs/integrations/vectorstores/upstash.ipynb index 03b1909e74fb8..1af983a441ce4 100644 --- a/docs/docs/integrations/vectorstores/upstash.ipynb +++ b/docs/docs/integrations/vectorstores/upstash.ipynb @@ -43,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -87,18 +87,18 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[Document(page_content='Madam Speaker, Madam Vice President, our First Lady and Second Gentleman. Members of Congress and the Cabinet. Justices of the Supreme Court. My fellow Americans. \\n\\nLast year COVID-19 kept us apart. This year we are finally together again. \\n\\nTonight, we meet as Democrats Republicans and Independents. But most importantly as Americans. \\n\\nWith a duty to one another to the American people to the Constitution. \\n\\nAnd with an unwavering resolve that freedom will always triumph over tyranny. \\n\\nSix days ago, Russia’s Vladimir Putin sought to shake the foundations of the free world thinking he could make it bend to his menacing ways. But he badly miscalculated. \\n\\nHe thought he could roll into Ukraine and the world would roll over. Instead he met a wall of strength he never imagined. \\n\\nHe met the Ukrainian people. \\n\\nFrom President Zelenskyy to every Ukrainian, their fearlessness, their courage, their determination, inspires the world.', metadata={'source': '../../how_to/state_of_the_union.txt'}),\n", - " Document(page_content='Groups of citizens blocking tanks with their bodies. Everyone from students to retirees teachers turned soldiers defending their homeland. \\n\\nIn this struggle as President Zelenskyy said in his speech to the European Parliament “Light will win over darkness.” The Ukrainian Ambassador to the United States is here tonight. \\n\\nLet each of us here tonight in this Chamber send an unmistakable signal to Ukraine and to the world. \\n\\nPlease rise if you are able and show that, Yes, we the United States of America stand with the Ukrainian people. \\n\\nThroughout our history we’ve learned this lesson when dictators do not pay a price for their aggression they cause more chaos. \\n\\nThey keep moving. \\n\\nAnd the costs and the threats to America and the world keep rising. \\n\\nThat’s why the NATO Alliance was created to secure peace and stability in Europe after World War 2. \\n\\nThe United States is a member along with 29 other nations. \\n\\nIt matters. American diplomacy matters. American resolve matters.', metadata={'source': '../../how_to/state_of_the_union.txt'}),\n", - " Document(page_content='Putin’s latest attack on Ukraine was premeditated and unprovoked. \\n\\nHe rejected repeated efforts at diplomacy. \\n\\nHe thought the West and NATO wouldn’t respond. And he thought he could divide us at home. Putin was wrong. We were ready. Here is what we did. \\n\\nWe prepared extensively and carefully. \\n\\nWe spent months building a coalition of other freedom-loving nations from Europe and the Americas to Asia and Africa to confront Putin. \\n\\nI spent countless hours unifying our European allies. We shared with the world in advance what we knew Putin was planning and precisely how he would try to falsely justify his aggression. \\n\\nWe countered Russia’s lies with truth. \\n\\nAnd now that he has acted the free world is holding him accountable. \\n\\nAlong with twenty-seven members of the European Union including France, Germany, Italy, as well as countries like the United Kingdom, Canada, Japan, Korea, Australia, New Zealand, and many others, even Switzerland.', metadata={'source': '../../how_to/state_of_the_union.txt'})]" + "[Document(metadata={'source': '../../how_to/state_of_the_union.txt'}, page_content='Madam Speaker, Madam Vice President, our First Lady and Second Gentleman. Members of Congress and the Cabinet. Justices of the Supreme Court. My fellow Americans. \\n\\nLast year COVID-19 kept us apart. This year we are finally together again. \\n\\nTonight, we meet as Democrats Republicans and Independents. But most importantly as Americans. \\n\\nWith a duty to one another to the American people to the Constitution. \\n\\nAnd with an unwavering resolve that freedom will always triumph over tyranny. \\n\\nSix days ago, Russia’s Vladimir Putin sought to shake the foundations of the free world thinking he could make it bend to his menacing ways. But he badly miscalculated. \\n\\nHe thought he could roll into Ukraine and the world would roll over. Instead he met a wall of strength he never imagined. \\n\\nHe met the Ukrainian people. \\n\\nFrom President Zelenskyy to every Ukrainian, their fearlessness, their courage, their determination, inspires the world.'),\n", + " Document(metadata={'source': '../../how_to/state_of_the_union.txt'}, page_content='Groups of citizens blocking tanks with their bodies. Everyone from students to retirees teachers turned soldiers defending their homeland. \\n\\nIn this struggle as President Zelenskyy said in his speech to the European Parliament “Light will win over darkness.” The Ukrainian Ambassador to the United States is here tonight. \\n\\nLet each of us here tonight in this Chamber send an unmistakable signal to Ukraine and to the world. \\n\\nPlease rise if you are able and show that, Yes, we the United States of America stand with the Ukrainian people. \\n\\nThroughout our history we’ve learned this lesson when dictators do not pay a price for their aggression they cause more chaos. \\n\\nThey keep moving. \\n\\nAnd the costs and the threats to America and the world keep rising. \\n\\nThat’s why the NATO Alliance was created to secure peace and stability in Europe after World War 2. \\n\\nThe United States is a member along with 29 other nations. \\n\\nIt matters. American diplomacy matters. American resolve matters.'),\n", + " Document(metadata={'source': '../../how_to/state_of_the_union.txt'}, page_content='Putin’s latest attack on Ukraine was premeditated and unprovoked. \\n\\nHe rejected repeated efforts at diplomacy. \\n\\nHe thought the West and NATO wouldn’t respond. And he thought he could divide us at home. Putin was wrong. We were ready. Here is what we did. \\n\\nWe prepared extensively and carefully. \\n\\nWe spent months building a coalition of other freedom-loving nations from Europe and the Americas to Asia and Africa to confront Putin. \\n\\nI spent countless hours unifying our European allies. We shared with the world in advance what we knew Putin was planning and precisely how he would try to falsely justify his aggression. \\n\\nWe countered Russia’s lies with truth. \\n\\nAnd now that he has acted the free world is holding him accountable. \\n\\nAlong with twenty-seven members of the European Union including France, Germany, Italy, as well as countries like the United Kingdom, Canada, Japan, Korea, Australia, New Zealand, and many others, even Switzerland.')]" ] }, - "execution_count": 17, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -126,20 +126,20 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "['82b3781b-817c-4a4d-8f8b-cbd07c1d005a',\n", - " 'a20e0a49-29d8-465e-8eae-0bc5ac3d24dc',\n", - " 'c19f4108-b652-4890-873e-d4cad00f1b1a',\n", - " '23d1fcf9-6ee1-4638-8c70-0f5030762301',\n", - " '2d775784-825d-4627-97a3-fee4539d8f58']" + "['247aa3ae-9be9-43e2-98e4-48f94f920749',\n", + " 'c4dfc886-0a2d-497c-b2b7-d923a5cb3832',\n", + " '0350761d-ca68-414e-b8db-7eca78cb0d18',\n", + " '902fe5eb-8543-486a-bd5f-79858a7a8af1',\n", + " '28875612-c672-4de4-b40a-3b658c72036a']" ] }, - "execution_count": 35, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -154,33 +154,116 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "store" + "## Querying\n", + "\n", + "The database can be queried using a vector or a text prompt.\n", + "If a text prompt is used, it's first converted into embedding and then queried.\n", + "\n", + "The `k` parameter specifies how many results to return from the query." ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "['fe1f7a7b-42e2-4828-88b0-5b449c49fe86',\n", - " '154a0021-a99c-427e-befb-f0b2b18ed83c',\n", - " 'a8218226-18a9-4ab5-ade5-5a71b19a7831',\n", - " '62b7ef97-83bf-4b6d-8c93-f471796244dc',\n", - " 'ab43fd2e-13df-46d4-8cf7-e6e16506e4bb',\n", - " '6841e7f9-adaa-41d9-af3d-0813ee52443f',\n", - " '45dda5a1-f0c1-4ac7-9acb-50253e4ee493']" + "[Document(metadata={'source': '../../how_to/state_of_the_union.txt'}, page_content='If you travel 20 miles east of Columbus, Ohio, you’ll find 1,000 empty acres of land. \\n\\nIt won’t look like much, but if you stop and look closely, you’ll see a “Field of dreams,” the ground on which America’s future will be built. \\n\\nThis is where Intel, the American company that helped build Silicon Valley, is going to build its $20 billion semiconductor “mega site”. \\n\\nUp to eight state-of-the-art factories in one place. 10,000 new good-paying jobs. \\n\\nSome of the most sophisticated manufacturing in the world to make computer chips the size of a fingertip that power the world and our everyday lives. \\n\\nSmartphones. The Internet. Technology we have yet to invent. \\n\\nBut that’s just the beginning. \\n\\nIntel’s CEO, Pat Gelsinger, who is here tonight, told me they are ready to increase their investment from \\n$20 billion to $100 billion. \\n\\nThat would be one of the biggest investments in manufacturing in American history. \\n\\nAnd all they’re waiting for is for you to pass this bill.'),\n", + " Document(metadata={'source': '../../how_to/state_of_the_union.txt'}, page_content='So let’s not wait any longer. Send it to my desk. I’ll sign it. \\n\\nAnd we will really take off. \\n\\nAnd Intel is not alone. \\n\\nThere’s something happening in America. \\n\\nJust look around and you’ll see an amazing story. \\n\\nThe rebirth of the pride that comes from stamping products “Made In America.” The revitalization of American manufacturing. \\n\\nCompanies are choosing to build new factories here, when just a few years ago, they would have built them overseas. \\n\\nThat’s what is happening. Ford is investing $11 billion to build electric vehicles, creating 11,000 jobs across the country. \\n\\nGM is making the largest investment in its history—$7 billion to build electric vehicles, creating 4,000 jobs in Michigan. \\n\\nAll told, we created 369,000 new manufacturing jobs in America just last year. \\n\\nPowered by people I’ve met like JoJo Burgess, from generations of union steelworkers from Pittsburgh, who’s here with us tonight.'),\n", + " Document(metadata={'source': '../../how_to/state_of_the_union.txt'}, page_content='When we use taxpayer dollars to rebuild America – we are going to Buy American: buy American products to support American jobs. \\n\\nThe federal government spends about $600 Billion a year to keep the country safe and secure. \\n\\nThere’s been a law on the books for almost a century \\nto make sure taxpayers’ dollars support American jobs and businesses. \\n\\nEvery Administration says they’ll do it, but we are actually doing it. \\n\\nWe will buy American to make sure everything from the deck of an aircraft carrier to the steel on highway guardrails are made in America. \\n\\nBut to compete for the best jobs of the future, we also need to level the playing field with China and other competitors. \\n\\nThat’s why it is so important to pass the Bipartisan Innovation Act sitting in Congress that will make record investments in emerging technologies and American manufacturing. \\n\\nLet me give you one example of why it’s so important to pass it.'),\n", + " Document(metadata={'source': '../../how_to/state_of_the_union.txt'}, page_content='Last month, I announced our plan to supercharge \\nthe Cancer Moonshot that President Obama asked me to lead six years ago. \\n\\nOur goal is to cut the cancer death rate by at least 50% over the next 25 years, turn more cancers from death sentences into treatable diseases. \\n\\nMore support for patients and families. \\n\\nTo get there, I call on Congress to fund ARPA-H, the Advanced Research Projects Agency for Health. \\n\\nIt’s based on DARPA—the Defense Department project that led to the Internet, GPS, and so much more. \\n\\nARPA-H will have a singular purpose—to drive breakthroughs in cancer, Alzheimer’s, diabetes, and more. \\n\\nA unity agenda for the nation. \\n\\nWe can do this. \\n\\nMy fellow Americans—tonight , we have gathered in a sacred space—the citadel of our democracy. \\n\\nIn this Capitol, generation after generation, Americans have debated great questions amid great strife, and have done great things. \\n\\nWe have fought for freedom, expanded liberty, defeated totalitarianism and terror.'),\n", + " Document(metadata={'source': '../../how_to/state_of_the_union.txt'}, page_content='And based on the projections, more of the country will reach that point across the next couple of weeks. \\n\\nThanks to the progress we have made this past year, COVID-19 need no longer control our lives. \\n\\nI know some are talking about “living with COVID-19”. Tonight – I say that we will never just accept living with COVID-19. \\n\\nWe will continue to combat the virus as we do other diseases. And because this is a virus that mutates and spreads, we will stay on guard. \\n\\nHere are four common sense steps as we move forward safely. \\n\\nFirst, stay protected with vaccines and treatments. We know how incredibly effective vaccines are. If you’re vaccinated and boosted you have the highest degree of protection. \\n\\nWe will never give up on vaccinating more Americans. Now, I know parents with kids under 5 are eager to see a vaccine authorized for their children. \\n\\nThe scientists are working hard to get that done and we’ll be ready with plenty of vaccines when they do.')]" ] }, - "execution_count": 27, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "store.add_texts(\n", + "result = store.similarity_search(\"technology\", k=5)\n", + "result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Querying with score\n", + "\n", + "The score of the query can be included for every result. \n", + "\n", + "> The score returned in the query requests is a normalized value between 0 and 1, where 1 indicates the highest similarity and 0 the lowest regardless of the similarity function used. For more information look at the [docs](https://upstash.com/docs/vector/overall/features#vector-similarity-functions)." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'source': '../../how_to/state_of_the_union.txt'} - 0.8968438\n", + "{'source': '../../how_to/state_of_the_union.txt'} - 0.8895128\n", + "{'source': '../../how_to/state_of_the_union.txt'} - 0.88626665\n", + "{'source': '../../how_to/state_of_the_union.txt'} - 0.88538057\n", + "{'source': '../../how_to/state_of_the_union.txt'} - 0.88432854\n" + ] + } + ], + "source": [ + "result = store.similarity_search_with_score(\"technology\", k=5)\n", + "\n", + "for doc, score in result:\n", + " print(f\"{doc.metadata} - {score}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Namespaces\n", + "\n", + "Namespaces can be used to separate different types of documents. This can increase the efficiency of the queries since the search space is reduced. When no namespace is provided, the default namespace is used." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "store_books = UpstashVectorStore(embedding=embeddings, namespace=\"books\")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['928a5f12-900f-40b7-9406-3861741cc9d6',\n", + " '4908670e-0b9c-455b-96b8-e0f83bc59204',\n", + " '7083ff98-d900-4435-a67c-d9690fc555ba',\n", + " 'b910f9b1-2be0-4e0a-8b6c-93ba9b367df5',\n", + " '7c40e950-4d2b-4293-9fb8-623a49e72607',\n", + " '25a70e79-4905-42af-8b08-09f13bd48512',\n", + " '695e2bcf-23d9-44d4-af26-a7b554c0c375']" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "store_books.add_texts(\n", " [\n", " \"A timeless tale set in the Jazz Age, this novel delves into the lives of affluent socialites, their pursuits of wealth, love, and the elusive American Dream. Amidst extravagant parties and glittering opulence, the story unravels the complexities of desire, ambition, and the consequences of obsession.\",\n", " \"Set in a small Southern town during the 1930s, this novel explores themes of racial injustice, moral growth, and empathy through the eyes of a young girl. It follows her father, a principled lawyer, as he defends a black man accused of assaulting a white woman, confronting deep-seated prejudices and challenging societal norms along the way.\",\n", @@ -202,63 +285,58 @@ ")" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Querying\n", - "\n", - "The database can be queried using a vector or a text prompt.\n", - "If a text prompt is used, it's first converted into embedding and then queried.\n", - "\n", - "The `k` parameter specifies how many results to return from the query." - ] - }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[Document(page_content='And my report is this: the State of the Union is strong—because you, the American people, are strong. \\n\\nWe are stronger today than we were a year ago. \\n\\nAnd we will be stronger a year from now than we are today. \\n\\nNow is our moment to meet and overcome the challenges of our time. \\n\\nAnd we will, as one people. \\n\\nOne America. \\n\\nThe United States of America. \\n\\nMay God bless you all. May God protect our troops.', metadata={'source': '../../how_to/state_of_the_union.txt'}),\n", - " Document(page_content='And built the strongest, freest, and most prosperous nation the world has ever known. \\n\\nNow is the hour. \\n\\nOur moment of responsibility. \\n\\nOur test of resolve and conscience, of history itself. \\n\\nIt is in this moment that our character is formed. Our purpose is found. Our future is forged. \\n\\nWell I know this nation. \\n\\nWe will meet the test. \\n\\nTo protect freedom and liberty, to expand fairness and opportunity. \\n\\nWe will save democracy. \\n\\nAs hard as these times have been, I am more optimistic about America today than I have been my whole life. \\n\\nBecause I see the future that is within our grasp. \\n\\nBecause I know there is simply nothing beyond our capacity. \\n\\nWe are the only nation on Earth that has always turned every crisis we have faced into an opportunity. \\n\\nThe only nation that can be defined by a single word: possibilities. \\n\\nSo on this night, in our 245th year as a nation, I have come to report on the State of the Union.', metadata={'source': '../../how_to/state_of_the_union.txt'}),\n", - " Document(page_content='Groups of citizens blocking tanks with their bodies. Everyone from students to retirees teachers turned soldiers defending their homeland. \\n\\nIn this struggle as President Zelenskyy said in his speech to the European Parliament “Light will win over darkness.” The Ukrainian Ambassador to the United States is here tonight. \\n\\nLet each of us here tonight in this Chamber send an unmistakable signal to Ukraine and to the world. \\n\\nPlease rise if you are able and show that, Yes, we the United States of America stand with the Ukrainian people. \\n\\nThroughout our history we’ve learned this lesson when dictators do not pay a price for their aggression they cause more chaos. \\n\\nThey keep moving. \\n\\nAnd the costs and the threats to America and the world keep rising. \\n\\nThat’s why the NATO Alliance was created to secure peace and stability in Europe after World War 2. \\n\\nThe United States is a member along with 29 other nations. \\n\\nIt matters. American diplomacy matters. American resolve matters.', metadata={'source': '../../how_to/state_of_the_union.txt'}),\n", - " Document(page_content='When we use taxpayer dollars to rebuild America – we are going to Buy American: buy American products to support American jobs. \\n\\nThe federal government spends about $600 Billion a year to keep the country safe and secure. \\n\\nThere’s been a law on the books for almost a century \\nto make sure taxpayers’ dollars support American jobs and businesses. \\n\\nEvery Administration says they’ll do it, but we are actually doing it. \\n\\nWe will buy American to make sure everything from the deck of an aircraft carrier to the steel on highway guardrails are made in America. \\n\\nBut to compete for the best jobs of the future, we also need to level the playing field with China and other competitors. \\n\\nThat’s why it is so important to pass the Bipartisan Innovation Act sitting in Congress that will make record investments in emerging technologies and American manufacturing. \\n\\nLet me give you one example of why it’s so important to pass it.', metadata={'source': '../../how_to/state_of_the_union.txt'}),\n", - " Document(page_content='Madam Speaker, Madam Vice President, our First Lady and Second Gentleman. Members of Congress and the Cabinet. Justices of the Supreme Court. My fellow Americans. \\n\\nLast year COVID-19 kept us apart. This year we are finally together again. \\n\\nTonight, we meet as Democrats Republicans and Independents. But most importantly as Americans. \\n\\nWith a duty to one another to the American people to the Constitution. \\n\\nAnd with an unwavering resolve that freedom will always triumph over tyranny. \\n\\nSix days ago, Russia’s Vladimir Putin sought to shake the foundations of the free world thinking he could make it bend to his menacing ways. But he badly miscalculated. \\n\\nHe thought he could roll into Ukraine and the world would roll over. Instead he met a wall of strength he never imagined. \\n\\nHe met the Ukrainian people. \\n\\nFrom President Zelenskyy to every Ukrainian, their fearlessness, their courage, their determination, inspires the world.', metadata={'source': '../../how_to/state_of_the_union.txt'})]" + "[Document(metadata={'title': '1984', 'author': 'George Orwell', 'year': 1949}, page_content='A chilling portrayal of a totalitarian regime, this dystopian novel offers a bleak vision of a future world dominated by surveillance, propaganda, and thought control. Through the eyes of a disillusioned protagonist, it explores the dangers of totalitarianism and the erosion of individual freedom in a society ruled by fear and oppression.'),\n", + " Document(metadata={'title': 'The Road', 'author': 'Cormac McCarthy', 'year': 2006}, page_content='Set in a future world devastated by environmental collapse, this novel follows a group of survivors as they struggle to survive in a harsh, unforgiving landscape. Amidst scarcity and desperation, they must confront moral dilemmas and question the nature of humanity itself.'),\n", + " Document(metadata={'title': 'Brave New World', 'author': 'Aldous Huxley', 'year': 1932}, page_content='In a society where emotion is suppressed and individuality is forbidden, one man dares to defy the oppressive regime. Through acts of rebellion and forbidden love, he discovers the power of human connection and the importance of free will.')]" ] }, - "execution_count": 29, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "result = store.similarity_search(\"The United States of America\", k=5)\n", + "result = store_books.similarity_search(\"dystopia\", k=3)\n", "result" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metadata Filtering\n", + "\n", + "Metadata can be used to filter the results of a query. You can refer to the [docs](https://upstash.com/docs/vector/features/filtering) to see more complex ways of filtering." + ] + }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[Document(page_content='A chilling portrayal of a totalitarian regime, this dystopian novel offers a bleak vision of a future world dominated by surveillance, propaganda, and thought control. Through the eyes of a disillusioned protagonist, it explores the dangers of totalitarianism and the erosion of individual freedom in a society ruled by fear and oppression.', metadata={'title': '1984', 'author': 'George Orwell', 'year': 1949}),\n", - " Document(page_content='Narrated by a disillusioned teenager, this novel follows his journey of self-discovery and rebellion against the phoniness of the adult world. Through a series of encounters and reflections, it explores themes of alienation, identity, and the search for authenticity in a society marked by conformity and hypocrisy.', metadata={'title': 'The Catcher in the Rye', 'author': 'J.D. Salinger', 'year': 1951}),\n", - " Document(page_content='Set in the English countryside during the early 19th century, this novel follows the lives of the Bennet sisters as they navigate the intricate social hierarchy of their time. Focusing on themes of marriage, class, and societal expectations, the story offers a witty and insightful commentary on the complexities of romantic relationships and the pursuit of happiness.', metadata={'title': 'Pride and Prejudice', 'author': 'Jane Austen', 'year': 1813})]" + "[Document(metadata={'title': '1984', 'author': 'George Orwell', 'year': 1949}, page_content='A chilling portrayal of a totalitarian regime, this dystopian novel offers a bleak vision of a future world dominated by surveillance, propaganda, and thought control. Through the eyes of a disillusioned protagonist, it explores the dangers of totalitarianism and the erosion of individual freedom in a society ruled by fear and oppression.'),\n", + " Document(metadata={'title': 'Brave New World', 'author': 'Aldous Huxley', 'year': 1932}, page_content='In a society where emotion is suppressed and individuality is forbidden, one man dares to defy the oppressive regime. Through acts of rebellion and forbidden love, he discovers the power of human connection and the importance of free will.'),\n", + " Document(metadata={'title': 'The Catcher in the Rye', 'author': 'J.D. Salinger', 'year': 1951}, page_content='Narrated by a disillusioned teenager, this novel follows his journey of self-discovery and rebellion against the phoniness of the adult world. Through a series of encounters and reflections, it explores themes of alienation, identity, and the search for authenticity in a society marked by conformity and hypocrisy.')]" ] }, - "execution_count": 30, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "result = store.similarity_search(\"dystopia\", k=3, filter=\"year < 2000\")\n", + "result = store_books.similarity_search(\"dystopia\", k=3, filter=\"year < 2000\")\n", "result" ] }, @@ -266,35 +344,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Querying with score\n", + "## Getting info about vector database\n", "\n", - "The score of the query can be included for every result. \n", + "You can get information about your database like the distance metric dimension using the info function.\n", "\n", - "> The score returned in the query requests is a normalized value between 0 and 1, where 1 indicates the highest similarity and 0 the lowest regardless of the similarity function used. For more information look at the [docs](https://upstash.com/docs/vector/overall/features#vector-similarity-functions)." + "> When an insert happens, the database an indexing takes place. While this is happening new vectors can not be queried. `pendingVectorCount` represents the number of vector that are currently being indexed. " ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 15, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'source': '../../how_to/state_of_the_union.txt'} - 0.87391514\n", - "{'source': '../../how_to/state_of_the_union.txt'} - 0.8549463\n", - "{'source': '../../how_to/state_of_the_union.txt'} - 0.847913\n", - "{'source': '../../how_to/state_of_the_union.txt'} - 0.84328896\n", - "{'source': '../../how_to/state_of_the_union.txt'} - 0.832347\n" - ] + "data": { + "text/plain": [ + "InfoResult(vector_count=49, pending_vector_count=0, index_size=2978163, dimension=1536, similarity_function='COSINE', namespaces={'': NamespaceInfo(vector_count=42, pending_vector_count=0), 'books': NamespaceInfo(vector_count=7, pending_vector_count=0)})" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "result = store.similarity_search_with_score(\"The United States of America\", k=5)\n", - "\n", - "for doc, score in result:\n", - " print(f\"{doc.metadata} - {score}\")" + "store.info()" ] }, { @@ -308,7 +382,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -326,42 +400,12 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ - "store.delete(delete_all=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Getting info about vector database\n", - "\n", - "You can get information about your database like the distance metric dimension using the info function.\n", - "\n", - "> When an insert happens, the database an indexing takes place. While this is happening new vectors can not be queried. `pendingVectorCount` represents the number of vector that are currently being indexed. " - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "InfoResult(vector_count=42, pending_vector_count=0, index_size=6470, dimension=384, similarity_function='COSINE')" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "store.info()" + "store.delete(delete_all=True)\n", + "store_books.delete(delete_all=True)" ] } ], @@ -381,7 +425,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.6" + "version": "3.12.4" } }, "nbformat": 4, diff --git a/docs/docs/tutorials/agents.ipynb b/docs/docs/tutorials/agents.ipynb index d9382dd7bd241..1486b2fb13862 100644 --- a/docs/docs/tutorials/agents.ipynb +++ b/docs/docs/tutorials/agents.ipynb @@ -71,11 +71,11 @@ "from langchain_anthropic import ChatAnthropic\n", "from langchain_community.tools.tavily_search import TavilySearchResults\n", "from langchain_core.messages import HumanMessage\n", - "from langgraph.checkpoint.sqlite import SqliteSaver\n", + "from langgraph.checkpoint.memory import MemorySaver\n", "from langgraph.prebuilt import create_react_agent\n", "\n", "# Create the agent\n", - "memory = SqliteSaver.from_conn_string(\":memory:\")\n", + "memory = MemorySaver()\n", "model = ChatAnthropic(model_name=\"claude-3-sonnet-20240229\")\n", "search = TavilySearchResults(max_results=2)\n", "tools = [search]\n", @@ -121,7 +121,7 @@ "metadata": {}, "outputs": [], "source": [ - "%pip install -U langchain-community langgraph langchain-anthropic tavily-python" + "%pip install -U langchain-community langgraph langchain-anthropic tavily-python langgraph-checkpoint-sqlite" ] }, { @@ -606,9 +606,9 @@ "metadata": {}, "outputs": [], "source": [ - "from langgraph.checkpoint.sqlite import SqliteSaver\n", + "from langgraph.checkpoint.memory import MemorySaver\n", "\n", - "memory = SqliteSaver.from_conn_string(\":memory:\")" + "memory = MemorySaver()" ] }, { diff --git a/docs/docs/tutorials/qa_chat_history.ipynb b/docs/docs/tutorials/qa_chat_history.ipynb index aa1cae52651c2..0497f8e943d3b 100644 --- a/docs/docs/tutorials/qa_chat_history.ipynb +++ b/docs/docs/tutorials/qa_chat_history.ipynb @@ -857,9 +857,9 @@ "metadata": {}, "outputs": [], "source": [ - "from langgraph.checkpoint.sqlite import SqliteSaver\n", + "from langgraph.checkpoint.memory import MemorySaver\n", "\n", - "memory = SqliteSaver.from_conn_string(\":memory:\")\n", + "memory = MemorySaver()\n", "\n", "agent_executor = create_react_agent(llm, tools, checkpointer=memory)" ] @@ -1012,20 +1012,15 @@ "outputs": [], "source": [ "import bs4\n", - "from langchain.agents import AgentExecutor, create_tool_calling_agent\n", "from langchain.tools.retriever import create_retriever_tool\n", "from langchain_chroma import Chroma\n", - "from langchain_community.chat_message_histories import ChatMessageHistory\n", "from langchain_community.document_loaders import WebBaseLoader\n", - "from langchain_core.chat_history import BaseChatMessageHistory\n", - "from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder\n", - "from langchain_core.runnables.history import RunnableWithMessageHistory\n", "from langchain_openai import ChatOpenAI, OpenAIEmbeddings\n", "from langchain_text_splitters import RecursiveCharacterTextSplitter\n", - "from langgraph.checkpoint.sqlite import SqliteSaver\n", + "from langgraph.checkpoint.memory import MemorySaver\n", "from langgraph.prebuilt import create_react_agent\n", "\n", - "memory = SqliteSaver.from_conn_string(\":memory:\")\n", + "memory = MemorySaver()\n", "llm = ChatOpenAI(model=\"gpt-3.5-turbo\", temperature=0)\n", "\n", "\n", diff --git a/docs/scripts/model_feat_table.py b/docs/scripts/model_feat_table.py deleted file mode 100644 index b57f5068f732b..0000000000000 --- a/docs/scripts/model_feat_table.py +++ /dev/null @@ -1,312 +0,0 @@ -import sys -from pathlib import Path - -from langchain_community import llms -from langchain_core.language_models.llms import LLM, BaseLLM - -LLM_IGNORE = ("FakeListLLM", "OpenAIChat", "PromptLayerOpenAIChat") -LLM_FEAT_TABLE_CORRECTION = { - "TextGen": {"_astream": False, "_agenerate": False}, - "Ollama": { - "_stream": False, - }, - "PromptLayerOpenAI": {"batch_generate": False, "batch_agenerate": False}, -} -CHAT_MODEL_IGNORE = ("FakeListChatModel", "HumanInputChatModel") - -CHAT_MODEL_FEAT_TABLE = { - "ChatAnthropic": { - "tool_calling": True, - "multimodal": True, - "package": "langchain-anthropic", - "link": "/docs/integrations/chat/anthropic/", - }, - "ChatMistralAI": { - "tool_calling": True, - "json_model": True, - "package": "langchain-mistralai", - "link": "/docs/integrations/chat/mistralai/", - }, - "ChatFireworks": { - "tool_calling": True, - "json_mode": True, - "package": "langchain-fireworks", - "link": "/docs/integrations/chat/fireworks/", - }, - "AzureChatOpenAI": { - "tool_calling": True, - "json_mode": True, - "multimodal": True, - "package": "langchain-openai", - "link": "/docs/integrations/chat/azure_chat_openai/", - }, - "ChatOpenAI": { - "tool_calling": True, - "json_mode": True, - "multimodal": True, - "package": "langchain-openai", - "link": "/docs/integrations/chat/openai/", - }, - "ChatTogether": { - "tool_calling": True, - "json_mode": True, - "package": "langchain-together", - "link": "/docs/integrations/chat/together/", - }, - "ChatVertexAI": { - "tool_calling": True, - "multimodal": True, - "package": "langchain-google-vertexai", - "link": "/docs/integrations/chat/google_vertex_ai_palm/", - }, - "ChatGoogleGenerativeAI": { - "tool_calling": True, - "multimodal": True, - "package": "langchain-google-genai", - "link": "/docs/integrations/chat/google_generative_ai/", - }, - "ChatGroq": { - "tool_calling": True, - "json_mode": True, - "package": "langchain-groq", - "link": "/docs/integrations/chat/groq/", - }, - "ChatCohere": { - "tool_calling": True, - "package": "langchain-cohere", - "link": "/docs/integrations/chat/cohere/", - }, - "ChatBedrock": { - "tool_calling": True, - "package": "langchain-aws", - "link": "/docs/integrations/chat/bedrock/", - }, - "ChatHuggingFace": { - "tool_calling": True, - "local": True, - "package": "langchain-huggingface", - "link": "/docs/integrations/chat/huggingface/", - }, - "ChatNVIDIA": { - "tool_calling": True, - "json_mode": False, - "local": True, - "multimodal": False, - "package": "langchain-nvidia-ai-endpoints", - "link": "/docs/integrations/chat/nvidia_ai_endpoints/", - }, - "ChatOllama": { - "tool_calling": True, - "local": True, - "json_mode": True, - "package": "langchain-ollama", - "link": "/docs/integrations/chat/ollama/", - }, - "vLLM Chat (via ChatOpenAI)": { - "local": True, - "package": "langchain-openai", - "link": "/docs/integrations/chat/vllm/", - }, - "ChatLlamaCpp": { - "tool_calling": True, - "local": True, - "package": "langchain-community", - "link": "/docs/integrations/chat/llamacpp", - }, - "ChatAI21": { - "tool_calling": True, - "package": "langchain-ai21", - "link": "/docs/integrations/chat/ai21", - }, - "ChatWatsonx": { - "tool_calling": True, - "package": "langchain-ibm", - "link": "/docs/integrations/chat/ibm_watsonx", - }, - "ChatUpstage": { - "tool_calling": True, - "package": "langchain-upstage", - "link": "/docs/integrations/chat/upstage", - }, -} - -for feats in CHAT_MODEL_FEAT_TABLE.values(): - feats["structured_output"] = feats.get("tool_calling", False) - - -LLM_TEMPLATE = """\ ---- -sidebar_position: 1 -sidebar_class_name: hidden -keywords: [compatibility] -custom_edit_url: ---- - -# LLMs - -:::info - -If you'd like to write your own LLM, see [this how-to](/docs/how_to/custom_llm/). -If you'd like to contribute an integration, see [Contributing integrations](/docs/contributing/integrations/). - -::: - -## Features (natively supported) -All LLMs implement the Runnable interface, which comes with default implementations of all methods, ie. `ainvoke`, `batch`, `abatch`, `stream`, `astream`. This gives all LLMs basic support for async, streaming and batch, which by default is implemented as below: -- *Async* support defaults to calling the respective sync method in asyncio's default thread pool executor. This lets other async functions in your application make progress while the LLM is being executed, by moving this call to a background thread. -- *Streaming* support defaults to returning an `Iterator` (or `AsyncIterator` in the case of async streaming) of a single value, the final result returned by the underlying LLM provider. This obviously doesn't give you token-by-token streaming, which requires native support from the LLM provider, but ensures your code that expects an iterator of tokens can work for any of our LLM integrations. -- *Batch* support defaults to calling the underlying LLM in parallel for each input by making use of a thread pool executor (in the sync batch case) or `asyncio.gather` (in the async batch case). The concurrency can be controlled with the `max_concurrency` key in `RunnableConfig`. - -Each LLM integration can optionally provide native implementations for async, streaming or batch, which, for providers that support it, can be more efficient. The table shows, for each integration, which features have been implemented with native support. - -{table} - -""" - -CHAT_MODEL_TEMPLATE = """\ ---- -sidebar_position: 0 -sidebar_class_name: hidden -keywords: [compatibility] -custom_edit_url: -hide_table_of_contents: true ---- - -# Chat models - -:::info - -If you'd like to write your own chat model, see [this how-to](/docs/how_to/custom_chat_model/). -If you'd like to contribute an integration, see [Contributing integrations](/docs/contributing/integrations/). - -::: - -## Advanced features - -The following table shows all the chat model classes that support one or more advanced features. - -:::info -While all these LangChain classes support the indicated advanced feature, you may have -to open the provider-specific documentation to learn which hosted models or backends support -the feature. -::: - -{table} - -""" - - -def get_llm_table(): - llm_feat_table = {} - for cm in llms.__all__: - llm_feat_table[cm] = {} - cls = getattr(llms, cm) - if issubclass(cls, LLM): - for feat in ("_stream", "_astream", ("_acall", "_agenerate")): - if isinstance(feat, tuple): - feat, name = feat - else: - feat, name = feat, feat - llm_feat_table[cm][name] = getattr(cls, feat) != getattr(LLM, feat) - else: - for feat in [ - "_stream", - "_astream", - ("_generate", "batch_generate"), - "_agenerate", - ("_agenerate", "batch_agenerate"), - ]: - if isinstance(feat, tuple): - feat, name = feat - else: - feat, name = feat, feat - llm_feat_table[cm][name] = getattr(cls, feat) != getattr(BaseLLM, feat) - final_feats = { - k: v - for k, v in {**llm_feat_table, **LLM_FEAT_TABLE_CORRECTION}.items() - if k not in LLM_IGNORE - } - - header = [ - "model", - "_agenerate", - "_stream", - "_astream", - "batch_generate", - "batch_agenerate", - ] - title = [ - "Model", - "Invoke", - "Async invoke", - "Stream", - "Async stream", - "Batch", - "Async batch", - ] - rows = [title, [":-"] + [":-:"] * (len(title) - 1)] - for llm, feats in sorted(final_feats.items()): - rows += [[llm, "✅"] + ["✅" if feats.get(h) else "❌" for h in header[1:]]] - return "\n".join(["|".join(row) for row in rows]) - - -def get_chat_model_table() -> str: - """Get the table of chat models.""" - header = [ - "model", - "tool_calling", - "structured_output", - "json_mode", - "local", - "multimodal", - "package", - ] - title = [ - "Model", - "[Tool calling](/docs/how_to/tool_calling)", - "[Structured output](/docs/how_to/structured_output/)", - "JSON mode", - "Local", - "[Multimodal](/docs/how_to/multimodal_inputs/)", - "Package", - ] - rows = [title, [":-"] + [":-:"] * (len(title) - 1)] - for llm, feats in sorted(CHAT_MODEL_FEAT_TABLE.items()): - # Fields are in the order of the header - row = [ - f"[{llm}]({feats['link']})", - ] - for h in header[1:]: - value = feats.get(h) - if h == "package": - value = value or "langchain-community" - name = value[len("langchain-") :] - link = f"https://api.python.langchain.com/en/latest/{name}_api_reference.html" - value = f"[{value}]({link})" - row.append(value) - else: - if value == "partial": - row.append("🟡") - elif value is True: - row.append("✅") - else: - row.append("❌") - rows.append(row) - return "\n".join(["|".join(row) for row in rows]) - - -if __name__ == "__main__": - output_dir = Path(sys.argv[1]) - output_integrations_dir = output_dir / "integrations" - output_integrations_dir_llms = output_integrations_dir / "llms" - output_integrations_dir_chat = output_integrations_dir / "chat" - output_integrations_dir_llms.mkdir(parents=True, exist_ok=True) - output_integrations_dir_chat.mkdir(parents=True, exist_ok=True) - - llm_page = LLM_TEMPLATE.format(table=get_llm_table()) - - with open(output_integrations_dir / "llms" / "index.mdx", "w") as f: - f.write(llm_page) - chat_model_page = CHAT_MODEL_TEMPLATE.format(table=get_chat_model_table()) - with open(output_integrations_dir / "chat" / "index.mdx", "w") as f: - f.write(chat_model_page) diff --git a/docs/sidebars.js b/docs/sidebars.js index 670768d07cdad..71a085c4a8a3b 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -146,11 +146,12 @@ module.exports = { { type: "category", label: "Chat models", - collapsed: true, + collapsible: false, items: [ { type: "autogenerated", dirName: "integrations/chat", + className: "hidden", }, ], link: { @@ -161,11 +162,12 @@ module.exports = { { type: "category", label: "LLMs", - collapsed: true, + collapsible: false, items: [ { type: "autogenerated", dirName: "integrations/llms", + className: "hidden", }, ], link: { @@ -176,11 +178,12 @@ module.exports = { { type: "category", label: "Embedding models", - collapsed: true, + collapsible: false, items: [ { type: "autogenerated", dirName: "integrations/text_embedding", + className: "hidden", }, ], link: { @@ -191,11 +194,12 @@ module.exports = { { type: "category", label: "Document loaders", - collapsed: true, + collapsible: false, items: [ { type: "autogenerated", dirName: "integrations/document_loaders", + className: "hidden", }, ], link: { @@ -203,44 +207,31 @@ module.exports = { id: "integrations/document_loaders/index", }, }, - { - type: "category", - label: "Document transformers", - collapsed: true, - items: [ - { - type: "autogenerated", - dirName: "integrations/document_transformers", - }, - ], - link: { - type: "generated-index", - slug: "integrations/document_transformers", - }, - }, { type: "category", label: "Vector stores", - collapsed: true, + collapsible: false, items: [ { type: "autogenerated", dirName: "integrations/vectorstores", + className: "hidden", }, ], link: { - type: "generated-index", - slug: "integrations/vectorstores", + type: "doc", + id: "integrations/vectorstores/index", }, }, { type: "category", label: "Retrievers", - collapsed: true, + collapsible: false, items: [ { type: "autogenerated", dirName: "integrations/retrievers", + className: "hidden", }, ], link: { @@ -251,11 +242,12 @@ module.exports = { { type: "category", label: "Tools/Toolkits", - collapsed: true, + collapsible: false, items: [ { type: "autogenerated", dirName: "integrations/tools", + className: "hidden", }, ], link: { @@ -266,11 +258,12 @@ module.exports = { { type: "category", label: "Key-value stores", - collapsed: true, + collapsible: false, items: [ { type: "autogenerated", dirName: "integrations/stores", + className: "hidden", }, ], link: { @@ -278,82 +271,115 @@ module.exports = { id: "integrations/stores/index", }, }, - "integrations/llm_caching", { type: "category", - label: "Graphs", + label: "Other", collapsed: true, items: [ { - type: "autogenerated", - dirName: "integrations/graphs", + type: "category", + label: "Document transformers", + collapsible: false, + items: [ + { + type: "autogenerated", + dirName: "integrations/document_transformers", + className: "hidden", + }, + ], + link: { + type: "generated-index", + slug: "integrations/document_transformers", + }, }, - ], - link: { - type: "generated-index", - slug: "integrations/graphs", - }, - }, - { - type: "category", - label: "Memory", - collapsed: true, - items: [ + "integrations/llm_caching", { - type: "autogenerated", - dirName: "integrations/memory", + type: "category", + label: "Graphs", + collapsible: false, + items: [ + { + type: "autogenerated", + dirName: "integrations/graphs", + className: "hidden", + }, + ], + link: { + type: "generated-index", + slug: "integrations/graphs", + }, }, - ], - link: { - type: "generated-index", - slug: "integrations/memory", - }, - }, - { - type: "category", - label: "Callbacks", - collapsed: true, - items: [ { - type: "autogenerated", - dirName: "integrations/callbacks", + type: "category", + label: "Memory", + collapsible: false, + items: [ + { + type: "autogenerated", + dirName: "integrations/memory", + className: "hidden", + }, + ], + link: { + type: "generated-index", + slug: "integrations/memory", + }, }, - ], - link: { - type: "generated-index", - slug: "integrations/callbacks", - }, - }, - { - type: "category", - label: "Chat loaders", - collapsed: true, - items: [ { - type: "autogenerated", - dirName: "integrations/chat_loaders", + type: "category", + label: "Callbacks", + collapsible: false, + items: [ + { + type: "autogenerated", + dirName: "integrations/callbacks", + className: "hidden", + }, + ], + link: { + type: "generated-index", + slug: "integrations/callbacks", + }, }, - ], - link: { - type: "generated-index", - slug: "integrations/chat_loaders", - }, - }, - { - type: "category", - label: "Adapters", - collapsed: true, - items: [ { - type: "autogenerated", - dirName: "integrations/adapters", + type: "category", + label: "Chat loaders", + collapsible: false, + items: [ + { + type: "autogenerated", + dirName: "integrations/chat_loaders", + className: "hidden", + }, + ], + link: { + type: "generated-index", + slug: "integrations/chat_loaders", + }, + }, + { + type: "category", + label: "Adapters", + collapsible: false, + items: [ + { + type: "autogenerated", + dirName: "integrations/adapters", + className: "hidden", + }, + ], + link: { + type: "generated-index", + slug: "integrations/adapters", + }, }, ], - link: { - type: "generated-index", - slug: "integrations/adapters", - }, + // link: { + // type: "generated-index", + // slug: "integrations/providers", + // }, }, + ], link: { type: "generated-index", diff --git a/docs/src/theme/FeatureTables.js b/docs/src/theme/FeatureTables.js new file mode 100644 index 0000000000000..bfd6428138ecb --- /dev/null +++ b/docs/src/theme/FeatureTables.js @@ -0,0 +1,682 @@ +import React from "react"; +import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; +import { + useDocById, +} from '@docusaurus/theme-common/internal'; + +const FEATURE_TABLES = { + chat: { + link: "/docs/integrations/chat", + columns: [ + {title: "Provider", formatter: (item) => {item.name}}, + {title: Tool calling, formatter: (item) => item.tool_calling ? "✅" : "❌"}, + {title: Structured output, formatter: (item) => item.structured_output ? "✅" : "❌"}, + {title: "JSON mode", formatter: (item) => item.json_mode ? "✅" : "❌"}, + {title: "Local", formatter: (item) => item.local ? "✅" : "❌"}, + {title: Multimodal, formatter: (item) => item.multimodal ? "✅" : "❌"}, + {title: "Package", formatter: (item) => {item.package}}, + ], + items: [ + { + "name": "ChatAnthropic", + "package": "langchain-anthropic", + "link": "anthropic/", + "structured_output": true, + "tool_calling": true, + "json_mode": false, + "multimodal": true, + "local": false, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_anthropic.chat_models.ChatAnthropic.html#langchain_anthropic.chat_models.ChatAnthropic" + }, + { + "name": "ChatMistralAI", + "package": "langchain-mistralai", + "link": "mistralai/", + "structured_output": true, + "tool_calling": true, + "json_mode": false, + "multimodal": false, + "local": false, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_mistralai.chat_models.ChatMistralAI.html#langchain_mistralai.chat_models.ChatMistralAI" + }, + { + "name": "ChatFireworks", + "package": "langchain-fireworks", + "link": "fireworks/", + "structured_output": true, + "tool_calling": true, + "json_mode": true, + "multimodal": false, + "local": false, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_fireworks.chat_models.ChatFireworks.html#langchain_fireworks.chat_models.ChatFireworks" + }, + { + "name": "AzureChatOpenAI", + "package": "langchain-openai", + "link": "azure_chat_openai/", + "structured_output": true, + "tool_calling": true, + "json_mode": true, + "multimodal": true, + "local": false, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_openai.chat_models.azure.AzureChatOpenAI.html#langchain_openai.chat_models.azure.AzureChatOpenAI" + }, + { + "name": "ChatOpenAI", + "package": "langchain-openai", + "link": "openai/", + "structured_output": true, + "tool_calling": true, + "json_mode": true, + "multimodal": true, + "local": false, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_openai.chat_models.base.ChatOpenAI.html#langchain_openai.chat_models.base.ChatOpenAI" + }, + { + "name": "ChatTogether", + "package": "langchain-together", + "link": "together/", + "structured_output": true, + "tool_calling": true, + "json_mode": true, + "multimodal": false, + "local": false, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_together.chat_models.ChatTogether.html#langchain_together.chat_models.ChatTogether" + }, + { + "name": "ChatVertexAI", + "package": "langchain-google-vertexai", + "link": "google_vertex_ai_palm/", + "structured_output": true, + "tool_calling": true, + "json_mode": false, + "multimodal": true, + "local": false, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_google_vertexai.chat_models.ChatVertexAI.html#langchain_google_vertexai.chat_models.ChatVertexAI" + }, + { + "name": "ChatGoogleGenerativeAI", + "package": "langchain-google-genai", + "link": "google_generative_ai/", + "structured_output": true, + "tool_calling": true, + "json_mode": false, + "multimodal": true, + "local": false, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_google_genai.chat_models.ChatGoogleGenerativeAI.html#langchain_google_genai.chat_models.ChatGoogleGenerativeAI" + }, + { + "name": "ChatGroq", + "package": "langchain-groq", + "link": "groq/", + "structured_output": true, + "tool_calling": true, + "json_mode": true, + "multimodal": false, + "local": false, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_groq.chat_models.ChatGroq.html#langchain_groq.chat_models.ChatGroq" + }, + { + "name": "ChatCohere", + "package": "langchain-cohere", + "link": "cohere/", + "structured_output": true, + "tool_calling": true, + "json_mode": false, + "multimodal": false, + "local": false, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_cohere.chat_models.ChatCohere.html#langchain_cohere.chat_models.ChatCohere" + }, + { + "name": "ChatBedrock", + "package": "langchain-aws", + "link": "bedrock/", + "structured_output": true, + "tool_calling": true, + "json_mode": false, + "multimodal": false, + "local": false, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_aws.chat_models.bedrock.ChatBedrock.html#langchain_aws.chat_models.bedrock.ChatBedrock" + }, + { + "name": "ChatHuggingFace", + "package": "langchain-huggingface", + "link": "huggingface/", + "structured_output": true, + "tool_calling": true, + "json_mode": false, + "multimodal": false, + "local": true, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_huggingface.chat_models.huggingface.ChatHuggingFace.html#langchain_huggingface.chat_models.huggingface.ChatHuggingFace", + }, + { + "name": "ChatNVIDIA", + "package": "langchain-nvidia-ai-endpoints", + "link": "nvidia_ai_endpoints/", + "structured_output": true, + "tool_calling": true, + "json_mode": false, + "multimodal": false, + "local": true, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_nvidia_ai_endpoints.chat_models.ChatNVIDIA.html#langchain_nvidia_ai_endpoints.chat_models.ChatNVIDIA" + }, + { + "name": "ChatOllama", + "package": "langchain-ollama", + "link": "ollama/", + "structured_output": true, + "tool_calling": true, + "json_mode": true, + "multimodal": false, + "local": true, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_ollama.chat_models.ChatOllama.html#langchain_ollama.chat_models.ChatOllama" + }, + { + "name": "ChatLlamaCpp", + "package": "langchain-community", + "link": "llamacpp", + "structured_output": true, + "tool_calling": true, + "json_mode": false, + "multimodal": false, + "local": true, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_community.chat_models.llamacpp.ChatLlamaCpp.html#langchain_community.chat_models.llamacpp.ChatLlamaCpp" + }, + { + "name": "ChatAI21", + "package": "langchain-ai21", + "link": "ai21", + "structured_output": true, + "tool_calling": true, + "json_mode": false, + "multimodal": false, + "local": false, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_ai21.chat_models.ChatAI21.html#langchain_ai21.chat_models.ChatAI21" + }, + { + "name": "ChatUpstage", + "package": "langchain-upstage", + "link": "upstage", + "structured_output": true, + "tool_calling": true, + "json_mode": false, + "multimodal": false, + "local": false, + "apiLink": "https://api.python.langchain.com/en/latest/chat_models/langchain_upstage.chat_models.ChatUpstage.html#langchain_upstage.chat_models.ChatUpstage" + } + ], + }, + llms: { + link: "/docs/integrations/llms", + columns: [ + {title: "Provider", formatter: (item) => {item.name}}, + {title: "Package", formatter: (item) => {item.package}}, + ], + items: [ + { + name: "AI21LLM", + link: "ai21", + package: "langchain-ai21", + apiLink: "https://api.python.langchain.com/en/latest/llms/langchain_ai21.llms.AI21LLM.html#langchain_ai21.llms.AI21LLM" + }, + { + name: "AnthropicLLM", + link: "anthropic", + package: "langchain-anthropic", + apiLink: "https://api.python.langchain.com/en/latest/llms/langchain_anthropic.llms.AnthropicLLM.html#langchain_anthropic.llms.AnthropicLLM" + }, + { + name: "AzureOpenAI", + link: "azure_openai", + package: "langchain-openai", + apiLink: "https://api.python.langchain.com/en/latest/llms/langchain_openai.llms.azure.AzureOpenAI.html#langchain_openai.llms.azure.AzureOpenAI" + }, + { + name: "BedrockLLM", + link: "bedrock", + package: "langchain-aws", + apiLink: "https://api.python.langchain.com/en/latest/llms/langchain_aws.llms.bedrock.BedrockLLM.html#langchain_aws.llms.bedrock.BedrockLLM" + }, + { + name: "CohereLLM", + link: "cohere", + package: "langchain-cohere", + apiLink: "https://api.python.langchain.com/en/latest/llms/langchain_cohere.llms.Cohere.html#langchain_cohere.llms.Cohere" + }, + { + name: "FireworksLLM", + link: "fireworks", + package: "langchain-fireworks", + apiLink: "https://api.python.langchain.com/en/latest/llms/langchain_fireworks.llms.Fireworks.html#langchain_fireworks.llms.Fireworks" + }, + { + name: "OllamaLLM", + link: "ollama", + package: "langchain-ollama", + apiLink: "https://api.python.langchain.com/en/latest/llms/langchain_ollama.llms.OllamaLLM.html#langchain_ollama.llms.OllamaLLM" + }, + { + name: "OpenAILLM", + link: "openai", + package: "langchain-openai", + apiLink: "https://api.python.langchain.com/en/latest/llms/langchain_openai.llms.base.OpenAI.html#langchain_openai.llms.base.OpenAI" + }, + { + name: "TogetherLLM", + link: "together", + package: "langchain-together", + apiLink: "https://api.python.langchain.com/en/latest/llms/langchain_together.llms.Together.html#langchain_together.llms.Together" + }, + { + name: "VertexAILLM", + link: "google_vertexai", + package: "langchain-google_vertexai", + apiLink: "https://api.python.langchain.com/en/latest/llms/langchain_google_vertexai.llms.VertexAI.html#langchain_google_vertexai.llms.VertexAI" + }, + ], + }, + text_embedding: { + link: "/docs/integrations/text_embedding", + columns: [ + {title: "Provider", formatter: (item) => {item.name}}, + {title: "Package", formatter: (item) => {item.package}}, + ], + items:[ + { + name: "AzureOpenAI", + link: "azureopenai", + package: "langchain-openai", + apiLink: "https://api.python.langchain.com/en/latest/embeddings/langchain_openai.embeddings.azure.AzureOpenAIEmbeddings.html#langchain_openai.embeddings.azure.AzureOpenAIEmbeddings" + }, + { + name: "Ollama", + link: "ollama", + package: "langchain-ollama", + apiLink: "https://api.python.langchain.com/en/latest/embeddings/langchain_ollama.embeddings.OllamaEmbeddings.html#langchain_ollama.embeddings.OllamaEmbeddings" + }, + { + name: "AI21", + link: "ai21", + package: "langchain-ai21", + apiLink: "https://api.python.langchain.com/en/latest/embeddings/langchain_ai21.embeddings.AI21Embeddings.html#langchain_ai21.embeddings.AI21Embeddings" + }, + { + name: "Fake", + link: "fake", + package: "langchain-core", + apiLink: "https://api.python.langchain.com/en/latest/embeddings/langchain_core.embeddings.fake.FakeEmbeddings.html#langchain_core.embeddings.fake.FakeEmbeddings" + }, + { + name: "OpenAI", + link: "openai", + package: "langchain-openai", + apiLink: "https://api.python.langchain.com/en/latest/chat_models/langchain_openai.chat_models.base.ChatOpenAI.html#langchain_openai.chat_models.base.ChatOpenAI" + }, + { + name: "Together", + link: "together", + package: "langchain-together", + apiLink: "https://api.python.langchain.com/en/latest/embeddings/langchain_together.embeddings.TogetherEmbeddings.html#langchain_together.embeddings.TogetherEmbeddings" + }, + { + name: "Fireworks", + link: "fireworks", + package: "langchain-fireworks", + apiLink: "https://api.python.langchain.com/en/latest/embeddings/langchain_fireworks.embeddings.FireworksEmbeddings.html#langchain_fireworks.embeddings.FireworksEmbeddings" + }, + { + name: "MistralAI", + link: "mistralai", + package: "langchain-mistralai", + apiLink: "https://api.python.langchain.com/en/latest/embeddings/langchain_mistralai.embeddings.MistralAIEmbeddings.html#langchain_mistralai.embeddings.MistralAIEmbeddings" + }, + { + name: "Cohere", + link: "cohere", + package: "langchain-cohere", + apiLink: "https://api.python.langchain.com/en/latest/embeddings/langchain_cohere.embeddings.CohereEmbeddings.html#langchain_cohere.embeddings.CohereEmbeddings" + }, + ] + }, + document_retrievers: { + link: 'docs/integrations/retrievers', + columns: [ + {title: "Retriever", formatter: (item) => {item.name}}, + {title: "Self-host", formatter: (item) => item.selfHost ? "✅" : "❌"}, + {title: "Cloud offering", formatter: (item) => item.cloudOffering ? "✅" : "❌"}, + {title: "Package", formatter: (item) => {item.package}}, + ], + items: [ + { + name: "AmazonKnowledgeBasesRetriever", + link: "bedrock", + selfHost: false, + cloudOffering: true, + apiLink: "https://api.python.langchain.com/en/latest/retrievers/langchain_aws.retrievers.bedrock.AmazonKnowledgeBasesRetriever.html", + package: "langchain_aws" + }, + { + name: "AzureAISearchRetriever", + link: "azure_ai_search", + selfHost: false, + cloudOffering: true, + apiLink: "https://api.python.langchain.com/en/latest/retrievers/langchain_community.retrievers.azure_ai_search.AzureAISearchRetriever.html", + package: "langchain_community" + }, + { + name: "ElasticsearchRetriever", + link: "elasticsearch_retriever", + selfHost: true, + cloudOffering: true, + apiLink: "https://api.python.langchain.com/en/latest/retrievers/langchain_elasticsearch.retrievers.ElasticsearchRetriever.html", + package: "langchain_elasticsearch" + }, + { + name: "MilvusCollectionHybridSearchRetriever", + link: "milvus_hybrid_search", + selfHost: true, + cloudOffering: false, + apiLink: "https://api.python.langchain.com/en/latest/retrievers/langchain_milvus.retrievers.milvus_hybrid_search.MilvusCollectionHybridSearchRetriever.html", + package: "langchain_milvus" + }, + { + name: "VertexAISearchRetriever", + link: "google_vertex_ai_search", + selfHost: false, + cloudOffering: true, + apiLink: "https://api.python.langchain.com/en/latest/vertex_ai_search/langchain_google_community.vertex_ai_search.VertexAISearchRetriever.html", + package: "langchain_google_community" + } + ], + }, + external_retrievers: { + link: 'docs/integrations/retrievers', + columns: [ + {title: "Retriever", formatter: (item) => {item.name}}, + {title: "Source", formatter: (item) => item.source}, + {title: "Package", formatter: (item) => {item.package}}, + ], + items: [ + { + name: "ArxivRetriever", + link: "arxiv", + source: (<>Scholarly articles on arxiv.org), + apiLink: "https://api.python.langchain.com/en/latest/retrievers/langchain_community.retrievers.arxiv.ArxivRetriever.html", + package: "langchain_community" + }, + { + name: "TavilySearchAPIRetriever", + link: "tavily", + source: "Internet search", + apiLink: "https://api.python.langchain.com/en/latest/retrievers/langchain_community.retrievers.tavily_search_api.TavilySearchAPIRetriever.html", + package: "langchain_community" + }, + { + name: "WikipediaRetriever", + link: "wikipedia", + source: (<>Wikipedia articles), + apiLink: "https://api.python.langchain.com/en/latest/retrievers/langchain_community.retrievers.wikipedia.WikipediaRetriever.html", + package: "langchain_community" + } + ] + + }, + document_loaders: { + link: 'docs/integrations/loaders', + columns: [], + items: [], + }, + vectorstores: { + link: 'docs/integrations/vectorstores', + columns: [ + {title: "Vectorstore", formatter: (item) => {item.name}}, + {title: "Delete by ID", formatter: (item) => item.deleteById ? "✅" : "❌"}, + {title: "Filtering", formatter: (item) => item.filtering ? "✅" : "❌"}, + {title: "Search by Vector", formatter: (item) => item.searchByVector ? "✅" : "❌"}, + {title: "Search with score", formatter: (item) => item.searchWithScore ? "✅" : "❌"}, + {title: "Async", formatter: (item) => item.async ? "✅" : "❌"}, + {title: "Passes Standard Tests", formatter: (item) => item.passesStandardTests ? "✅" : "❌"}, + {title: "Multi Tenancy", formatter: (item) => item.multiTenancy ? "✅" : "❌"}, + {title: "IDs in add Documents", formatter: (item) => item.idsInAddDocuments ? "✅" : "❌"}, + {title: "Local/Cloud", formatter: (item) => item.local ? "Local" : "Cloud"}, + ], + items: [ + { + name: "AstraDBVectorStore", + link: "astradb", + deleteById: true, + filtering: true, + searchByVector: true, + searchWithScore: true, + async: true, + passesStandardTests: false, + multiTenancy: false, + local: true, + idsInAddDocuments: false, + }, + { + name: "Chroma", + link: "chroma", + deleteById: true, + filtering: true, + searchByVector: true, + searchWithScore: true, + async: true, + passesStandardTests: false, + multiTenancy: false, + local: true, + idsInAddDocuments: false, + }, + { + name: "Clickhouse", + link: "clickhouse", + deleteById: true, + filtering: true, + searchByVector: false, + searchWithScore: true, + async: false, + passesStandardTests: false, + multiTenancy: false, + local: true, + idsInAddDocuments: false, + }, + { + name: "CouchbaseVectorStore", + link: "couchbase", + deleteById: true, + filtering: true, + searchByVector: false, + searchWithScore: true, + async: true, + passesStandardTests: false, + multiTenancy: false, + local: true, + idsInAddDocuments: false, + }, + { + name: "ElasticsearchStore", + link: "elasticsearch", + deleteById: true, + filtering: true, + searchByVector: true, + searchWithScore: false, + async: true, + passesStandardTests: false, + multiTenancy: false, + local: true, + idsInAddDocuments: false, + }, + { + name: "FAISS", + link: "faiss", + deleteById: true, + filtering: true, + searchByVector: true, + searchWithScore: true, + async: true, + passesStandardTests: false, + multiTenancy: false, + local: true, + idsInAddDocuments: false, + }, + { + name: "InMemoryVectorStore", + link: "in_memory", + deleteById: true, + filtering: true, + searchByVector: false, + searchWithScore: true, + async: true, + passesStandardTests: false, + multiTenancy: false, + local: true, + idsInAddDocuments: false, + }, + { + name: "Milvus", + link: "milvus", + deleteById: true, + filtering: true, + searchByVector: false, + searchWithScore: true, + async: true, + passesStandardTests: false, + multiTenancy: false, + local: true, + idsInAddDocuments: false, + }, + { + name: "MongoDBAtlasVectorSearch", + link: "mongodb_atlas", + deleteById: true, + filtering: true, + searchByVector: false, + searchWithScore: false, + async: true, + passesStandardTests: false, + multiTenancy: false, + local: true, + idsInAddDocuments: false, + }, + { + name: "PGVector", + link: "pg_vector", + deleteById: true, + filtering: true, + searchByVector: true, + searchWithScore: true, + async: true, + passesStandardTests: false, + multiTenancy: false, + local: true, + idsInAddDocuments: false, + }, + { + name: "PineconeVectorStore", + link: "pinecone", + deleteById: true, + filtering: true, + searchByVector: true, + searchWithScore: false, + async: true, + passesStandardTests: false, + multiTenancy: false, + local: true, + idsInAddDocuments: false, + }, + { + name: "QdrantVectorStore", + link: "qdrant", + deleteById: true, + filtering: true, + searchByVector: true, + searchWithScore: true, + async: true, + passesStandardTests: false, + multiTenancy: false, + local: true, + idsInAddDocuments: false, + }, + { + name: "Redis", + link: "redis", + deleteById: true, + filtering: true, + searchByVector: true, + searchWithScore: true, + async: true, + passesStandardTests: false, + multiTenancy: false, + local: true, + idsInAddDocuments: false, + } + ], + } +}; + +function toTable(columns, items) { + const headers = columns.map((col) => col.title); + return ( + + + + {headers.map((header, i) => )} + + + + {items.map((item, i) => ( + + {columns.map((col, j) => )} + + ))} + +
{header}
{col.formatter(item)}
+ ); +} + +export function CategoryTable({ category }) { + const cat = FEATURE_TABLES[category]; + const rtn = toTable(cat.columns, cat.items); + return rtn; +} + +export function ItemTable({ category, item }) { + const cat = FEATURE_TABLES[category]; + const row = cat.items.find((i) => i.name === item); + if (!row) { + throw new Error(`Item ${item} not found in category ${category}`); + } + const rtn = toTable(cat.columns, [row]); + return rtn; +} + +function truncate(str, n) { + return (str.length > n) ? str.substring(0, n-1) + '...' : str; +} + +export function IndexTable() { + const { items } = useCurrentSidebarCategory(); + + const rows = items.filter(item => !item.docId?.endsWith?.('/index')).map(item => ({ + ...item, + description: useDocById(item.docId ?? undefined)?.description, + })); + const rtn = toTable( + [ + { title: "Label", formatter: (item) => {item.label} }, + { title: "Description", formatter: (item) => truncate(item.description ?? "", 70) }, + ], + rows, + ); + return rtn; +} diff --git a/docs/src/theme/FeatureTables.tsx b/docs/src/theme/FeatureTables.tsx deleted file mode 100644 index 80d20ff558fe8..0000000000000 --- a/docs/src/theme/FeatureTables.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import React from "react"; - -interface Column { - title: string | React.ReactNode; - formatter: (item: any) => React.ReactNode; -} -interface Category { - link: string; - columns: Column[]; - items: any[]; -} - -const FeatureTables: Record = { - llms: { - link: "/docs/integrations/llms", - columns: [ - {title: "Provider", formatter: (item) => {item.name}}, - {title: "Package", formatter: (item) => {item.package}}, - ], - items:[ - { - name: "Anthropic", - link: "anthropic.ipynb", - package: "langchain-anthropic", - } - ] - }, - text_embedding: { - link: "/docs/integrations/text_embedding", - columns: [ - {title: "Provider", formatter: (item) => {item.name}}, - {title: "Package", formatter: (item) => {item.package}}, - ], - items:[ - { - name: "Cohere", - link: "cohere.ipynb", - package: "langchain-cohere", - } - ] - }, -}; - -function toTable(columns: Column[], items: any[]) { - const headers = columns.map((col) => col.title); - return ( - - - - {headers.map((header) => )} - - - - {items.map((item) => ( - - {columns.map((col) => )} - - ))} - -
{header}
{col.formatter(item)}
- ); -} - -export function CategoryTable({category}: {category: string}) { - const cat = FeatureTables[category]; - return toTable(cat.columns, cat.items); -} - -export function ItemTable({category, item}: {category: string, item: string}) { - const cat = FeatureTables[category]; - const row = cat.items.find((i) => i.name === item); - if (!row) { - throw new Error(`Item ${item} not found in category ${category}`); - } - return toTable(cat.columns, [row]); -} diff --git a/docs/vercel.json b/docs/vercel.json index dea9be45dfddb..0648210037e4d 100644 --- a/docs/vercel.json +++ b/docs/vercel.json @@ -78,6 +78,14 @@ "source": "/v0.2/docs/integrations/toolkits/airbyte_structured_qa/", "destination": "/v0.2/docs/integrations/document_loaders/airbyte/" }, + { + "source": "/v0.2/docs/integrations/tools/connery_toolkit/", + "destination": "/v0.2/docs/integrations/tools/connery/" + }, + { + "source": "/v0.2/docs/integrations/tools/polygon_toolkit/", + "destination": "/v0.2/docs/integrations/tools/polygon/" + }, { "source": "/v0.2/docs/integrations/toolkits/document_comparison_toolkit(/?)", "destination": "/v0.2/docs/tutorials/rag/" @@ -85,6 +93,14 @@ { "source": "/v0.2/docs/integrations/toolkits/:path(.*/?)*", "destination": "/v0.2/docs/integrations/tools/:path*" + }, + { + "source": "/v0.2/docs/integrations/toolkits/spark/", + "destination": "/v0.2/docs/integrations/tools/spark_sql/" + }, + { + "source": "/v0.2/docs/integrations/toolkits/xorbits/", + "destination": "/v0.2/docs/integrations/tools#search" } ] } diff --git a/libs/cli/langchain_cli/integration_template/docs/llms.ipynb b/libs/cli/langchain_cli/integration_template/docs/llms.ipynb index 6ccf227fb7cf7..98be1ccb7f865 100644 --- a/libs/cli/langchain_cli/integration_template/docs/llms.ipynb +++ b/libs/cli/langchain_cli/integration_template/docs/llms.ipynb @@ -34,7 +34,7 @@ "\n", "## Setup\n", "\n", - "- [ ] TODO: Update with relevant info.\n", + "- TODO: Update with relevant info.\n", "\n", "To access __ModuleName__ models you'll need to create a/an __ModuleName__ account, get an API key, and install the `__package_name__` integration package.\n", "\n", diff --git a/libs/cli/langchain_cli/integration_template/docs/retrievers.ipynb b/libs/cli/langchain_cli/integration_template/docs/retrievers.ipynb index d63bf60817b34..78f779301b11c 100644 --- a/libs/cli/langchain_cli/integration_template/docs/retrievers.ipynb +++ b/libs/cli/langchain_cli/integration_template/docs/retrievers.ipynb @@ -17,7 +17,6 @@ "source": [ "# __ModuleName__Retriever\n", "\n", - "## Overview\n", "- TODO: Make sure API reference link is correct.\n", "\n", "This will help you getting started with the __ModuleName__ [retriever](/docs/concepts/#retrievers). For detailed documentation of all __ModuleName__Retriever features and configurations head to the [API reference](https://api.python.langchain.com/en/latest/retrievers/__module_name__.retrievers.__ModuleName__.__ModuleName__Retriever.html).\n", diff --git a/libs/cli/langchain_cli/integration_template/docs/text_embedding.ipynb b/libs/cli/langchain_cli/integration_template/docs/text_embedding.ipynb index 893e2336dc08a..7e9cabaeef931 100644 --- a/libs/cli/langchain_cli/integration_template/docs/text_embedding.ipynb +++ b/libs/cli/langchain_cli/integration_template/docs/text_embedding.ipynb @@ -24,13 +24,9 @@ "## Overview\n", "### Integration details\n", "\n", - "- TODO: Fill in table features.\n", - "- TODO: Remove JS support link if not relevant, otherwise ensure link is correct.\n", - "- TODO: Make sure API reference links are correct.\n", + "import { ItemTable } from \"@theme/FeatureTables\";\n", "\n", - "| Class | Package | Local | Serializable | [JS support](https://js.langchain.com/v0.2/docs/integrations/text_embedding/__package_name_short_snake__) | Package downloads | Package latest |\n", - "| :--- | :--- | :---: | :---: | :---: | :---: | :---: |\n", - "| [__ModuleName__Embeddings](https://api.python.langchain.com/en/latest/embeddings/__module_name__.embeddings.__ModuleName__Embeddings.html) | [__package_name__](https://api.python.langchain.com/en/latest/__package_name_short_snake___api_reference.html) | ✅/❌ | beta/❌ | ✅/❌ | ![PyPI - Downloads](https://img.shields.io/pypi/dm/__package_name__?style=flat-square&label=%20) | ![PyPI - Version](https://img.shields.io/pypi/v/__package_name__?style=flat-square&label=%20) |\n", + "\n", "\n", "## Setup\n", "\n", @@ -157,10 +153,10 @@ "retriever = vectorstore.as_retriever()\n", "\n", "# Retrieve the most similar text\n", - "retrieved_document = retriever.invoke(\"What is LangChain?\")\n", + "retrieved_documents = retriever.invoke(\"What is LangChain?\")\n", "\n", "# show the retrieved document's content\n", - "retrieved_document.page_content" + "retrieved_documents[0].page_content" ] }, { @@ -210,7 +206,7 @@ "text2 = (\n", " \"LangGraph is a library for building stateful, multi-actor applications with LLMs\"\n", ")\n", - "two_vectors = embeddings.embed_queries([text, text2])\n", + "two_vectors = embeddings.embed_documents([text, text2])\n", "for vector in two_vectors:\n", " print(str(vector)[:100]) # Show the first 100 characters of the vector" ] @@ -220,34 +216,10 @@ "id": "98785c12", "metadata": {}, "source": [ - "### Async Usage\n", + "## API Reference\n", "\n", - "You can also use `aembed_query` and `aembed_documents` for producing embeddings asynchronously:\n" + "For detailed documentation on `__ModuleName__Embeddings` features and configuration options, please refer to the [API reference](https://api.python.langchain.com/en/latest/embeddings/__module_name__.embeddings.__ModuleName__Embeddings.html).\n" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4c3bef91", - "metadata": {}, - "outputs": [], - "source": [ - "import asyncio\n", - "\n", - "async def async_example():\n", - " single_vector = await embeddings.embed_query(text)\n", - " print(str(single_vector)[:100]) # Show the first 100 characters of the vector\n", - "\n", - "asyncio.run(async_example())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f1bd4396", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/libs/cli/langchain_cli/integration_template/integration_template/tools.py b/libs/cli/langchain_cli/integration_template/integration_template/tools.py index 903e8d9db9b59..0ada7bcef564b 100644 --- a/libs/cli/langchain_cli/integration_template/integration_template/tools.py +++ b/libs/cli/langchain_cli/integration_template/integration_template/tools.py @@ -57,12 +57,12 @@ class __ModuleName__Tool(BaseTool): .. code-block:: python # TODO: invoke args - tool.invoke({"args": {...}, "id": "1", "name": tool.name, "type": "tool_call}) + tool.invoke({"args": {...}, "id": "1", "name": tool.name, "type": "tool_call"}) .. code-block:: python # TODO: output of invocation - """ + """ # noqa: E501 # TODO: Set tool name and description name: str = "TODO: Tool name" diff --git a/libs/community/langchain_community/chat_models/baichuan.py b/libs/community/langchain_community/chat_models/baichuan.py index c03d5ca040cfc..ea426507253d1 100644 --- a/libs/community/langchain_community/chat_models/baichuan.py +++ b/libs/community/langchain_community/chat_models/baichuan.py @@ -206,7 +206,7 @@ class ChatBaichuan(BaseChatModel): Key init args — client params: api_key: Optional[str] - MiniMax API key. If not passed in will be read from env var BAICHUAN_API_KEY. + Baichuan API key. If not passed in will be read from env var BAICHUAN_API_KEY. base_url: Optional[str] Base URL for API requests. diff --git a/libs/community/langchain_community/chat_models/baidu_qianfan_endpoint.py b/libs/community/langchain_community/chat_models/baidu_qianfan_endpoint.py index 2a9cc8cec29dc..d088054261494 100644 --- a/libs/community/langchain_community/chat_models/baidu_qianfan_endpoint.py +++ b/libs/community/langchain_community/chat_models/baidu_qianfan_endpoint.py @@ -200,7 +200,7 @@ class QianfanChatEndpoint(BaseChatModel): ("system", "你是一名专业的翻译家,可以将用户的中文翻译为英文。"), ("human", "我喜欢编程。"), ] - qianfan_chat.invoke(message) + qianfan_chat.invoke(messages) .. code-block:: python @@ -219,6 +219,7 @@ class QianfanChatEndpoint(BaseChatModel): .. code-block:: python + stream = chat.stream(messages) full = next(stream) for chunk in stream: full += chunk @@ -511,6 +512,7 @@ def _generate( if self.streaming: completion = "" chat_generation_info: Dict = {} + usage_metadata: Optional[UsageMetadata] = None for chunk in self._stream(messages, stop, run_manager, **kwargs): chat_generation_info = ( chunk.generation_info @@ -518,7 +520,14 @@ def _generate( else chat_generation_info ) completion += chunk.text - lc_msg = AIMessage(content=completion, additional_kwargs={}) + if isinstance(chunk.message, AIMessageChunk): + usage_metadata = chunk.message.usage_metadata + + lc_msg = AIMessage( + content=completion, + additional_kwargs={}, + usage_metadata=usage_metadata, + ) gen = ChatGeneration( message=lc_msg, generation_info=dict(finish_reason="stop"), @@ -526,7 +535,7 @@ def _generate( return ChatResult( generations=[gen], llm_output={ - "token_usage": chat_generation_info.get("usage", {}), + "token_usage": usage_metadata or {}, "model_name": self.model, }, ) @@ -555,6 +564,7 @@ async def _agenerate( if self.streaming: completion = "" chat_generation_info: Dict = {} + usage_metadata: Optional[UsageMetadata] = None async for chunk in self._astream(messages, stop, run_manager, **kwargs): chat_generation_info = ( chunk.generation_info @@ -563,7 +573,14 @@ async def _agenerate( ) completion += chunk.text - lc_msg = AIMessage(content=completion, additional_kwargs={}) + if isinstance(chunk.message, AIMessageChunk): + usage_metadata = chunk.message.usage_metadata + + lc_msg = AIMessage( + content=completion, + additional_kwargs={}, + usage_metadata=usage_metadata, + ) gen = ChatGeneration( message=lc_msg, generation_info=dict(finish_reason="stop"), @@ -571,7 +588,7 @@ async def _agenerate( return ChatResult( generations=[gen], llm_output={ - "token_usage": chat_generation_info.get("usage", {}), + "token_usage": usage_metadata or {}, "model_name": self.model, }, ) diff --git a/libs/community/langchain_community/chat_models/sparkllm.py b/libs/community/langchain_community/chat_models/sparkllm.py index 75927d615354c..dcc26a5357ffe 100644 --- a/libs/community/langchain_community/chat_models/sparkllm.py +++ b/libs/community/langchain_community/chat_models/sparkllm.py @@ -126,9 +126,9 @@ class ChatSparkLLM(BaseChatModel): from langchain_community.chat_models import ChatSparkLLM - chat = MiniMaxChat( - api_key=api_key, - api_secret=ak, + chat = ChatSparkLLM( + api_key="your-api-key", + api_secret="your-api-secret", model='Spark4.0 Ultra', # temperature=..., # other params... diff --git a/libs/community/langchain_community/chat_models/zhipuai.py b/libs/community/langchain_community/chat_models/zhipuai.py index 4496e3607645f..03d858398766f 100644 --- a/libs/community/langchain_community/chat_models/zhipuai.py +++ b/libs/community/langchain_community/chat_models/zhipuai.py @@ -7,12 +7,25 @@ import time from collections.abc import AsyncIterator, Iterator from contextlib import asynccontextmanager, contextmanager -from typing import Any, Dict, List, Optional, Tuple, Type, Union +from operator import itemgetter +from typing import ( + Any, + Callable, + Dict, + List, + Literal, + Optional, + Sequence, + Tuple, + Type, + Union, +) from langchain_core.callbacks import ( AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun, ) +from langchain_core.language_models import LanguageModelInput from langchain_core.language_models.chat_models import ( BaseChatModel, agenerate_from_stream, @@ -30,9 +43,17 @@ SystemMessage, SystemMessageChunk, ) +from langchain_core.output_parsers.base import OutputParserLike +from langchain_core.output_parsers.openai_tools import ( + JsonOutputKeyToolsParser, + PydanticToolsParser, +) from langchain_core.outputs import ChatGeneration, ChatGenerationChunk, ChatResult from langchain_core.pydantic_v1 import BaseModel, Field, root_validator +from langchain_core.runnables import Runnable, RunnableMap, RunnablePassthrough +from langchain_core.tools import BaseTool from langchain_core.utils import get_from_dict_or_env +from langchain_core.utils.function_calling import convert_to_openai_tool logger = logging.getLogger(__name__) @@ -40,6 +61,10 @@ ZHIPUAI_API_BASE = "https://open.bigmodel.cn/api/paas/v4/chat/completions" +def _is_pydantic_class(obj: Any) -> bool: + return isinstance(obj, type) and issubclass(obj, BaseModel) + + @contextmanager def connect_sse(client: Any, method: str, url: str, **kwargs: Any) -> Iterator: """Context manager for connecting to an SSE stream. @@ -199,7 +224,7 @@ class ChatZhipuAI(BaseChatModel): Key init args — completion params: model: Optional[str] - Name of OpenAI model to use. + Name of ZhipuAI model to use. temperature: float Sampling temperature. max_tokens: Optional[int] @@ -207,9 +232,9 @@ class ChatZhipuAI(BaseChatModel): Key init args — client params: api_key: Optional[str] - ZhipuAI API key. If not passed in will be read from env var ZHIPUAI_API_KEY. + ZhipuAI API key. If not passed in will be read from env var ZHIPUAI_API_KEY. api_base: Optional[str] - Base URL for API requests. + Base URL for API requests. See full list of supported init args and their descriptions in the params section. @@ -255,7 +280,7 @@ class ChatZhipuAI(BaseChatModel): .. code-block:: python - stream = llm.stream(messages) + stream = zhipuai_chat.stream(messages) full = next(stream) for chunk in stream: full += chunk @@ -587,3 +612,178 @@ async def _astream( if finish_reason is not None: break + + def bind_tools( + self, + tools: Sequence[Union[Dict[str, Any], Type[BaseModel], Callable, BaseTool]], + *, + tool_choice: Optional[ + Union[dict, str, Literal["auto", "any", "none"], bool] + ] = None, + **kwargs: Any, + ) -> Runnable[LanguageModelInput, BaseMessage]: + """Bind tool-like objects to this chat model. + Args: + tools: A list of tool definitions to bind to this chat model. + Can be a dictionary, pydantic model, callable, or BaseTool. Pydantic + models, callables, and BaseTools will be automatically converted to + their schema dictionary representation. + tool_choice: Currently this can only be auto for this chat model. + **kwargs: Any additional parameters to pass to the + :class:`~langchain.runnable.Runnable` constructor. + """ + if self.model_name == "glm-4v": + raise ValueError("glm-4v currently does not support tool calling") + + formatted_tools = [convert_to_openai_tool(tool) for tool in tools] + if tool_choice and tool_choice != "auto": + raise ValueError("ChatZhipuAI currently only supports `auto` tool choice") + elif tool_choice and tool_choice == "auto": + kwargs["tool_choice"] = tool_choice + return self.bind(tools=formatted_tools, **kwargs) + + def with_structured_output( + self, + schema: Optional[Union[Dict, Type[BaseModel]]] = None, + *, + method: Literal["function_calling", "json_mode"] = "function_calling", + include_raw: bool = False, + **kwargs: Any, + ) -> Runnable[LanguageModelInput, Union[Dict, BaseModel]]: + """Model wrapper that returns outputs formatted to match the given schema. + + Args: + schema: The output schema as a dict or a Pydantic class. If a Pydantic class + then the model output will be an object of that class. If a dict then + the model output will be a dict. With a Pydantic class the returned + attributes will be validated, whereas with a dict they will not be. If + `method` is "function_calling" and `schema` is a dict, then the dict + must match the OpenAI function-calling spec. + method: The method for steering model generation, either "function_calling" + or "json_mode". ZhipuAI only supports "function_calling" which + converts the schema to a OpenAI function and the model will make use of the + function-calling API. + include_raw: If False then only the parsed structured output is returned. If + an error occurs during model output parsing it will be raised. If True + then both the raw model response (a BaseMessage) and the parsed model + response will be returned. If an error occurs during output parsing it + will be caught and returned as well. The final output is always a dict + with keys "raw", "parsed", and "parsing_error". + + Returns: + A Runnable that takes any ChatModel input and returns as output: + + If include_raw is True then a dict with keys: + raw: BaseMessage + parsed: Optional[_DictOrPydantic] + parsing_error: Optional[BaseException] + + If include_raw is False then just _DictOrPydantic is returned, + where _DictOrPydantic depends on the schema: + + If schema is a Pydantic class then _DictOrPydantic is the Pydantic + class. + + If schema is a dict then _DictOrPydantic is a dict. + + Example: Function-calling, Pydantic schema (method="function_calling", include_raw=False): + .. code-block:: python + + from langchain_community.chat_models import ChatZhipuAI + from langchain_core.pydantic_v1 import BaseModel + + class AnswerWithJustification(BaseModel): + '''An answer to the user question along with justification for the answer.''' + answer: str + justification: str + + llm = ChatZhipuAI(temperature=0) + structured_llm = llm.with_structured_output(AnswerWithJustification) + + structured_llm.invoke("What weighs more a pound of bricks or a pound of feathers") + # -> AnswerWithJustification( + # answer='A pound of bricks and a pound of feathers weigh the same.' + # justification="Both a pound of bricks and a pound of feathers have been defined to have the same weight. The 'pound' is a unit of weight, so any two things that are described as weighing a pound will weigh the same." + # ) + + Example: Function-calling, Pydantic schema (method="function_calling", include_raw=True): + .. code-block:: python + + from langchain_community.chat_models import ChatZhipuAI + from langchain_core.pydantic_v1 import BaseModel + + class AnswerWithJustification(BaseModel): + '''An answer to the user question along with justification for the answer.''' + answer: str + justification: str + + llm = ChatZhipuAI(temperature=0) + structured_llm = llm.with_structured_output(AnswerWithJustification, include_raw=True) + + structured_llm.invoke("What weighs more a pound of bricks or a pound of feathers") + # -> { + # 'raw': AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_01htjn3cspevxbqc1d7nkk8wab', 'function': {'arguments': '{"answer": "A pound of bricks and a pound of feathers weigh the same.", "justification": "Both a pound of bricks and a pound of feathers have been defined to have the same weight. The \'pound\' is a unit of weight, so any two things that are described as weighing a pound will weigh the same.", "unit": "pounds"}', 'name': 'AnswerWithJustification'}, 'type': 'function'}]}, id='run-456beee6-65f6-4e80-88af-a6065480822c-0'), + # 'parsed': AnswerWithJustification(answer='A pound of bricks and a pound of feathers weigh the same.', justification="Both a pound of bricks and a pound of feathers have been defined to have the same weight. The 'pound' is a unit of weight, so any two things that are described as weighing a pound will weigh the same."), + # 'parsing_error': None + # } + + Example: Function-calling, dict schema (method="function_calling", include_raw=False): + .. code-block:: python + + from langchain_community.chat_models import ChatZhipuAI + from langchain_core.pydantic_v1 import BaseModel + from langchain_core.utils.function_calling import convert_to_openai_tool + + class AnswerWithJustification(BaseModel): + '''An answer to the user question along with justification for the answer.''' + answer: str + justification: str + + dict_schema = convert_to_openai_tool(AnswerWithJustification) + llm = ChatZhipuAI(temperature=0) + structured_llm = llm.with_structured_output(dict_schema) + + structured_llm.invoke("What weighs more a pound of bricks or a pound of feathers") + # -> { + # 'answer': 'A pound of bricks and a pound of feathers weigh the same.', + # 'justification': "Both a pound of bricks and a pound of feathers have been defined to have the same weight. The 'pound' is a unit of weight, so any two things that are described as weighing a pound will weigh the same.", 'unit': 'pounds'} + # } + + """ # noqa: E501 + if kwargs: + raise ValueError(f"Received unsupported arguments {kwargs}") + is_pydantic_schema = _is_pydantic_class(schema) + if method == "function_calling": + if schema is None: + raise ValueError( + "schema must be specified when method is 'function_calling'. " + "Received None." + ) + tool_name = convert_to_openai_tool(schema)["function"]["name"] + llm = self.bind_tools([schema], tool_choice="auto") + if is_pydantic_schema: + output_parser: OutputParserLike = PydanticToolsParser( + tools=[schema], # type: ignore[list-item] + first_tool_only=True, # type: ignore[list-item] + ) + else: + output_parser = JsonOutputKeyToolsParser( + key_name=tool_name, first_tool_only=True + ) + else: + raise ValueError( + f"""Unrecognized method argument. Expected 'function_calling'. + Received: '{method}'""" + ) + + if include_raw: + parser_assign = RunnablePassthrough.assign( + parsed=itemgetter("raw") | output_parser, parsing_error=lambda _: None + ) + parser_none = RunnablePassthrough.assign(parsed=lambda _: None) + parser_with_fallback = parser_assign.with_fallbacks( + [parser_none], exception_key="parsing_error" + ) + return RunnableMap(raw=llm) | parser_with_fallback + else: + return llm | output_parser diff --git a/libs/community/langchain_community/document_loaders/firecrawl.py b/libs/community/langchain_community/document_loaders/firecrawl.py index 2577ce6eda4eb..467813419ae29 100644 --- a/libs/community/langchain_community/document_loaders/firecrawl.py +++ b/libs/community/langchain_community/document_loaders/firecrawl.py @@ -6,11 +6,63 @@ class FireCrawlLoader(BaseLoader): - """Load web pages as Documents using FireCrawl. - - Must have Python package `firecrawl` installed and a FireCrawl API key. See - https://www.firecrawl.dev/ for more. """ + FireCrawlLoader document loader integration + + Setup: + Install ``firecrawl-py``,``langchain_community`` and set environment variable ``FIRECRAWL_API_KEY``. + + .. code-block:: bash + + pip install -U firecrawl-py langchain_community + export FIRECRAWL_API_KEY="your-api-key" + + Instantiate: + .. code-block:: python + + from langchain_community.document_loaders import FireCrawlLoader + + loader = FireCrawlLoader( + url = "https://firecrawl.dev", + mode = "crawl" + # other params = ... + ) + + Lazy load: + .. code-block:: python + + docs = [] + docs_lazy = loader.lazy_load() + + # async variant: + # docs_lazy = await loader.alazy_load() + + for doc in docs_lazy: + docs.append(doc) + print(docs[0].page_content[:100]) + print(docs[0].metadata) + + .. code-block:: python + + Introducing [Smart Crawl!](https://www.firecrawl.dev/smart-crawl) + Join the waitlist to turn any web + {'ogUrl': 'https://www.firecrawl.dev/', 'title': 'Home - Firecrawl', 'robots': 'follow, index', 'ogImage': 'https://www.firecrawl.dev/og.png?123', 'ogTitle': 'Firecrawl', 'sitemap': {'lastmod': '2024-08-12T00:28:16.681Z', 'changefreq': 'weekly'}, 'keywords': 'Firecrawl,Markdown,Data,Mendable,Langchain', 'sourceURL': 'https://www.firecrawl.dev/', 'ogSiteName': 'Firecrawl', 'description': 'Firecrawl crawls and converts any website into clean markdown.', 'ogDescription': 'Turn any website into LLM-ready data.', 'pageStatusCode': 200, 'ogLocaleAlternate': []} + + + Async load: + .. code-block:: python + + docs = await loader.aload() + print(docs[0].page_content[:100]) + print(docs[0].metadata) + + .. code-block:: python + + Introducing [Smart Crawl!](https://www.firecrawl.dev/smart-crawl) + Join the waitlist to turn any web + {'ogUrl': 'https://www.firecrawl.dev/', 'title': 'Home - Firecrawl', 'robots': 'follow, index', 'ogImage': 'https://www.firecrawl.dev/og.png?123', 'ogTitle': 'Firecrawl', 'sitemap': {'lastmod': '2024-08-12T00:28:16.681Z', 'changefreq': 'weekly'}, 'keywords': 'Firecrawl,Markdown,Data,Mendable,Langchain', 'sourceURL': 'https://www.firecrawl.dev/', 'ogSiteName': 'Firecrawl', 'description': 'Firecrawl crawls and converts any website into clean markdown.', 'ogDescription': 'Turn any website into LLM-ready data.', 'pageStatusCode': 200, 'ogLocaleAlternate': []} + + """ # noqa: E501 def __init__( self, diff --git a/libs/community/langchain_community/document_loaders/pdf.py b/libs/community/langchain_community/document_loaders/pdf.py index ea4485e5891cc..b7fbf57504570 100644 --- a/libs/community/langchain_community/document_loaders/pdf.py +++ b/libs/community/langchain_community/document_loaders/pdf.py @@ -161,10 +161,66 @@ def load(self) -> List[Document]: class PyPDFLoader(BasePDFLoader): - """Load PDF using pypdf into list of documents. - - Loader chunks by page and stores page numbers in metadata. """ + PyPDFLoader document loader integration + + Setup: + Install ``langchain-community``. + + .. code-block:: bash + + pip install -U langchain-community + + Instantiate: + .. code-block:: python + + from langchain_community.document_loaders import PyPDFLoader + + loader = PyPDFLoader( + file_path = "./example_data/layout-parser-paper.pdf", + password = "my-pasword", + extract_images = True, + # headers = None + # extraction_mode = "plain", + # extraction_kwargs = None, + ) + + Lazy load: + .. code-block:: python + + docs = [] + docs_lazy = loader.lazy_load() + + # async variant: + # docs_lazy = await loader.alazy_load() + + for doc in docs_lazy: + docs.append(doc) + print(docs[0].page_content[:100]) + print(docs[0].metadata) + + .. code-block:: python + + LayoutParser : A Unified Toolkit for Deep + Learning Based Document Image Analysis + Zejiang Shen1( ), R + {'source': './example_data/layout-parser-paper.pdf', 'page': 0} + + # TODO: Delete if async load is not implemented + Async load: + .. code-block:: python + + docs = await loader.aload() + print(docs[0].page_content[:100]) + print(docs[0].metadata) + + .. code-block:: python + + LayoutParser : A Unified Toolkit for Deep + Learning Based Document Image Analysis + Zejiang Shen1( ), R + {'source': './example_data/layout-parser-paper.pdf', 'page': 0} + """ # noqa: E501 def __init__( self, diff --git a/libs/community/langchain_community/document_loaders/web_base.py b/libs/community/langchain_community/document_loaders/web_base.py index 2d77222aec5b8..3eab7f351a113 100644 --- a/libs/community/langchain_community/document_loaders/web_base.py +++ b/libs/community/langchain_community/document_loaders/web_base.py @@ -39,7 +39,75 @@ def _build_metadata(soup: Any, url: str) -> dict: class WebBaseLoader(BaseLoader): - """Load HTML pages using `urllib` and parse them with `BeautifulSoup'.""" + """ + WebBaseLoader document loader integration + + Setup: + Install ``langchain_community``. + + .. code-block:: bash + + pip install -U langchain_community + + Instantiate: + .. code-block:: python + + from langchain_community.document_loaders import WebBaseLoader + + loader = WebBaseLoader( + web_path = "https://www.espn.com/" + # header_template = None, + # verify_ssl = True, + # proxies = None, + # continue_on_failure = False, + # autoset_encoding = True, + # encoding = None, + # web_paths = (), + # requests_per_second = 2, + # default_parser = "html.parser", + # requests_kwargs = None, + # raise_for_status = False, + # bs_get_text_kwargs = None, + # bs_kwargs = None, + # session = None, + # show_progress = True, + ) + + Lazy load: + .. code-block:: python + + docs = [] + docs_lazy = loader.lazy_load() + + # async variant: + # docs_lazy = await loader.alazy_load() + + for doc in docs_lazy: + docs.append(doc) + print(docs[0].page_content[:100]) + print(docs[0].metadata) + + .. code-block:: python + + ESPN - Serving Sports Fans. Anytime. Anywhere. + + {'source': 'https://www.espn.com/', 'title': 'ESPN - Serving Sports Fans. Anytime. Anywhere.', 'description': 'Visit ESPN for live scores, highlights and sports news. Stream exclusive games on ESPN+ and play fantasy sports.', 'language': 'en'} + + + Async load: + .. code-block:: python + + docs = await loader.aload() + print(docs[0].page_content[:100]) + print(docs[0].metadata) + + .. code-block:: python + + ESPN - Serving Sports Fans. Anytime. Anywhere. + + {'source': 'https://www.espn.com/', 'title': 'ESPN - Serving Sports Fans. Anytime. Anywhere.', 'description': 'Visit ESPN for live scores, highlights and sports news. Stream exclusive games on ESPN+ and play fantasy sports.', 'language': 'en'} + + """ # noqa: E501 def __init__( self, diff --git a/libs/community/langchain_community/embeddings/zhipuai.py b/libs/community/langchain_community/embeddings/zhipuai.py index a6c3279010c73..b8415aed74712 100644 --- a/libs/community/langchain_community/embeddings/zhipuai.py +++ b/libs/community/langchain_community/embeddings/zhipuai.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, List +from typing import Any, Dict, List, Optional from langchain_core.embeddings import Embeddings from langchain_core.pydantic_v1 import BaseModel, Field, root_validator @@ -70,6 +70,11 @@ class ZhipuAIEmbeddings(BaseModel, Embeddings): """Model name""" api_key: str """Automatically inferred from env var `ZHIPU_API_KEY` if not provided.""" + dimensions: Optional[int] = None + """The number of dimensions the resulting output embeddings should have. + + Only supported in `embedding-3` and later models. + """ @root_validator(pre=True) def validate_environment(cls, values: Dict) -> Dict: @@ -110,6 +115,13 @@ def embed_documents(self, texts: List[str]) -> List[List[float]]: A list of embeddings for each document in the input list. Each embedding is represented as a list of float values. """ - resp = self.client.embeddings.create(model=self.model, input=texts) + if self.dimensions is not None: + resp = self.client.embeddings.create( + model=self.model, + input=texts, + dimensions=self.dimensions, + ) + else: + resp = self.client.embeddings.create(model=self.model, input=texts) embeddings = [r.embedding for r in resp.data] return embeddings diff --git a/libs/community/langchain_community/graph_vectorstores/cassandra.py b/libs/community/langchain_community/graph_vectorstores/cassandra.py index ed8dbe347e158..da9b09e993ee1 100644 --- a/libs/community/langchain_community/graph_vectorstores/cassandra.py +++ b/libs/community/langchain_community/graph_vectorstores/cassandra.py @@ -32,6 +32,7 @@ def __init__( session: Optional[Session] = None, keyspace: Optional[str] = None, setup_mode: SetupMode = SetupMode.SYNC, + **kwargs: Any, ): """ Create the hybrid graph store. @@ -74,6 +75,7 @@ async def aembed_query(self, text: str) -> List[float]: session=session, keyspace=keyspace, setup_mode=_setup_mode, + **kwargs, ) @property diff --git a/libs/community/langchain_community/llms/sparkllm.py b/libs/community/langchain_community/llms/sparkllm.py index 4e10e3b253633..d3741aa93d9b3 100644 --- a/libs/community/langchain_community/llms/sparkllm.py +++ b/libs/community/langchain_community/llms/sparkllm.py @@ -24,64 +24,149 @@ class SparkLLM(LLM): - """iFlyTek Spark large language model. + """iFlyTek Spark completion model integration. + + Setup: + To use, you should set environment variables ``IFLYTEK_SPARK_APP_ID``, + ``IFLYTEK_SPARK_API_KEY`` and ``IFLYTEK_SPARK_API_SECRET``. + + .. code-block:: bash + + export IFLYTEK_SPARK_APP_ID="your-app-id" + export IFLYTEK_SPARK_API_KEY="your-api-key" + export IFLYTEK_SPARK_API_SECRET="your-api-secret" + + Key init args — completion params: + model: Optional[str] + Name of IFLYTEK SPARK model to use. + temperature: Optional[float] + Sampling temperature. + top_k: Optional[float] + What search sampling control to use. + streaming: Optional[bool] + Whether to stream the results or not. + + Key init args — client params: + app_id: Optional[str] + IFLYTEK SPARK API KEY. Automatically inferred from env var `IFLYTEK_SPARK_APP_ID` if not provided. + api_key: Optional[str] + IFLYTEK SPARK API KEY. If not passed in will be read from env var IFLYTEK_SPARK_API_KEY. + api_secret: Optional[str] + IFLYTEK SPARK API SECRET. If not passed in will be read from env var IFLYTEK_SPARK_API_SECRET. + api_url: Optional[str] + Base URL for API requests. + timeout: Optional[int] + Timeout for requests. + + See full list of supported init args and their descriptions in the params section. + + Instantiate: + .. code-block:: python + + from langchain_community.llms import SparkLLM - To use, you should pass `app_id`, `api_key`, `api_secret` - as a named parameter to the constructor OR set environment - variables ``IFLYTEK_SPARK_APP_ID``, ``IFLYTEK_SPARK_API_KEY`` and - ``IFLYTEK_SPARK_API_SECRET`` + llm = SparkLLM( + app_id="your-app-id", + api_key="your-api_key", + api_secret="your-api-secret", + # model='Spark4.0 Ultra', + # temperature=..., + # other params... + ) - Example: + Invoke: .. code-block:: python - client = SparkLLM( - spark_app_id="", - spark_api_key="", - spark_api_secret="" - ) - """ + input_text = "用50个字左右阐述,生命的意义在于" + llm.invoke(input_text) + + .. code-block:: python + + '生命的意义在于实现自我价值,追求内心的平静与快乐,同时为他人和社会带来正面影响。' + + Stream: + .. code-block:: python + + for chunk in llm.stream(input_text): + print(chunk) + + .. code-block:: python + + 生命 | 的意义在于 | 不断探索和 | 实现个人潜能,通过 | 学习 | 、成长和对社会 | 的贡献,追求内心的满足和幸福。 + + Async: + .. code-block:: python + + await llm.ainvoke(input_text) + + # stream: + # async for chunk in llm.astream(input_text): + # print(chunk) + + # batch: + # await llm.abatch([input_text]) + + .. code-block:: python + + '生命的意义在于实现自我价值,追求内心的平静与快乐,同时为他人和社会带来正面影响。' + + """ # noqa: E501 client: Any = None #: :meta private: - spark_app_id: Optional[str] = None - spark_api_key: Optional[str] = None - spark_api_secret: Optional[str] = None - spark_api_url: Optional[str] = None - spark_llm_domain: Optional[str] = None + spark_app_id: Optional[str] = Field(default=None, alias="app_id") + """Automatically inferred from env var `IFLYTEK_SPARK_APP_ID` + if not provided.""" + spark_api_key: Optional[str] = Field(default=None, alias="api_key") + """IFLYTEK SPARK API KEY. If not passed in will be read from + env var IFLYTEK_SPARK_API_KEY.""" + spark_api_secret: Optional[str] = Field(default=None, alias="api_secret") + """IFLYTEK SPARK API SECRET. If not passed in will be read from + env var IFLYTEK_SPARK_API_SECRET.""" + spark_api_url: Optional[str] = Field(default=None, alias="api_url") + """Base URL path for API requests, leave blank if not using a proxy or service + emulator.""" + spark_llm_domain: Optional[str] = Field(default=None, alias="model") + """Model name to use.""" spark_user_id: str = "lc_user" streaming: bool = False - request_timeout: int = 30 + """Whether to stream the results or not.""" + request_timeout: int = Field(default=30, alias="timeout") + """request timeout for chat http requests""" temperature: float = 0.5 + """What sampling temperature to use.""" top_k: int = 4 + """What search sampling control to use.""" model_kwargs: Dict[str, Any] = Field(default_factory=dict) + """Holds any model parameters valid for API call not explicitly specified.""" @pre_init def validate_environment(cls, values: Dict) -> Dict: values["spark_app_id"] = get_from_dict_or_env( values, - "spark_app_id", + ["spark_app_id", "app_id"], "IFLYTEK_SPARK_APP_ID", ) values["spark_api_key"] = get_from_dict_or_env( values, - "spark_api_key", + ["spark_api_key", "api_key"], "IFLYTEK_SPARK_API_KEY", ) values["spark_api_secret"] = get_from_dict_or_env( values, - "spark_api_secret", + ["spark_api_secret", "api_secret"], "IFLYTEK_SPARK_API_SECRET", ) values["spark_api_url"] = get_from_dict_or_env( values, - "spark_api_url", + ["spark_api_url", "api_url"], "IFLYTEK_SPARK_API_URL", - "wss://spark-api.xf-yun.com/v3.1/chat", + "wss://spark-api.xf-yun.com/v3.5/chat", ) values["spark_llm_domain"] = get_from_dict_or_env( values, - "spark_llm_domain", + ["spark_llm_domain", "model"], "IFLYTEK_SPARK_LLM_DOMAIN", - "generalv3", + "generalv3.5", ) # put extra params into model_kwargs values["model_kwargs"]["temperature"] = values["temperature"] or cls.temperature @@ -163,7 +248,7 @@ def _stream( [{"role": "user", "content": prompt}], self.spark_user_id, self.model_kwargs, - self.streaming, + True, ) for content in self.client.subscribe(timeout=self.request_timeout): if "data" not in content: @@ -200,11 +285,11 @@ def __init__( ) self.api_url = ( - "wss://spark-api.xf-yun.com/v3.1/chat" if not api_url else api_url + "wss://spark-api.xf-yun.com/v3.5/chat" if not api_url else api_url ) self.app_id = app_id self.model_kwargs = model_kwargs - self.spark_domain = spark_domain or "generalv3" + self.spark_domain = spark_domain or "generalv3.5" self.queue: Queue[Dict] = Queue() self.blocking_message = {"content": "", "role": "assistant"} self.api_key = api_key diff --git a/libs/community/langchain_community/tools/bing_search/tool.py b/libs/community/langchain_community/tools/bing_search/tool.py index 658b5011ca561..63bac6191fb96 100644 --- a/libs/community/langchain_community/tools/bing_search/tool.py +++ b/libs/community/langchain_community/tools/bing_search/tool.py @@ -29,7 +29,45 @@ def _run( class BingSearchResults(BaseTool): - """Tool that queries the Bing Search API and gets back json.""" + """Bing Search tool. + + Setup: + Install ``langchain-community`` and set environment variable ``BING_SUBSCRIPTION_KEY``. + + .. code-block:: bash + + pip install -U langchain-community + export BING_SUBSCRIPTION_KEY="your-api-key" + + Instantiation: + .. code-block:: python + + from langchain_community.tools.bing_search import BingSearchResults + from langchain_community.utilities import BingSearchAPIWrapper + + api_wrapper = BingSearchAPIWrapper() + tool = BingSearchResults(api_wrapper=api_wrapper) + + Invocation with args: + .. code-block:: python + + tool.invoke("what is the weather in SF?") + + .. code-block:: python + + "[{'snippet': 'San Francisco, CA Weather Forecast, with current conditions, wind, air quality, and what to expect for the next 3 days.', 'title': 'San Francisco, CA Weather Forecast | AccuWeather', 'link': 'https://www.accuweather.com/en/us/san-francisco/94103/weather-forecast/347629'}, {'snippet': 'Tropical Storm Ernesto Forms; Fire Weather Concerns in the Great Basin: Hot Temperatures Return to the South-Central U.S. ... San Francisco CA 37.77°N 122.41°W (Elev. 131 ft) Last Update: 2:21 pm PDT Aug 12, 2024. Forecast Valid: 6pm PDT Aug 12, 2024-6pm PDT Aug 19, 2024 .', 'title': 'National Weather Service', 'link': 'https://forecast.weather.gov/zipcity.php?inputstring=San+Francisco,CA'}, {'snippet': 'Current weather in San Francisco, CA. Check current conditions in San Francisco, CA with radar, hourly, and more.', 'title': 'San Francisco, CA Current Weather | AccuWeather', 'link': 'https://www.accuweather.com/en/us/san-francisco/94103/current-weather/347629'}, {'snippet': 'Everything you need to know about today's weather in San Francisco, CA. High/Low, Precipitation Chances, Sunrise/Sunset, and today's Temperature History.', 'title': 'Weather Today for San Francisco, CA | AccuWeather', 'link': 'https://www.accuweather.com/en/us/san-francisco/94103/weather-today/347629'}]" + + Invocation with ToolCall: + + .. code-block:: python + + tool.invoke({"args": {"query":"what is the weather in SF?"}, "id": "1", "name": tool.name, "type": "tool_call"}) + + .. code-block:: python + + ToolMessage(content="[{'snippet': 'Get the latest weather forecast for San Francisco, CA, including temperature, RealFeel, and chance of precipitation. Find out how the weather will affect your plans and activities in the city of ...', 'title': 'San Francisco, CA Weather Forecast | AccuWeather', 'link': 'https://www.accuweather.com/en/us/san-francisco/94103/weather-forecast/347629'}, {'snippet': 'Radar. Be prepared with the most accurate 10-day forecast for San Francisco, CA with highs, lows, chance of precipitation from The Weather Channel and Weather.com.', 'title': '10-Day Weather Forecast for San Francisco, CA - The Weather Channel', 'link': 'https://weather.com/weather/tenday/l/San+Francisco+CA+USCA0987:1:US'}, {'snippet': 'Tropical Storm Ernesto Forms; Fire Weather Concerns in the Great Basin: Hot Temperatures Return to the South-Central U.S. ... San Francisco CA 37.77°N 122.41°W (Elev. 131 ft) Last Update: 2:21 pm PDT Aug 12, 2024. Forecast Valid: 6pm PDT Aug 12, 2024-6pm PDT Aug 19, 2024 .', 'title': 'National Weather Service', 'link': 'https://forecast.weather.gov/zipcity.php?inputstring=San+Francisco,CA'}, {'snippet': 'Current weather in San Francisco, CA. Check current conditions in San Francisco, CA with radar, hourly, and more.', 'title': 'San Francisco, CA Current Weather | AccuWeather', 'link': 'https://www.accuweather.com/en/us/san-francisco/94103/current-weather/347629'}]", name='bing_search_results_json', tool_call_id='1') + + """ # noqa: E501 name: str = "bing_search_results_json" description: str = ( diff --git a/libs/community/langchain_community/tools/ddg_search/tool.py b/libs/community/langchain_community/tools/ddg_search/tool.py index fa1c01bedde2c..3be46f5b94406 100644 --- a/libs/community/langchain_community/tools/ddg_search/tool.py +++ b/libs/community/langchain_community/tools/ddg_search/tool.py @@ -17,7 +17,41 @@ class DDGInput(BaseModel): class DuckDuckGoSearchRun(BaseTool): - """Tool that queries the DuckDuckGo search API.""" + """DuckDuckGo tool. + + Setup: + Install ``duckduckgo-search`` and ``langchain-community``. + + .. code-block:: bash + + pip install -U duckduckgo-search langchain-community + + Instantiation: + .. code-block:: python + + from langchain_community.tools import DuckDuckGoSearchResults + + tool = DuckDuckGoSearchResults() + + Invocation with args: + .. code-block:: python + + tool.invoke("Obama") + + .. code-block:: python + + '[snippet: Users on X have been widely comparing the boost of support felt for Kamala Harris\' campaign to Barack Obama\'s in 2008., title: Surging Support For Kamala Harris Compared To Obama-Era Energy, link: https://www.msn.com/en-us/news/politics/surging-support-for-kamala-harris-compared-to-obama-era-energy/ar-BB1qzdC0, date: 2024-07-24T18:27:01+00:00, source: Newsweek on MSN.com], [snippet: Harris tried to emulate Obama\'s coalition in 2020 and failed. She may have a better shot at reaching young, Black, and Latino voters this time around., title: Harris May Follow Obama\'s Path to the White House After All, link: https://www.msn.com/en-us/news/politics/harris-may-follow-obama-s-path-to-the-white-house-after-all/ar-BB1qv9d4, date: 2024-07-23T22:42:00+00:00, source: Intelligencer on MSN.com], [snippet: The Republican presidential candidate said in an interview on Fox News that he "wouldn\'t be worried" about Michelle Obama running., title: Donald Trump Responds to Michelle Obama Threat, link: https://www.msn.com/en-us/news/politics/donald-trump-responds-to-michelle-obama-threat/ar-BB1qqtu5, date: 2024-07-22T18:26:00+00:00, source: Newsweek on MSN.com], [snippet: H eading into the weekend at his vacation home in Rehoboth Beach, Del., President Biden was reportedly stewing over Barack Obama\'s role in the orchestrated campaign to force him, title: Opinion | Barack Obama Strikes Again, link: https://www.msn.com/en-us/news/politics/opinion-barack-obama-strikes-again/ar-BB1qrfiy, date: 2024-07-22T21:28:00+00:00, source: The Wall Street Journal on MSN.com]' + + Invocation with ToolCall: + + .. code-block:: python + + tool.invoke({"args": {"query":"Obama"}, "id": "1", "name": tool.name, "type": "tool_call"}) + + .. code-block:: python + + ToolMessage(content="[snippet: Biden, Obama and the Clintons Will Speak at the Democratic Convention. The president, two of his predecessors and the party's 2016 nominee are said to be planning speeches at the party's ..., title: Biden, Obama and the Clintons Will Speak at the Democratic Convention ..., link: https://www.nytimes.com/2024/08/12/us/politics/dnc-speakers-biden-obama-clinton.html], [snippet: Barack Obama—with his wife, Michelle—being sworn in as the 44th president of the United States, January 20, 2009. Key events in the life of Barack Obama. Barack Obama (born August 4, 1961, Honolulu, Hawaii, U.S.) is the 44th president of the United States (2009-17) and the first African American to hold the office., title: Barack Obama | Biography, Parents, Education, Presidency, Books ..., link: https://www.britannica.com/biography/Barack-Obama], [snippet: Former President Barack Obama released a letter about President Biden's decision to drop out of the 2024 presidential race. Notably, Obama did not name or endorse Vice President Kamala Harris., title: Read Obama's full statement on Biden dropping out - CBS News, link: https://www.cbsnews.com/news/barack-obama-biden-dropping-out-2024-presidential-race-full-statement/], [snippet: Many of the marquee names in Democratic politics began quickly lining up behind Vice President Kamala Harris on Sunday, but one towering presence in the party held back: Barack Obama. The former ..., title: Why Obama Hasn't Endorsed Harris - The New York Times, link: https://www.nytimes.com/2024/07/21/us/politics/why-obama-hasnt-endorsed-harris.html]", name='duckduckgo_results_json', tool_call_id='1') + """ # noqa: E501 name: str = "duckduckgo_search" description: str = ( diff --git a/libs/community/langchain_community/tools/edenai/audio_speech_to_text.py b/libs/community/langchain_community/tools/edenai/audio_speech_to_text.py index dc772ece593ec..342f33d2b2a42 100644 --- a/libs/community/langchain_community/tools/edenai/audio_speech_to_text.py +++ b/libs/community/langchain_community/tools/edenai/audio_speech_to_text.py @@ -29,8 +29,6 @@ class EdenAiSpeechToTextTool(EdenaiTool): You can find your token here: https://app.edenai.run/admin/account/settings """ - edenai_api_key: Optional[str] = None - name: str = "edenai_speech_to_text" description = ( "A wrapper around edenai Services speech to text " diff --git a/libs/community/langchain_community/tools/edenai/edenai_base_tool.py b/libs/community/langchain_community/tools/edenai/edenai_base_tool.py index 7e8a35ede9c28..2f83ef37bc487 100644 --- a/libs/community/langchain_community/tools/edenai/edenai_base_tool.py +++ b/libs/community/langchain_community/tools/edenai/edenai_base_tool.py @@ -6,9 +6,9 @@ import requests from langchain_core.callbacks import CallbackManagerForToolRun -from langchain_core.pydantic_v1 import root_validator +from langchain_core.pydantic_v1 import Field, SecretStr from langchain_core.tools import BaseTool -from langchain_core.utils import get_from_dict_or_env +from langchain_core.utils import secret_from_env logger = logging.getLogger(__name__) @@ -23,20 +23,14 @@ class EdenaiTool(BaseTool): feature: str subfeature: str - edenai_api_key: Optional[str] = None + edenai_api_key: SecretStr = Field( + default_factory=secret_from_env("EDENAI_API_KEY", default=None) + ) is_async: bool = False providers: List[str] """provider to use for the API call.""" - @root_validator(allow_reuse=True) - def validate_environment(cls, values: Dict) -> Dict: - """Validate that api key exists in environment.""" - values["edenai_api_key"] = get_from_dict_or_env( - values, "edenai_api_key", "EDENAI_API_KEY" - ) - return values - @staticmethod def get_user_agent() -> str: from langchain_community import __version__ @@ -54,11 +48,8 @@ def _call_eden_ai(self, query_params: Dict[str, Any]) -> str: requests.Response: The response from the EdenAI API call. """ - - # faire l'API call - headers = { - "Authorization": f"Bearer {self.edenai_api_key}", + "Authorization": f"Bearer {self.edenai_api_key.get_secret_value()}", "User-Agent": self.get_user_agent(), } diff --git a/libs/community/langchain_community/tools/riza/command.py b/libs/community/langchain_community/tools/riza/command.py index ce9451121f086..cfc36865768af 100644 --- a/libs/community/langchain_community/tools/riza/command.py +++ b/libs/community/langchain_community/tools/riza/command.py @@ -19,7 +19,43 @@ class ExecPythonInput(BaseModel): class ExecPython(BaseTool): - """A tool implementation to execute Python via Riza's Code Interpreter API.""" + """Riza Code tool. + + Setup: + Install ``langchain-community`` and ``rizaio`` and set environment variable ``RIZA_API_KEY``. + + .. code-block:: bash + + pip install -U langchain-community rizaio + export RIZA_API_KEY="your-api-key" + + Instantiation: + .. code-block:: python + + from langchain_community.tools.riza.command import ExecPython + + tool = ExecPython() + + Invocation with args: + .. code-block:: python + + tool.invoke("x = 5; print(x)") + + .. code-block:: python + + '5\\n' + + Invocation with ToolCall: + + .. code-block:: python + + tool.invoke({"args": {"code":"x = 5; print(x)"}, "id": "1", "name": tool.name, "type": "tool_call"}) + + .. code-block:: python + + tool.invoke({"args": {"code":"x = 5; print(x)"}, "id": "1", "name": tool.name, "type": "tool_call"}) + + """ # noqa: E501 name: str = "riza_exec_python" description: str = """Execute Python code to solve problems. diff --git a/libs/community/langchain_community/tools/searx_search/tool.py b/libs/community/langchain_community/tools/searx_search/tool.py index 69550af08813b..db8bca859c3b4 100644 --- a/libs/community/langchain_community/tools/searx_search/tool.py +++ b/libs/community/langchain_community/tools/searx_search/tool.py @@ -60,6 +60,7 @@ class SearxSearchResults(BaseTool): wrapper: SearxSearchWrapper num_results: int = 4 kwargs: dict = Field(default_factory=dict) + args_schema: Type[BaseModel] = SearxSearchQueryInput class Config: extra = "allow" diff --git a/libs/community/langchain_community/vectorstores/aperturedb.py b/libs/community/langchain_community/vectorstores/aperturedb.py index 44b278b38d913..a19a9ece5c9f7 100644 --- a/libs/community/langchain_community/vectorstores/aperturedb.py +++ b/libs/community/langchain_community/vectorstores/aperturedb.py @@ -460,7 +460,45 @@ def list_vectorstores(class_) -> None: assert db.last_query_ok(), response return response[0]["FindDescriptorSet"]["entities"] - @override + def add_documents(self, documents: List[Document], **kwargs: Any) -> List[str]: + """Add or update documents in the vectorstore. + + Args: + documents: Documents to add to the vectorstore. + kwargs: Additional keyword arguments. + if kwargs contains ids and documents contain ids, + the ids in the kwargs will receive precedence. + + Returns: + List of IDs of the added texts. + + Raises: + ValueError: If the number of ids does not match the number of documents. + """ + + if "ids" in kwargs: + ids = kwargs.pop("ids") + if ids and len(ids) != len(documents): + raise ValueError( + "The number of ids must match the number of documents. " + "Got {len(ids)} ids and {len(documents)} documents." + ) + + documents_ = [] + + for id_, document in zip(ids, documents): + doc_with_id = Document( + page_content=document.page_content, + metadata=document.metadata, + id=id_, + ) + documents_.append(doc_with_id) + else: + documents_ = documents + + # If upsert has been implemented, we can use it to add documents + return self.upsert(documents_, **kwargs)["succeeded"] + def upsert(self, items: Sequence[Document], /, **kwargs: Any) -> UpsertResponse: """Insert or update items diff --git a/libs/community/langchain_community/vectorstores/azuresearch.py b/libs/community/langchain_community/vectorstores/azuresearch.py index a3acc952a2848..5d7a6fc8edc8a 100644 --- a/libs/community/langchain_community/vectorstores/azuresearch.py +++ b/libs/community/langchain_community/vectorstores/azuresearch.py @@ -1,5 +1,6 @@ from __future__ import annotations +import asyncio import base64 import itertools import json @@ -41,7 +42,12 @@ if TYPE_CHECKING: from azure.search.documents import SearchClient, SearchItemPaged - from azure.search.documents.aio import SearchClient as AsyncSearchClient + from azure.search.documents.aio import ( + AsyncSearchItemPaged, + ) + from azure.search.documents.aio import ( + SearchClient as AsyncSearchClient, + ) from azure.search.documents.indexes.models import ( CorsOptions, ScoringProfile, @@ -360,6 +366,31 @@ def __init__( self._user_agent = user_agent self._cors_options = cors_options + def __del__(self) -> None: + # Close the sync client + if hasattr(self, "client") and self.client: + self.client.close() + + # Close the async client + if hasattr(self, "async_client") and self.async_client: + # Check if we're in an existing event loop + try: + loop = asyncio.get_event_loop() + if loop.is_running(): + # Schedule the coroutine to close the async client + loop.create_task(self.async_client.close()) + else: + # If no event loop is running, run the coroutine directly + loop.run_until_complete(self.async_client.close()) + except RuntimeError: + # Handle the case where there's no event loop + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + loop.run_until_complete(self.async_client.close()) + finally: + loop.close() + @property def embeddings(self) -> Optional[Embeddings]: # TODO: Support embedding object directly @@ -518,21 +549,19 @@ async def aadd_embeddings( ids.append(key) # Upload data in batches if len(data) == MAX_UPLOAD_BATCH_SIZE: - async with self.async_client as async_client: - response = await async_client.upload_documents(documents=data) - # Check if all documents were successfully uploaded - if not all(r.succeeded for r in response): - raise LangChainException(response) - # Reset data - data = [] + response = await self.async_client.upload_documents(documents=data) + # Check if all documents were successfully uploaded + if not all(r.succeeded for r in response): + raise LangChainException(response) + # Reset data + data = [] # Considering case where data is an exact multiple of batch-size entries if len(data) == 0: return ids # Upload data to index - async with self.async_client as async_client: - response = await async_client.upload_documents(documents=data) + response = await self.async_client.upload_documents(documents=data) # Check if all documents were successfully uploaded if all(r.succeeded for r in response): return ids @@ -566,9 +595,8 @@ async def adelete(self, ids: Optional[List[str]] = None, **kwargs: Any) -> bool: False otherwise. """ if ids: - async with self.async_client as async_client: - res = await async_client.delete_documents([{"id": i} for i in ids]) - return len(res) > 0 + res = await self.async_client.delete_documents([{"id": i} for i in ids]) + return len(res) > 0 else: return False @@ -748,7 +776,7 @@ async def avector_search_with_score( embedding, "", k, filters=filters, **kwargs ) - return _results_to_documents(results) + return await _aresults_to_documents(results) def max_marginal_relevance_search_with_score( self, @@ -897,7 +925,7 @@ async def ahybrid_search_with_score( embedding, query, k, filters=filters, **kwargs ) - return _results_to_documents(results) + return await _aresults_to_documents(results) def hybrid_search_with_relevance_scores( self, @@ -1050,7 +1078,7 @@ async def _asimple_search( *, filters: Optional[str] = None, **kwargs: Any, - ) -> SearchItemPaged[dict]: + ) -> AsyncSearchItemPaged[dict]: """Perform vector or hybrid search in the Azure search index. Args: @@ -1064,20 +1092,19 @@ async def _asimple_search( """ from azure.search.documents.models import VectorizedQuery - async with self.async_client as async_client: - return await async_client.search( - search_text=text_query, - vector_queries=[ - VectorizedQuery( - vector=np.array(embedding, dtype=np.float32).tolist(), - k_nearest_neighbors=k, - fields=FIELDS_CONTENT_VECTOR, - ) - ], - filter=filters, - top=k, - **kwargs, - ) + return await self.async_client.search( + search_text=text_query, + vector_queries=[ + VectorizedQuery( + vector=np.array(embedding, dtype=np.float32).tolist(), + k_nearest_neighbors=k, + fields=FIELDS_CONTENT_VECTOR, + ) + ], + filter=filters, + top=k, + **kwargs, + ) def semantic_hybrid_search( self, query: str, k: int = 4, **kwargs: Any @@ -1289,71 +1316,68 @@ async def asemantic_hybrid_search_with_score_and_rerank( from azure.search.documents.models import VectorizedQuery vector = await self._aembed_query(query) - async with self.async_client as async_client: - results = await async_client.search( - search_text=query, - vector_queries=[ - VectorizedQuery( - vector=np.array(vector, dtype=np.float32).tolist(), - k_nearest_neighbors=k, - fields=FIELDS_CONTENT_VECTOR, - ) - ], - filter=filters, - query_type="semantic", - semantic_configuration_name=self.semantic_configuration_name, - query_caption="extractive", - query_answer="extractive", - top=k, - **kwargs, - ) - # Get Semantic Answers - semantic_answers = (await results.get_answers()) or [] - semantic_answers_dict: Dict = {} - for semantic_answer in semantic_answers: - semantic_answers_dict[semantic_answer.key] = { - "text": semantic_answer.text, - "highlights": semantic_answer.highlights, - } - # Convert results to Document objects - docs = [ - ( - Document( - page_content=result.pop(FIELDS_CONTENT), - metadata={ - **( - json.loads(result[FIELDS_METADATA]) - if FIELDS_METADATA in result - else { - k: v - for k, v in result.items() - if k != FIELDS_CONTENT_VECTOR - } + results = await self.async_client.search( + search_text=query, + vector_queries=[ + VectorizedQuery( + vector=np.array(vector, dtype=np.float32).tolist(), + k_nearest_neighbors=k, + fields=FIELDS_CONTENT_VECTOR, + ) + ], + filter=filters, + query_type="semantic", + semantic_configuration_name=self.semantic_configuration_name, + query_caption="extractive", + query_answer="extractive", + top=k, + **kwargs, + ) + # Get Semantic Answers + semantic_answers = (await results.get_answers()) or [] + semantic_answers_dict: Dict = {} + for semantic_answer in semantic_answers: + semantic_answers_dict[semantic_answer.key] = { + "text": semantic_answer.text, + "highlights": semantic_answer.highlights, + } + # Convert results to Document objects + docs = [ + ( + Document( + page_content=result.pop(FIELDS_CONTENT), + metadata={ + **( + json.loads(result[FIELDS_METADATA]) + if FIELDS_METADATA in result + else { + k: v + for k, v in result.items() + if k != FIELDS_CONTENT_VECTOR + } + ), + **{ + "captions": { + "text": result.get("@search.captions", [{}])[0].text, + "highlights": result.get("@search.captions", [{}])[ + 0 + ].highlights, + } + if result.get("@search.captions") + else {}, + "answers": semantic_answers_dict.get( + result.get(FIELDS_ID, ""), + "", ), - **{ - "captions": { - "text": result.get("@search.captions", [{}])[ - 0 - ].text, - "highlights": result.get("@search.captions", [{}])[ - 0 - ].highlights, - } - if result.get("@search.captions") - else {}, - "answers": semantic_answers_dict.get( - result.get(FIELDS_ID, ""), - "", - ), - }, }, - ), - float(result["@search.score"]), - float(result["@search.reranker_score"]), - ) - async for result in results - ] - return docs + }, + ), + float(result["@search.score"]), + float(result["@search.reranker_score"]), + ) + async for result in results + ] + return docs @classmethod def from_texts( @@ -1629,6 +1653,19 @@ def _results_to_documents( return docs +async def _aresults_to_documents( + results: AsyncSearchItemPaged[Dict], +) -> List[Tuple[Document, float]]: + docs = [ + ( + _result_to_document(result), + float(result["@search.score"]), + ) + async for result in results + ] + return docs + + async def _areorder_results_with_maximal_marginal_relevance( results: SearchItemPaged[Dict], query_embedding: np.ndarray, @@ -1642,7 +1679,7 @@ async def _areorder_results_with_maximal_marginal_relevance( float(result["@search.score"]), result[FIELDS_CONTENT_VECTOR], ) - for result in results + async for result in results ] documents, scores, vectors = map(list, zip(*docs)) diff --git a/libs/community/poetry.lock b/libs/community/poetry.lock index ae0fd20827145..49602d9284f9b 100644 --- a/libs/community/poetry.lock +++ b/libs/community/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -2110,7 +2110,7 @@ files = [ [[package]] name = "langchain" -version = "0.2.12" +version = "0.2.13" description = "Building applications with LLMs through composability" optional = false python-versions = ">=3.8.1,<4.0" @@ -2120,7 +2120,7 @@ develop = true [package.dependencies] aiohttp = "^3.8.3" async-timeout = {version = "^4.0.0", markers = "python_version < \"3.11\""} -langchain-core = "^0.2.27" +langchain-core = "^0.2.30" langchain-text-splitters = "^0.2.0" langsmith = "^0.1.17" numpy = [ @@ -2139,7 +2139,7 @@ url = "../langchain" [[package]] name = "langchain-core" -version = "0.2.27" +version = "0.2.30" description = "Building applications with LLMs through composability" optional = false python-versions = ">=3.8.1,<4.0" @@ -2182,7 +2182,7 @@ url = "../standard-tests" [[package]] name = "langchain-text-splitters" -version = "0.2.2" +version = "0.2.3" description = "LangChain text splitting utilities" optional = false python-versions = ">=3.8.1,<4.0" @@ -2921,6 +2921,7 @@ description = "Nvidia JIT LTO Library" optional = false python-versions = ">=3" files = [ + {file = "nvidia_nvjitlink_cu12-12.6.20-py3-none-manylinux2014_aarch64.whl", hash = "sha256:84fb38465a5bc7c70cbc320cfd0963eb302ee25a5e939e9f512bbba55b6072fb"}, {file = "nvidia_nvjitlink_cu12-12.6.20-py3-none-manylinux2014_x86_64.whl", hash = "sha256:562ab97ea2c23164823b2a89cb328d01d45cb99634b8c65fe7cd60d14562bd79"}, {file = "nvidia_nvjitlink_cu12-12.6.20-py3-none-win_amd64.whl", hash = "sha256:ed3c43a17f37b0c922a919203d2d36cbef24d41cc3e6b625182f8b58203644f6"}, ] @@ -3078,8 +3079,8 @@ files = [ [package.dependencies] numpy = [ {version = ">=1.20.3", markers = "python_version < \"3.10\""}, - {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, + {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -5730,4 +5731,4 @@ test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", [metadata] lock-version = "2.0" python-versions = ">=3.8.1,<4.0" -content-hash = "125c9285d6ca0bd15f21b6b97cf070d70307f27091b7f948dd1644ed4fb7f82b" +content-hash = "f1f889d29086262bcd588d142080a1e5bbb2b80b006a9443f8c10cdf5b12173a" diff --git a/libs/community/pyproject.toml b/libs/community/pyproject.toml index 6e2b41ca3484c..1633f5ab29462 100644 --- a/libs/community/pyproject.toml +++ b/libs/community/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "langchain-community" -version = "0.2.11" +version = "0.2.12" description = "Community contributed LangChain integrations." authors = [] license = "MIT" @@ -30,8 +30,8 @@ ignore-words-list = "momento,collison,ned,foor,reworkd,parth,whats,aapply,mysogy [tool.poetry.dependencies] python = ">=3.8.1,<4.0" -langchain-core = "^0.2.27" -langchain = "^0.2.12" +langchain-core = "^0.2.30" +langchain = "^0.2.13" SQLAlchemy = ">=1.4,<3" requests = "^2" PyYAML = ">=5.3" diff --git a/libs/community/scripts/check_pydantic.sh b/libs/community/scripts/check_pydantic.sh index 4a5cfaf89eecd..1b091d0f4eb8a 100755 --- a/libs/community/scripts/check_pydantic.sh +++ b/libs/community/scripts/check_pydantic.sh @@ -20,7 +20,7 @@ count=$(git grep -E '(@root_validator)|(@validator)|(@pre_init)' -- "*.py" | wc # PRs that increase the current count will not be accepted. # PRs that decrease update the code in the repository # and allow decreasing the count of are welcome! -current_count=337 +current_count=336 if [ "$count" -gt "$current_count" ]; then echo "The PR seems to be introducing new usage of @root_validator and/or @field_validator." diff --git a/libs/community/tests/integration_tests/embeddings/test_zhipuai.py b/libs/community/tests/integration_tests/embeddings/test_zhipuai.py index 3b15bd264404e..894088832a5d2 100644 --- a/libs/community/tests/integration_tests/embeddings/test_zhipuai.py +++ b/libs/community/tests/integration_tests/embeddings/test_zhipuai.py @@ -18,3 +18,14 @@ def test_zhipuai_embedding_query() -> None: embedding = ZhipuAIEmbeddings() # type: ignore[call-arg] res = embedding.embed_query(document) assert len(res) == 1024 # type: ignore[arg-type] + + +def test_zhipuai_embedding_dimensions() -> None: + """Test ZhipuAI Text Embedding for query by assigning dimensions""" + document = "This is a test query." + embedding = ZhipuAIEmbeddings( + model="embedding-3", + dimensions=2048, + ) # type: ignore[call-arg] + res = embedding.embed_query(document) + assert len(res) == 2048 # type: ignore[arg-type] diff --git a/libs/community/tests/integration_tests/llms/test_sparkllm.py b/libs/community/tests/integration_tests/llms/test_sparkllm.py index 8cacea8b540af..8bcd28f4df212 100644 --- a/libs/community/tests/integration_tests/llms/test_sparkllm.py +++ b/libs/community/tests/integration_tests/llms/test_sparkllm.py @@ -18,3 +18,28 @@ def test_generate() -> None: output = llm.generate(["Say foo:"]) assert isinstance(output, LLMResult) assert isinstance(output.generations, list) + + +def test_spark_llm_with_param_alias() -> None: + """Test SparkLLM with parameters alias.""" + llm = SparkLLM( # type: ignore[call-arg] + app_id="your-app-id", + api_key="your-api-key", + api_secret="your-api-secret", + model="Spark4.0 Ultra", + api_url="your-api-url", + timeout=20, + ) + assert llm.spark_app_id == "your-app-id" + assert llm.spark_api_key == "your-api-key" + assert llm.spark_api_secret == "your-api-secret" + assert llm.spark_llm_domain == "Spark4.0 Ultra" + assert llm.spark_api_url == "your-api-url" + assert llm.request_timeout == 20 + + +def test_spark_llm_with_stream() -> None: + """Test SparkLLM with stream.""" + llm = SparkLLM() # type: ignore[call-arg] + for chunk in llm.stream("你好呀"): + assert isinstance(chunk, str) diff --git a/libs/community/tests/unit_tests/retrievers/test_base.py b/libs/community/tests/unit_tests/retrievers/test_base.py index 92d666dbedbe5..e8665ff2028b2 100644 --- a/libs/community/tests/unit_tests/retrievers/test_base.py +++ b/libs/community/tests/unit_tests/retrievers/test_base.py @@ -74,6 +74,11 @@ async def test_fake_retriever_v1_upgrade_async( assert callbacks.retriever_errors == 0 +def test_fake_retriever_v1_standard_params(fake_retriever_v1: BaseRetriever) -> None: + ls_params = fake_retriever_v1._get_ls_params() + assert ls_params == {"ls_retriever_name": "fakeretrieverv1"} + + @pytest.fixture def fake_retriever_v1_with_kwargs() -> BaseRetriever: # Test for things like the Weaviate V1 Retriever. @@ -213,3 +218,8 @@ async def test_fake_retriever_v2_async( await fake_erroring_retriever_v2.ainvoke( "Foo", config={"callbacks": [callbacks]} ) + + +def test_fake_retriever_v2_standard_params(fake_retriever_v2: BaseRetriever) -> None: + ls_params = fake_retriever_v2._get_ls_params() + assert ls_params == {"ls_retriever_name": "fakeretrieverv2"} diff --git a/libs/community/tests/unit_tests/retrievers/test_bedrock.py b/libs/community/tests/unit_tests/retrievers/test_bedrock.py index de954e6e1928f..ff72d193e4ad6 100644 --- a/libs/community/tests/unit_tests/retrievers/test_bedrock.py +++ b/libs/community/tests/unit_tests/retrievers/test_bedrock.py @@ -33,6 +33,11 @@ def test_create_client(amazon_retriever: AmazonKnowledgeBasesRetriever) -> None: amazon_retriever.create_client({}) +def test_standard_params(amazon_retriever: AmazonKnowledgeBasesRetriever) -> None: + ls_params = amazon_retriever._get_ls_params() + assert ls_params == {"ls_retriever_name": "amazonknowledgebases"} + + def test_get_relevant_documents( amazon_retriever: AmazonKnowledgeBasesRetriever, mock_client: MagicMock ) -> None: diff --git a/libs/community/tests/unit_tests/tools/eden_ai/test_tools.py b/libs/community/tests/unit_tests/tools/eden_ai/test_tools.py index f3976ae8c0fcc..f32aec6955242 100644 --- a/libs/community/tests/unit_tests/tools/eden_ai/test_tools.py +++ b/libs/community/tests/unit_tests/tools/eden_ai/test_tools.py @@ -6,7 +6,9 @@ from langchain_community.tools.edenai import EdenAiTextModerationTool tool = EdenAiTextModerationTool( # type: ignore[call-arg] - providers=["openai"], language="en", edenai_api_key="fake_key" + providers=["openai"], + language="en", + edenai_api_key="fake_key", # type: ignore[arg-type] ) diff --git a/libs/community/tests/unit_tests/vectorstores/test_databricks_vector_search.py b/libs/community/tests/unit_tests/vectorstores/test_databricks_vector_search.py index 75c040d126bac..508bf0ac1ba41 100644 --- a/libs/community/tests/unit_tests/vectorstores/test_databricks_vector_search.py +++ b/libs/community/tests/unit_tests/vectorstores/test_databricks_vector_search.py @@ -633,6 +633,28 @@ def test_similarity_score_threshold(index_details: dict, threshold: float) -> No assert len(search_result) == 0 +@pytest.mark.requires("databricks", "databricks.vector_search") +def test_standard_params() -> None: + index = mock_index(DIRECT_ACCESS_INDEX) + vectorstore = default_databricks_vector_search(index) + retriever = vectorstore.as_retriever() + ls_params = retriever._get_ls_params() + assert ls_params == { + "ls_retriever_name": "vectorstore", + "ls_vector_store_provider": "DatabricksVectorSearch", + "ls_embedding_provider": "FakeEmbeddingsWithDimension", + } + + index = mock_index(DELTA_SYNC_INDEX_MANAGED_EMBEDDINGS) + vectorstore = default_databricks_vector_search(index) + retriever = vectorstore.as_retriever() + ls_params = retriever._get_ls_params() + assert ls_params == { + "ls_retriever_name": "vectorstore", + "ls_vector_store_provider": "DatabricksVectorSearch", + } + + @pytest.mark.requires("databricks", "databricks.vector_search") @pytest.mark.parametrize( "index_details", [DELTA_SYNC_INDEX_SELF_MANAGED_EMBEDDINGS, DIRECT_ACCESS_INDEX] diff --git a/libs/community/tests/unit_tests/vectorstores/test_faiss.py b/libs/community/tests/unit_tests/vectorstores/test_faiss.py index 144f5fbb4196f..99b4ba6e69948 100644 --- a/libs/community/tests/unit_tests/vectorstores/test_faiss.py +++ b/libs/community/tests/unit_tests/vectorstores/test_faiss.py @@ -49,6 +49,15 @@ def test_faiss() -> None: output = docsearch.similarity_search("foo", k=1) assert output == [Document(page_content="foo")] + # Retriever standard params + retriever = docsearch.as_retriever() + ls_params = retriever._get_ls_params() + assert ls_params == { + "ls_retriever_name": "vectorstore", + "ls_vector_store_provider": "FAISS", + "ls_embedding_provider": "FakeEmbeddings", + } + @pytest.mark.requires("faiss") async def test_faiss_afrom_texts() -> None: diff --git a/libs/core/langchain_core/embeddings/fake.py b/libs/core/langchain_core/embeddings/fake.py index d9b68c260ef27..e7a31fab1adb5 100644 --- a/libs/core/langchain_core/embeddings/fake.py +++ b/libs/core/langchain_core/embeddings/fake.py @@ -15,14 +15,36 @@ class FakeEmbeddings(Embeddings, BaseModel): Do not use this outside of testing, as it is not a real embedding model. - Example: - + Instantiate: .. code-block:: python from langchain_core.embeddings import FakeEmbeddings + embed = FakeEmbeddings(size=100) + + Embed single text: + .. code-block:: python + + input_text = "The meaning of life is 42" + vector = embed.embed_query(input_text) + print(vector[:3]) + + .. code-block:: python + + [-0.700234640213188, -0.581266257710429, -1.1328482266445354] + + Embed multiple texts: + .. code-block:: python + + input_texts = ["Document 1...", "Document 2..."] + vectors = embed.embed_documents(input_texts) + print(len(vectors)) + # The first 3 coordinates for the first vector + print(vectors[0][:3]) + + .. code-block:: python - fake_embeddings = FakeEmbeddings(size=100) - fake_embeddings.embed_documents(["hello world", "foo bar"]) + 2 + [-0.5670477847544458, -0.31403828652395727, -0.5840547508955257] """ size: int @@ -48,14 +70,36 @@ class DeterministicFakeEmbedding(Embeddings, BaseModel): Do not use this outside of testing, as it is not a real embedding model. - Example: - + Instantiate: .. code-block:: python from langchain_core.embeddings import DeterministicFakeEmbedding + embed = DeterministicFakeEmbedding(size=100) + + Embed single text: + .. code-block:: python + + input_text = "The meaning of life is 42" + vector = embed.embed_query(input_text) + print(vector[:3]) + + .. code-block:: python + + [-0.700234640213188, -0.581266257710429, -1.1328482266445354] + + Embed multiple texts: + .. code-block:: python + + input_texts = ["Document 1...", "Document 2..."] + vectors = embed.embed_documents(input_texts) + print(len(vectors)) + # The first 3 coordinates for the first vector + print(vectors[0][:3]) + + .. code-block:: python - fake_embeddings = DeterministicFakeEmbedding(size=100) - fake_embeddings.embed_documents(["hello world", "foo bar"]) + 2 + [-0.5670477847544458, -0.31403828652395727, -0.5840547508955257] """ size: int diff --git a/libs/core/langchain_core/prompts/chat.py b/libs/core/langchain_core/prompts/chat.py index 2254eb2f01c76..a53f1bb251cd0 100644 --- a/libs/core/langchain_core/prompts/chat.py +++ b/libs/core/langchain_core/prompts/chat.py @@ -1177,7 +1177,7 @@ def from_messages( A message can be represented using the following formats: (1) BaseMessagePromptTemplate, (2) BaseMessage, (3) 2-tuple of (message type, template); e.g., ("human", "{user_input}"), - (4) 2-tuple of (message class, template), (4) a string which is + (4) 2-tuple of (message class, template), (5) a string which is shorthand for ("human", template); e.g., "{user_input}". template_format: format of the template. Defaults to "f-string". diff --git a/libs/core/langchain_core/retrievers.py b/libs/core/langchain_core/retrievers.py index 6bbf34072b723..c4971fd49620a 100644 --- a/libs/core/langchain_core/retrievers.py +++ b/libs/core/langchain_core/retrievers.py @@ -26,6 +26,8 @@ from inspect import signature from typing import TYPE_CHECKING, Any, Dict, List, Optional +from typing_extensions import TypedDict + from langchain_core._api import deprecated from langchain_core.documents import Document from langchain_core.load.dump import dumpd @@ -50,6 +52,19 @@ RetrieverOutputLike = Runnable[Any, RetrieverOutput] +class LangSmithRetrieverParams(TypedDict, total=False): + """LangSmith parameters for tracing.""" + + ls_retriever_name: str + """Retriever name.""" + ls_vector_store_provider: Optional[str] + """Vector store provider.""" + ls_embedding_provider: Optional[str] + """Embedding provider.""" + ls_embedding_model: Optional[str] + """Embedding model.""" + + class BaseRetriever(RunnableSerializable[RetrieverInput, RetrieverOutput], ABC): """Abstract base class for a Document retrieval system. @@ -167,6 +182,19 @@ def __init_subclass__(cls, **kwargs: Any) -> None: len(set(parameters.keys()) - {"self", "query", "run_manager"}) > 0 ) + def _get_ls_params(self, **kwargs: Any) -> LangSmithRetrieverParams: + """Get standard params for tracing.""" + + default_retriever_name = self.get_name() + if default_retriever_name.startswith("Retriever"): + default_retriever_name = default_retriever_name[9:] + elif default_retriever_name.endswith("Retriever"): + default_retriever_name = default_retriever_name[:-9] + default_retriever_name = default_retriever_name.lower() + + ls_params = LangSmithRetrieverParams(ls_retriever_name=default_retriever_name) + return ls_params + def invoke( self, input: str, config: Optional[RunnableConfig] = None, **kwargs: Any ) -> List[Document]: @@ -191,13 +219,17 @@ def invoke( from langchain_core.callbacks.manager import CallbackManager config = ensure_config(config) + inheritable_metadata = { + **(config.get("metadata") or {}), + **self._get_ls_params(**kwargs), + } callback_manager = CallbackManager.configure( config.get("callbacks"), None, verbose=kwargs.get("verbose", False), inheritable_tags=config.get("tags"), local_tags=self.tags, - inheritable_metadata=config.get("metadata"), + inheritable_metadata=inheritable_metadata, local_metadata=self.metadata, ) run_manager = callback_manager.on_retriever_start( @@ -250,13 +282,17 @@ async def ainvoke( from langchain_core.callbacks.manager import AsyncCallbackManager config = ensure_config(config) + inheritable_metadata = { + **(config.get("metadata") or {}), + **self._get_ls_params(**kwargs), + } callback_manager = AsyncCallbackManager.configure( config.get("callbacks"), None, verbose=kwargs.get("verbose", False), inheritable_tags=config.get("tags"), local_tags=self.tags, - inheritable_metadata=config.get("metadata"), + inheritable_metadata=inheritable_metadata, local_metadata=self.metadata, ) run_manager = await callback_manager.on_retriever_start( diff --git a/libs/core/langchain_core/vectorstores/base.py b/libs/core/langchain_core/vectorstores/base.py index f6f3f37772d5d..701b0a4626cc3 100644 --- a/libs/core/langchain_core/vectorstores/base.py +++ b/libs/core/langchain_core/vectorstores/base.py @@ -29,30 +29,23 @@ from typing import ( TYPE_CHECKING, Any, - AsyncIterable, - AsyncIterator, Callable, ClassVar, Collection, Dict, Iterable, - Iterator, List, Optional, Sequence, Tuple, Type, TypeVar, - Union, ) -from langchain_core._api import beta from langchain_core.embeddings import Embeddings from langchain_core.pydantic_v1 import Field, root_validator -from langchain_core.retrievers import BaseRetriever +from langchain_core.retrievers import BaseRetriever, LangSmithRetrieverParams from langchain_core.runnables.config import run_in_executor -from langchain_core.utils.aiter import abatch_iterate -from langchain_core.utils.iter import batch_iterate if TYPE_CHECKING: from langchain_core.callbacks.manager import ( @@ -60,7 +53,6 @@ CallbackManagerForRetrieverRun, ) from langchain_core.documents import Document - from langchain_core.indexing import UpsertResponse logger = logging.getLogger(__name__) @@ -96,7 +88,7 @@ def add_texts( ValueError: If the number of metadatas does not match the number of texts. ValueError: If the number of ids does not match the number of texts. """ - if type(self).upsert != VectorStore.upsert: + if type(self).add_documents != VectorStore.add_documents: # Import document in local scope to avoid circular imports from langchain_core.documents import Document @@ -109,190 +101,19 @@ def add_texts( if metadatas and len(metadatas) != len(texts_): raise ValueError( "The number of metadatas must match the number of texts." - "Got {len(metadatas)} metadatas and {len(texts_)} texts." + f"Got {len(metadatas)} metadatas and {len(texts_)} texts." ) - - if "ids" in kwargs: - ids = kwargs.pop("ids") - if ids and len(ids) != len(texts_): - raise ValueError( - "The number of ids must match the number of texts." - "Got {len(ids)} ids and {len(texts_)} texts." - ) - else: - ids = None - metadatas_ = iter(metadatas) if metadatas else cycle([{}]) - ids_: Iterable[Union[str, None]] = ids if ids is not None else cycle([None]) docs = [ - Document(page_content=text, metadata=metadata_, id=id_) - for text, metadata_, id_ in zip(texts, metadatas_, ids_) + Document(page_content=text, metadata=metadata_) + for text, metadata_ in zip(texts, metadatas_) ] - upsert_response = self.upsert(docs, **kwargs) - return upsert_response["succeeded"] - raise NotImplementedError( - f"`add_texts` has not been implemented for {self.__class__.__name__} " - ) - - # Developer guidelines: - # Do not override streaming_upsert! - @beta(message="Added in 0.2.11. The API is subject to change.") - def streaming_upsert( - self, items: Iterable[Document], /, batch_size: int, **kwargs: Any - ) -> Iterator[UpsertResponse]: - """Upsert documents in a streaming fashion. - - Args: - items: Iterable of Documents to add to the vectorstore. - batch_size: The size of each batch to upsert. - kwargs: Additional keyword arguments. - kwargs should only include parameters that are common to all - documents. (e.g., timeout for indexing, retry policy, etc.) - kwargs should not include ids to avoid ambiguous semantics. - Instead, the ID should be provided as part of the Document object. - - Yields: - UpsertResponse: A response object that contains the list of IDs that were - successfully added or updated in the vectorstore and the list of IDs that - failed to be added or updated. - - .. versionadded:: 0.2.11 - """ - # The default implementation of this method breaks the input into - # batches of size `batch_size` and calls the `upsert` method on each batch. - # Subclasses can override this method to provide a more efficient - # implementation. - for item_batch in batch_iterate(batch_size, items): - yield self.upsert(item_batch, **kwargs) - - # Please note that we've added a new method `upsert` instead of re-using the - # existing `add_documents` method. - # This was done to resolve potential ambiguities around the behavior of **kwargs - # in existing add_documents / add_texts methods which could include per document - # information (e.g., the `ids` parameter). - # Over time the `add_documents` could be denoted as legacy and deprecated - # in favor of the `upsert` method. - @beta(message="Added in 0.2.11. The API is subject to change.") - def upsert(self, items: Sequence[Document], /, **kwargs: Any) -> UpsertResponse: - """Add or update documents in the vectorstore. - - The upsert functionality should utilize the ID field of the Document object - if it is provided. If the ID is not provided, the upsert method is free - to generate an ID for the document. - - When an ID is specified and the document already exists in the vectorstore, - the upsert method should update the document with the new data. If the document - does not exist, the upsert method should add the document to the vectorstore. - Args: - items: Sequence of Documents to add to the vectorstore. - kwargs: Additional keyword arguments. - - Returns: - UpsertResponse: A response object that contains the list of IDs that were - successfully added or updated in the vectorstore and the list of IDs that - failed to be added or updated. - - .. versionadded:: 0.2.11 - """ - # Developer guidelines: - # - # Vectorstores implementations are free to extend `upsert` implementation - # to take in additional data per document. - # - # This data **SHOULD NOT** be part of the **kwargs** parameter, instead - # sub-classes can use a Union type on `documents` to include additional - # supported formats for the input data stream. - # - # For example, - # - # .. code-block:: python - # from typing import TypedDict - # - # class DocumentWithVector(TypedDict): - # document: Document - # vector: List[float] - # - # def upsert( - # self, - # documents: Union[Iterable[Document], Iterable[DocumentWithVector]], - # /, - # **kwargs - # ) -> UpsertResponse: - # \"\"\"Add or update documents in the vectorstore.\"\"\" - # # Implementation should check if documents is an - # # iterable of DocumentWithVector or Document - # pass - # - # Implementations that override upsert should include a new doc-string - # that explains the semantics of upsert and includes in code - # examples of how to insert using the alternate data formats. - - # The implementation does not delegate to the `add_texts` method or - # the `add_documents` method by default since those implementations + return self.add_documents(docs, **kwargs) raise NotImplementedError( - f"upsert has not been implemented for {self.__class__.__name__}" + f"`add_texts` has not been implemented for {self.__class__.__name__} " ) - @beta(message="Added in 0.2.11. The API is subject to change.") - async def astreaming_upsert( - self, - items: AsyncIterable[Document], - /, - batch_size: int, - **kwargs: Any, - ) -> AsyncIterator[UpsertResponse]: - """Upsert documents in a streaming fashion. Async version of streaming_upsert. - - Args: - items: Iterable of Documents to add to the vectorstore. - batch_size: The size of each batch to upsert. - kwargs: Additional keyword arguments. - kwargs should only include parameters that are common to all - documents. (e.g., timeout for indexing, retry policy, etc.) - kwargs should not include ids to avoid ambiguous semantics. - Instead the ID should be provided as part of the Document object. - - Yields: - UpsertResponse: A response object that contains the list of IDs that were - successfully added or updated in the vectorstore and the list of IDs that - failed to be added or updated. - - .. versionadded:: 0.2.11 - """ - async for batch in abatch_iterate(batch_size, items): - yield await self.aupsert(batch, **kwargs) - - @beta(message="Added in 0.2.11. The API is subject to change.") - async def aupsert( - self, items: Sequence[Document], /, **kwargs: Any - ) -> UpsertResponse: - """Add or update documents in the vectorstore. Async version of upsert. - - The upsert functionality should utilize the ID field of the Document object - if it is provided. If the ID is not provided, the upsert method is free - to generate an ID for the document. - - When an ID is specified and the document already exists in the vectorstore, - the upsert method should update the document with the new data. If the document - does not exist, the upsert method should add the document to the vectorstore. - - Args: - items: Sequence of Documents to add to the vectorstore. - kwargs: Additional keyword arguments. - - Returns: - UpsertResponse: A response object that contains the list of IDs that were - successfully added or updated in the vectorstore and the list of IDs that - failed to be added or updated. - - .. versionadded:: 0.2.11 - """ - # Developer guidelines: See guidelines for the `upsert` method. - # The implementation does not delegate to the `add_texts` method or - # the `add_documents` method by default since those implementations - return await run_in_executor(None, self.upsert, items, **kwargs) - @property def embeddings(self) -> Optional[Embeddings]: """Access the query embedding object if available.""" @@ -407,7 +228,7 @@ async def aadd_texts( ValueError: If the number of metadatas does not match the number of texts. ValueError: If the number of ids does not match the number of texts. """ - if type(self).aupsert != VectorStore.aupsert: + if type(self).aadd_documents != VectorStore.aadd_documents: # Import document in local scope to avoid circular imports from langchain_core.documents import Document @@ -420,27 +241,16 @@ async def aadd_texts( if metadatas and len(metadatas) != len(texts_): raise ValueError( "The number of metadatas must match the number of texts." - "Got {len(metadatas)} metadatas and {len(texts_)} texts." + f"Got {len(metadatas)} metadatas and {len(texts_)} texts." ) - - if "ids" in kwargs: - ids = kwargs.pop("ids") - if ids and len(ids) != len(texts_): - raise ValueError( - "The number of ids must match the number of texts." - "Got {len(ids)} ids and {len(texts_)} texts." - ) - else: - ids = None - metadatas_ = iter(metadatas) if metadatas else cycle([{}]) - ids_: Iterable[Union[str, None]] = ids if ids is not None else cycle([None]) + docs = [ - Document(page_content=text, metadata=metadata_, id=id_) - for text, metadata_, id_ in zip(texts, metadatas_, ids_) + Document(page_content=text, metadata=metadata_) + for text, metadata_ in zip(texts, metadatas_) ] - upsert_response = await self.aupsert(docs, **kwargs) - return upsert_response["succeeded"] + + return await self.aadd_documents(docs, **kwargs) return await run_in_executor(None, self.add_texts, texts, metadatas, **kwargs) def add_documents(self, documents: List[Document], **kwargs: Any) -> List[str]: @@ -458,37 +268,22 @@ def add_documents(self, documents: List[Document], **kwargs: Any) -> List[str]: Raises: ValueError: If the number of ids does not match the number of documents. """ - if type(self).upsert != VectorStore.upsert: - from langchain_core.documents import Document - - if "ids" in kwargs: - ids = kwargs.pop("ids") - if ids and len(ids) != len(documents): - raise ValueError( - "The number of ids must match the number of documents. " - "Got {len(ids)} ids and {len(documents)} documents." - ) - - documents_ = [] - - for id_, document in zip(ids, documents): - doc_with_id = Document( - page_content=document.page_content, - metadata=document.metadata, - id=id_, - ) - documents_.append(doc_with_id) - else: - documents_ = documents - - # If upsert has been implemented, we can use it to add documents - return self.upsert(documents_, **kwargs)["succeeded"] - - # Code path that delegates to add_text for backwards compatibility - # TODO: Handle the case where the user doesn't provide ids on the Collection - texts = [doc.page_content for doc in documents] - metadatas = [doc.metadata for doc in documents] - return self.add_texts(texts, metadatas, **kwargs) + if type(self).add_texts != VectorStore.add_texts: + if "ids" not in kwargs: + ids = [doc.id for doc in documents] + + # If there's at least one valid ID, we'll assume that IDs + # should be used. + if any(ids): + kwargs["ids"] = ids + + texts = [doc.page_content for doc in documents] + metadatas = [doc.metadata for doc in documents] + return self.add_texts(texts, metadatas, **kwargs) + raise NotImplementedError( + f"`add_documents` and `add_texts` has not been implemented " + f"for {self.__class__.__name__} " + ) async def aadd_documents( self, documents: List[Document], **kwargs: Any @@ -506,41 +301,21 @@ async def aadd_documents( Raises: ValueError: If the number of IDs does not match the number of documents. """ - # If either upsert or aupsert has been implemented, we delegate to them! - if ( - type(self).aupsert != VectorStore.aupsert - or type(self).upsert != VectorStore.upsert - ): - # If aupsert has been implemented, we can use it to add documents - from langchain_core.documents import Document + # If the async method has been overridden, we'll use that. + if type(self).aadd_texts != VectorStore.aadd_texts: + if "ids" not in kwargs: + ids = [doc.id for doc in documents] + + # If there's at least one valid ID, we'll assume that IDs + # should be used. + if any(ids): + kwargs["ids"] = ids - if "ids" in kwargs: - ids = kwargs.pop("ids") - if ids and len(ids) != len(documents): - raise ValueError( - "The number of ids must match the number of documents." - "Got {len(ids)} ids and {len(documents)} documents." - ) - - documents_ = [] - - for id_, document in zip(ids, documents): - doc_with_id = Document( - page_content=document.page_content, - metadata=document.metadata, - id=id_, - ) - documents_.append(doc_with_id) - else: - documents_ = documents - - # The default implementation of aupsert delegates to upsert. - upsert_response = await self.aupsert(documents_, **kwargs) - return upsert_response["succeeded"] - - texts = [doc.page_content for doc in documents] - metadatas = [doc.metadata for doc in documents] - return await self.aadd_texts(texts, metadatas, **kwargs) + texts = [doc.page_content for doc in documents] + metadatas = [doc.metadata for doc in documents] + return await self.aadd_texts(texts, metadatas, **kwargs) + + return await run_in_executor(None, self.add_documents, documents, **kwargs) def search(self, query: str, search_type: str, **kwargs: Any) -> List[Document]: """Return docs most similar to query using a specified search type. @@ -1239,6 +1014,25 @@ def validate_search_type(cls, values: Dict) -> Dict: ) return values + def _get_ls_params(self, **kwargs: Any) -> LangSmithRetrieverParams: + """Get standard params for tracing.""" + + ls_params = super()._get_ls_params(**kwargs) + ls_params["ls_vector_store_provider"] = self.vectorstore.__class__.__name__ + + if self.vectorstore.embeddings: + ls_params["ls_embedding_provider"] = ( + self.vectorstore.embeddings.__class__.__name__ + ) + elif hasattr(self.vectorstore, "embedding") and isinstance( + self.vectorstore.embedding, Embeddings + ): + ls_params["ls_embedding_provider"] = ( + self.vectorstore.embedding.__class__.__name__ + ) + + return ls_params + def _get_relevant_documents( self, query: str, *, run_manager: CallbackManagerForRetrieverRun ) -> List[Document]: diff --git a/libs/core/langchain_core/vectorstores/in_memory.py b/libs/core/langchain_core/vectorstores/in_memory.py index 3adb1f6888cc5..ca6d7477820cc 100644 --- a/libs/core/langchain_core/vectorstores/in_memory.py +++ b/libs/core/langchain_core/vectorstores/in_memory.py @@ -8,12 +8,14 @@ Any, Callable, Dict, + Iterator, List, Optional, Sequence, Tuple, ) +from langchain_core._api import deprecated from langchain_core.documents import Document from langchain_core.embeddings import Embeddings from langchain_core.load import dumpd, load @@ -56,6 +58,104 @@ def delete(self, ids: Optional[Sequence[str]] = None, **kwargs: Any) -> None: async def adelete(self, ids: Optional[Sequence[str]] = None, **kwargs: Any) -> None: self.delete(ids) + def add_documents( + self, + documents: List[Document], + ids: Optional[List[str]] = None, + **kwargs: Any, + ) -> List[str]: + """Add documents to the store.""" + texts = [doc.page_content for doc in documents] + vectors = self.embedding.embed_documents(texts) + + if ids and len(ids) != len(texts): + raise ValueError( + f"ids must be the same length as texts. " + f"Got {len(ids)} ids and {len(texts)} texts." + ) + + id_iterator: Iterator[Optional[str]] = ( + iter(ids) if ids else iter(doc.id for doc in documents) + ) + + ids_ = [] + + for doc, vector in zip(documents, vectors): + doc_id = next(id_iterator) + doc_id_ = doc_id if doc_id else str(uuid.uuid4()) + ids_.append(doc_id_) + self.store[doc_id_] = { + "id": doc_id_, + "vector": vector, + "text": doc.page_content, + "metadata": doc.metadata, + } + + return ids_ + + async def aadd_documents( + self, documents: List[Document], ids: Optional[List[str]] = None, **kwargs: Any + ) -> List[str]: + """Add documents to the store.""" + texts = [doc.page_content for doc in documents] + vectors = await self.embedding.aembed_documents(texts) + + if ids and len(ids) != len(texts): + raise ValueError( + f"ids must be the same length as texts. " + f"Got {len(ids)} ids and {len(texts)} texts." + ) + + id_iterator: Iterator[Optional[str]] = ( + iter(ids) if ids else iter(doc.id for doc in documents) + ) + ids_: List[str] = [] + + for doc, vector in zip(documents, vectors): + doc_id = next(id_iterator) + doc_id_ = doc_id if doc_id else str(uuid.uuid4()) + ids_.append(doc_id_) + self.store[doc_id_] = { + "id": doc_id_, + "vector": vector, + "text": doc.page_content, + "metadata": doc.metadata, + } + + return ids_ + + def get_by_ids(self, ids: Sequence[str], /) -> List[Document]: + """Get documents by their ids. + + Args: + ids: The ids of the documents to get. + + Returns: + A list of Document objects. + """ + documents = [] + + for doc_id in ids: + doc = self.store.get(doc_id) + if doc: + documents.append( + Document( + id=doc["id"], + page_content=doc["text"], + metadata=doc["metadata"], + ) + ) + return documents + + @deprecated( + alternative="VectorStore.add_documents", + message=( + "This was a beta API that was added in 0.2.11. " + "It'll be removed in 0.3.0." + ), + since="0.2.29", + removal="0.3.0", + ) def upsert(self, items: Sequence[Document], /, **kwargs: Any) -> UpsertResponse: vectors = self.embedding.embed_documents([item.page_content for item in items]) ids = [] @@ -73,6 +173,15 @@ def upsert(self, items: Sequence[Document], /, **kwargs: Any) -> UpsertResponse: "failed": [], } + @deprecated( + alternative="VectorStore.aadd_documents", + message=( + "This was a beta API that was added in 0.2.11. " + "It'll be removed in 0.3.0." + ), + since="0.2.29", + removal="0.3.0", + ) async def aupsert( self, items: Sequence[Document], /, **kwargs: Any ) -> UpsertResponse: @@ -94,29 +203,6 @@ async def aupsert( "failed": [], } - def get_by_ids(self, ids: Sequence[str], /) -> List[Document]: - """Get documents by their ids. - - Args: - ids: The ids of the documents to get. - - Returns: - A list of Document objects. - """ - documents = [] - - for doc_id in ids: - doc = self.store.get(doc_id) - if doc: - documents.append( - Document( - id=doc["id"], - page_content=doc["text"], - metadata=doc["metadata"], - ) - ) - return documents - async def aget_by_ids(self, ids: Sequence[str], /) -> List[Document]: """Async get documents by their ids. diff --git a/libs/core/poetry.lock b/libs/core/poetry.lock index 69fca7d639b6b..e14c1e63b0731 100644 --- a/libs/core/poetry.lock +++ b/libs/core/poetry.lock @@ -157,32 +157,32 @@ typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} [[package]] name = "attrs" -version = "23.2.0" +version = "24.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, - {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, ] [package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] -tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "babel" -version = "2.15.0" +version = "2.16.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" files = [ - {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, - {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, + {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, + {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, ] [package.dependencies] @@ -254,63 +254,78 @@ files = [ [[package]] name = "cffi" -version = "1.16.0" +version = "1.17.0" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ - {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, - {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, - {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, - {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, - {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, - {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, - {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, - {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, - {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, - {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, - {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, - {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, - {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, - {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, - {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, + {file = "cffi-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb"}, + {file = "cffi-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b"}, + {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206"}, + {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa"}, + {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f"}, + {file = "cffi-1.17.0-cp310-cp310-win32.whl", hash = "sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc"}, + {file = "cffi-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2"}, + {file = "cffi-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720"}, + {file = "cffi-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6"}, + {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91"}, + {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8"}, + {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb"}, + {file = "cffi-1.17.0-cp311-cp311-win32.whl", hash = "sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9"}, + {file = "cffi-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0"}, + {file = "cffi-1.17.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc"}, + {file = "cffi-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150"}, + {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a"}, + {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885"}, + {file = "cffi-1.17.0-cp312-cp312-win32.whl", hash = "sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492"}, + {file = "cffi-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2"}, + {file = "cffi-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118"}, + {file = "cffi-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f"}, + {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0"}, + {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4"}, + {file = "cffi-1.17.0-cp313-cp313-win32.whl", hash = "sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a"}, + {file = "cffi-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7"}, + {file = "cffi-1.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c"}, + {file = "cffi-1.17.0-cp38-cp38-win32.whl", hash = "sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499"}, + {file = "cffi-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c"}, + {file = "cffi-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2"}, + {file = "cffi-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932"}, + {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693"}, + {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3"}, + {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4"}, + {file = "cffi-1.17.0-cp39-cp39-win32.whl", hash = "sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb"}, + {file = "cffi-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29"}, + {file = "cffi-1.17.0.tar.gz", hash = "sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76"}, ] [package.dependencies] @@ -445,33 +460,33 @@ test = ["pytest"] [[package]] name = "debugpy" -version = "1.8.2" +version = "1.8.5" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7ee2e1afbf44b138c005e4380097d92532e1001580853a7cb40ed84e0ef1c3d2"}, - {file = "debugpy-1.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f8c3f7c53130a070f0fc845a0f2cee8ed88d220d6b04595897b66605df1edd6"}, - {file = "debugpy-1.8.2-cp310-cp310-win32.whl", hash = "sha256:f179af1e1bd4c88b0b9f0fa153569b24f6b6f3de33f94703336363ae62f4bf47"}, - {file = "debugpy-1.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:0600faef1d0b8d0e85c816b8bb0cb90ed94fc611f308d5fde28cb8b3d2ff0fe3"}, - {file = "debugpy-1.8.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:8a13417ccd5978a642e91fb79b871baded925d4fadd4dfafec1928196292aa0a"}, - {file = "debugpy-1.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acdf39855f65c48ac9667b2801234fc64d46778021efac2de7e50907ab90c634"}, - {file = "debugpy-1.8.2-cp311-cp311-win32.whl", hash = "sha256:2cbd4d9a2fc5e7f583ff9bf11f3b7d78dfda8401e8bb6856ad1ed190be4281ad"}, - {file = "debugpy-1.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:d3408fddd76414034c02880e891ea434e9a9cf3a69842098ef92f6e809d09afa"}, - {file = "debugpy-1.8.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:5d3ccd39e4021f2eb86b8d748a96c766058b39443c1f18b2dc52c10ac2757835"}, - {file = "debugpy-1.8.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62658aefe289598680193ff655ff3940e2a601765259b123dc7f89c0239b8cd3"}, - {file = "debugpy-1.8.2-cp312-cp312-win32.whl", hash = "sha256:bd11fe35d6fd3431f1546d94121322c0ac572e1bfb1f6be0e9b8655fb4ea941e"}, - {file = "debugpy-1.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:15bc2f4b0f5e99bf86c162c91a74c0631dbd9cef3c6a1d1329c946586255e859"}, - {file = "debugpy-1.8.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:5a019d4574afedc6ead1daa22736c530712465c0c4cd44f820d803d937531b2d"}, - {file = "debugpy-1.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40f062d6877d2e45b112c0bbade9a17aac507445fd638922b1a5434df34aed02"}, - {file = "debugpy-1.8.2-cp38-cp38-win32.whl", hash = "sha256:c78ba1680f1015c0ca7115671fe347b28b446081dada3fedf54138f44e4ba031"}, - {file = "debugpy-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:cf327316ae0c0e7dd81eb92d24ba8b5e88bb4d1b585b5c0d32929274a66a5210"}, - {file = "debugpy-1.8.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1523bc551e28e15147815d1397afc150ac99dbd3a8e64641d53425dba57b0ff9"}, - {file = "debugpy-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e24ccb0cd6f8bfaec68d577cb49e9c680621c336f347479b3fce060ba7c09ec1"}, - {file = "debugpy-1.8.2-cp39-cp39-win32.whl", hash = "sha256:7f8d57a98c5a486c5c7824bc0b9f2f11189d08d73635c326abef268f83950326"}, - {file = "debugpy-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:16c8dcab02617b75697a0a925a62943e26a0330da076e2a10437edd9f0bf3755"}, - {file = "debugpy-1.8.2-py2.py3-none-any.whl", hash = "sha256:16e16df3a98a35c63c3ab1e4d19be4cbc7fdda92d9ddc059294f18910928e0ca"}, - {file = "debugpy-1.8.2.zip", hash = "sha256:95378ed08ed2089221896b9b3a8d021e642c24edc8fef20e5d4342ca8be65c00"}, + {file = "debugpy-1.8.5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:7e4d594367d6407a120b76bdaa03886e9eb652c05ba7f87e37418426ad2079f7"}, + {file = "debugpy-1.8.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4413b7a3ede757dc33a273a17d685ea2b0c09dbd312cc03f5534a0fd4d40750a"}, + {file = "debugpy-1.8.5-cp310-cp310-win32.whl", hash = "sha256:dd3811bd63632bb25eda6bd73bea8e0521794cda02be41fa3160eb26fc29e7ed"}, + {file = "debugpy-1.8.5-cp310-cp310-win_amd64.whl", hash = "sha256:b78c1250441ce893cb5035dd6f5fc12db968cc07f91cc06996b2087f7cefdd8e"}, + {file = "debugpy-1.8.5-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:606bccba19f7188b6ea9579c8a4f5a5364ecd0bf5a0659c8a5d0e10dcee3032a"}, + {file = "debugpy-1.8.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db9fb642938a7a609a6c865c32ecd0d795d56c1aaa7a7a5722d77855d5e77f2b"}, + {file = "debugpy-1.8.5-cp311-cp311-win32.whl", hash = "sha256:4fbb3b39ae1aa3e5ad578f37a48a7a303dad9a3d018d369bc9ec629c1cfa7408"}, + {file = "debugpy-1.8.5-cp311-cp311-win_amd64.whl", hash = "sha256:345d6a0206e81eb68b1493ce2fbffd57c3088e2ce4b46592077a943d2b968ca3"}, + {file = "debugpy-1.8.5-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:5b5c770977c8ec6c40c60d6f58cacc7f7fe5a45960363d6974ddb9b62dbee156"}, + {file = "debugpy-1.8.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0a65b00b7cdd2ee0c2cf4c7335fef31e15f1b7056c7fdbce9e90193e1a8c8cb"}, + {file = "debugpy-1.8.5-cp312-cp312-win32.whl", hash = "sha256:c9f7c15ea1da18d2fcc2709e9f3d6de98b69a5b0fff1807fb80bc55f906691f7"}, + {file = "debugpy-1.8.5-cp312-cp312-win_amd64.whl", hash = "sha256:28ced650c974aaf179231668a293ecd5c63c0a671ae6d56b8795ecc5d2f48d3c"}, + {file = "debugpy-1.8.5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:3df6692351172a42af7558daa5019651f898fc67450bf091335aa8a18fbf6f3a"}, + {file = "debugpy-1.8.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd04a73eb2769eb0bfe43f5bfde1215c5923d6924b9b90f94d15f207a402226"}, + {file = "debugpy-1.8.5-cp38-cp38-win32.whl", hash = "sha256:8f913ee8e9fcf9d38a751f56e6de12a297ae7832749d35de26d960f14280750a"}, + {file = "debugpy-1.8.5-cp38-cp38-win_amd64.whl", hash = "sha256:a697beca97dad3780b89a7fb525d5e79f33821a8bc0c06faf1f1289e549743cf"}, + {file = "debugpy-1.8.5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:0a1029a2869d01cb777216af8c53cda0476875ef02a2b6ff8b2f2c9a4b04176c"}, + {file = "debugpy-1.8.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84c276489e141ed0b93b0af648eef891546143d6a48f610945416453a8ad406"}, + {file = "debugpy-1.8.5-cp39-cp39-win32.whl", hash = "sha256:ad84b7cde7fd96cf6eea34ff6c4a1b7887e0fe2ea46e099e53234856f9d99a34"}, + {file = "debugpy-1.8.5-cp39-cp39-win_amd64.whl", hash = "sha256:7b0fe36ed9d26cb6836b0a51453653f8f2e347ba7348f2bbfe76bfeb670bfb1c"}, + {file = "debugpy-1.8.5-py2.py3-none-any.whl", hash = "sha256:55919dce65b471eff25901acf82d328bbd5b833526b6c1364bd5133754777a44"}, + {file = "debugpy-1.8.5.zip", hash = "sha256:b2112cfeb34b4507399d298fe7023a16656fc553ed5246536060ca7bd0e668d0"}, ] [[package]] @@ -1217,7 +1232,7 @@ url = "../standard-tests" [[package]] name = "langchain-text-splitters" -version = "0.2.2" +version = "0.2.3" description = "LangChain text splitting utilities" optional = false python-versions = ">=3.8.1,<4.0" @@ -1233,13 +1248,13 @@ url = "../text-splitters" [[package]] name = "langsmith" -version = "0.1.94" +version = "0.1.99" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.94-py3-none-any.whl", hash = "sha256:0d01212086d58699f75814117b026784218042f7859877ce08a248a98d84aa8d"}, - {file = "langsmith-0.1.94.tar.gz", hash = "sha256:e44afcdc9eee6f238f6a87a02bba83111bd5fad376d881ae299834e06d39d712"}, + {file = "langsmith-0.1.99-py3-none-any.whl", hash = "sha256:ef8d1d74a2674c514aa429b0171a9fbb661207dc3835142cca0e8f1bf97b26b0"}, + {file = "langsmith-0.1.99.tar.gz", hash = "sha256:b5c6a1f158abda61600a4a445081ee848b4a28b758d91f2793dc02aeffafcaf1"}, ] [package.dependencies] @@ -1618,62 +1633,68 @@ files = [ [[package]] name = "orjson" -version = "3.10.6" +version = "3.10.7" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.6-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:fb0ee33124db6eaa517d00890fc1a55c3bfe1cf78ba4a8899d71a06f2d6ff5c7"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c1c4b53b24a4c06547ce43e5fee6ec4e0d8fe2d597f4647fc033fd205707365"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eadc8fd310edb4bdbd333374f2c8fec6794bbbae99b592f448d8214a5e4050c0"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61272a5aec2b2661f4fa2b37c907ce9701e821b2c1285d5c3ab0207ebd358d38"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57985ee7e91d6214c837936dc1608f40f330a6b88bb13f5a57ce5257807da143"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:633a3b31d9d7c9f02d49c4ab4d0a86065c4a6f6adc297d63d272e043472acab5"}, - {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1c680b269d33ec444afe2bdc647c9eb73166fa47a16d9a75ee56a374f4a45f43"}, - {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f759503a97a6ace19e55461395ab0d618b5a117e8d0fbb20e70cfd68a47327f2"}, - {file = "orjson-3.10.6-cp310-none-win32.whl", hash = "sha256:95a0cce17f969fb5391762e5719575217bd10ac5a189d1979442ee54456393f3"}, - {file = "orjson-3.10.6-cp310-none-win_amd64.whl", hash = "sha256:df25d9271270ba2133cc88ee83c318372bdc0f2cd6f32e7a450809a111efc45c"}, - {file = "orjson-3.10.6-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b1ec490e10d2a77c345def52599311849fc063ae0e67cf4f84528073152bb2ba"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d43d3feb8f19d07e9f01e5b9be4f28801cf7c60d0fa0d279951b18fae1932b"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac3045267e98fe749408eee1593a142e02357c5c99be0802185ef2170086a863"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c27bc6a28ae95923350ab382c57113abd38f3928af3c80be6f2ba7eb8d8db0b0"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d27456491ca79532d11e507cadca37fb8c9324a3976294f68fb1eff2dc6ced5a"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05ac3d3916023745aa3b3b388e91b9166be1ca02b7c7e41045da6d12985685f0"}, - {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1335d4ef59ab85cab66fe73fd7a4e881c298ee7f63ede918b7faa1b27cbe5212"}, - {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4bbc6d0af24c1575edc79994c20e1b29e6fb3c6a570371306db0993ecf144dc5"}, - {file = "orjson-3.10.6-cp311-none-win32.whl", hash = "sha256:450e39ab1f7694465060a0550b3f6d328d20297bf2e06aa947b97c21e5241fbd"}, - {file = "orjson-3.10.6-cp311-none-win_amd64.whl", hash = "sha256:227df19441372610b20e05bdb906e1742ec2ad7a66ac8350dcfd29a63014a83b"}, - {file = "orjson-3.10.6-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ea2977b21f8d5d9b758bb3f344a75e55ca78e3ff85595d248eee813ae23ecdfb"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6f3d167d13a16ed263b52dbfedff52c962bfd3d270b46b7518365bcc2121eed"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f710f346e4c44a4e8bdf23daa974faede58f83334289df80bc9cd12fe82573c7"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7275664f84e027dcb1ad5200b8b18373e9c669b2a9ec33d410c40f5ccf4b257e"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0943e4c701196b23c240b3d10ed8ecd674f03089198cf503105b474a4f77f21f"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:446dee5a491b5bc7d8f825d80d9637e7af43f86a331207b9c9610e2f93fee22a"}, - {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:64c81456d2a050d380786413786b057983892db105516639cb5d3ee3c7fd5148"}, - {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:960db0e31c4e52fa0fc3ecbaea5b2d3b58f379e32a95ae6b0ebeaa25b93dfd34"}, - {file = "orjson-3.10.6-cp312-none-win32.whl", hash = "sha256:a6ea7afb5b30b2317e0bee03c8d34c8181bc5a36f2afd4d0952f378972c4efd5"}, - {file = "orjson-3.10.6-cp312-none-win_amd64.whl", hash = "sha256:874ce88264b7e655dde4aeaacdc8fd772a7962faadfb41abe63e2a4861abc3dc"}, - {file = "orjson-3.10.6-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:66680eae4c4e7fc193d91cfc1353ad6d01b4801ae9b5314f17e11ba55e934183"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caff75b425db5ef8e8f23af93c80f072f97b4fb3afd4af44482905c9f588da28"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3722fddb821b6036fd2a3c814f6bd9b57a89dc6337b9924ecd614ebce3271394"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2c116072a8533f2fec435fde4d134610f806bdac20188c7bd2081f3e9e0133f"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6eeb13218c8cf34c61912e9df2de2853f1d009de0e46ea09ccdf3d757896af0a"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:965a916373382674e323c957d560b953d81d7a8603fbeee26f7b8248638bd48b"}, - {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:03c95484d53ed8e479cade8628c9cea00fd9d67f5554764a1110e0d5aa2de96e"}, - {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e060748a04cccf1e0a6f2358dffea9c080b849a4a68c28b1b907f272b5127e9b"}, - {file = "orjson-3.10.6-cp38-none-win32.whl", hash = "sha256:738dbe3ef909c4b019d69afc19caf6b5ed0e2f1c786b5d6215fbb7539246e4c6"}, - {file = "orjson-3.10.6-cp38-none-win_amd64.whl", hash = "sha256:d40f839dddf6a7d77114fe6b8a70218556408c71d4d6e29413bb5f150a692ff7"}, - {file = "orjson-3.10.6-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:697a35a083c4f834807a6232b3e62c8b280f7a44ad0b759fd4dce748951e70db"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd502f96bf5ea9a61cbc0b2b5900d0dd68aa0da197179042bdd2be67e51a1e4b"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f215789fb1667cdc874c1b8af6a84dc939fd802bf293a8334fce185c79cd359b"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2debd8ddce948a8c0938c8c93ade191d2f4ba4649a54302a7da905a81f00b56"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5410111d7b6681d4b0d65e0f58a13be588d01b473822483f77f513c7f93bd3b2"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb1f28a137337fdc18384079fa5726810681055b32b92253fa15ae5656e1dddb"}, - {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bf2fbbce5fe7cd1aa177ea3eab2b8e6a6bc6e8592e4279ed3db2d62e57c0e1b2"}, - {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:79b9b9e33bd4c517445a62b90ca0cc279b0f1f3970655c3df9e608bc3f91741a"}, - {file = "orjson-3.10.6-cp39-none-win32.whl", hash = "sha256:30b0a09a2014e621b1adf66a4f705f0809358350a757508ee80209b2d8dae219"}, - {file = "orjson-3.10.6-cp39-none-win_amd64.whl", hash = "sha256:49e3bc615652617d463069f91b867a4458114c5b104e13b7ae6872e5f79d0844"}, - {file = "orjson-3.10.6.tar.gz", hash = "sha256:e54b63d0a7c6c54a5f5f726bc93a2078111ef060fec4ecbf34c5db800ca3b3a7"}, + {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, + {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, + {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, + {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, + {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, + {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, + {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, + {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, + {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, + {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, + {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, + {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, + {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, + {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, + {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, + {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, + {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, + {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, + {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, + {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, + {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, + {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, + {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, + {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, + {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, + {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, + {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, + {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, + {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, + {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, + {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, + {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, ] [[package]] @@ -2202,159 +2223,182 @@ files = [ [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.2" description = "YAML parser and emitter for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] name = "pyzmq" -version = "26.0.3" +version = "26.1.0" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.7" files = [ - {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:44dd6fc3034f1eaa72ece33588867df9e006a7303725a12d64c3dff92330f625"}, - {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acb704195a71ac5ea5ecf2811c9ee19ecdc62b91878528302dd0be1b9451cc90"}, - {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbb9c997932473a27afa93954bb77a9f9b786b4ccf718d903f35da3232317de"}, - {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bcb34f869d431799c3ee7d516554797f7760cb2198ecaa89c3f176f72d062be"}, - {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ece17ec5f20d7d9b442e5174ae9f020365d01ba7c112205a4d59cf19dc38ee"}, - {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ba6e5e6588e49139a0979d03a7deb9c734bde647b9a8808f26acf9c547cab1bf"}, - {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3bf8b000a4e2967e6dfdd8656cd0757d18c7e5ce3d16339e550bd462f4857e59"}, - {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2136f64fbb86451dbbf70223635a468272dd20075f988a102bf8a3f194a411dc"}, - {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e8918973fbd34e7814f59143c5f600ecd38b8038161239fd1a3d33d5817a38b8"}, - {file = "pyzmq-26.0.3-cp310-cp310-win32.whl", hash = "sha256:0aaf982e68a7ac284377d051c742610220fd06d330dcd4c4dbb4cdd77c22a537"}, - {file = "pyzmq-26.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:f1a9b7d00fdf60b4039f4455afd031fe85ee8305b019334b72dcf73c567edc47"}, - {file = "pyzmq-26.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:80b12f25d805a919d53efc0a5ad7c0c0326f13b4eae981a5d7b7cc343318ebb7"}, - {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:a72a84570f84c374b4c287183debc776dc319d3e8ce6b6a0041ce2e400de3f32"}, - {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ca684ee649b55fd8f378127ac8462fb6c85f251c2fb027eb3c887e8ee347bcd"}, - {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e222562dc0f38571c8b1ffdae9d7adb866363134299264a1958d077800b193b7"}, - {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f17cde1db0754c35a91ac00b22b25c11da6eec5746431d6e5092f0cd31a3fea9"}, - {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7c0c0b3244bb2275abe255d4a30c050d541c6cb18b870975553f1fb6f37527"}, - {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac97a21de3712afe6a6c071abfad40a6224fd14fa6ff0ff8d0c6e6cd4e2f807a"}, - {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:88b88282e55fa39dd556d7fc04160bcf39dea015f78e0cecec8ff4f06c1fc2b5"}, - {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:72b67f966b57dbd18dcc7efbc1c7fc9f5f983e572db1877081f075004614fcdd"}, - {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83"}, - {file = "pyzmq-26.0.3-cp311-cp311-win32.whl", hash = "sha256:eed56b6a39216d31ff8cd2f1d048b5bf1700e4b32a01b14379c3b6dde9ce3aa3"}, - {file = "pyzmq-26.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:3191d312c73e3cfd0f0afdf51df8405aafeb0bad71e7ed8f68b24b63c4f36500"}, - {file = "pyzmq-26.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:b6907da3017ef55139cf0e417c5123a84c7332520e73a6902ff1f79046cd3b94"}, - {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:068ca17214038ae986d68f4a7021f97e187ed278ab6dccb79f837d765a54d753"}, - {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7821d44fe07335bea256b9f1f41474a642ca55fa671dfd9f00af8d68a920c2d4"}, - {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eeb438a26d87c123bb318e5f2b3d86a36060b01f22fbdffd8cf247d52f7c9a2b"}, - {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:69ea9d6d9baa25a4dc9cef5e2b77b8537827b122214f210dd925132e34ae9b12"}, - {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7daa3e1369355766dea11f1d8ef829905c3b9da886ea3152788dc25ee6079e02"}, - {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6ca7a9a06b52d0e38ccf6bca1aeff7be178917893f3883f37b75589d42c4ac20"}, - {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1b7d0e124948daa4d9686d421ef5087c0516bc6179fdcf8828b8444f8e461a77"}, - {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e746524418b70f38550f2190eeee834db8850088c834d4c8406fbb9bc1ae10b2"}, - {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6b3146f9ae6af82c47a5282ac8803523d381b3b21caeae0327ed2f7ecb718798"}, - {file = "pyzmq-26.0.3-cp312-cp312-win32.whl", hash = "sha256:2b291d1230845871c00c8462c50565a9cd6026fe1228e77ca934470bb7d70ea0"}, - {file = "pyzmq-26.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:926838a535c2c1ea21c903f909a9a54e675c2126728c21381a94ddf37c3cbddf"}, - {file = "pyzmq-26.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:5bf6c237f8c681dfb91b17f8435b2735951f0d1fad10cc5dfd96db110243370b"}, - {file = "pyzmq-26.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c0991f5a96a8e620f7691e61178cd8f457b49e17b7d9cfa2067e2a0a89fc1d5"}, - {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dbf012d8fcb9f2cf0643b65df3b355fdd74fc0035d70bb5c845e9e30a3a4654b"}, - {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:01fbfbeb8249a68d257f601deb50c70c929dc2dfe683b754659569e502fbd3aa"}, - {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c8eb19abe87029c18f226d42b8a2c9efdd139d08f8bf6e085dd9075446db450"}, - {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5344b896e79800af86ad643408ca9aa303a017f6ebff8cee5a3163c1e9aec987"}, - {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:204e0f176fd1d067671157d049466869b3ae1fc51e354708b0dc41cf94e23a3a"}, - {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a42db008d58530efa3b881eeee4991146de0b790e095f7ae43ba5cc612decbc5"}, - {file = "pyzmq-26.0.3-cp37-cp37m-win32.whl", hash = "sha256:8d7a498671ca87e32b54cb47c82a92b40130a26c5197d392720a1bce1b3c77cf"}, - {file = "pyzmq-26.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:3b4032a96410bdc760061b14ed6a33613ffb7f702181ba999df5d16fb96ba16a"}, - {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2cc4e280098c1b192c42a849de8de2c8e0f3a84086a76ec5b07bfee29bda7d18"}, - {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bde86a2ed3ce587fa2b207424ce15b9a83a9fa14422dcc1c5356a13aed3df9d"}, - {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:34106f68e20e6ff253c9f596ea50397dbd8699828d55e8fa18bd4323d8d966e6"}, - {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ebbbd0e728af5db9b04e56389e2299a57ea8b9dd15c9759153ee2455b32be6ad"}, - {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6b1d1c631e5940cac5a0b22c5379c86e8df6a4ec277c7a856b714021ab6cfad"}, - {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e891ce81edd463b3b4c3b885c5603c00141151dd9c6936d98a680c8c72fe5c67"}, - {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9b273ecfbc590a1b98f014ae41e5cf723932f3b53ba9367cfb676f838038b32c"}, - {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b32bff85fb02a75ea0b68f21e2412255b5731f3f389ed9aecc13a6752f58ac97"}, - {file = "pyzmq-26.0.3-cp38-cp38-win32.whl", hash = "sha256:f6c21c00478a7bea93caaaef9e7629145d4153b15a8653e8bb4609d4bc70dbfc"}, - {file = "pyzmq-26.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:3401613148d93ef0fd9aabdbddb212de3db7a4475367f49f590c837355343972"}, - {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:2ed8357f4c6e0daa4f3baf31832df8a33334e0fe5b020a61bc8b345a3db7a606"}, - {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1c8f2a2ca45292084c75bb6d3a25545cff0ed931ed228d3a1810ae3758f975f"}, - {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b63731993cdddcc8e087c64e9cf003f909262b359110070183d7f3025d1c56b5"}, - {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3cd31f859b662ac5d7f4226ec7d8bd60384fa037fc02aee6ff0b53ba29a3ba8"}, - {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:115f8359402fa527cf47708d6f8a0f8234f0e9ca0cab7c18c9c189c194dbf620"}, - {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:715bdf952b9533ba13dfcf1f431a8f49e63cecc31d91d007bc1deb914f47d0e4"}, - {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e1258c639e00bf5e8a522fec6c3eaa3e30cf1c23a2f21a586be7e04d50c9acab"}, - {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:15c59e780be8f30a60816a9adab900c12a58d79c1ac742b4a8df044ab2a6d920"}, - {file = "pyzmq-26.0.3-cp39-cp39-win32.whl", hash = "sha256:d0cdde3c78d8ab5b46595054e5def32a755fc028685add5ddc7403e9f6de9879"}, - {file = "pyzmq-26.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:ce828058d482ef860746bf532822842e0ff484e27f540ef5c813d516dd8896d2"}, - {file = "pyzmq-26.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:788f15721c64109cf720791714dc14afd0f449d63f3a5487724f024345067381"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c18645ef6294d99b256806e34653e86236eb266278c8ec8112622b61db255de"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e6bc96ebe49604df3ec2c6389cc3876cabe475e6bfc84ced1bf4e630662cb35"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:971e8990c5cc4ddcff26e149398fc7b0f6a042306e82500f5e8db3b10ce69f84"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8416c23161abd94cc7da80c734ad7c9f5dbebdadfdaa77dad78244457448223"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:082a2988364b60bb5de809373098361cf1dbb239623e39e46cb18bc035ed9c0c"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d57dfbf9737763b3a60d26e6800e02e04284926329aee8fb01049635e957fe81"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77a85dca4c2430ac04dc2a2185c2deb3858a34fe7f403d0a946fa56970cf60a1"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c82a6d952a1d555bf4be42b6532927d2a5686dd3c3e280e5f63225ab47ac1f5"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4496b1282c70c442809fc1b151977c3d967bfb33e4e17cedbf226d97de18f709"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:e4946d6bdb7ba972dfda282f9127e5756d4f299028b1566d1245fa0d438847e6"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03c0ae165e700364b266876d712acb1ac02693acd920afa67da2ebb91a0b3c09"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3e3070e680f79887d60feeda051a58d0ac36622e1759f305a41059eff62c6da7"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6ca08b840fe95d1c2bd9ab92dac5685f949fc6f9ae820ec16193e5ddf603c3b2"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e76654e9dbfb835b3518f9938e565c7806976c07b37c33526b574cc1a1050480"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:871587bdadd1075b112e697173e946a07d722459d20716ceb3d1bd6c64bd08ce"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d0a2d1bd63a4ad79483049b26514e70fa618ce6115220da9efdff63688808b17"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0270b49b6847f0d106d64b5086e9ad5dc8a902413b5dbbb15d12b60f9c1747a4"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703c60b9910488d3d0954ca585c34f541e506a091a41930e663a098d3b794c67"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74423631b6be371edfbf7eabb02ab995c2563fee60a80a30829176842e71722a"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4adfbb5451196842a88fda3612e2c0414134874bffb1c2ce83ab4242ec9e027d"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3516119f4f9b8671083a70b6afaa0a070f5683e431ab3dc26e9215620d7ca1ad"}, - {file = "pyzmq-26.0.3.tar.gz", hash = "sha256:dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a"}, + {file = "pyzmq-26.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:263cf1e36862310bf5becfbc488e18d5d698941858860c5a8c079d1511b3b18e"}, + {file = "pyzmq-26.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d5c8b17f6e8f29138678834cf8518049e740385eb2dbf736e8f07fc6587ec682"}, + {file = "pyzmq-26.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75a95c2358fcfdef3374cb8baf57f1064d73246d55e41683aaffb6cfe6862917"}, + {file = "pyzmq-26.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f99de52b8fbdb2a8f5301ae5fc0f9e6b3ba30d1d5fc0421956967edcc6914242"}, + {file = "pyzmq-26.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bcbfbab4e1895d58ab7da1b5ce9a327764f0366911ba5b95406c9104bceacb0"}, + {file = "pyzmq-26.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:77ce6a332c7e362cb59b63f5edf730e83590d0ab4e59c2aa5bd79419a42e3449"}, + {file = "pyzmq-26.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ba0a31d00e8616149a5ab440d058ec2da621e05d744914774c4dde6837e1f545"}, + {file = "pyzmq-26.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8b88641384e84a258b740801cd4dbc45c75f148ee674bec3149999adda4a8598"}, + {file = "pyzmq-26.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2fa76ebcebe555cce90f16246edc3ad83ab65bb7b3d4ce408cf6bc67740c4f88"}, + {file = "pyzmq-26.1.0-cp310-cp310-win32.whl", hash = "sha256:fbf558551cf415586e91160d69ca6416f3fce0b86175b64e4293644a7416b81b"}, + {file = "pyzmq-26.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:a7b8aab50e5a288c9724d260feae25eda69582be84e97c012c80e1a5e7e03fb2"}, + {file = "pyzmq-26.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:08f74904cb066e1178c1ec706dfdb5c6c680cd7a8ed9efebeac923d84c1f13b1"}, + {file = "pyzmq-26.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:46d6800b45015f96b9d92ece229d92f2aef137d82906577d55fadeb9cf5fcb71"}, + {file = "pyzmq-26.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5bc2431167adc50ba42ea3e5e5f5cd70d93e18ab7b2f95e724dd8e1bd2c38120"}, + {file = "pyzmq-26.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3bb34bebaa1b78e562931a1687ff663d298013f78f972a534f36c523311a84d"}, + {file = "pyzmq-26.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd3f6329340cef1c7ba9611bd038f2d523cea79f09f9c8f6b0553caba59ec562"}, + {file = "pyzmq-26.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:471880c4c14e5a056a96cd224f5e71211997d40b4bf5e9fdded55dafab1f98f2"}, + {file = "pyzmq-26.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ce6f2b66799971cbae5d6547acefa7231458289e0ad481d0be0740535da38d8b"}, + {file = "pyzmq-26.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0a1f6ea5b1d6cdbb8cfa0536f0d470f12b4b41ad83625012e575f0e3ecfe97f0"}, + {file = "pyzmq-26.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b45e6445ac95ecb7d728604bae6538f40ccf4449b132b5428c09918523abc96d"}, + {file = "pyzmq-26.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:94c4262626424683feea0f3c34951d39d49d354722db2745c42aa6bb50ecd93b"}, + {file = "pyzmq-26.1.0-cp311-cp311-win32.whl", hash = "sha256:a0f0ab9df66eb34d58205913f4540e2ad17a175b05d81b0b7197bc57d000e829"}, + {file = "pyzmq-26.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8efb782f5a6c450589dbab4cb0f66f3a9026286333fe8f3a084399149af52f29"}, + {file = "pyzmq-26.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f133d05aaf623519f45e16ab77526e1e70d4e1308e084c2fb4cedb1a0c764bbb"}, + {file = "pyzmq-26.1.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:3d3146b1c3dcc8a1539e7cc094700b2be1e605a76f7c8f0979b6d3bde5ad4072"}, + {file = "pyzmq-26.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d9270fbf038bf34ffca4855bcda6e082e2c7f906b9eb8d9a8ce82691166060f7"}, + {file = "pyzmq-26.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:995301f6740a421afc863a713fe62c0aaf564708d4aa057dfdf0f0f56525294b"}, + {file = "pyzmq-26.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7eca8b89e56fb8c6c26dd3e09bd41b24789022acf1cf13358e96f1cafd8cae3"}, + {file = "pyzmq-26.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d4feb2e83dfe9ace6374a847e98ee9d1246ebadcc0cb765482e272c34e5820"}, + {file = "pyzmq-26.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d4fafc2eb5d83f4647331267808c7e0c5722c25a729a614dc2b90479cafa78bd"}, + {file = "pyzmq-26.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:58c33dc0e185dd97a9ac0288b3188d1be12b756eda67490e6ed6a75cf9491d79"}, + {file = "pyzmq-26.1.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:68a0a1d83d33d8367ddddb3e6bb4afbb0f92bd1dac2c72cd5e5ddc86bdafd3eb"}, + {file = "pyzmq-26.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2ae7c57e22ad881af78075e0cea10a4c778e67234adc65c404391b417a4dda83"}, + {file = "pyzmq-26.1.0-cp312-cp312-win32.whl", hash = "sha256:347e84fc88cc4cb646597f6d3a7ea0998f887ee8dc31c08587e9c3fd7b5ccef3"}, + {file = "pyzmq-26.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:9f136a6e964830230912f75b5a116a21fe8e34128dcfd82285aa0ef07cb2c7bd"}, + {file = "pyzmq-26.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4b7a989c8f5a72ab1b2bbfa58105578753ae77b71ba33e7383a31ff75a504c4"}, + {file = "pyzmq-26.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d416f2088ac8f12daacffbc2e8918ef4d6be8568e9d7155c83b7cebed49d2322"}, + {file = "pyzmq-26.1.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:ecb6c88d7946166d783a635efc89f9a1ff11c33d680a20df9657b6902a1d133b"}, + {file = "pyzmq-26.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:471312a7375571857a089342beccc1a63584315188560c7c0da7e0a23afd8a5c"}, + {file = "pyzmq-26.1.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e6cea102ffa16b737d11932c426f1dc14b5938cf7bc12e17269559c458ac334"}, + {file = "pyzmq-26.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec7248673ffc7104b54e4957cee38b2f3075a13442348c8d651777bf41aa45ee"}, + {file = "pyzmq-26.1.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:0614aed6f87d550b5cecb03d795f4ddbb1544b78d02a4bd5eecf644ec98a39f6"}, + {file = "pyzmq-26.1.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:e8746ce968be22a8a1801bf4a23e565f9687088580c3ed07af5846580dd97f76"}, + {file = "pyzmq-26.1.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:7688653574392d2eaeef75ddcd0b2de5b232d8730af29af56c5adf1df9ef8d6f"}, + {file = "pyzmq-26.1.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:8d4dac7d97f15c653a5fedcafa82626bd6cee1450ccdaf84ffed7ea14f2b07a4"}, + {file = "pyzmq-26.1.0-cp313-cp313-win32.whl", hash = "sha256:ccb42ca0a4a46232d716779421bbebbcad23c08d37c980f02cc3a6bd115ad277"}, + {file = "pyzmq-26.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e1e5d0a25aea8b691a00d6b54b28ac514c8cc0d8646d05f7ca6cb64b97358250"}, + {file = "pyzmq-26.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:fc82269d24860cfa859b676d18850cbb8e312dcd7eada09e7d5b007e2f3d9eb1"}, + {file = "pyzmq-26.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:416ac51cabd54f587995c2b05421324700b22e98d3d0aa2cfaec985524d16f1d"}, + {file = "pyzmq-26.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:ff832cce719edd11266ca32bc74a626b814fff236824aa1aeaad399b69fe6eae"}, + {file = "pyzmq-26.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:393daac1bcf81b2a23e696b7b638eedc965e9e3d2112961a072b6cd8179ad2eb"}, + {file = "pyzmq-26.1.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9869fa984c8670c8ab899a719eb7b516860a29bc26300a84d24d8c1b71eae3ec"}, + {file = "pyzmq-26.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b3b8e36fd4c32c0825b4461372949ecd1585d326802b1321f8b6dc1d7e9318c"}, + {file = "pyzmq-26.1.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:3ee647d84b83509b7271457bb428cc347037f437ead4b0b6e43b5eba35fec0aa"}, + {file = "pyzmq-26.1.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:45cb1a70eb00405ce3893041099655265fabcd9c4e1e50c330026e82257892c1"}, + {file = "pyzmq-26.1.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:5cca7b4adb86d7470e0fc96037771981d740f0b4cb99776d5cb59cd0e6684a73"}, + {file = "pyzmq-26.1.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:91d1a20bdaf3b25f3173ff44e54b1cfbc05f94c9e8133314eb2962a89e05d6e3"}, + {file = "pyzmq-26.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c0665d85535192098420428c779361b8823d3d7ec4848c6af3abb93bc5c915bf"}, + {file = "pyzmq-26.1.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:96d7c1d35ee4a495df56c50c83df7af1c9688cce2e9e0edffdbf50889c167595"}, + {file = "pyzmq-26.1.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b281b5ff5fcc9dcbfe941ac5c7fcd4b6c065adad12d850f95c9d6f23c2652384"}, + {file = "pyzmq-26.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5384c527a9a004445c5074f1e20db83086c8ff1682a626676229aafd9cf9f7d1"}, + {file = "pyzmq-26.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:754c99a9840839375ee251b38ac5964c0f369306eddb56804a073b6efdc0cd88"}, + {file = "pyzmq-26.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9bdfcb74b469b592972ed881bad57d22e2c0acc89f5e8c146782d0d90fb9f4bf"}, + {file = "pyzmq-26.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bd13f0231f4788db619347b971ca5f319c5b7ebee151afc7c14632068c6261d3"}, + {file = "pyzmq-26.1.0-cp37-cp37m-win32.whl", hash = "sha256:c5668dac86a869349828db5fc928ee3f58d450dce2c85607067d581f745e4fb1"}, + {file = "pyzmq-26.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ad875277844cfaeca7fe299ddf8c8d8bfe271c3dc1caf14d454faa5cdbf2fa7a"}, + {file = "pyzmq-26.1.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:65c6e03cc0222eaf6aad57ff4ecc0a070451e23232bb48db4322cc45602cede0"}, + {file = "pyzmq-26.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:038ae4ffb63e3991f386e7fda85a9baab7d6617fe85b74a8f9cab190d73adb2b"}, + {file = "pyzmq-26.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:bdeb2c61611293f64ac1073f4bf6723b67d291905308a7de9bb2ca87464e3273"}, + {file = "pyzmq-26.1.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:61dfa5ee9d7df297c859ac82b1226d8fefaf9c5113dc25c2c00ecad6feeeb04f"}, + {file = "pyzmq-26.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3292d384537b9918010769b82ab3e79fca8b23d74f56fc69a679106a3e2c2cf"}, + {file = "pyzmq-26.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f9499c70c19ff0fbe1007043acb5ad15c1dec7d8e84ab429bca8c87138e8f85c"}, + {file = "pyzmq-26.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d3dd5523ed258ad58fed7e364c92a9360d1af8a9371e0822bd0146bdf017ef4c"}, + {file = "pyzmq-26.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baba2fd199b098c5544ef2536b2499d2e2155392973ad32687024bd8572a7d1c"}, + {file = "pyzmq-26.1.0-cp38-cp38-win32.whl", hash = "sha256:ddbb2b386128d8eca92bd9ca74e80f73fe263bcca7aa419f5b4cbc1661e19741"}, + {file = "pyzmq-26.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:79e45a4096ec8388cdeb04a9fa5e9371583bcb826964d55b8b66cbffe7b33c86"}, + {file = "pyzmq-26.1.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:add52c78a12196bc0fda2de087ba6c876ea677cbda2e3eba63546b26e8bf177b"}, + {file = "pyzmq-26.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:98c03bd7f3339ff47de7ea9ac94a2b34580a8d4df69b50128bb6669e1191a895"}, + {file = "pyzmq-26.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dcc37d9d708784726fafc9c5e1232de655a009dbf97946f117aefa38d5985a0f"}, + {file = "pyzmq-26.1.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a6ed52f0b9bf8dcc64cc82cce0607a3dfed1dbb7e8c6f282adfccc7be9781de"}, + {file = "pyzmq-26.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:451e16ae8bea3d95649317b463c9f95cd9022641ec884e3d63fc67841ae86dfe"}, + {file = "pyzmq-26.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:906e532c814e1d579138177a00ae835cd6becbf104d45ed9093a3aaf658f6a6a"}, + {file = "pyzmq-26.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:05bacc4f94af468cc82808ae3293390278d5f3375bb20fef21e2034bb9a505b6"}, + {file = "pyzmq-26.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:57bb2acba798dc3740e913ffadd56b1fcef96f111e66f09e2a8db3050f1f12c8"}, + {file = "pyzmq-26.1.0-cp39-cp39-win32.whl", hash = "sha256:f774841bb0e8588505002962c02da420bcfb4c5056e87a139c6e45e745c0e2e2"}, + {file = "pyzmq-26.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:359c533bedc62c56415a1f5fcfd8279bc93453afdb0803307375ecf81c962402"}, + {file = "pyzmq-26.1.0-cp39-cp39-win_arm64.whl", hash = "sha256:7907419d150b19962138ecec81a17d4892ea440c184949dc29b358bc730caf69"}, + {file = "pyzmq-26.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b24079a14c9596846bf7516fe75d1e2188d4a528364494859106a33d8b48be38"}, + {file = "pyzmq-26.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59d0acd2976e1064f1b398a00e2c3e77ed0a157529779e23087d4c2fb8aaa416"}, + {file = "pyzmq-26.1.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:911c43a4117915203c4cc8755e0f888e16c4676a82f61caee2f21b0c00e5b894"}, + {file = "pyzmq-26.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b10163e586cc609f5f85c9b233195554d77b1e9a0801388907441aaeb22841c5"}, + {file = "pyzmq-26.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:28a8b2abb76042f5fd7bd720f7fea48c0fd3e82e9de0a1bf2c0de3812ce44a42"}, + {file = "pyzmq-26.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bef24d3e4ae2c985034439f449e3f9e06bf579974ce0e53d8a507a1577d5b2ab"}, + {file = "pyzmq-26.1.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2cd0f4d314f4a2518e8970b6f299ae18cff7c44d4a1fc06fc713f791c3a9e3ea"}, + {file = "pyzmq-26.1.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fa25a620eed2a419acc2cf10135b995f8f0ce78ad00534d729aa761e4adcef8a"}, + {file = "pyzmq-26.1.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef3b048822dca6d231d8a8ba21069844ae38f5d83889b9b690bf17d2acc7d099"}, + {file = "pyzmq-26.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:9a6847c92d9851b59b9f33f968c68e9e441f9a0f8fc972c5580c5cd7cbc6ee24"}, + {file = "pyzmq-26.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9b9305004d7e4e6a824f4f19b6d8f32b3578aad6f19fc1122aaf320cbe3dc83"}, + {file = "pyzmq-26.1.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:63c1d3a65acb2f9c92dce03c4e1758cc552f1ae5c78d79a44e3bb88d2fa71f3a"}, + {file = "pyzmq-26.1.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d36b8fffe8b248a1b961c86fbdfa0129dfce878731d169ede7fa2631447331be"}, + {file = "pyzmq-26.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67976d12ebfd61a3bc7d77b71a9589b4d61d0422282596cf58c62c3866916544"}, + {file = "pyzmq-26.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:998444debc8816b5d8d15f966e42751032d0f4c55300c48cc337f2b3e4f17d03"}, + {file = "pyzmq-26.1.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e5c88b2f13bcf55fee78ea83567b9fe079ba1a4bef8b35c376043440040f7edb"}, + {file = "pyzmq-26.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d906d43e1592be4b25a587b7d96527cb67277542a5611e8ea9e996182fae410"}, + {file = "pyzmq-26.1.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80b0c9942430d731c786545da6be96d824a41a51742e3e374fedd9018ea43106"}, + {file = "pyzmq-26.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:314d11564c00b77f6224d12eb3ddebe926c301e86b648a1835c5b28176c83eab"}, + {file = "pyzmq-26.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:093a1a3cae2496233f14b57f4b485da01b4ff764582c854c0f42c6dd2be37f3d"}, + {file = "pyzmq-26.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3c397b1b450f749a7e974d74c06d69bd22dd362142f370ef2bd32a684d6b480c"}, + {file = "pyzmq-26.1.0.tar.gz", hash = "sha256:6c5aeea71f018ebd3b9115c7cb13863dd850e98ca6b9258509de1246461a7e7f"}, ] [package.dependencies] @@ -2484,141 +2528,141 @@ files = [ [[package]] name = "rpds-py" -version = "0.19.1" +version = "0.20.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.19.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:aaf71f95b21f9dc708123335df22e5a2fef6307e3e6f9ed773b2e0938cc4d491"}, - {file = "rpds_py-0.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ca0dda0c5715efe2ab35bb83f813f681ebcd2840d8b1b92bfc6fe3ab382fae4a"}, - {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81db2e7282cc0487f500d4db203edc57da81acde9e35f061d69ed983228ffe3b"}, - {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1a8dfa125b60ec00c7c9baef945bb04abf8ac772d8ebefd79dae2a5f316d7850"}, - {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:271accf41b02687cef26367c775ab220372ee0f4925591c6796e7c148c50cab5"}, - {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9bc4161bd3b970cd6a6fcda70583ad4afd10f2750609fb1f3ca9505050d4ef3"}, - {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0cf2a0dbb5987da4bd92a7ca727eadb225581dd9681365beba9accbe5308f7d"}, - {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b5e28e56143750808c1c79c70a16519e9bc0a68b623197b96292b21b62d6055c"}, - {file = "rpds_py-0.19.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c7af6f7b80f687b33a4cdb0a785a5d4de1fb027a44c9a049d8eb67d5bfe8a687"}, - {file = "rpds_py-0.19.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e429fc517a1c5e2a70d576077231538a98d59a45dfc552d1ac45a132844e6dfb"}, - {file = "rpds_py-0.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d2dbd8f4990d4788cb122f63bf000357533f34860d269c1a8e90ae362090ff3a"}, - {file = "rpds_py-0.19.1-cp310-none-win32.whl", hash = "sha256:e0f9d268b19e8f61bf42a1da48276bcd05f7ab5560311f541d22557f8227b866"}, - {file = "rpds_py-0.19.1-cp310-none-win_amd64.whl", hash = "sha256:df7c841813f6265e636fe548a49664c77af31ddfa0085515326342a751a6ba51"}, - {file = "rpds_py-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:902cf4739458852fe917104365ec0efbea7d29a15e4276c96a8d33e6ed8ec137"}, - {file = "rpds_py-0.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f3d73022990ab0c8b172cce57c69fd9a89c24fd473a5e79cbce92df87e3d9c48"}, - {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3837c63dd6918a24de6c526277910e3766d8c2b1627c500b155f3eecad8fad65"}, - {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cdb7eb3cf3deb3dd9e7b8749323b5d970052711f9e1e9f36364163627f96da58"}, - {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26ab43b6d65d25b1a333c8d1b1c2f8399385ff683a35ab5e274ba7b8bb7dc61c"}, - {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75130df05aae7a7ac171b3b5b24714cffeabd054ad2ebc18870b3aa4526eba23"}, - {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c34f751bf67cab69638564eee34023909380ba3e0d8ee7f6fe473079bf93f09b"}, - {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2671cb47e50a97f419a02cd1e0c339b31de017b033186358db92f4d8e2e17d8"}, - {file = "rpds_py-0.19.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c73254c256081704dba0a333457e2fb815364018788f9b501efe7c5e0ada401"}, - {file = "rpds_py-0.19.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4383beb4a29935b8fa28aca8fa84c956bf545cb0c46307b091b8d312a9150e6a"}, - {file = "rpds_py-0.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dbceedcf4a9329cc665452db1aaf0845b85c666e4885b92ee0cddb1dbf7e052a"}, - {file = "rpds_py-0.19.1-cp311-none-win32.whl", hash = "sha256:f0a6d4a93d2a05daec7cb885157c97bbb0be4da739d6f9dfb02e101eb40921cd"}, - {file = "rpds_py-0.19.1-cp311-none-win_amd64.whl", hash = "sha256:c149a652aeac4902ecff2dd93c3b2681c608bd5208c793c4a99404b3e1afc87c"}, - {file = "rpds_py-0.19.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:56313be667a837ff1ea3508cebb1ef6681d418fa2913a0635386cf29cff35165"}, - {file = "rpds_py-0.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d1d7539043b2b31307f2c6c72957a97c839a88b2629a348ebabe5aa8b626d6b"}, - {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1dc59a5e7bc7f44bd0c048681f5e05356e479c50be4f2c1a7089103f1621d5"}, - {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b8f78398e67a7227aefa95f876481485403eb974b29e9dc38b307bb6eb2315ea"}, - {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ef07a0a1d254eeb16455d839cef6e8c2ed127f47f014bbda64a58b5482b6c836"}, - {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8124101e92c56827bebef084ff106e8ea11c743256149a95b9fd860d3a4f331f"}, - {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08ce9c95a0b093b7aec75676b356a27879901488abc27e9d029273d280438505"}, - {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0b02dd77a2de6e49078c8937aadabe933ceac04b41c5dde5eca13a69f3cf144e"}, - {file = "rpds_py-0.19.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4dd02e29c8cbed21a1875330b07246b71121a1c08e29f0ee3db5b4cfe16980c4"}, - {file = "rpds_py-0.19.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9c7042488165f7251dc7894cd533a875d2875af6d3b0e09eda9c4b334627ad1c"}, - {file = "rpds_py-0.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f809a17cc78bd331e137caa25262b507225854073fd319e987bd216bed911b7c"}, - {file = "rpds_py-0.19.1-cp312-none-win32.whl", hash = "sha256:3ddab996807c6b4227967fe1587febade4e48ac47bb0e2d3e7858bc621b1cace"}, - {file = "rpds_py-0.19.1-cp312-none-win_amd64.whl", hash = "sha256:32e0db3d6e4f45601b58e4ac75c6f24afbf99818c647cc2066f3e4b192dabb1f"}, - {file = "rpds_py-0.19.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:747251e428406b05fc86fee3904ee19550c4d2d19258cef274e2151f31ae9d38"}, - {file = "rpds_py-0.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dc733d35f861f8d78abfaf54035461e10423422999b360966bf1c443cbc42705"}, - {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbda75f245caecff8faa7e32ee94dfaa8312a3367397975527f29654cd17a6ed"}, - {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd04d8cab16cab5b0a9ffc7d10f0779cf1120ab16c3925404428f74a0a43205a"}, - {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2d66eb41ffca6cc3c91d8387509d27ba73ad28371ef90255c50cb51f8953301"}, - {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdf4890cda3b59170009d012fca3294c00140e7f2abe1910e6a730809d0f3f9b"}, - {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1fa67ef839bad3815124f5f57e48cd50ff392f4911a9f3cf449d66fa3df62a5"}, - {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b82c9514c6d74b89a370c4060bdb80d2299bc6857e462e4a215b4ef7aa7b090e"}, - {file = "rpds_py-0.19.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c7b07959866a6afb019abb9564d8a55046feb7a84506c74a6f197cbcdf8a208e"}, - {file = "rpds_py-0.19.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4f580ae79d0b861dfd912494ab9d477bea535bfb4756a2269130b6607a21802e"}, - {file = "rpds_py-0.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c6d20c8896c00775e6f62d8373aba32956aa0b850d02b5ec493f486c88e12859"}, - {file = "rpds_py-0.19.1-cp313-none-win32.whl", hash = "sha256:afedc35fe4b9e30ab240b208bb9dc8938cb4afe9187589e8d8d085e1aacb8309"}, - {file = "rpds_py-0.19.1-cp313-none-win_amd64.whl", hash = "sha256:1d4af2eb520d759f48f1073ad3caef997d1bfd910dc34e41261a595d3f038a94"}, - {file = "rpds_py-0.19.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:34bca66e2e3eabc8a19e9afe0d3e77789733c702c7c43cd008e953d5d1463fde"}, - {file = "rpds_py-0.19.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:24f8ae92c7fae7c28d0fae9b52829235df83f34847aa8160a47eb229d9666c7b"}, - {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71157f9db7f6bc6599a852852f3389343bea34315b4e6f109e5cbc97c1fb2963"}, - {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1d494887d40dc4dd0d5a71e9d07324e5c09c4383d93942d391727e7a40ff810b"}, - {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7b3661e6d4ba63a094138032c1356d557de5b3ea6fd3cca62a195f623e381c76"}, - {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97fbb77eaeb97591efdc654b8b5f3ccc066406ccfb3175b41382f221ecc216e8"}, - {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cc4bc73e53af8e7a42c8fd7923bbe35babacfa7394ae9240b3430b5dcf16b2a"}, - {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:35af5e4d5448fa179fd7fff0bba0fba51f876cd55212f96c8bbcecc5c684ae5c"}, - {file = "rpds_py-0.19.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3511f6baf8438326e351097cecd137eb45c5f019944fe0fd0ae2fea2fd26be39"}, - {file = "rpds_py-0.19.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:57863d16187995c10fe9cf911b897ed443ac68189179541734502353af33e693"}, - {file = "rpds_py-0.19.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:9e318e6786b1e750a62f90c6f7fa8b542102bdcf97c7c4de2a48b50b61bd36ec"}, - {file = "rpds_py-0.19.1-cp38-none-win32.whl", hash = "sha256:53dbc35808c6faa2ce3e48571f8f74ef70802218554884787b86a30947842a14"}, - {file = "rpds_py-0.19.1-cp38-none-win_amd64.whl", hash = "sha256:8df1c283e57c9cb4d271fdc1875f4a58a143a2d1698eb0d6b7c0d7d5f49c53a1"}, - {file = "rpds_py-0.19.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e76c902d229a3aa9d5ceb813e1cbcc69bf5bda44c80d574ff1ac1fa3136dea71"}, - {file = "rpds_py-0.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de1f7cd5b6b351e1afd7568bdab94934d656abe273d66cda0ceea43bbc02a0c2"}, - {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fc5a84777cb61692d17988989690d6f34f7f95968ac81398d67c0d0994a897"}, - {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:74129d5ffc4cde992d89d345f7f7d6758320e5d44a369d74d83493429dad2de5"}, - {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e360188b72f8080fefa3adfdcf3618604cc8173651c9754f189fece068d2a45"}, - {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13e6d4840897d4e4e6b2aa1443e3a8eca92b0402182aafc5f4ca1f5e24f9270a"}, - {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f09529d2332264a902688031a83c19de8fda5eb5881e44233286b9c9ec91856d"}, - {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0d4b52811dcbc1aba08fd88d475f75b4f6db0984ba12275d9bed1a04b2cae9b5"}, - {file = "rpds_py-0.19.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dd635c2c4043222d80d80ca1ac4530a633102a9f2ad12252183bcf338c1b9474"}, - {file = "rpds_py-0.19.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f35b34a5184d5e0cc360b61664c1c06e866aab077b5a7c538a3e20c8fcdbf90b"}, - {file = "rpds_py-0.19.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d4ec0046facab83012d821b33cead742a35b54575c4edfb7ed7445f63441835f"}, - {file = "rpds_py-0.19.1-cp39-none-win32.whl", hash = "sha256:f5b8353ea1a4d7dfb59a7f45c04df66ecfd363bb5b35f33b11ea579111d4655f"}, - {file = "rpds_py-0.19.1-cp39-none-win_amd64.whl", hash = "sha256:1fb93d3486f793d54a094e2bfd9cd97031f63fcb5bc18faeb3dd4b49a1c06523"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7d5c7e32f3ee42f77d8ff1a10384b5cdcc2d37035e2e3320ded909aa192d32c3"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:89cc8921a4a5028d6dd388c399fcd2eef232e7040345af3d5b16c04b91cf3c7e"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca34e913d27401bda2a6f390d0614049f5a95b3b11cd8eff80fe4ec340a1208"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5953391af1405f968eb5701ebbb577ebc5ced8d0041406f9052638bafe52209d"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:840e18c38098221ea6201f091fc5d4de6128961d2930fbbc96806fb43f69aec1"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d8b735c4d162dc7d86a9cf3d717f14b6c73637a1f9cd57fe7e61002d9cb1972"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce757c7c90d35719b38fa3d4ca55654a76a40716ee299b0865f2de21c146801c"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9421b23c85f361a133aa7c5e8ec757668f70343f4ed8fdb5a4a14abd5437244"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:3b823be829407393d84ee56dc849dbe3b31b6a326f388e171555b262e8456cc1"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:5e58b61dcbb483a442c6239c3836696b79f2cd8e7eec11e12155d3f6f2d886d1"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39d67896f7235b2c886fb1ee77b1491b77049dcef6fbf0f401e7b4cbed86bbd4"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8b32cd4ab6db50c875001ba4f5a6b30c0f42151aa1fbf9c2e7e3674893fb1dc4"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1c32e41de995f39b6b315d66c27dea3ef7f7c937c06caab4c6a79a5e09e2c415"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a129c02b42d46758c87faeea21a9f574e1c858b9f358b6dd0bbd71d17713175"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:346557f5b1d8fd9966059b7a748fd79ac59f5752cd0e9498d6a40e3ac1c1875f"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:31e450840f2f27699d014cfc8865cc747184286b26d945bcea6042bb6aa4d26e"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01227f8b3e6c8961490d869aa65c99653df80d2f0a7fde8c64ebddab2b9b02fd"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69084fd29bfeff14816666c93a466e85414fe6b7d236cfc108a9c11afa6f7301"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d2b88efe65544a7d5121b0c3b003ebba92bfede2ea3577ce548b69c5235185"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ea961a674172ed2235d990d7edf85d15d8dfa23ab8575e48306371c070cda67"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:5beffdbe766cfe4fb04f30644d822a1080b5359df7db3a63d30fa928375b2720"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:720f3108fb1bfa32e51db58b832898372eb5891e8472a8093008010911e324c5"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c2087dbb76a87ec2c619253e021e4fb20d1a72580feeaa6892b0b3d955175a71"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2ddd50f18ebc05ec29a0d9271e9dbe93997536da3546677f8ca00b76d477680c"}, - {file = "rpds_py-0.19.1.tar.gz", hash = "sha256:31dd5794837f00b46f4096aa8ccaa5972f73a938982e32ed817bb520c465e520"}, + {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, + {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, + {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, + {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, + {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, + {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, + {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, + {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, + {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, + {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, + {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, + {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, + {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, + {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, + {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, + {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, + {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, + {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, + {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, + {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, + {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, + {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, + {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, + {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, + {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, ] [[package]] name = "ruff" -version = "0.5.5" +version = "0.5.7" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.5.5-py3-none-linux_armv6l.whl", hash = "sha256:605d589ec35d1da9213a9d4d7e7a9c761d90bba78fc8790d1c5e65026c1b9eaf"}, - {file = "ruff-0.5.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00817603822a3e42b80f7c3298c8269e09f889ee94640cd1fc7f9329788d7bf8"}, - {file = "ruff-0.5.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:187a60f555e9f865a2ff2c6984b9afeffa7158ba6e1eab56cb830404c942b0f3"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe26fc46fa8c6e0ae3f47ddccfbb136253c831c3289bba044befe68f467bfb16"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4ad25dd9c5faac95c8e9efb13e15803cd8bbf7f4600645a60ffe17c73f60779b"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f70737c157d7edf749bcb952d13854e8f745cec695a01bdc6e29c29c288fc36e"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:cfd7de17cef6ab559e9f5ab859f0d3296393bc78f69030967ca4d87a541b97a0"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a09b43e02f76ac0145f86a08e045e2ea452066f7ba064fd6b0cdccb486f7c3e7"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0b856cb19c60cd40198be5d8d4b556228e3dcd545b4f423d1ad812bfdca5884"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3687d002f911e8a5faf977e619a034d159a8373514a587249cc00f211c67a091"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ac9dc814e510436e30d0ba535f435a7f3dc97f895f844f5b3f347ec8c228a523"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:af9bdf6c389b5add40d89b201425b531e0a5cceb3cfdcc69f04d3d531c6be74f"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d40a8533ed545390ef8315b8e25c4bb85739b90bd0f3fe1280a29ae364cc55d8"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cab904683bf9e2ecbbe9ff235bfe056f0eba754d0168ad5407832928d579e7ab"}, - {file = "ruff-0.5.5-py3-none-win32.whl", hash = "sha256:696f18463b47a94575db635ebb4c178188645636f05e934fdf361b74edf1bb2d"}, - {file = "ruff-0.5.5-py3-none-win_amd64.whl", hash = "sha256:50f36d77f52d4c9c2f1361ccbfbd09099a1b2ea5d2b2222c586ab08885cf3445"}, - {file = "ruff-0.5.5-py3-none-win_arm64.whl", hash = "sha256:3191317d967af701f1b73a31ed5788795936e423b7acce82a2b63e26eb3e89d6"}, - {file = "ruff-0.5.5.tar.gz", hash = "sha256:cc5516bdb4858d972fbc31d246bdb390eab8df1a26e2353be2dbc0c2d7f5421a"}, + {file = "ruff-0.5.7-py3-none-linux_armv6l.whl", hash = "sha256:548992d342fc404ee2e15a242cdbea4f8e39a52f2e7752d0e4cbe88d2d2f416a"}, + {file = "ruff-0.5.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00cc8872331055ee017c4f1071a8a31ca0809ccc0657da1d154a1d2abac5c0be"}, + {file = "ruff-0.5.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:eaf3d86a1fdac1aec8a3417a63587d93f906c678bb9ed0b796da7b59c1114a1e"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a01c34400097b06cf8a6e61b35d6d456d5bd1ae6961542de18ec81eaf33b4cb8"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcc8054f1a717e2213500edaddcf1dbb0abad40d98e1bd9d0ad364f75c763eea"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f70284e73f36558ef51602254451e50dd6cc479f8b6f8413a95fcb5db4a55fc"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a78ad870ae3c460394fc95437d43deb5c04b5c29297815a2a1de028903f19692"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ccd078c66a8e419475174bfe60a69adb36ce04f8d4e91b006f1329d5cd44bcf"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e31c9bad4ebf8fdb77b59cae75814440731060a09a0e0077d559a556453acbb"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d796327eed8e168164346b769dd9a27a70e0298d667b4ecee6877ce8095ec8e"}, + {file = "ruff-0.5.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a09ea2c3f7778cc635e7f6edf57d566a8ee8f485f3c4454db7771efb692c499"}, + {file = "ruff-0.5.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a36d8dcf55b3a3bc353270d544fb170d75d2dff41eba5df57b4e0b67a95bb64e"}, + {file = "ruff-0.5.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9369c218f789eefbd1b8d82a8cf25017b523ac47d96b2f531eba73770971c9e5"}, + {file = "ruff-0.5.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b88ca3db7eb377eb24fb7c82840546fb7acef75af4a74bd36e9ceb37a890257e"}, + {file = "ruff-0.5.7-py3-none-win32.whl", hash = "sha256:33d61fc0e902198a3e55719f4be6b375b28f860b09c281e4bdbf783c0566576a"}, + {file = "ruff-0.5.7-py3-none-win_amd64.whl", hash = "sha256:083bbcbe6fadb93cd86709037acc510f86eed5a314203079df174c40bbbca6b3"}, + {file = "ruff-0.5.7-py3-none-win_arm64.whl", hash = "sha256:2dca26154ff9571995107221d0aeaad0e75a77b5a682d6236cf89a58c70b76f4"}, + {file = "ruff-0.5.7.tar.gz", hash = "sha256:8dfc0a458797f5d9fb622dd0efc52d796f23f0a1493a9527f4e49a550ae9a7e5"}, ] [[package]] @@ -2857,13 +2901,13 @@ files = [ [[package]] name = "types-pyyaml" -version = "6.0.12.20240724" +version = "6.0.12.20240808" description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.8" files = [ - {file = "types-PyYAML-6.0.12.20240724.tar.gz", hash = "sha256:cf7b31ae67e0c5b2919c703d2affc415485099d3fe6666a6912f040fd05cb67f"}, - {file = "types_PyYAML-6.0.12.20240724-py3-none-any.whl", hash = "sha256:e5becec598f3aa3a2ddf671de4a75fa1c6856fbf73b2840286c9d50fae2d5d48"}, + {file = "types-PyYAML-6.0.12.20240808.tar.gz", hash = "sha256:b8f76ddbd7f65440a8bda5526a9607e4c7a322dc2f8e1a8c405644f9a6f4b9af"}, + {file = "types_PyYAML-6.0.12.20240808-py3-none-any.whl", hash = "sha256:deda34c5c655265fc517b546c902aa6eed2ef8d3e921e4765fe606fe2afe8d35"}, ] [[package]] @@ -2924,43 +2968,46 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "watchdog" -version = "4.0.1" +version = "4.0.2" description = "Filesystem events monitoring" optional = false python-versions = ">=3.8" files = [ - {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:da2dfdaa8006eb6a71051795856bedd97e5b03e57da96f98e375682c48850645"}, - {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e93f451f2dfa433d97765ca2634628b789b49ba8b504fdde5837cdcf25fdb53b"}, - {file = "watchdog-4.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ef0107bbb6a55f5be727cfc2ef945d5676b97bffb8425650dadbb184be9f9a2b"}, - {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:17e32f147d8bf9657e0922c0940bcde863b894cd871dbb694beb6704cfbd2fb5"}, - {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03e70d2df2258fb6cb0e95bbdbe06c16e608af94a3ffbd2b90c3f1e83eb10767"}, - {file = "watchdog-4.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123587af84260c991dc5f62a6e7ef3d1c57dfddc99faacee508c71d287248459"}, - {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:093b23e6906a8b97051191a4a0c73a77ecc958121d42346274c6af6520dec175"}, - {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:611be3904f9843f0529c35a3ff3fd617449463cb4b73b1633950b3d97fa4bfb7"}, - {file = "watchdog-4.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:62c613ad689ddcb11707f030e722fa929f322ef7e4f18f5335d2b73c61a85c28"}, - {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d4925e4bf7b9bddd1c3de13c9b8a2cdb89a468f640e66fbfabaf735bd85b3e35"}, - {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cad0bbd66cd59fc474b4a4376bc5ac3fc698723510cbb64091c2a793b18654db"}, - {file = "watchdog-4.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a3c2c317a8fb53e5b3d25790553796105501a235343f5d2bf23bb8649c2c8709"}, - {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c9904904b6564d4ee8a1ed820db76185a3c96e05560c776c79a6ce5ab71888ba"}, - {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:667f3c579e813fcbad1b784db7a1aaa96524bed53437e119f6a2f5de4db04235"}, - {file = "watchdog-4.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d10a681c9a1d5a77e75c48a3b8e1a9f2ae2928eda463e8d33660437705659682"}, - {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7"}, - {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:998d2be6976a0ee3a81fb8e2777900c28641fb5bfbd0c84717d89bca0addcdc5"}, - {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e7921319fe4430b11278d924ef66d4daa469fafb1da679a2e48c935fa27af193"}, - {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:f0de0f284248ab40188f23380b03b59126d1479cd59940f2a34f8852db710625"}, - {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bca36be5707e81b9e6ce3208d92d95540d4ca244c006b61511753583c81c70dd"}, - {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ab998f567ebdf6b1da7dc1e5accfaa7c6992244629c0fdaef062f43249bd8dee"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:dddba7ca1c807045323b6af4ff80f5ddc4d654c8bce8317dde1bd96b128ed253"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:4513ec234c68b14d4161440e07f995f231be21a09329051e67a2118a7a612d2d"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_i686.whl", hash = "sha256:4107ac5ab936a63952dea2a46a734a23230aa2f6f9db1291bf171dac3ebd53c6"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:6e8c70d2cd745daec2a08734d9f63092b793ad97612470a0ee4cbb8f5f705c57"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f27279d060e2ab24c0aa98363ff906d2386aa6c4dc2f1a374655d4e02a6c5e5e"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:f8affdf3c0f0466e69f5b3917cdd042f89c8c63aebdb9f7c078996f607cdb0f5"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84"}, - {file = "watchdog-4.0.1-py3-none-win32.whl", hash = "sha256:206afc3d964f9a233e6ad34618ec60b9837d0582b500b63687e34011e15bb429"}, - {file = "watchdog-4.0.1-py3-none-win_amd64.whl", hash = "sha256:7577b3c43e5909623149f76b099ac49a1a01ca4e167d1785c76eb52fa585745a"}, - {file = "watchdog-4.0.1-py3-none-win_ia64.whl", hash = "sha256:d7b9f5f3299e8dd230880b6c55504a1f69cf1e4316275d1b215ebdd8187ec88d"}, - {file = "watchdog-4.0.1.tar.gz", hash = "sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44"}, + {file = "watchdog-4.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ede7f010f2239b97cc79e6cb3c249e72962404ae3865860855d5cbe708b0fd22"}, + {file = "watchdog-4.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a2cffa171445b0efa0726c561eca9a27d00a1f2b83846dbd5a4f639c4f8ca8e1"}, + {file = "watchdog-4.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c50f148b31b03fbadd6d0b5980e38b558046b127dc483e5e4505fcef250f9503"}, + {file = "watchdog-4.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7c7d4bf585ad501c5f6c980e7be9c4f15604c7cc150e942d82083b31a7548930"}, + {file = "watchdog-4.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:914285126ad0b6eb2258bbbcb7b288d9dfd655ae88fa28945be05a7b475a800b"}, + {file = "watchdog-4.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:984306dc4720da5498b16fc037b36ac443816125a3705dfde4fd90652d8028ef"}, + {file = "watchdog-4.0.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1cdcfd8142f604630deef34722d695fb455d04ab7cfe9963055df1fc69e6727a"}, + {file = "watchdog-4.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d7ab624ff2f663f98cd03c8b7eedc09375a911794dfea6bf2a359fcc266bff29"}, + {file = "watchdog-4.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:132937547a716027bd5714383dfc40dc66c26769f1ce8a72a859d6a48f371f3a"}, + {file = "watchdog-4.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:cd67c7df93eb58f360c43802acc945fa8da70c675b6fa37a241e17ca698ca49b"}, + {file = "watchdog-4.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcfd02377be80ef3b6bc4ce481ef3959640458d6feaae0bd43dd90a43da90a7d"}, + {file = "watchdog-4.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:980b71510f59c884d684b3663d46e7a14b457c9611c481e5cef08f4dd022eed7"}, + {file = "watchdog-4.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:aa160781cafff2719b663c8a506156e9289d111d80f3387cf3af49cedee1f040"}, + {file = "watchdog-4.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f6ee8dedd255087bc7fe82adf046f0b75479b989185fb0bdf9a98b612170eac7"}, + {file = "watchdog-4.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0b4359067d30d5b864e09c8597b112fe0a0a59321a0f331498b013fb097406b4"}, + {file = "watchdog-4.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:770eef5372f146997638d737c9a3c597a3b41037cfbc5c41538fc27c09c3a3f9"}, + {file = "watchdog-4.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eeea812f38536a0aa859972d50c76e37f4456474b02bd93674d1947cf1e39578"}, + {file = "watchdog-4.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b2c45f6e1e57ebb4687690c05bc3a2c1fb6ab260550c4290b8abb1335e0fd08b"}, + {file = "watchdog-4.0.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:10b6683df70d340ac3279eff0b2766813f00f35a1d37515d2c99959ada8f05fa"}, + {file = "watchdog-4.0.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f7c739888c20f99824f7aa9d31ac8a97353e22d0c0e54703a547a218f6637eb3"}, + {file = "watchdog-4.0.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c100d09ac72a8a08ddbf0629ddfa0b8ee41740f9051429baa8e31bb903ad7508"}, + {file = "watchdog-4.0.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:f5315a8c8dd6dd9425b974515081fc0aadca1d1d61e078d2246509fd756141ee"}, + {file = "watchdog-4.0.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2d468028a77b42cc685ed694a7a550a8d1771bb05193ba7b24006b8241a571a1"}, + {file = "watchdog-4.0.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f15edcae3830ff20e55d1f4e743e92970c847bcddc8b7509bcd172aa04de506e"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:936acba76d636f70db8f3c66e76aa6cb5136a936fc2a5088b9ce1c7a3508fc83"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_armv7l.whl", hash = "sha256:e252f8ca942a870f38cf785aef420285431311652d871409a64e2a0a52a2174c"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_i686.whl", hash = "sha256:0e83619a2d5d436a7e58a1aea957a3c1ccbf9782c43c0b4fed80580e5e4acd1a"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_ppc64.whl", hash = "sha256:88456d65f207b39f1981bf772e473799fcdc10801062c36fd5ad9f9d1d463a73"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:32be97f3b75693a93c683787a87a0dc8db98bb84701539954eef991fb35f5fbc"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_s390x.whl", hash = "sha256:c82253cfc9be68e3e49282831afad2c1f6593af80c0daf1287f6a92657986757"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c0b14488bd336c5b1845cee83d3e631a1f8b4e9c5091ec539406e4a324f882d8"}, + {file = "watchdog-4.0.2-py3-none-win32.whl", hash = "sha256:0d8a7e523ef03757a5aa29f591437d64d0d894635f8a50f370fe37f913ce4e19"}, + {file = "watchdog-4.0.2-py3-none-win_amd64.whl", hash = "sha256:c344453ef3bf875a535b0488e3ad28e341adbd5a9ffb0f7d62cefacc8824ef2b"}, + {file = "watchdog-4.0.2-py3-none-win_ia64.whl", hash = "sha256:baececaa8edff42cd16558a639a9b0ddf425f93d892e8392a56bf904f5eff22c"}, + {file = "watchdog-4.0.2.tar.gz", hash = "sha256:b4dfbb6c49221be4535623ea4474a4d6ee0a9cef4a80b20c28db4d858b64e270"}, ] [package.extras] @@ -2979,13 +3026,13 @@ files = [ [[package]] name = "webcolors" -version = "24.6.0" +version = "24.8.0" description = "A library for working with the color formats defined by HTML and CSS." optional = false python-versions = ">=3.8" files = [ - {file = "webcolors-24.6.0-py3-none-any.whl", hash = "sha256:8cf5bc7e28defd1d48b9e83d5fc30741328305a8195c29a8e668fa45586568a1"}, - {file = "webcolors-24.6.0.tar.gz", hash = "sha256:1d160d1de46b3e81e58d0a280d0c78b467dc80f47294b91b1ad8029d2cedb55b"}, + {file = "webcolors-24.8.0-py3-none-any.whl", hash = "sha256:fc4c3b59358ada164552084a8ebee637c221e4059267d0f8325b3b560f6c7f0a"}, + {file = "webcolors-24.8.0.tar.gz", hash = "sha256:08b07af286a01bcd30d583a7acadf629583d1f79bfef27dd2c2c5c263817277d"}, ] [package.extras] @@ -3032,13 +3079,13 @@ files = [ [[package]] name = "zipp" -version = "3.19.2" +version = "3.20.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, - {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, + {file = "zipp-3.20.0-py3-none-any.whl", hash = "sha256:58da6168be89f0be59beb194da1250516fdaa062ccebd30127ac65d30045e10d"}, + {file = "zipp-3.20.0.tar.gz", hash = "sha256:0145e43d89664cfe1a2e533adc75adafed82fe2da404b4bbb6b026c0157bdb31"}, ] [package.extras] diff --git a/libs/core/pyproject.toml b/libs/core/pyproject.toml index 057c74e08174f..e8bb2df1e6e65 100644 --- a/libs/core/pyproject.toml +++ b/libs/core/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "langchain-core" -version = "0.2.29" +version = "0.2.30" description = "Building applications with LLMs through composability" authors = [] license = "MIT" @@ -74,17 +74,20 @@ optional = true [tool.poetry.group.lint.dependencies] ruff = "^0.5" + [tool.poetry.group.typing.dependencies] mypy = ">=1.10,<1.11" types-pyyaml = "^6.0.12.2" types-requests = "^2.28.11.5" types-jinja2 = "^2.11.9" + [tool.poetry.group.dev.dependencies] jupyter = "^1.0.0" setuptools = "^67.6.1" grandalf = "^0.8" + [tool.poetry.group.test.dependencies] pytest = "^7.3.0" freezegun = "^1.2.2" @@ -103,12 +106,15 @@ python = "<3.12" version = "^1.26.0" python = ">=3.12" + [tool.poetry.group.test_integration.dependencies] + [tool.poetry.group.typing.dependencies.langchain-text-splitters] path = "../text-splitters" develop = true + [tool.poetry.group.test.dependencies.langchain-standard-tests] path = "../standard-tests" develop = true diff --git a/libs/core/tests/unit_tests/utils/test_utils.py b/libs/core/tests/unit_tests/utils/test_utils.py index 88d3b056ea2b3..7905bfb62dc7b 100644 --- a/libs/core/tests/unit_tests/utils/test_utils.py +++ b/libs/core/tests/unit_tests/utils/test_utils.py @@ -328,14 +328,17 @@ def test_secret_from_env_with_custom_error_message( def test_using_secret_from_env_as_default_factory( monkeypatch: pytest.MonkeyPatch, ) -> None: - # Set the environment variable - monkeypatch.setenv("TEST_KEY", "secret_value") - # Get the function from langchain_core.pydantic_v1 import BaseModel, Field class Foo(BaseModel): secret: SecretStr = Field(default_factory=secret_from_env("TEST_KEY")) + # Pass the secret as a parameter + foo = Foo(secret="super_secret") # type: ignore[arg-type] + assert foo.secret.get_secret_value() == "super_secret" + + # Set the environment variable + monkeypatch.setenv("TEST_KEY", "secret_value") assert Foo().secret.get_secret_value() == "secret_value" class Bar(BaseModel): diff --git a/libs/core/tests/unit_tests/vectorstores/test_vectorstore.py b/libs/core/tests/unit_tests/vectorstores/test_vectorstore.py index 3b5efc7a85b74..971315752b8c2 100644 --- a/libs/core/tests/unit_tests/vectorstores/test_vectorstore.py +++ b/libs/core/tests/unit_tests/vectorstores/test_vectorstore.py @@ -1,69 +1,50 @@ +"""Set of tests that complement the standard tests for vectorstore. + +These tests verify that the base abstraction does appropriate delegation to +the relevant methods. +""" + from __future__ import annotations import uuid -from typing import Any, Dict, List, Optional, Sequence, Union - -from typing_extensions import TypedDict +from typing import Any, Dict, Iterable, List, Optional, Sequence from langchain_core.documents import Document from langchain_core.embeddings import Embeddings -from langchain_core.indexing import UpsertResponse from langchain_core.vectorstores import VectorStore -def test_custom_upsert_type() -> None: - """Test that we can override the signature of the upsert method - of the VectorStore class without creating typing issues by violating - the Liskov Substitution Principle. - """ - - class ByVector(TypedDict): - document: Document - vector: List[float] - - class CustomVectorStore(VectorStore): - def upsert( - # This unit test verifies that the signature of the upsert method - # specifically the items parameter can be overridden without - # violating the Liskov Substitution Principle (and getting - # typing errors). - self, - items: Union[Sequence[Document], Sequence[ByVector]], - /, - **kwargs: Any, - ) -> UpsertResponse: - raise NotImplementedError() - - -class CustomSyncVectorStore(VectorStore): - """A vectorstore that only implements the synchronous methods.""" +class CustomAddTextsVectorstore(VectorStore): + """A vectorstore that only implements add texts.""" def __init__(self) -> None: self.store: Dict[str, Document] = {} - def upsert( + def add_texts( self, - items: Sequence[Document], - /, + texts: Iterable[str], + metadatas: Optional[List[dict]] = None, + # One of the kwargs should be `ids` which is a list of ids + # associated with the texts. + # This is not yet enforced in the type signature for backwards compatibility + # with existing implementations. + ids: Optional[List[str]] = None, **kwargs: Any, - ) -> UpsertResponse: - ids = [] - for item in items: - if item.id is None: - new_item = item.copy() - id_: str = str(uuid.uuid4()) - new_item.id = id_ - else: - id_ = item.id - new_item = item - - self.store[id_] = new_item - ids.append(id_) - - return { - "succeeded": ids, - "failed": [], - } + ) -> List[str]: + if not isinstance(texts, list): + texts = list(texts) + ids_iter = iter(ids or []) + + ids_ = [] + + metadatas_ = metadatas or [{} for _ in texts] + + for text, metadata in zip(texts, metadatas_ or []): + next_id = next(ids_iter, None) + id_ = next_id or str(uuid.uuid4()) + self.store[id_] = Document(page_content=text, metadata=metadata, id=id_) + ids_.append(id_) + return ids_ def get_by_ids(self, ids: Sequence[str], /) -> List[Document]: return [self.store[id] for id in ids if id in self.store] @@ -74,8 +55,8 @@ def from_texts( # type: ignore embedding: Embeddings, metadatas: Optional[List[dict]] = None, **kwargs: Any, - ) -> CustomSyncVectorStore: - vectorstore = CustomSyncVectorStore() + ) -> CustomAddTextsVectorstore: + vectorstore = CustomAddTextsVectorstore() vectorstore.add_texts(texts, metadatas=metadatas, **kwargs) return vectorstore @@ -85,30 +66,38 @@ def similarity_search( raise NotImplementedError() -def test_implement_upsert() -> None: +def test_default_add_documents() -> None: """Test that we can implement the upsert method of the CustomVectorStore class without violating the Liskov Substitution Principle. """ - store = CustomSyncVectorStore() + store = CustomAddTextsVectorstore() # Check upsert with id - assert store.upsert([Document(id="1", page_content="hello")]) == { - "succeeded": ["1"], - "failed": [], - } + assert store.add_documents([Document(id="1", page_content="hello")]) == ["1"] assert store.get_by_ids(["1"]) == [Document(id="1", page_content="hello")] # Check upsert without id - response = store.upsert([Document(page_content="world")]) - assert len(response["succeeded"]) == 1 - id_ = response["succeeded"][0] - assert id_ is not None - assert store.get_by_ids([id_]) == [Document(id=id_, page_content="world")] + ids = store.add_documents([Document(page_content="world")]) + assert len(ids) == 1 + assert store.get_by_ids(ids) == [Document(id=ids[0], page_content="world")] + # Check that add_documents works + assert store.add_documents([Document(id="5", page_content="baz")]) == ["5"] + + # Test add documents with id specified in both document and ids + original_document = Document(id="7", page_content="baz") + assert store.add_documents([original_document], ids=["6"]) == ["6"] + assert original_document.id == "7" # original document should not be modified + assert store.get_by_ids(["6"]) == [Document(id="6", page_content="baz")] + + +def test_default_add_texts() -> None: + store = CustomAddTextsVectorstore() # Check that default implementation of add_texts works assert store.add_texts(["hello", "world"], ids=["3", "4"]) == ["3", "4"] + assert store.get_by_ids(["3", "4"]) == [ Document(id="3", page_content="hello"), Document(id="4", page_content="world"), @@ -130,39 +119,37 @@ class without violating the Liskov Substitution Principle. Document(id=ids_2[1], page_content="bar", metadata={"foo": "bar"}), ] - # Check that add_documents works - assert store.add_documents([Document(id="5", page_content="baz")]) == ["5"] - - # Test add documents with id specified in both document and ids - original_document = Document(id="7", page_content="baz") - assert store.add_documents([original_document], ids=["6"]) == ["6"] - assert original_document.id == "7" # original document should not be modified - assert store.get_by_ids(["6"]) == [Document(id="6", page_content="baz")] - -async def test_aupsert_delegation_to_upsert() -> None: - """Test delegation to the synchronous upsert method in async execution - if async methods are not implemented. - """ - store = CustomSyncVectorStore() +async def test_default_aadd_documents() -> None: + """Test delegation to the synchronous method.""" + store = CustomAddTextsVectorstore() # Check upsert with id - assert await store.aupsert([Document(id="1", page_content="hello")]) == { - "succeeded": ["1"], - "failed": [], - } + assert await store.aadd_documents([Document(id="1", page_content="hello")]) == ["1"] assert await store.aget_by_ids(["1"]) == [Document(id="1", page_content="hello")] # Check upsert without id - response = await store.aupsert([Document(page_content="world")]) - assert len(response["succeeded"]) == 1 - id_ = response["succeeded"][0] - assert id_ is not None - assert await store.aget_by_ids([id_]) == [Document(id=id_, page_content="world")] + ids = await store.aadd_documents([Document(page_content="world")]) + assert len(ids) == 1 + assert await store.aget_by_ids(ids) == [Document(id=ids[0], page_content="world")] + + # Check that add_documents works + assert await store.aadd_documents([Document(id="5", page_content="baz")]) == ["5"] + + # Test add documents with id specified in both document and ids + original_document = Document(id="7", page_content="baz") + assert await store.aadd_documents([original_document], ids=["6"]) == ["6"] + assert original_document.id == "7" # original document should not be modified + assert await store.aget_by_ids(["6"]) == [Document(id="6", page_content="baz")] + +async def test_default_aadd_texts() -> None: + """Test delegation to the synchronous method.""" + store = CustomAddTextsVectorstore() # Check that default implementation of add_texts works assert await store.aadd_texts(["hello", "world"], ids=["3", "4"]) == ["3", "4"] + assert await store.aget_by_ids(["3", "4"]) == [ Document(id="3", page_content="hello"), Document(id="4", page_content="world"), @@ -183,12 +170,3 @@ async def test_aupsert_delegation_to_upsert() -> None: Document(id=ids_2[0], page_content="foo", metadata={"foo": "bar"}), Document(id=ids_2[1], page_content="bar", metadata={"foo": "bar"}), ] - - # Check that add_documents works - assert await store.aadd_documents([Document(id="5", page_content="baz")]) == ["5"] - - # Test add documents with id specified in both document and ids - original_document = Document(id="7", page_content="baz") - assert await store.aadd_documents([original_document], ids=["6"]) == ["6"] - assert original_document.id == "7" # original document should not be modified - assert await store.aget_by_ids(["6"]) == [Document(id="6", page_content="baz")] diff --git a/libs/langchain/langchain/hub.py b/libs/langchain/langchain/hub.py index adaf0de05f58d..f1c022b762bc2 100644 --- a/libs/langchain/langchain/hub.py +++ b/libs/langchain/langchain/hub.py @@ -3,27 +3,37 @@ from __future__ import annotations import json -from typing import TYPE_CHECKING, Any, Optional +from typing import Any, Optional, Sequence from langchain_core.load.dump import dumps from langchain_core.load.load import loads from langchain_core.prompts import BasePromptTemplate -if TYPE_CHECKING: - from langchainhub import Client - -def _get_client(api_url: Optional[str] = None, api_key: Optional[str] = None) -> Client: +def _get_client( + api_key: Optional[str] = None, + api_url: Optional[str] = None, +) -> Any: try: - from langchainhub import Client - except ImportError as e: - raise ImportError( - "Could not import langchainhub, please install with `pip install " - "langchainhub`." - ) from e + from langsmith import Client as LangSmithClient + + ls_client = LangSmithClient(api_url, api_key=api_key) + if hasattr(ls_client, "push_prompt") and hasattr(ls_client, "pull_prompt"): + return ls_client + else: + from langchainhub import Client as LangChainHubClient - # Client logic will also attempt to load URL/key from environment variables - return Client(api_url, api_key=api_key) + return LangChainHubClient(api_url, api_key=api_key) + except ImportError: + try: + from langchainhub import Client as LangChainHubClient + + return LangChainHubClient(api_url, api_key=api_key) + except ImportError as e: + raise ImportError( + "Could not import langsmith or langchainhub (deprecated)," + "please install with `pip install langsmith`." + ) from e def push( @@ -32,27 +42,43 @@ def push( *, api_url: Optional[str] = None, api_key: Optional[str] = None, - parent_commit_hash: Optional[str] = "latest", - new_repo_is_public: bool = True, - new_repo_description: str = "", + parent_commit_hash: Optional[str] = None, + new_repo_is_public: bool = False, + new_repo_description: Optional[str] = None, + readme: Optional[str] = None, + tags: Optional[Sequence[str]] = None, ) -> str: """ Push an object to the hub and returns the URL it can be viewed at in a browser. - :param repo_full_name: The full name of the repo to push to in the format of - `owner/repo`. + :param repo_full_name: The full name of the prompt to push to in the format of + `owner/prompt_name` or `prompt_name`. :param object: The LangChain to serialize and push to the hub. :param api_url: The URL of the LangChain Hub API. Defaults to the hosted API service if you have an api key set, or a localhost instance if not. :param api_key: The API key to use to authenticate with the LangChain Hub API. :param parent_commit_hash: The commit hash of the parent commit to push to. Defaults to the latest commit automatically. - :param new_repo_is_public: Whether the repo should be public. Defaults to - True (Public by default). - :param new_repo_description: The description of the repo. Defaults to an empty + :param new_repo_is_public: Whether the prompt should be public. Defaults to + False (Private by default). + :param new_repo_description: The description of the prompt. Defaults to an empty string. """ - client = _get_client(api_url=api_url, api_key=api_key) + client = _get_client(api_key=api_key, api_url=api_url) + + # Then it's langsmith + if hasattr(client, "push_prompt"): + return client.push_prompt( + repo_full_name, + object=object, + parent_commit_hash=parent_commit_hash, + is_public=new_repo_is_public, + description=new_repo_description, + readme=readme, + tags=tags, + ) + + # Then it's langchainhub manifest_json = dumps(object) message = client.push( repo_full_name, @@ -67,20 +93,28 @@ def push( def pull( owner_repo_commit: str, *, + include_model: Optional[bool] = None, api_url: Optional[str] = None, api_key: Optional[str] = None, ) -> Any: """ Pull an object from the hub and returns it as a LangChain object. - :param owner_repo_commit: The full name of the repo to pull from in the format of - `owner/repo:commit_hash`. + :param owner_repo_commit: The full name of the prompt to pull from in the format of + `owner/prompt_name:commit_hash` or `owner/prompt_name` + or just `prompt_name` if it's your own prompt. :param api_url: The URL of the LangChain Hub API. Defaults to the hosted API service if you have an api key set, or a localhost instance if not. :param api_key: The API key to use to authenticate with the LangChain Hub API. """ - client = _get_client(api_url=api_url, api_key=api_key) + client = _get_client(api_key=api_key, api_url=api_url) + + # Then it's langsmith + if hasattr(client, "pull_prompt"): + response = client.pull_prompt(owner_repo_commit, include_model=include_model) + return response + # Then it's langchainhub if hasattr(client, "pull_repo"): # >= 0.1.15 res_dict = client.pull_repo(owner_repo_commit) @@ -93,6 +127,6 @@ def pull( obj.metadata["lc_hub_commit_hash"] = res_dict["commit_hash"] return obj - # Then it's < 0.1.15 + # Then it's < 0.1.15 langchainhub resp: str = client.pull(owner_repo_commit) return loads(resp) diff --git a/libs/langchain/poetry.lock b/libs/langchain/poetry.lock index 23a9d7d6a8ffd..42e40d8902b1e 100644 --- a/libs/langchain/poetry.lock +++ b/libs/langchain/poetry.lock @@ -1,99 +1,99 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" -version = "2.3.4" +version = "2.3.5" description = "Happy Eyeballs for asyncio" optional = false -python-versions = "<4.0,>=3.8" +python-versions = ">=3.8" files = [ - {file = "aiohappyeyeballs-2.3.4-py3-none-any.whl", hash = "sha256:40a16ceffcf1fc9e142fd488123b2e218abc4188cf12ac20c67200e1579baa42"}, - {file = "aiohappyeyeballs-2.3.4.tar.gz", hash = "sha256:7e1ae8399c320a8adec76f6c919ed5ceae6edd4c3672f4d9eae2b27e37c80ff6"}, + {file = "aiohappyeyeballs-2.3.5-py3-none-any.whl", hash = "sha256:4d6dea59215537dbc746e93e779caea8178c866856a721c9c660d7a5a7b8be03"}, + {file = "aiohappyeyeballs-2.3.5.tar.gz", hash = "sha256:6fa48b9f1317254f122a07a131a86b71ca6946ca989ce6326fff54a99a920105"}, ] [[package]] name = "aiohttp" -version = "3.10.0" +version = "3.10.3" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:68ab608118e212f56feef44d4785aa90b713042da301f26338f36497b481cd79"}, - {file = "aiohttp-3.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:64a117c16273ca9f18670f33fc7fd9604b9f46ddb453ce948262889a6be72868"}, - {file = "aiohttp-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:54076a25f32305e585a3abae1f0ad10646bec539e0e5ebcc62b54ee4982ec29f"}, - {file = "aiohttp-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71c76685773444d90ae83874433505ed800e1706c391fdf9e57cc7857611e2f4"}, - {file = "aiohttp-3.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bdda86ab376f9b3095a1079a16fbe44acb9ddde349634f1c9909d13631ff3bcf"}, - {file = "aiohttp-3.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d6dcd1d21da5ae1416f69aa03e883a51e84b6c803b8618cbab341ac89a85b9e"}, - {file = "aiohttp-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06ef0135d7ab7fb0284342fbbf8e8ddf73b7fee8ecc55f5c3a3d0a6b765e6d8b"}, - {file = "aiohttp-3.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccab9381f38c669bb9254d848f3b41a3284193b3e274a34687822f98412097e9"}, - {file = "aiohttp-3.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:947da3aee057010bc750b7b4bb65cbd01b0bdb7c4e1cf278489a1d4a1e9596b3"}, - {file = "aiohttp-3.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5268b35fee7eb754fb5b3d0f16a84a2e9ed21306f5377f3818596214ad2d7714"}, - {file = "aiohttp-3.10.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ff25d988fd6ce433b5c393094a5ca50df568bdccf90a8b340900e24e0d5fb45c"}, - {file = "aiohttp-3.10.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:594b4b4f1dfe8378b4a0342576dc87a930c960641159f5ae83843834016dbd59"}, - {file = "aiohttp-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c8820dad615cd2f296ed3fdea8402b12663ac9e5ea2aafc90ef5141eb10b50b8"}, - {file = "aiohttp-3.10.0-cp310-cp310-win32.whl", hash = "sha256:ab1d870403817c9a0486ca56ccbc0ebaf85d992277d48777faa5a95e40e5bcca"}, - {file = "aiohttp-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:563705a94ea3af43467167f3a21c665f3b847b2a0ae5544fa9e18df686a660da"}, - {file = "aiohttp-3.10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:13679e11937d3f37600860de1f848e2e062e2b396d3aa79b38c89f9c8ab7e791"}, - {file = "aiohttp-3.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c66a1aadafbc0bd7d648cb7fcb3860ec9beb1b436ce3357036a4d9284fcef9a"}, - {file = "aiohttp-3.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7e3545b06aae925f90f06402e05cfb9c62c6409ce57041932163b09c48daad6"}, - {file = "aiohttp-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:effafe5144aa32f0388e8f99b1b2692cf094ea2f6b7ceca384b54338b77b1f50"}, - {file = "aiohttp-3.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a04f2c8d41821a2507b49b2694c40495a295b013afb0cc7355b337980b47c546"}, - {file = "aiohttp-3.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6dbfac556219d884d50edc6e1952a93545c2786193f00f5521ec0d9d464040ab"}, - {file = "aiohttp-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a65472256c5232681968deeea3cd5453aa091c44e8db09f22f1a1491d422c2d9"}, - {file = "aiohttp-3.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:941366a554e566efdd3f042e17a9e461a36202469e5fd2aee66fe3efe6412aef"}, - {file = "aiohttp-3.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:927b4aca6340301e7d8bb05278d0b6585b8633ea852b7022d604a5df920486bf"}, - {file = "aiohttp-3.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:34adb8412e736a5d0df6d1fccdf71599dfb07a63add241a94a189b6364e997f1"}, - {file = "aiohttp-3.10.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:43c60d9b332a01ee985f080f639f3e56abcfb95ec1320013c94083c3b6a2e143"}, - {file = "aiohttp-3.10.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:3f49edf7c5cd2987634116e1b6a0ee2438fca17f7c4ee480ff41decb76cf6158"}, - {file = "aiohttp-3.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9784246431eaf9d651b3cc06f9c64f9a9f57299f4971c5ea778fa0b81074ef13"}, - {file = "aiohttp-3.10.0-cp311-cp311-win32.whl", hash = "sha256:bec91402df78b897a47b66b9c071f48051cea68d853d8bc1d4404896c6de41ae"}, - {file = "aiohttp-3.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:25a9924343bf91b0c5082cae32cfc5a1f8787ac0433966319ec07b0ed4570722"}, - {file = "aiohttp-3.10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:21dab4a704c68dc7bc2a1219a4027158e8968e2079f1444eda2ba88bc9f2895f"}, - {file = "aiohttp-3.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:872c0dcaccebd5733d535868fe2356aa6939f5827dcea7a8b9355bb2eff6f56e"}, - {file = "aiohttp-3.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f381424dbce313bb5a666a215e7a9dcebbc533e9a2c467a1f0c95279d24d1fa7"}, - {file = "aiohttp-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ca48e9f092a417c6669ee8d3a19d40b3c66dde1a2ae0d57e66c34812819b671"}, - {file = "aiohttp-3.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbe2f6d0466f5c59c7258e0745c20d74806a1385fbb7963e5bbe2309a11cc69b"}, - {file = "aiohttp-3.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:03799a95402a7ed62671c4465e1eae51d749d5439dbc49edb6eee52ea165c50b"}, - {file = "aiohttp-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5549c71c35b5f057a4eebcc538c41299826f7813f28880722b60e41c861a57ec"}, - {file = "aiohttp-3.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6fa7a42b78d8698491dc4ad388169de54cca551aa9900f750547372de396277"}, - {file = "aiohttp-3.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:77bbf0a2f6fefac6c0db1792c234f577d80299a33ce7125467439097cf869198"}, - {file = "aiohttp-3.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:34eaf5cfcc979846d73571b1a4be22cad5e029d55cdbe77cdc7545caa4dcb925"}, - {file = "aiohttp-3.10.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4f1de31a585344a106db43a9c3af2e15bb82e053618ff759f1fdd31d82da38eb"}, - {file = "aiohttp-3.10.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:f3a1ea61d96146e9b9e5597069466e2e4d9e01e09381c5dd51659f890d5e29e7"}, - {file = "aiohttp-3.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:73c01201219eb039a828bb58dcc13112eec2fed6eea718356316cd552df26e04"}, - {file = "aiohttp-3.10.0-cp312-cp312-win32.whl", hash = "sha256:33e915971eee6d2056d15470a1214e4e0f72b6aad10225548a7ab4c4f54e2db7"}, - {file = "aiohttp-3.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:2dc75da06c35a7b47a88ceadbf993a53d77d66423c2a78de8c6f9fb41ec35687"}, - {file = "aiohttp-3.10.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f1bc4d68b83966012813598fe39b35b4e6019b69d29385cf7ec1cb08e1ff829b"}, - {file = "aiohttp-3.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d9b8b31c057a0b7bb822a159c490af05cb11b8069097f3236746a78315998afa"}, - {file = "aiohttp-3.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:10f0d7894ddc6ff8f369e3fdc082ef1f940dc1f5b9003cd40945d24845477220"}, - {file = "aiohttp-3.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72de8ffba4a27e3c6e83e58a379fc4fe5548f69f9b541fde895afb9be8c31658"}, - {file = "aiohttp-3.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd36d0f0afc2bd84f007cedd2d9a449c3cf04af471853a25eb71f28bc2e1a119"}, - {file = "aiohttp-3.10.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f64d503c661864866c09806ac360b95457f872d639ca61719115a9f389b2ec90"}, - {file = "aiohttp-3.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31616121369bc823791056c632f544c6c8f8d1ceecffd8bf3f72ef621eaabf49"}, - {file = "aiohttp-3.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f76c12abb88b7ee64b3f9ae72f0644af49ff139067b5add142836dab405d60d4"}, - {file = "aiohttp-3.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6c99eef30a7e98144bcf44d615bc0f445b3a3730495fcc16124cb61117e1f81e"}, - {file = "aiohttp-3.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:39e7ec718e7a1971a5d98357e3e8c0529477d45c711d32cd91999dc8d8404e1e"}, - {file = "aiohttp-3.10.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f1cef548ee4e84264b78879de0c754bbe223193c6313beb242ce862f82eab184"}, - {file = "aiohttp-3.10.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:f98f036eab11d2f90cdd01b9d1410de9d7eb520d070debeb2edadf158b758431"}, - {file = "aiohttp-3.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cc4376ff537f7d2c1e98f97f6d548e99e5d96078b0333c1d3177c11467b972de"}, - {file = "aiohttp-3.10.0-cp38-cp38-win32.whl", hash = "sha256:ebedc51ee6d39f9ea5e26e255fd56a7f4e79a56e77d960f9bae75ef4f95ed57f"}, - {file = "aiohttp-3.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:aad87626f31a85fd4af02ba7fd6cc424b39d4bff5c8677e612882649da572e47"}, - {file = "aiohttp-3.10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1dc95c5e2a5e60095f1bb51822e3b504e6a7430c9b44bff2120c29bb876c5202"}, - {file = "aiohttp-3.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1c83977f7b6f4f4a96fab500f5a76d355f19f42675224a3002d375b3fb309174"}, - {file = "aiohttp-3.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8cedc48d36652dd3ac40e5c7c139d528202393e341a5e3475acedb5e8d5c4c75"}, - {file = "aiohttp-3.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b099fbb823efed3c1d736f343ac60d66531b13680ee9b2669e368280f41c2b8"}, - {file = "aiohttp-3.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d583755ddb9c97a2da1322f17fc7d26792f4e035f472d675e2761c766f94c2ff"}, - {file = "aiohttp-3.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a03a4407bdb9ae815f0d5a19df482b17df530cf7bf9c78771aa1c713c37ff1f"}, - {file = "aiohttp-3.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcb6e65f6ea7caa0188e36bebe9e72b259d3d525634758c91209afb5a6cbcba7"}, - {file = "aiohttp-3.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6612c6ed3147a4a2d6463454b94b877566b38215665be4c729cd8b7bdce15b4"}, - {file = "aiohttp-3.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0b0c0148d2a69b82ffe650c2ce235b431d49a90bde7dd2629bcb40314957acf6"}, - {file = "aiohttp-3.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0d85a173b4dbbaaad1900e197181ea0fafa617ca6656663f629a8a372fdc7d06"}, - {file = "aiohttp-3.10.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:12c43dace645023583f3dd2337dfc3aa92c99fb943b64dcf2bc15c7aa0fb4a95"}, - {file = "aiohttp-3.10.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:33acb0d9bf12cdc80ceec6f5fda83ea7990ce0321c54234d629529ca2c54e33d"}, - {file = "aiohttp-3.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:91e0b76502205484a4d1d6f25f461fa60fe81a7987b90e57f7b941b0753c3ec8"}, - {file = "aiohttp-3.10.0-cp39-cp39-win32.whl", hash = "sha256:1ebd8ed91428ffbe8b33a5bd6f50174e11882d5b8e2fe28670406ab5ee045ede"}, - {file = "aiohttp-3.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:0433795c4a8bafc03deb3e662192250ba5db347c41231b0273380d2f53c9ea0b"}, - {file = "aiohttp-3.10.0.tar.gz", hash = "sha256:e8dd7da2609303e3574c95b0ec9f1fd49647ef29b94701a2862cceae76382e1d"}, + {file = "aiohttp-3.10.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cc36cbdedf6f259371dbbbcaae5bb0e95b879bc501668ab6306af867577eb5db"}, + {file = "aiohttp-3.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:85466b5a695c2a7db13eb2c200af552d13e6a9313d7fa92e4ffe04a2c0ea74c1"}, + {file = "aiohttp-3.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:71bb1d97bfe7e6726267cea169fdf5df7658831bb68ec02c9c6b9f3511e108bb"}, + {file = "aiohttp-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baec1eb274f78b2de54471fc4c69ecbea4275965eab4b556ef7a7698dee18bf2"}, + {file = "aiohttp-3.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13031e7ec1188274bad243255c328cc3019e36a5a907978501256000d57a7201"}, + {file = "aiohttp-3.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2bbc55a964b8eecb341e492ae91c3bd0848324d313e1e71a27e3d96e6ee7e8e8"}, + {file = "aiohttp-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8cc0564b286b625e673a2615ede60a1704d0cbbf1b24604e28c31ed37dc62aa"}, + {file = "aiohttp-3.10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f817a54059a4cfbc385a7f51696359c642088710e731e8df80d0607193ed2b73"}, + {file = "aiohttp-3.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8542c9e5bcb2bd3115acdf5adc41cda394e7360916197805e7e32b93d821ef93"}, + {file = "aiohttp-3.10.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:671efce3a4a0281060edf9a07a2f7e6230dca3a1cbc61d110eee7753d28405f7"}, + {file = "aiohttp-3.10.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:0974f3b5b0132edcec92c3306f858ad4356a63d26b18021d859c9927616ebf27"}, + {file = "aiohttp-3.10.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:44bb159b55926b57812dca1b21c34528e800963ffe130d08b049b2d6b994ada7"}, + {file = "aiohttp-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6ae9ae382d1c9617a91647575255ad55a48bfdde34cc2185dd558ce476bf16e9"}, + {file = "aiohttp-3.10.3-cp310-cp310-win32.whl", hash = "sha256:aed12a54d4e1ee647376fa541e1b7621505001f9f939debf51397b9329fd88b9"}, + {file = "aiohttp-3.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:b51aef59370baf7444de1572f7830f59ddbabd04e5292fa4218d02f085f8d299"}, + {file = "aiohttp-3.10.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e021c4c778644e8cdc09487d65564265e6b149896a17d7c0f52e9a088cc44e1b"}, + {file = "aiohttp-3.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:24fade6dae446b183e2410a8628b80df9b7a42205c6bfc2eff783cbeedc224a2"}, + {file = "aiohttp-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bc8e9f15939dacb0e1f2d15f9c41b786051c10472c7a926f5771e99b49a5957f"}, + {file = "aiohttp-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5a9ec959b5381271c8ec9310aae1713b2aec29efa32e232e5ef7dcca0df0279"}, + {file = "aiohttp-3.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a5d0ea8a6467b15d53b00c4e8ea8811e47c3cc1bdbc62b1aceb3076403d551f"}, + {file = "aiohttp-3.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c9ed607dbbdd0d4d39b597e5bf6b0d40d844dfb0ac6a123ed79042ef08c1f87e"}, + {file = "aiohttp-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3e66d5b506832e56add66af88c288c1d5ba0c38b535a1a59e436b300b57b23e"}, + {file = "aiohttp-3.10.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fda91ad797e4914cca0afa8b6cccd5d2b3569ccc88731be202f6adce39503189"}, + {file = "aiohttp-3.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:61ccb867b2f2f53df6598eb2a93329b5eee0b00646ee79ea67d68844747a418e"}, + {file = "aiohttp-3.10.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6d881353264e6156f215b3cb778c9ac3184f5465c2ece5e6fce82e68946868ef"}, + {file = "aiohttp-3.10.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b031ce229114825f49cec4434fa844ccb5225e266c3e146cb4bdd025a6da52f1"}, + {file = "aiohttp-3.10.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5337cc742a03f9e3213b097abff8781f79de7190bbfaa987bd2b7ceb5bb0bdec"}, + {file = "aiohttp-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ab3361159fd3dcd0e48bbe804006d5cfb074b382666e6c064112056eb234f1a9"}, + {file = "aiohttp-3.10.3-cp311-cp311-win32.whl", hash = "sha256:05d66203a530209cbe40f102ebaac0b2214aba2a33c075d0bf825987c36f1f0b"}, + {file = "aiohttp-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:70b4a4984a70a2322b70e088d654528129783ac1ebbf7dd76627b3bd22db2f17"}, + {file = "aiohttp-3.10.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:166de65e2e4e63357cfa8417cf952a519ac42f1654cb2d43ed76899e2319b1ee"}, + {file = "aiohttp-3.10.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7084876352ba3833d5d214e02b32d794e3fd9cf21fdba99cff5acabeb90d9806"}, + {file = "aiohttp-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d98c604c93403288591d7d6d7d6cc8a63459168f8846aeffd5b3a7f3b3e5e09"}, + {file = "aiohttp-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d73b073a25a0bb8bf014345374fe2d0f63681ab5da4c22f9d2025ca3e3ea54fc"}, + {file = "aiohttp-3.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8da6b48c20ce78f5721068f383e0e113dde034e868f1b2f5ee7cb1e95f91db57"}, + {file = "aiohttp-3.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3a9dcdccf50284b1b0dc72bc57e5bbd3cc9bf019060dfa0668f63241ccc16aa7"}, + {file = "aiohttp-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56fb94bae2be58f68d000d046172d8b8e6b1b571eb02ceee5535e9633dcd559c"}, + {file = "aiohttp-3.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bf75716377aad2c718cdf66451c5cf02042085d84522aec1f9246d3e4b8641a6"}, + {file = "aiohttp-3.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6c51ed03e19c885c8e91f574e4bbe7381793f56f93229731597e4a499ffef2a5"}, + {file = "aiohttp-3.10.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b84857b66fa6510a163bb083c1199d1ee091a40163cfcbbd0642495fed096204"}, + {file = "aiohttp-3.10.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c124b9206b1befe0491f48185fd30a0dd51b0f4e0e7e43ac1236066215aff272"}, + {file = "aiohttp-3.10.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3461d9294941937f07bbbaa6227ba799bc71cc3b22c40222568dc1cca5118f68"}, + {file = "aiohttp-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:08bd0754d257b2db27d6bab208c74601df6f21bfe4cb2ec7b258ba691aac64b3"}, + {file = "aiohttp-3.10.3-cp312-cp312-win32.whl", hash = "sha256:7f9159ae530297f61a00116771e57516f89a3de6ba33f314402e41560872b50a"}, + {file = "aiohttp-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:e1128c5d3a466279cb23c4aa32a0f6cb0e7d2961e74e9e421f90e74f75ec1edf"}, + {file = "aiohttp-3.10.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d1100e68e70eb72eadba2b932b185ebf0f28fd2f0dbfe576cfa9d9894ef49752"}, + {file = "aiohttp-3.10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a541414578ff47c0a9b0b8b77381ea86b0c8531ab37fc587572cb662ccd80b88"}, + {file = "aiohttp-3.10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d5548444ef60bf4c7b19ace21f032fa42d822e516a6940d36579f7bfa8513f9c"}, + {file = "aiohttp-3.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ba2e838b5e6a8755ac8297275c9460e729dc1522b6454aee1766c6de6d56e5e"}, + {file = "aiohttp-3.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:48665433bb59144aaf502c324694bec25867eb6630fcd831f7a893ca473fcde4"}, + {file = "aiohttp-3.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bac352fceed158620ce2d701ad39d4c1c76d114255a7c530e057e2b9f55bdf9f"}, + {file = "aiohttp-3.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b0f670502100cdc567188c49415bebba947eb3edaa2028e1a50dd81bd13363f"}, + {file = "aiohttp-3.10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b09f38a67679e32d380fe512189ccb0b25e15afc79b23fbd5b5e48e4fc8fd9"}, + {file = "aiohttp-3.10.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:cd788602e239ace64f257d1c9d39898ca65525583f0fbf0988bcba19418fe93f"}, + {file = "aiohttp-3.10.3-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:214277dcb07ab3875f17ee1c777d446dcce75bea85846849cc9d139ab8f5081f"}, + {file = "aiohttp-3.10.3-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:32007fdcaab789689c2ecaaf4b71f8e37bf012a15cd02c0a9db8c4d0e7989fa8"}, + {file = "aiohttp-3.10.3-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:123e5819bfe1b87204575515cf448ab3bf1489cdeb3b61012bde716cda5853e7"}, + {file = "aiohttp-3.10.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:812121a201f0c02491a5db335a737b4113151926a79ae9ed1a9f41ea225c0e3f"}, + {file = "aiohttp-3.10.3-cp38-cp38-win32.whl", hash = "sha256:b97dc9a17a59f350c0caa453a3cb35671a2ffa3a29a6ef3568b523b9113d84e5"}, + {file = "aiohttp-3.10.3-cp38-cp38-win_amd64.whl", hash = "sha256:3731a73ddc26969d65f90471c635abd4e1546a25299b687e654ea6d2fc052394"}, + {file = "aiohttp-3.10.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38d91b98b4320ffe66efa56cb0f614a05af53b675ce1b8607cdb2ac826a8d58e"}, + {file = "aiohttp-3.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9743fa34a10a36ddd448bba8a3adc2a66a1c575c3c2940301bacd6cc896c6bf1"}, + {file = "aiohttp-3.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7c126f532caf238031c19d169cfae3c6a59129452c990a6e84d6e7b198a001dc"}, + {file = "aiohttp-3.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:926e68438f05703e500b06fe7148ef3013dd6f276de65c68558fa9974eeb59ad"}, + {file = "aiohttp-3.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:434b3ab75833accd0b931d11874e206e816f6e6626fd69f643d6a8269cd9166a"}, + {file = "aiohttp-3.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d35235a44ec38109b811c3600d15d8383297a8fab8e3dec6147477ec8636712a"}, + {file = "aiohttp-3.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59c489661edbd863edb30a8bd69ecb044bd381d1818022bc698ba1b6f80e5dd1"}, + {file = "aiohttp-3.10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50544fe498c81cb98912afabfc4e4d9d85e89f86238348e3712f7ca6a2f01dab"}, + {file = "aiohttp-3.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:09bc79275737d4dc066e0ae2951866bb36d9c6b460cb7564f111cc0427f14844"}, + {file = "aiohttp-3.10.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:af4dbec58e37f5afff4f91cdf235e8e4b0bd0127a2a4fd1040e2cad3369d2f06"}, + {file = "aiohttp-3.10.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:b22cae3c9dd55a6b4c48c63081d31c00fc11fa9db1a20c8a50ee38c1a29539d2"}, + {file = "aiohttp-3.10.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ba562736d3fbfe9241dad46c1a8994478d4a0e50796d80e29d50cabe8fbfcc3f"}, + {file = "aiohttp-3.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f25d6c4e82d7489be84f2b1c8212fafc021b3731abdb61a563c90e37cced3a21"}, + {file = "aiohttp-3.10.3-cp39-cp39-win32.whl", hash = "sha256:b69d832e5f5fa15b1b6b2c8eb6a9fd2c0ec1fd7729cb4322ed27771afc9fc2ac"}, + {file = "aiohttp-3.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:673bb6e3249dc8825df1105f6ef74e2eab779b7ff78e96c15cadb78b04a83752"}, + {file = "aiohttp-3.10.3.tar.gz", hash = "sha256:21650e7032cc2d31fc23d353d7123e771354f2a3d5b05a5647fc30fea214e696"}, ] [package.dependencies] @@ -290,32 +290,32 @@ files = [ [[package]] name = "attrs" -version = "23.2.0" +version = "24.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, - {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, + {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, + {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, ] [package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] -tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "babel" -version = "2.15.0" +version = "2.16.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" files = [ - {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, - {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, + {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, + {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, ] [package.dependencies] @@ -450,63 +450,78 @@ files = [ [[package]] name = "cffi" -version = "1.16.0" +version = "1.17.0" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ - {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, - {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, - {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, - {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, - {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, - {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, - {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, - {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, - {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, - {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, - {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, - {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, - {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, - {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, - {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, - {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, - {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, - {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, - {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, - {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, - {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, - {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, - {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, - {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, - {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, - {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, + {file = "cffi-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb"}, + {file = "cffi-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab"}, + {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b"}, + {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206"}, + {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa"}, + {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f"}, + {file = "cffi-1.17.0-cp310-cp310-win32.whl", hash = "sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc"}, + {file = "cffi-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2"}, + {file = "cffi-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720"}, + {file = "cffi-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8"}, + {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6"}, + {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91"}, + {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8"}, + {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb"}, + {file = "cffi-1.17.0-cp311-cp311-win32.whl", hash = "sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9"}, + {file = "cffi-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0"}, + {file = "cffi-1.17.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc"}, + {file = "cffi-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828"}, + {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150"}, + {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a"}, + {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885"}, + {file = "cffi-1.17.0-cp312-cp312-win32.whl", hash = "sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492"}, + {file = "cffi-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2"}, + {file = "cffi-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118"}, + {file = "cffi-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204"}, + {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f"}, + {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0"}, + {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4"}, + {file = "cffi-1.17.0-cp313-cp313-win32.whl", hash = "sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a"}, + {file = "cffi-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7"}, + {file = "cffi-1.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401"}, + {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c"}, + {file = "cffi-1.17.0-cp38-cp38-win32.whl", hash = "sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499"}, + {file = "cffi-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c"}, + {file = "cffi-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2"}, + {file = "cffi-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058"}, + {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932"}, + {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693"}, + {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3"}, + {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4"}, + {file = "cffi-1.17.0-cp39-cp39-win32.whl", hash = "sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb"}, + {file = "cffi-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29"}, + {file = "cffi-1.17.0.tar.gz", hash = "sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76"}, ] [package.dependencies] @@ -672,63 +687,83 @@ test = ["pytest"] [[package]] name = "coverage" -version = "7.6.0" +version = "7.6.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dff044f661f59dace805eedb4a7404c573b6ff0cdba4a524141bc63d7be5c7fd"}, - {file = "coverage-7.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8659fd33ee9e6ca03950cfdcdf271d645cf681609153f218826dd9805ab585c"}, - {file = "coverage-7.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7792f0ab20df8071d669d929c75c97fecfa6bcab82c10ee4adb91c7a54055463"}, - {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b3cd1ca7cd73d229487fa5caca9e4bc1f0bca96526b922d61053ea751fe791"}, - {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7e128f85c0b419907d1f38e616c4f1e9f1d1b37a7949f44df9a73d5da5cd53c"}, - {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a94925102c89247530ae1dab7dc02c690942566f22e189cbd53579b0693c0783"}, - {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dcd070b5b585b50e6617e8972f3fbbee786afca71b1936ac06257f7e178f00f6"}, - {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d50a252b23b9b4dfeefc1f663c568a221092cbaded20a05a11665d0dbec9b8fb"}, - {file = "coverage-7.6.0-cp310-cp310-win32.whl", hash = "sha256:0e7b27d04131c46e6894f23a4ae186a6a2207209a05df5b6ad4caee6d54a222c"}, - {file = "coverage-7.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dece71673b3187c86226c3ca793c5f891f9fc3d8aa183f2e3653da18566169"}, - {file = "coverage-7.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7b525ab52ce18c57ae232ba6f7010297a87ced82a2383b1afd238849c1ff933"}, - {file = "coverage-7.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bea27c4269234e06f621f3fac3925f56ff34bc14521484b8f66a580aacc2e7d"}, - {file = "coverage-7.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8d1d1821ba5fc88d4a4f45387b65de52382fa3ef1f0115a4f7a20cdfab0e94"}, - {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c322ef2bbe15057bc4bf132b525b7e3f7206f071799eb8aa6ad1940bcf5fb1"}, - {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03cafe82c1b32b770a29fd6de923625ccac3185a54a5e66606da26d105f37dac"}, - {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0d1b923fc4a40c5832be4f35a5dab0e5ff89cddf83bb4174499e02ea089daf57"}, - {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4b03741e70fb811d1a9a1d75355cf391f274ed85847f4b78e35459899f57af4d"}, - {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a73d18625f6a8a1cbb11eadc1d03929f9510f4131879288e3f7922097a429f63"}, - {file = "coverage-7.6.0-cp311-cp311-win32.whl", hash = "sha256:65fa405b837060db569a61ec368b74688f429b32fa47a8929a7a2f9b47183713"}, - {file = "coverage-7.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:6379688fb4cfa921ae349c76eb1a9ab26b65f32b03d46bb0eed841fd4cb6afb1"}, - {file = "coverage-7.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f7db0b6ae1f96ae41afe626095149ecd1b212b424626175a6633c2999eaad45b"}, - {file = "coverage-7.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bbdf9a72403110a3bdae77948b8011f644571311c2fb35ee15f0f10a8fc082e8"}, - {file = "coverage-7.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc44bf0315268e253bf563f3560e6c004efe38f76db03a1558274a6e04bf5d5"}, - {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da8549d17489cd52f85a9829d0e1d91059359b3c54a26f28bec2c5d369524807"}, - {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0086cd4fc71b7d485ac93ca4239c8f75732c2ae3ba83f6be1c9be59d9e2c6382"}, - {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fad32ee9b27350687035cb5fdf9145bc9cf0a094a9577d43e909948ebcfa27b"}, - {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:044a0985a4f25b335882b0966625270a8d9db3d3409ddc49a4eb00b0ef5e8cee"}, - {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:76d5f82213aa78098b9b964ea89de4617e70e0d43e97900c2778a50856dac605"}, - {file = "coverage-7.6.0-cp312-cp312-win32.whl", hash = "sha256:3c59105f8d58ce500f348c5b56163a4113a440dad6daa2294b5052a10db866da"}, - {file = "coverage-7.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:ca5d79cfdae420a1d52bf177de4bc2289c321d6c961ae321503b2ca59c17ae67"}, - {file = "coverage-7.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d39bd10f0ae453554798b125d2f39884290c480f56e8a02ba7a6ed552005243b"}, - {file = "coverage-7.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:beb08e8508e53a568811016e59f3234d29c2583f6b6e28572f0954a6b4f7e03d"}, - {file = "coverage-7.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2e16f4cd2bc4d88ba30ca2d3bbf2f21f00f382cf4e1ce3b1ddc96c634bc48ca"}, - {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6616d1c9bf1e3faea78711ee42a8b972367d82ceae233ec0ac61cc7fec09fa6b"}, - {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad4567d6c334c46046d1c4c20024de2a1c3abc626817ae21ae3da600f5779b44"}, - {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d17c6a415d68cfe1091d3296ba5749d3d8696e42c37fca5d4860c5bf7b729f03"}, - {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9146579352d7b5f6412735d0f203bbd8d00113a680b66565e205bc605ef81bc6"}, - {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cdab02a0a941af190df8782aafc591ef3ad08824f97850b015c8c6a8b3877b0b"}, - {file = "coverage-7.6.0-cp38-cp38-win32.whl", hash = "sha256:df423f351b162a702c053d5dddc0fc0ef9a9e27ea3f449781ace5f906b664428"}, - {file = "coverage-7.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:f2501d60d7497fd55e391f423f965bbe9e650e9ffc3c627d5f0ac516026000b8"}, - {file = "coverage-7.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7221f9ac9dad9492cecab6f676b3eaf9185141539d5c9689d13fd6b0d7de840c"}, - {file = "coverage-7.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddaaa91bfc4477d2871442bbf30a125e8fe6b05da8a0015507bfbf4718228ab2"}, - {file = "coverage-7.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cbe651f3904e28f3a55d6f371203049034b4ddbce65a54527a3f189ca3b390"}, - {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831b476d79408ab6ccfadaaf199906c833f02fdb32c9ab907b1d4aa0713cfa3b"}, - {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46c3d091059ad0b9c59d1034de74a7f36dcfa7f6d3bde782c49deb42438f2450"}, - {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4d5fae0a22dc86259dee66f2cc6c1d3e490c4a1214d7daa2a93d07491c5c04b6"}, - {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:07ed352205574aad067482e53dd606926afebcb5590653121063fbf4e2175166"}, - {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:49c76cdfa13015c4560702574bad67f0e15ca5a2872c6a125f6327ead2b731dd"}, - {file = "coverage-7.6.0-cp39-cp39-win32.whl", hash = "sha256:482855914928c8175735a2a59c8dc5806cf7d8f032e4820d52e845d1f731dca2"}, - {file = "coverage-7.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:543ef9179bc55edfd895154a51792b01c017c87af0ebaae092720152e19e42ca"}, - {file = "coverage-7.6.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:6fe885135c8a479d3e37a7aae61cbd3a0fb2deccb4dda3c25f92a49189f766d6"}, - {file = "coverage-7.6.0.tar.gz", hash = "sha256:289cc803fa1dc901f84701ac10c9ee873619320f2f9aff38794db4a4a0268d51"}, + {file = "coverage-7.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b06079abebbc0e89e6163b8e8f0e16270124c154dc6e4a47b413dd538859af16"}, + {file = "coverage-7.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cf4b19715bccd7ee27b6b120e7e9dd56037b9c0681dcc1adc9ba9db3d417fa36"}, + {file = "coverage-7.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61c0abb4c85b095a784ef23fdd4aede7a2628478e7baba7c5e3deba61070a02"}, + {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd21f6ae3f08b41004dfb433fa895d858f3f5979e7762d052b12aef444e29afc"}, + {file = "coverage-7.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f59d57baca39b32db42b83b2a7ba6f47ad9c394ec2076b084c3f029b7afca23"}, + {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a1ac0ae2b8bd743b88ed0502544847c3053d7171a3cff9228af618a068ed9c34"}, + {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e6a08c0be454c3b3beb105c0596ebdc2371fab6bb90c0c0297f4e58fd7e1012c"}, + {file = "coverage-7.6.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f5796e664fe802da4f57a168c85359a8fbf3eab5e55cd4e4569fbacecc903959"}, + {file = "coverage-7.6.1-cp310-cp310-win32.whl", hash = "sha256:7bb65125fcbef8d989fa1dd0e8a060999497629ca5b0efbca209588a73356232"}, + {file = "coverage-7.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:3115a95daa9bdba70aea750db7b96b37259a81a709223c8448fa97727d546fe0"}, + {file = "coverage-7.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7dea0889685db8550f839fa202744652e87c60015029ce3f60e006f8c4462c93"}, + {file = "coverage-7.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed37bd3c3b063412f7620464a9ac1314d33100329f39799255fb8d3027da50d3"}, + {file = "coverage-7.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85f5e9a5f8b73e2350097c3756ef7e785f55bd71205defa0bfdaf96c31616ff"}, + {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bc572be474cafb617672c43fe989d6e48d3c83af02ce8de73fff1c6bb3c198d"}, + {file = "coverage-7.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6"}, + {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f4aa8219db826ce6be7099d559f8ec311549bfc4046f7f9fe9b5cea5c581c56"}, + {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:fc5a77d0c516700ebad189b587de289a20a78324bc54baee03dd486f0855d234"}, + {file = "coverage-7.6.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b48f312cca9621272ae49008c7f613337c53fadca647d6384cc129d2996d1133"}, + {file = "coverage-7.6.1-cp311-cp311-win32.whl", hash = "sha256:1125ca0e5fd475cbbba3bb67ae20bd2c23a98fac4e32412883f9bcbaa81c314c"}, + {file = "coverage-7.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:8ae539519c4c040c5ffd0632784e21b2f03fc1340752af711f33e5be83a9d6c6"}, + {file = "coverage-7.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:95cae0efeb032af8458fc27d191f85d1717b1d4e49f7cb226cf526ff28179778"}, + {file = "coverage-7.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5621a9175cf9d0b0c84c2ef2b12e9f5f5071357c4d2ea6ca1cf01814f45d2391"}, + {file = "coverage-7.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:260933720fdcd75340e7dbe9060655aff3af1f0c5d20f46b57f262ab6c86a5e8"}, + {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07e2ca0ad381b91350c0ed49d52699b625aab2b44b65e1b4e02fa9df0e92ad2d"}, + {file = "coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca"}, + {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:877abb17e6339d96bf08e7a622d05095e72b71f8afd8a9fefc82cf30ed944163"}, + {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3e0cadcf6733c09154b461f1ca72d5416635e5e4ec4e536192180d34ec160f8a"}, + {file = "coverage-7.6.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3c02d12f837d9683e5ab2f3d9844dc57655b92c74e286c262e0fc54213c216d"}, + {file = "coverage-7.6.1-cp312-cp312-win32.whl", hash = "sha256:e05882b70b87a18d937ca6768ff33cc3f72847cbc4de4491c8e73880766718e5"}, + {file = "coverage-7.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:b5d7b556859dd85f3a541db6a4e0167b86e7273e1cdc973e5b175166bb634fdb"}, + {file = "coverage-7.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a4acd025ecc06185ba2b801f2de85546e0b8ac787cf9d3b06e7e2a69f925b106"}, + {file = "coverage-7.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a6d3adcf24b624a7b778533480e32434a39ad8fa30c315208f6d3e5542aeb6e9"}, + {file = "coverage-7.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0c212c49b6c10e6951362f7c6df3329f04c2b1c28499563d4035d964ab8e08c"}, + {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e81d7a3e58882450ec4186ca59a3f20a5d4440f25b1cff6f0902ad890e6748a"}, + {file = "coverage-7.6.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b260de9790fd81e69401c2dc8b17da47c8038176a79092a89cb2b7d945d060"}, + {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a78d169acd38300060b28d600344a803628c3fd585c912cacc9ea8790fe96862"}, + {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2c09f4ce52cb99dd7505cd0fc8e0e37c77b87f46bc9c1eb03fe3bc9991085388"}, + {file = "coverage-7.6.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6878ef48d4227aace338d88c48738a4258213cd7b74fd9a3d4d7582bb1d8a155"}, + {file = "coverage-7.6.1-cp313-cp313-win32.whl", hash = "sha256:44df346d5215a8c0e360307d46ffaabe0f5d3502c8a1cefd700b34baf31d411a"}, + {file = "coverage-7.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:8284cf8c0dd272a247bc154eb6c95548722dce90d098c17a883ed36e67cdb129"}, + {file = "coverage-7.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d3296782ca4eab572a1a4eca686d8bfb00226300dcefdf43faa25b5242ab8a3e"}, + {file = "coverage-7.6.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:502753043567491d3ff6d08629270127e0c31d4184c4c8d98f92c26f65019962"}, + {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a89ecca80709d4076b95f89f308544ec8f7b4727e8a547913a35f16717856cb"}, + {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a318d68e92e80af8b00fa99609796fdbcdfef3629c77c6283566c6f02c6d6704"}, + {file = "coverage-7.6.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13b0a73a0896988f053e4fbb7de6d93388e6dd292b0d87ee51d106f2c11b465b"}, + {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4421712dbfc5562150f7554f13dde997a2e932a6b5f352edcce948a815efee6f"}, + {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:166811d20dfea725e2e4baa71fffd6c968a958577848d2131f39b60043400223"}, + {file = "coverage-7.6.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:225667980479a17db1048cb2bf8bfb39b8e5be8f164b8f6628b64f78a72cf9d3"}, + {file = "coverage-7.6.1-cp313-cp313t-win32.whl", hash = "sha256:170d444ab405852903b7d04ea9ae9b98f98ab6d7e63e1115e82620807519797f"}, + {file = "coverage-7.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b9f222de8cded79c49bf184bdbc06630d4c58eec9459b939b4a690c82ed05657"}, + {file = "coverage-7.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6db04803b6c7291985a761004e9060b2bca08da6d04f26a7f2294b8623a0c1a0"}, + {file = "coverage-7.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f1adfc8ac319e1a348af294106bc6a8458a0f1633cc62a1446aebc30c5fa186a"}, + {file = "coverage-7.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a95324a9de9650a729239daea117df21f4b9868ce32e63f8b650ebe6cef5595b"}, + {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b43c03669dc4618ec25270b06ecd3ee4fa94c7f9b3c14bae6571ca00ef98b0d3"}, + {file = "coverage-7.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8929543a7192c13d177b770008bc4e8119f2e1f881d563fc6b6305d2d0ebe9de"}, + {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a09ece4a69cf399510c8ab25e0950d9cf2b42f7b3cb0374f95d2e2ff594478a6"}, + {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9054a0754de38d9dbd01a46621636689124d666bad1936d76c0341f7d71bf569"}, + {file = "coverage-7.6.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0dbde0f4aa9a16fa4d754356a8f2e36296ff4d83994b2c9d8398aa32f222f989"}, + {file = "coverage-7.6.1-cp38-cp38-win32.whl", hash = "sha256:da511e6ad4f7323ee5702e6633085fb76c2f893aaf8ce4c51a0ba4fc07580ea7"}, + {file = "coverage-7.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:3f1156e3e8f2872197af3840d8ad307a9dd18e615dc64d9ee41696f287c57ad8"}, + {file = "coverage-7.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abd5fd0db5f4dc9289408aaf34908072f805ff7792632250dcb36dc591d24255"}, + {file = "coverage-7.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:547f45fa1a93154bd82050a7f3cddbc1a7a4dd2a9bf5cb7d06f4ae29fe94eaf8"}, + {file = "coverage-7.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:645786266c8f18a931b65bfcefdbf6952dd0dea98feee39bd188607a9d307ed2"}, + {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e0b2df163b8ed01d515807af24f63de04bebcecbd6c3bfeff88385789fdf75a"}, + {file = "coverage-7.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:609b06f178fe8e9f89ef676532760ec0b4deea15e9969bf754b37f7c40326dbc"}, + {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:702855feff378050ae4f741045e19a32d57d19f3e0676d589df0575008ea5004"}, + {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2bdb062ea438f22d99cba0d7829c2ef0af1d768d1e4a4f528087224c90b132cb"}, + {file = "coverage-7.6.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9c56863d44bd1c4fe2abb8a4d6f5371d197f1ac0ebdee542f07f35895fc07f36"}, + {file = "coverage-7.6.1-cp39-cp39-win32.whl", hash = "sha256:6e2cd258d7d927d09493c8df1ce9174ad01b381d4729a9d8d4e38670ca24774c"}, + {file = "coverage-7.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:06a737c882bd26d0d6ee7269b20b12f14a8704807a01056c80bb881a4b2ce6ca"}, + {file = "coverage-7.6.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:e9a6e0eb86070e8ccaedfbd9d38fec54864f3125ab95419970575b42af7541df"}, + {file = "coverage-7.6.1.tar.gz", hash = "sha256:953510dfb7b12ab69d20135a0662397f077c59b1e6379a768e97c59d852ee51d"}, ] [package.dependencies] @@ -788,33 +823,33 @@ test-randomorder = ["pytest-randomly"] [[package]] name = "debugpy" -version = "1.8.2" +version = "1.8.5" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7ee2e1afbf44b138c005e4380097d92532e1001580853a7cb40ed84e0ef1c3d2"}, - {file = "debugpy-1.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f8c3f7c53130a070f0fc845a0f2cee8ed88d220d6b04595897b66605df1edd6"}, - {file = "debugpy-1.8.2-cp310-cp310-win32.whl", hash = "sha256:f179af1e1bd4c88b0b9f0fa153569b24f6b6f3de33f94703336363ae62f4bf47"}, - {file = "debugpy-1.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:0600faef1d0b8d0e85c816b8bb0cb90ed94fc611f308d5fde28cb8b3d2ff0fe3"}, - {file = "debugpy-1.8.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:8a13417ccd5978a642e91fb79b871baded925d4fadd4dfafec1928196292aa0a"}, - {file = "debugpy-1.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acdf39855f65c48ac9667b2801234fc64d46778021efac2de7e50907ab90c634"}, - {file = "debugpy-1.8.2-cp311-cp311-win32.whl", hash = "sha256:2cbd4d9a2fc5e7f583ff9bf11f3b7d78dfda8401e8bb6856ad1ed190be4281ad"}, - {file = "debugpy-1.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:d3408fddd76414034c02880e891ea434e9a9cf3a69842098ef92f6e809d09afa"}, - {file = "debugpy-1.8.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:5d3ccd39e4021f2eb86b8d748a96c766058b39443c1f18b2dc52c10ac2757835"}, - {file = "debugpy-1.8.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62658aefe289598680193ff655ff3940e2a601765259b123dc7f89c0239b8cd3"}, - {file = "debugpy-1.8.2-cp312-cp312-win32.whl", hash = "sha256:bd11fe35d6fd3431f1546d94121322c0ac572e1bfb1f6be0e9b8655fb4ea941e"}, - {file = "debugpy-1.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:15bc2f4b0f5e99bf86c162c91a74c0631dbd9cef3c6a1d1329c946586255e859"}, - {file = "debugpy-1.8.2-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:5a019d4574afedc6ead1daa22736c530712465c0c4cd44f820d803d937531b2d"}, - {file = "debugpy-1.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40f062d6877d2e45b112c0bbade9a17aac507445fd638922b1a5434df34aed02"}, - {file = "debugpy-1.8.2-cp38-cp38-win32.whl", hash = "sha256:c78ba1680f1015c0ca7115671fe347b28b446081dada3fedf54138f44e4ba031"}, - {file = "debugpy-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:cf327316ae0c0e7dd81eb92d24ba8b5e88bb4d1b585b5c0d32929274a66a5210"}, - {file = "debugpy-1.8.2-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1523bc551e28e15147815d1397afc150ac99dbd3a8e64641d53425dba57b0ff9"}, - {file = "debugpy-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e24ccb0cd6f8bfaec68d577cb49e9c680621c336f347479b3fce060ba7c09ec1"}, - {file = "debugpy-1.8.2-cp39-cp39-win32.whl", hash = "sha256:7f8d57a98c5a486c5c7824bc0b9f2f11189d08d73635c326abef268f83950326"}, - {file = "debugpy-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:16c8dcab02617b75697a0a925a62943e26a0330da076e2a10437edd9f0bf3755"}, - {file = "debugpy-1.8.2-py2.py3-none-any.whl", hash = "sha256:16e16df3a98a35c63c3ab1e4d19be4cbc7fdda92d9ddc059294f18910928e0ca"}, - {file = "debugpy-1.8.2.zip", hash = "sha256:95378ed08ed2089221896b9b3a8d021e642c24edc8fef20e5d4342ca8be65c00"}, + {file = "debugpy-1.8.5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:7e4d594367d6407a120b76bdaa03886e9eb652c05ba7f87e37418426ad2079f7"}, + {file = "debugpy-1.8.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4413b7a3ede757dc33a273a17d685ea2b0c09dbd312cc03f5534a0fd4d40750a"}, + {file = "debugpy-1.8.5-cp310-cp310-win32.whl", hash = "sha256:dd3811bd63632bb25eda6bd73bea8e0521794cda02be41fa3160eb26fc29e7ed"}, + {file = "debugpy-1.8.5-cp310-cp310-win_amd64.whl", hash = "sha256:b78c1250441ce893cb5035dd6f5fc12db968cc07f91cc06996b2087f7cefdd8e"}, + {file = "debugpy-1.8.5-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:606bccba19f7188b6ea9579c8a4f5a5364ecd0bf5a0659c8a5d0e10dcee3032a"}, + {file = "debugpy-1.8.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db9fb642938a7a609a6c865c32ecd0d795d56c1aaa7a7a5722d77855d5e77f2b"}, + {file = "debugpy-1.8.5-cp311-cp311-win32.whl", hash = "sha256:4fbb3b39ae1aa3e5ad578f37a48a7a303dad9a3d018d369bc9ec629c1cfa7408"}, + {file = "debugpy-1.8.5-cp311-cp311-win_amd64.whl", hash = "sha256:345d6a0206e81eb68b1493ce2fbffd57c3088e2ce4b46592077a943d2b968ca3"}, + {file = "debugpy-1.8.5-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:5b5c770977c8ec6c40c60d6f58cacc7f7fe5a45960363d6974ddb9b62dbee156"}, + {file = "debugpy-1.8.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0a65b00b7cdd2ee0c2cf4c7335fef31e15f1b7056c7fdbce9e90193e1a8c8cb"}, + {file = "debugpy-1.8.5-cp312-cp312-win32.whl", hash = "sha256:c9f7c15ea1da18d2fcc2709e9f3d6de98b69a5b0fff1807fb80bc55f906691f7"}, + {file = "debugpy-1.8.5-cp312-cp312-win_amd64.whl", hash = "sha256:28ced650c974aaf179231668a293ecd5c63c0a671ae6d56b8795ecc5d2f48d3c"}, + {file = "debugpy-1.8.5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:3df6692351172a42af7558daa5019651f898fc67450bf091335aa8a18fbf6f3a"}, + {file = "debugpy-1.8.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd04a73eb2769eb0bfe43f5bfde1215c5923d6924b9b90f94d15f207a402226"}, + {file = "debugpy-1.8.5-cp38-cp38-win32.whl", hash = "sha256:8f913ee8e9fcf9d38a751f56e6de12a297ae7832749d35de26d960f14280750a"}, + {file = "debugpy-1.8.5-cp38-cp38-win_amd64.whl", hash = "sha256:a697beca97dad3780b89a7fb525d5e79f33821a8bc0c06faf1f1289e549743cf"}, + {file = "debugpy-1.8.5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:0a1029a2869d01cb777216af8c53cda0476875ef02a2b6ff8b2f2c9a4b04176c"}, + {file = "debugpy-1.8.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84c276489e141ed0b93b0af648eef891546143d6a48f610945416453a8ad406"}, + {file = "debugpy-1.8.5-cp39-cp39-win32.whl", hash = "sha256:ad84b7cde7fd96cf6eea34ff6c4a1b7887e0fe2ea46e099e53234856f9d99a34"}, + {file = "debugpy-1.8.5-cp39-cp39-win_amd64.whl", hash = "sha256:7b0fe36ed9d26cb6836b0a51453653f8f2e347ba7348f2bbfe76bfeb670bfb1c"}, + {file = "debugpy-1.8.5-py2.py3-none-any.whl", hash = "sha256:55919dce65b471eff25901acf82d328bbd5b833526b6c1364bd5133754777a44"}, + {file = "debugpy-1.8.5.zip", hash = "sha256:b2112cfeb34b4507399d298fe7023a16656fc553ed5246536060ca7bd0e668d0"}, ] [[package]] @@ -1417,6 +1452,76 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "jiter" +version = "0.5.0" +description = "Fast iterable JSON parser." +optional = true +python-versions = ">=3.8" +files = [ + {file = "jiter-0.5.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b599f4e89b3def9a94091e6ee52e1d7ad7bc33e238ebb9c4c63f211d74822c3f"}, + {file = "jiter-0.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a063f71c4b06225543dddadbe09d203dc0c95ba352d8b85f1221173480a71d5"}, + {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:acc0d5b8b3dd12e91dd184b87273f864b363dfabc90ef29a1092d269f18c7e28"}, + {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c22541f0b672f4d741382a97c65609332a783501551445ab2df137ada01e019e"}, + {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:63314832e302cc10d8dfbda0333a384bf4bcfce80d65fe99b0f3c0da8945a91a"}, + {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a25fbd8a5a58061e433d6fae6d5298777c0814a8bcefa1e5ecfff20c594bd749"}, + {file = "jiter-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:503b2c27d87dfff5ab717a8200fbbcf4714516c9d85558048b1fc14d2de7d8dc"}, + {file = "jiter-0.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6d1f3d27cce923713933a844872d213d244e09b53ec99b7a7fdf73d543529d6d"}, + {file = "jiter-0.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c95980207b3998f2c3b3098f357994d3fd7661121f30669ca7cb945f09510a87"}, + {file = "jiter-0.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:afa66939d834b0ce063f57d9895e8036ffc41c4bd90e4a99631e5f261d9b518e"}, + {file = "jiter-0.5.0-cp310-none-win32.whl", hash = "sha256:f16ca8f10e62f25fd81d5310e852df6649af17824146ca74647a018424ddeccf"}, + {file = "jiter-0.5.0-cp310-none-win_amd64.whl", hash = "sha256:b2950e4798e82dd9176935ef6a55cf6a448b5c71515a556da3f6b811a7844f1e"}, + {file = "jiter-0.5.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d4c8e1ed0ef31ad29cae5ea16b9e41529eb50a7fba70600008e9f8de6376d553"}, + {file = "jiter-0.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c6f16e21276074a12d8421692515b3fd6d2ea9c94fd0734c39a12960a20e85f3"}, + {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5280e68e7740c8c128d3ae5ab63335ce6d1fb6603d3b809637b11713487af9e6"}, + {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:583c57fc30cc1fec360e66323aadd7fc3edeec01289bfafc35d3b9dcb29495e4"}, + {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26351cc14507bdf466b5f99aba3df3143a59da75799bf64a53a3ad3155ecded9"}, + {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829df14d656b3fb87e50ae8b48253a8851c707da9f30d45aacab2aa2ba2d614"}, + {file = "jiter-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a42a4bdcf7307b86cb863b2fb9bb55029b422d8f86276a50487982d99eed7c6e"}, + {file = "jiter-0.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04d461ad0aebf696f8da13c99bc1b3e06f66ecf6cfd56254cc402f6385231c06"}, + {file = "jiter-0.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e6375923c5f19888c9226582a124b77b622f8fd0018b843c45eeb19d9701c403"}, + {file = "jiter-0.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2cec323a853c24fd0472517113768c92ae0be8f8c384ef4441d3632da8baa646"}, + {file = "jiter-0.5.0-cp311-none-win32.whl", hash = "sha256:aa1db0967130b5cab63dfe4d6ff547c88b2a394c3410db64744d491df7f069bb"}, + {file = "jiter-0.5.0-cp311-none-win_amd64.whl", hash = "sha256:aa9d2b85b2ed7dc7697597dcfaac66e63c1b3028652f751c81c65a9f220899ae"}, + {file = "jiter-0.5.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9f664e7351604f91dcdd557603c57fc0d551bc65cc0a732fdacbf73ad335049a"}, + {file = "jiter-0.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:044f2f1148b5248ad2c8c3afb43430dccf676c5a5834d2f5089a4e6c5bbd64df"}, + {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:702e3520384c88b6e270c55c772d4bd6d7b150608dcc94dea87ceba1b6391248"}, + {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:528d742dcde73fad9d63e8242c036ab4a84389a56e04efd854062b660f559544"}, + {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cf80e5fe6ab582c82f0c3331df27a7e1565e2dcf06265afd5173d809cdbf9ba"}, + {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:44dfc9ddfb9b51a5626568ef4e55ada462b7328996294fe4d36de02fce42721f"}, + {file = "jiter-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c451f7922992751a936b96c5f5b9bb9312243d9b754c34b33d0cb72c84669f4e"}, + {file = "jiter-0.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:308fce789a2f093dca1ff91ac391f11a9f99c35369117ad5a5c6c4903e1b3e3a"}, + {file = "jiter-0.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7f5ad4a7c6b0d90776fdefa294f662e8a86871e601309643de30bf94bb93a64e"}, + {file = "jiter-0.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ea189db75f8eca08807d02ae27929e890c7d47599ce3d0a6a5d41f2419ecf338"}, + {file = "jiter-0.5.0-cp312-none-win32.whl", hash = "sha256:e3bbe3910c724b877846186c25fe3c802e105a2c1fc2b57d6688b9f8772026e4"}, + {file = "jiter-0.5.0-cp312-none-win_amd64.whl", hash = "sha256:a586832f70c3f1481732919215f36d41c59ca080fa27a65cf23d9490e75b2ef5"}, + {file = "jiter-0.5.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f04bc2fc50dc77be9d10f73fcc4e39346402ffe21726ff41028f36e179b587e6"}, + {file = "jiter-0.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6f433a4169ad22fcb550b11179bb2b4fd405de9b982601914ef448390b2954f3"}, + {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad4a6398c85d3a20067e6c69890ca01f68659da94d74c800298581724e426c7e"}, + {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6baa88334e7af3f4d7a5c66c3a63808e5efbc3698a1c57626541ddd22f8e4fbf"}, + {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ece0a115c05efca597c6d938f88c9357c843f8c245dbbb53361a1c01afd7148"}, + {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:335942557162ad372cc367ffaf93217117401bf930483b4b3ebdb1223dbddfa7"}, + {file = "jiter-0.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:649b0ee97a6e6da174bffcb3c8c051a5935d7d4f2f52ea1583b5b3e7822fbf14"}, + {file = "jiter-0.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f4be354c5de82157886ca7f5925dbda369b77344b4b4adf2723079715f823989"}, + {file = "jiter-0.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5206144578831a6de278a38896864ded4ed96af66e1e63ec5dd7f4a1fce38a3a"}, + {file = "jiter-0.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8120c60f8121ac3d6f072b97ef0e71770cc72b3c23084c72c4189428b1b1d3b6"}, + {file = "jiter-0.5.0-cp38-none-win32.whl", hash = "sha256:6f1223f88b6d76b519cb033a4d3687ca157c272ec5d6015c322fc5b3074d8a5e"}, + {file = "jiter-0.5.0-cp38-none-win_amd64.whl", hash = "sha256:c59614b225d9f434ea8fc0d0bec51ef5fa8c83679afedc0433905994fb36d631"}, + {file = "jiter-0.5.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:0af3838cfb7e6afee3f00dc66fa24695199e20ba87df26e942820345b0afc566"}, + {file = "jiter-0.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:550b11d669600dbc342364fd4adbe987f14d0bbedaf06feb1b983383dcc4b961"}, + {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:489875bf1a0ffb3cb38a727b01e6673f0f2e395b2aad3c9387f94187cb214bbf"}, + {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b250ca2594f5599ca82ba7e68785a669b352156260c5362ea1b4e04a0f3e2389"}, + {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ea18e01f785c6667ca15407cd6dabbe029d77474d53595a189bdc813347218e"}, + {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462a52be85b53cd9bffd94e2d788a09984274fe6cebb893d6287e1c296d50653"}, + {file = "jiter-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92cc68b48d50fa472c79c93965e19bd48f40f207cb557a8346daa020d6ba973b"}, + {file = "jiter-0.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1c834133e59a8521bc87ebcad773608c6fa6ab5c7a022df24a45030826cf10bc"}, + {file = "jiter-0.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab3a71ff31cf2d45cb216dc37af522d335211f3a972d2fe14ea99073de6cb104"}, + {file = "jiter-0.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cccd3af9c48ac500c95e1bcbc498020c87e1781ff0345dd371462d67b76643eb"}, + {file = "jiter-0.5.0-cp39-none-win32.whl", hash = "sha256:368084d8d5c4fc40ff7c3cc513c4f73e02c85f6009217922d0823a48ee7adf61"}, + {file = "jiter-0.5.0-cp39-none-win_amd64.whl", hash = "sha256:ce03f7b4129eb72f1687fa11300fbf677b02990618428934662406d2a76742a1"}, + {file = "jiter-0.5.0.tar.gz", hash = "sha256:1d916ba875bcab5c5f7d927df998c4cb694d27dceddf3392e58beaf10563368a"}, +] + [[package]] name = "json5" version = "0.9.25" @@ -1767,7 +1872,7 @@ files = [ [[package]] name = "langchain-core" -version = "0.2.27" +version = "0.2.30" description = "Building applications with LLMs through composability" optional = false python-versions = ">=3.8.1,<4.0" @@ -1792,7 +1897,7 @@ url = "../core" [[package]] name = "langchain-openai" -version = "0.1.20" +version = "0.1.21" description = "An integration package connecting OpenAI and LangChain" optional = true python-versions = ">=3.8.1,<4.0" @@ -1800,8 +1905,8 @@ files = [] develop = true [package.dependencies] -langchain-core = "^0.2.26" -openai = "^1.32.0" +langchain-core = "^0.2.29" +openai = "^1.40.0" tiktoken = ">=0.7,<1" [package.source] @@ -1828,7 +1933,7 @@ url = "../standard-tests" [[package]] name = "langchain-text-splitters" -version = "0.2.2" +version = "0.2.3" description = "LangChain text splitting utilities" optional = false python-versions = ">=3.8.1,<4.0" @@ -1844,13 +1949,13 @@ url = "../text-splitters" [[package]] name = "langchainhub" -version = "0.1.20" +version = "0.1.21" description = "The LangChain Hub API client" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchainhub-0.1.20-py3-none-any.whl", hash = "sha256:b3cbb5b2d7d6f9c3f89748bcc74424d8030ed4ebca58b5f44e0b6d9f111e33eb"}, - {file = "langchainhub-0.1.20.tar.gz", hash = "sha256:499fa8958233071f35750987f325005d16241bebd455163955b607c195c37f25"}, + {file = "langchainhub-0.1.21-py3-none-any.whl", hash = "sha256:1cc002dc31e0d132a776afd044361e2b698743df5202618cf2bad399246b895f"}, + {file = "langchainhub-0.1.21.tar.gz", hash = "sha256:723383b3964a47dbaea6ad5d0ef728accefbc9d2c07480e800bdec43510a8c10"}, ] [package.dependencies] @@ -1860,13 +1965,13 @@ types-requests = ">=2.31.0.2,<3.0.0.0" [[package]] name = "langsmith" -version = "0.1.96" +version = "0.1.99" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.96-py3-none-any.whl", hash = "sha256:1e8285c3f84cffebc761ff5624647de20686dbbf659f5d1135918261f85bad13"}, - {file = "langsmith-0.1.96.tar.gz", hash = "sha256:01b7fa7d538b6409ee74bff458cc3dcdc1799fc70d329f79eb26ba54c32991ae"}, + {file = "langsmith-0.1.99-py3-none-any.whl", hash = "sha256:ef8d1d74a2674c514aa429b0171a9fbb661207dc3835142cca0e8f1bf97b26b0"}, + {file = "langsmith-0.1.99.tar.gz", hash = "sha256:b5c6a1f158abda61600a4a445081ee848b4a28b758d91f2793dc02aeffafcaf1"}, ] [package.dependencies] @@ -2376,85 +2481,92 @@ files = [ [[package]] name = "openai" -version = "1.37.1" +version = "1.40.6" description = "The official Python library for the openai API" optional = true python-versions = ">=3.7.1" files = [ - {file = "openai-1.37.1-py3-none-any.whl", hash = "sha256:9a6adda0d6ae8fce02d235c5671c399cfa40d6a281b3628914c7ebf244888ee3"}, - {file = "openai-1.37.1.tar.gz", hash = "sha256:faf87206785a6b5d9e34555d6a3242482a6852bc802e453e2a891f68ee04ce55"}, + {file = "openai-1.40.6-py3-none-any.whl", hash = "sha256:b36372124a779381a420a34dd96f762baa748b6bdfaf83a6b9f2745f72ccc1c5"}, + {file = "openai-1.40.6.tar.gz", hash = "sha256:2239232bcb7f4bd4ce8e02544b5769618582411cf399816d96686d1b6c1e5c8d"}, ] [package.dependencies] anyio = ">=3.5.0,<5" distro = ">=1.7.0,<2" httpx = ">=0.23.0,<1" +jiter = ">=0.4.0,<1" pydantic = ">=1.9.0,<3" sniffio = "*" tqdm = ">4" -typing-extensions = ">=4.7,<5" +typing-extensions = ">=4.11,<5" [package.extras] datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"] [[package]] name = "orjson" -version = "3.10.6" +version = "3.10.7" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.6-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:fb0ee33124db6eaa517d00890fc1a55c3bfe1cf78ba4a8899d71a06f2d6ff5c7"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c1c4b53b24a4c06547ce43e5fee6ec4e0d8fe2d597f4647fc033fd205707365"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eadc8fd310edb4bdbd333374f2c8fec6794bbbae99b592f448d8214a5e4050c0"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61272a5aec2b2661f4fa2b37c907ce9701e821b2c1285d5c3ab0207ebd358d38"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57985ee7e91d6214c837936dc1608f40f330a6b88bb13f5a57ce5257807da143"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:633a3b31d9d7c9f02d49c4ab4d0a86065c4a6f6adc297d63d272e043472acab5"}, - {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1c680b269d33ec444afe2bdc647c9eb73166fa47a16d9a75ee56a374f4a45f43"}, - {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f759503a97a6ace19e55461395ab0d618b5a117e8d0fbb20e70cfd68a47327f2"}, - {file = "orjson-3.10.6-cp310-none-win32.whl", hash = "sha256:95a0cce17f969fb5391762e5719575217bd10ac5a189d1979442ee54456393f3"}, - {file = "orjson-3.10.6-cp310-none-win_amd64.whl", hash = "sha256:df25d9271270ba2133cc88ee83c318372bdc0f2cd6f32e7a450809a111efc45c"}, - {file = "orjson-3.10.6-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b1ec490e10d2a77c345def52599311849fc063ae0e67cf4f84528073152bb2ba"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d43d3feb8f19d07e9f01e5b9be4f28801cf7c60d0fa0d279951b18fae1932b"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac3045267e98fe749408eee1593a142e02357c5c99be0802185ef2170086a863"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c27bc6a28ae95923350ab382c57113abd38f3928af3c80be6f2ba7eb8d8db0b0"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d27456491ca79532d11e507cadca37fb8c9324a3976294f68fb1eff2dc6ced5a"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05ac3d3916023745aa3b3b388e91b9166be1ca02b7c7e41045da6d12985685f0"}, - {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1335d4ef59ab85cab66fe73fd7a4e881c298ee7f63ede918b7faa1b27cbe5212"}, - {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4bbc6d0af24c1575edc79994c20e1b29e6fb3c6a570371306db0993ecf144dc5"}, - {file = "orjson-3.10.6-cp311-none-win32.whl", hash = "sha256:450e39ab1f7694465060a0550b3f6d328d20297bf2e06aa947b97c21e5241fbd"}, - {file = "orjson-3.10.6-cp311-none-win_amd64.whl", hash = "sha256:227df19441372610b20e05bdb906e1742ec2ad7a66ac8350dcfd29a63014a83b"}, - {file = "orjson-3.10.6-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ea2977b21f8d5d9b758bb3f344a75e55ca78e3ff85595d248eee813ae23ecdfb"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6f3d167d13a16ed263b52dbfedff52c962bfd3d270b46b7518365bcc2121eed"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f710f346e4c44a4e8bdf23daa974faede58f83334289df80bc9cd12fe82573c7"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7275664f84e027dcb1ad5200b8b18373e9c669b2a9ec33d410c40f5ccf4b257e"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0943e4c701196b23c240b3d10ed8ecd674f03089198cf503105b474a4f77f21f"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:446dee5a491b5bc7d8f825d80d9637e7af43f86a331207b9c9610e2f93fee22a"}, - {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:64c81456d2a050d380786413786b057983892db105516639cb5d3ee3c7fd5148"}, - {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:960db0e31c4e52fa0fc3ecbaea5b2d3b58f379e32a95ae6b0ebeaa25b93dfd34"}, - {file = "orjson-3.10.6-cp312-none-win32.whl", hash = "sha256:a6ea7afb5b30b2317e0bee03c8d34c8181bc5a36f2afd4d0952f378972c4efd5"}, - {file = "orjson-3.10.6-cp312-none-win_amd64.whl", hash = "sha256:874ce88264b7e655dde4aeaacdc8fd772a7962faadfb41abe63e2a4861abc3dc"}, - {file = "orjson-3.10.6-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:66680eae4c4e7fc193d91cfc1353ad6d01b4801ae9b5314f17e11ba55e934183"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caff75b425db5ef8e8f23af93c80f072f97b4fb3afd4af44482905c9f588da28"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3722fddb821b6036fd2a3c814f6bd9b57a89dc6337b9924ecd614ebce3271394"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2c116072a8533f2fec435fde4d134610f806bdac20188c7bd2081f3e9e0133f"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6eeb13218c8cf34c61912e9df2de2853f1d009de0e46ea09ccdf3d757896af0a"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:965a916373382674e323c957d560b953d81d7a8603fbeee26f7b8248638bd48b"}, - {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:03c95484d53ed8e479cade8628c9cea00fd9d67f5554764a1110e0d5aa2de96e"}, - {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e060748a04cccf1e0a6f2358dffea9c080b849a4a68c28b1b907f272b5127e9b"}, - {file = "orjson-3.10.6-cp38-none-win32.whl", hash = "sha256:738dbe3ef909c4b019d69afc19caf6b5ed0e2f1c786b5d6215fbb7539246e4c6"}, - {file = "orjson-3.10.6-cp38-none-win_amd64.whl", hash = "sha256:d40f839dddf6a7d77114fe6b8a70218556408c71d4d6e29413bb5f150a692ff7"}, - {file = "orjson-3.10.6-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:697a35a083c4f834807a6232b3e62c8b280f7a44ad0b759fd4dce748951e70db"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd502f96bf5ea9a61cbc0b2b5900d0dd68aa0da197179042bdd2be67e51a1e4b"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f215789fb1667cdc874c1b8af6a84dc939fd802bf293a8334fce185c79cd359b"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2debd8ddce948a8c0938c8c93ade191d2f4ba4649a54302a7da905a81f00b56"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5410111d7b6681d4b0d65e0f58a13be588d01b473822483f77f513c7f93bd3b2"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb1f28a137337fdc18384079fa5726810681055b32b92253fa15ae5656e1dddb"}, - {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bf2fbbce5fe7cd1aa177ea3eab2b8e6a6bc6e8592e4279ed3db2d62e57c0e1b2"}, - {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:79b9b9e33bd4c517445a62b90ca0cc279b0f1f3970655c3df9e608bc3f91741a"}, - {file = "orjson-3.10.6-cp39-none-win32.whl", hash = "sha256:30b0a09a2014e621b1adf66a4f705f0809358350a757508ee80209b2d8dae219"}, - {file = "orjson-3.10.6-cp39-none-win_amd64.whl", hash = "sha256:49e3bc615652617d463069f91b867a4458114c5b104e13b7ae6872e5f79d0844"}, - {file = "orjson-3.10.6.tar.gz", hash = "sha256:e54b63d0a7c6c54a5f5f726bc93a2078111ef060fec4ecbf34c5db800ca3b3a7"}, + {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, + {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, + {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, + {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, + {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, + {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, + {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, + {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, + {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, + {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, + {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, + {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, + {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, + {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, + {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, + {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, + {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, + {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, + {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, + {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, + {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, + {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, + {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, + {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, + {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, + {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, + {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, + {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, + {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, + {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, + {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, + {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, ] [[package]] @@ -2626,18 +2738,18 @@ type = ["mypy (>=1.8)"] [[package]] name = "playwright" -version = "1.45.1" +version = "1.46.0" description = "A high-level API to automate web browsers" optional = false python-versions = ">=3.8" files = [ - {file = "playwright-1.45.1-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:360607e37c00cdf97c74317f010e106ac4671aeaec6a192431dd71a30941da9d"}, - {file = "playwright-1.45.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:20adc2abf164c5e8969f9066011b152e12c210549edec78cd05bd0e9cf4135b7"}, - {file = "playwright-1.45.1-py3-none-macosx_11_0_universal2.whl", hash = "sha256:5f047cdc6accf4c7084dfc7587a2a5ef790cddc44cbb111e471293c5a91119db"}, - {file = "playwright-1.45.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:f06f6659abe0abf263e5f6661d379fbf85c112745dd31d82332ceae914f58df7"}, - {file = "playwright-1.45.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87dc3b3d17e12c68830c29b7fdf5e93315221bbb4c6090e83e967e154e2c1828"}, - {file = "playwright-1.45.1-py3-none-win32.whl", hash = "sha256:2b8f517886ef1e2151982f6e7be84be3ef7d8135bdcf8ee705b4e4e99566e866"}, - {file = "playwright-1.45.1-py3-none-win_amd64.whl", hash = "sha256:0d236cf427784e77de352ba1b7d700693c5fe455b8e5f627f6d84ad5b84b5bf5"}, + {file = "playwright-1.46.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:fa60b95c16f6ce954636229a6c9dd885485326bca52d5ba20d02c0bc731a2bbb"}, + {file = "playwright-1.46.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:73dcfc24834f4d004bc862ed0d74b4c1406793a8164734238ad035356fddc8ac"}, + {file = "playwright-1.46.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:f5acfec1dbdc84d02dc696a17a344227e66c91413eab2036428dab405f195b82"}, + {file = "playwright-1.46.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:3b418509f45879f1403d070858657a39bd0b333b23d92c37355682b671726df9"}, + {file = "playwright-1.46.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23580f6a3f99757bb9779d29be37144cb9328cd9bafa178e6db5b3ab4b7faf4c"}, + {file = "playwright-1.46.0-py3-none-win32.whl", hash = "sha256:85f44dd32a23d02850f0ff4dafe51580e5199531fff5121a62489d9838707782"}, + {file = "playwright-1.46.0-py3-none-win_amd64.whl", hash = "sha256:f14a7fd7e24e954eec6ce61d787d499e41937ade811a0818e9a088aabe28ebb6"}, ] [package.dependencies] @@ -3149,159 +3261,182 @@ files = [ [[package]] name = "pyyaml" -version = "6.0.1" +version = "6.0.2" description = "YAML parser and emitter for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] [[package]] name = "pyzmq" -version = "26.0.3" +version = "26.1.0" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.7" files = [ - {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:44dd6fc3034f1eaa72ece33588867df9e006a7303725a12d64c3dff92330f625"}, - {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acb704195a71ac5ea5ecf2811c9ee19ecdc62b91878528302dd0be1b9451cc90"}, - {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbb9c997932473a27afa93954bb77a9f9b786b4ccf718d903f35da3232317de"}, - {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bcb34f869d431799c3ee7d516554797f7760cb2198ecaa89c3f176f72d062be"}, - {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ece17ec5f20d7d9b442e5174ae9f020365d01ba7c112205a4d59cf19dc38ee"}, - {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ba6e5e6588e49139a0979d03a7deb9c734bde647b9a8808f26acf9c547cab1bf"}, - {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3bf8b000a4e2967e6dfdd8656cd0757d18c7e5ce3d16339e550bd462f4857e59"}, - {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2136f64fbb86451dbbf70223635a468272dd20075f988a102bf8a3f194a411dc"}, - {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e8918973fbd34e7814f59143c5f600ecd38b8038161239fd1a3d33d5817a38b8"}, - {file = "pyzmq-26.0.3-cp310-cp310-win32.whl", hash = "sha256:0aaf982e68a7ac284377d051c742610220fd06d330dcd4c4dbb4cdd77c22a537"}, - {file = "pyzmq-26.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:f1a9b7d00fdf60b4039f4455afd031fe85ee8305b019334b72dcf73c567edc47"}, - {file = "pyzmq-26.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:80b12f25d805a919d53efc0a5ad7c0c0326f13b4eae981a5d7b7cc343318ebb7"}, - {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:a72a84570f84c374b4c287183debc776dc319d3e8ce6b6a0041ce2e400de3f32"}, - {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ca684ee649b55fd8f378127ac8462fb6c85f251c2fb027eb3c887e8ee347bcd"}, - {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e222562dc0f38571c8b1ffdae9d7adb866363134299264a1958d077800b193b7"}, - {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f17cde1db0754c35a91ac00b22b25c11da6eec5746431d6e5092f0cd31a3fea9"}, - {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7c0c0b3244bb2275abe255d4a30c050d541c6cb18b870975553f1fb6f37527"}, - {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac97a21de3712afe6a6c071abfad40a6224fd14fa6ff0ff8d0c6e6cd4e2f807a"}, - {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:88b88282e55fa39dd556d7fc04160bcf39dea015f78e0cecec8ff4f06c1fc2b5"}, - {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:72b67f966b57dbd18dcc7efbc1c7fc9f5f983e572db1877081f075004614fcdd"}, - {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83"}, - {file = "pyzmq-26.0.3-cp311-cp311-win32.whl", hash = "sha256:eed56b6a39216d31ff8cd2f1d048b5bf1700e4b32a01b14379c3b6dde9ce3aa3"}, - {file = "pyzmq-26.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:3191d312c73e3cfd0f0afdf51df8405aafeb0bad71e7ed8f68b24b63c4f36500"}, - {file = "pyzmq-26.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:b6907da3017ef55139cf0e417c5123a84c7332520e73a6902ff1f79046cd3b94"}, - {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:068ca17214038ae986d68f4a7021f97e187ed278ab6dccb79f837d765a54d753"}, - {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7821d44fe07335bea256b9f1f41474a642ca55fa671dfd9f00af8d68a920c2d4"}, - {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eeb438a26d87c123bb318e5f2b3d86a36060b01f22fbdffd8cf247d52f7c9a2b"}, - {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:69ea9d6d9baa25a4dc9cef5e2b77b8537827b122214f210dd925132e34ae9b12"}, - {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7daa3e1369355766dea11f1d8ef829905c3b9da886ea3152788dc25ee6079e02"}, - {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6ca7a9a06b52d0e38ccf6bca1aeff7be178917893f3883f37b75589d42c4ac20"}, - {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1b7d0e124948daa4d9686d421ef5087c0516bc6179fdcf8828b8444f8e461a77"}, - {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e746524418b70f38550f2190eeee834db8850088c834d4c8406fbb9bc1ae10b2"}, - {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6b3146f9ae6af82c47a5282ac8803523d381b3b21caeae0327ed2f7ecb718798"}, - {file = "pyzmq-26.0.3-cp312-cp312-win32.whl", hash = "sha256:2b291d1230845871c00c8462c50565a9cd6026fe1228e77ca934470bb7d70ea0"}, - {file = "pyzmq-26.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:926838a535c2c1ea21c903f909a9a54e675c2126728c21381a94ddf37c3cbddf"}, - {file = "pyzmq-26.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:5bf6c237f8c681dfb91b17f8435b2735951f0d1fad10cc5dfd96db110243370b"}, - {file = "pyzmq-26.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c0991f5a96a8e620f7691e61178cd8f457b49e17b7d9cfa2067e2a0a89fc1d5"}, - {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dbf012d8fcb9f2cf0643b65df3b355fdd74fc0035d70bb5c845e9e30a3a4654b"}, - {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:01fbfbeb8249a68d257f601deb50c70c929dc2dfe683b754659569e502fbd3aa"}, - {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c8eb19abe87029c18f226d42b8a2c9efdd139d08f8bf6e085dd9075446db450"}, - {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5344b896e79800af86ad643408ca9aa303a017f6ebff8cee5a3163c1e9aec987"}, - {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:204e0f176fd1d067671157d049466869b3ae1fc51e354708b0dc41cf94e23a3a"}, - {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a42db008d58530efa3b881eeee4991146de0b790e095f7ae43ba5cc612decbc5"}, - {file = "pyzmq-26.0.3-cp37-cp37m-win32.whl", hash = "sha256:8d7a498671ca87e32b54cb47c82a92b40130a26c5197d392720a1bce1b3c77cf"}, - {file = "pyzmq-26.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:3b4032a96410bdc760061b14ed6a33613ffb7f702181ba999df5d16fb96ba16a"}, - {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2cc4e280098c1b192c42a849de8de2c8e0f3a84086a76ec5b07bfee29bda7d18"}, - {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bde86a2ed3ce587fa2b207424ce15b9a83a9fa14422dcc1c5356a13aed3df9d"}, - {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:34106f68e20e6ff253c9f596ea50397dbd8699828d55e8fa18bd4323d8d966e6"}, - {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ebbbd0e728af5db9b04e56389e2299a57ea8b9dd15c9759153ee2455b32be6ad"}, - {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6b1d1c631e5940cac5a0b22c5379c86e8df6a4ec277c7a856b714021ab6cfad"}, - {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e891ce81edd463b3b4c3b885c5603c00141151dd9c6936d98a680c8c72fe5c67"}, - {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9b273ecfbc590a1b98f014ae41e5cf723932f3b53ba9367cfb676f838038b32c"}, - {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b32bff85fb02a75ea0b68f21e2412255b5731f3f389ed9aecc13a6752f58ac97"}, - {file = "pyzmq-26.0.3-cp38-cp38-win32.whl", hash = "sha256:f6c21c00478a7bea93caaaef9e7629145d4153b15a8653e8bb4609d4bc70dbfc"}, - {file = "pyzmq-26.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:3401613148d93ef0fd9aabdbddb212de3db7a4475367f49f590c837355343972"}, - {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:2ed8357f4c6e0daa4f3baf31832df8a33334e0fe5b020a61bc8b345a3db7a606"}, - {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1c8f2a2ca45292084c75bb6d3a25545cff0ed931ed228d3a1810ae3758f975f"}, - {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b63731993cdddcc8e087c64e9cf003f909262b359110070183d7f3025d1c56b5"}, - {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3cd31f859b662ac5d7f4226ec7d8bd60384fa037fc02aee6ff0b53ba29a3ba8"}, - {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:115f8359402fa527cf47708d6f8a0f8234f0e9ca0cab7c18c9c189c194dbf620"}, - {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:715bdf952b9533ba13dfcf1f431a8f49e63cecc31d91d007bc1deb914f47d0e4"}, - {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e1258c639e00bf5e8a522fec6c3eaa3e30cf1c23a2f21a586be7e04d50c9acab"}, - {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:15c59e780be8f30a60816a9adab900c12a58d79c1ac742b4a8df044ab2a6d920"}, - {file = "pyzmq-26.0.3-cp39-cp39-win32.whl", hash = "sha256:d0cdde3c78d8ab5b46595054e5def32a755fc028685add5ddc7403e9f6de9879"}, - {file = "pyzmq-26.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:ce828058d482ef860746bf532822842e0ff484e27f540ef5c813d516dd8896d2"}, - {file = "pyzmq-26.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:788f15721c64109cf720791714dc14afd0f449d63f3a5487724f024345067381"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c18645ef6294d99b256806e34653e86236eb266278c8ec8112622b61db255de"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e6bc96ebe49604df3ec2c6389cc3876cabe475e6bfc84ced1bf4e630662cb35"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:971e8990c5cc4ddcff26e149398fc7b0f6a042306e82500f5e8db3b10ce69f84"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8416c23161abd94cc7da80c734ad7c9f5dbebdadfdaa77dad78244457448223"}, - {file = "pyzmq-26.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:082a2988364b60bb5de809373098361cf1dbb239623e39e46cb18bc035ed9c0c"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d57dfbf9737763b3a60d26e6800e02e04284926329aee8fb01049635e957fe81"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77a85dca4c2430ac04dc2a2185c2deb3858a34fe7f403d0a946fa56970cf60a1"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c82a6d952a1d555bf4be42b6532927d2a5686dd3c3e280e5f63225ab47ac1f5"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4496b1282c70c442809fc1b151977c3d967bfb33e4e17cedbf226d97de18f709"}, - {file = "pyzmq-26.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:e4946d6bdb7ba972dfda282f9127e5756d4f299028b1566d1245fa0d438847e6"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03c0ae165e700364b266876d712acb1ac02693acd920afa67da2ebb91a0b3c09"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3e3070e680f79887d60feeda051a58d0ac36622e1759f305a41059eff62c6da7"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6ca08b840fe95d1c2bd9ab92dac5685f949fc6f9ae820ec16193e5ddf603c3b2"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e76654e9dbfb835b3518f9938e565c7806976c07b37c33526b574cc1a1050480"}, - {file = "pyzmq-26.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:871587bdadd1075b112e697173e946a07d722459d20716ceb3d1bd6c64bd08ce"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d0a2d1bd63a4ad79483049b26514e70fa618ce6115220da9efdff63688808b17"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0270b49b6847f0d106d64b5086e9ad5dc8a902413b5dbbb15d12b60f9c1747a4"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703c60b9910488d3d0954ca585c34f541e506a091a41930e663a098d3b794c67"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74423631b6be371edfbf7eabb02ab995c2563fee60a80a30829176842e71722a"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4adfbb5451196842a88fda3612e2c0414134874bffb1c2ce83ab4242ec9e027d"}, - {file = "pyzmq-26.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3516119f4f9b8671083a70b6afaa0a070f5683e431ab3dc26e9215620d7ca1ad"}, - {file = "pyzmq-26.0.3.tar.gz", hash = "sha256:dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a"}, + {file = "pyzmq-26.1.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:263cf1e36862310bf5becfbc488e18d5d698941858860c5a8c079d1511b3b18e"}, + {file = "pyzmq-26.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d5c8b17f6e8f29138678834cf8518049e740385eb2dbf736e8f07fc6587ec682"}, + {file = "pyzmq-26.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75a95c2358fcfdef3374cb8baf57f1064d73246d55e41683aaffb6cfe6862917"}, + {file = "pyzmq-26.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f99de52b8fbdb2a8f5301ae5fc0f9e6b3ba30d1d5fc0421956967edcc6914242"}, + {file = "pyzmq-26.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bcbfbab4e1895d58ab7da1b5ce9a327764f0366911ba5b95406c9104bceacb0"}, + {file = "pyzmq-26.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:77ce6a332c7e362cb59b63f5edf730e83590d0ab4e59c2aa5bd79419a42e3449"}, + {file = "pyzmq-26.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ba0a31d00e8616149a5ab440d058ec2da621e05d744914774c4dde6837e1f545"}, + {file = "pyzmq-26.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8b88641384e84a258b740801cd4dbc45c75f148ee674bec3149999adda4a8598"}, + {file = "pyzmq-26.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2fa76ebcebe555cce90f16246edc3ad83ab65bb7b3d4ce408cf6bc67740c4f88"}, + {file = "pyzmq-26.1.0-cp310-cp310-win32.whl", hash = "sha256:fbf558551cf415586e91160d69ca6416f3fce0b86175b64e4293644a7416b81b"}, + {file = "pyzmq-26.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:a7b8aab50e5a288c9724d260feae25eda69582be84e97c012c80e1a5e7e03fb2"}, + {file = "pyzmq-26.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:08f74904cb066e1178c1ec706dfdb5c6c680cd7a8ed9efebeac923d84c1f13b1"}, + {file = "pyzmq-26.1.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:46d6800b45015f96b9d92ece229d92f2aef137d82906577d55fadeb9cf5fcb71"}, + {file = "pyzmq-26.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5bc2431167adc50ba42ea3e5e5f5cd70d93e18ab7b2f95e724dd8e1bd2c38120"}, + {file = "pyzmq-26.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3bb34bebaa1b78e562931a1687ff663d298013f78f972a534f36c523311a84d"}, + {file = "pyzmq-26.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd3f6329340cef1c7ba9611bd038f2d523cea79f09f9c8f6b0553caba59ec562"}, + {file = "pyzmq-26.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:471880c4c14e5a056a96cd224f5e71211997d40b4bf5e9fdded55dafab1f98f2"}, + {file = "pyzmq-26.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ce6f2b66799971cbae5d6547acefa7231458289e0ad481d0be0740535da38d8b"}, + {file = "pyzmq-26.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0a1f6ea5b1d6cdbb8cfa0536f0d470f12b4b41ad83625012e575f0e3ecfe97f0"}, + {file = "pyzmq-26.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b45e6445ac95ecb7d728604bae6538f40ccf4449b132b5428c09918523abc96d"}, + {file = "pyzmq-26.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:94c4262626424683feea0f3c34951d39d49d354722db2745c42aa6bb50ecd93b"}, + {file = "pyzmq-26.1.0-cp311-cp311-win32.whl", hash = "sha256:a0f0ab9df66eb34d58205913f4540e2ad17a175b05d81b0b7197bc57d000e829"}, + {file = "pyzmq-26.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8efb782f5a6c450589dbab4cb0f66f3a9026286333fe8f3a084399149af52f29"}, + {file = "pyzmq-26.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f133d05aaf623519f45e16ab77526e1e70d4e1308e084c2fb4cedb1a0c764bbb"}, + {file = "pyzmq-26.1.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:3d3146b1c3dcc8a1539e7cc094700b2be1e605a76f7c8f0979b6d3bde5ad4072"}, + {file = "pyzmq-26.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d9270fbf038bf34ffca4855bcda6e082e2c7f906b9eb8d9a8ce82691166060f7"}, + {file = "pyzmq-26.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:995301f6740a421afc863a713fe62c0aaf564708d4aa057dfdf0f0f56525294b"}, + {file = "pyzmq-26.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7eca8b89e56fb8c6c26dd3e09bd41b24789022acf1cf13358e96f1cafd8cae3"}, + {file = "pyzmq-26.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d4feb2e83dfe9ace6374a847e98ee9d1246ebadcc0cb765482e272c34e5820"}, + {file = "pyzmq-26.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d4fafc2eb5d83f4647331267808c7e0c5722c25a729a614dc2b90479cafa78bd"}, + {file = "pyzmq-26.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:58c33dc0e185dd97a9ac0288b3188d1be12b756eda67490e6ed6a75cf9491d79"}, + {file = "pyzmq-26.1.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:68a0a1d83d33d8367ddddb3e6bb4afbb0f92bd1dac2c72cd5e5ddc86bdafd3eb"}, + {file = "pyzmq-26.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2ae7c57e22ad881af78075e0cea10a4c778e67234adc65c404391b417a4dda83"}, + {file = "pyzmq-26.1.0-cp312-cp312-win32.whl", hash = "sha256:347e84fc88cc4cb646597f6d3a7ea0998f887ee8dc31c08587e9c3fd7b5ccef3"}, + {file = "pyzmq-26.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:9f136a6e964830230912f75b5a116a21fe8e34128dcfd82285aa0ef07cb2c7bd"}, + {file = "pyzmq-26.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4b7a989c8f5a72ab1b2bbfa58105578753ae77b71ba33e7383a31ff75a504c4"}, + {file = "pyzmq-26.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d416f2088ac8f12daacffbc2e8918ef4d6be8568e9d7155c83b7cebed49d2322"}, + {file = "pyzmq-26.1.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:ecb6c88d7946166d783a635efc89f9a1ff11c33d680a20df9657b6902a1d133b"}, + {file = "pyzmq-26.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:471312a7375571857a089342beccc1a63584315188560c7c0da7e0a23afd8a5c"}, + {file = "pyzmq-26.1.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e6cea102ffa16b737d11932c426f1dc14b5938cf7bc12e17269559c458ac334"}, + {file = "pyzmq-26.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec7248673ffc7104b54e4957cee38b2f3075a13442348c8d651777bf41aa45ee"}, + {file = "pyzmq-26.1.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:0614aed6f87d550b5cecb03d795f4ddbb1544b78d02a4bd5eecf644ec98a39f6"}, + {file = "pyzmq-26.1.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:e8746ce968be22a8a1801bf4a23e565f9687088580c3ed07af5846580dd97f76"}, + {file = "pyzmq-26.1.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:7688653574392d2eaeef75ddcd0b2de5b232d8730af29af56c5adf1df9ef8d6f"}, + {file = "pyzmq-26.1.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:8d4dac7d97f15c653a5fedcafa82626bd6cee1450ccdaf84ffed7ea14f2b07a4"}, + {file = "pyzmq-26.1.0-cp313-cp313-win32.whl", hash = "sha256:ccb42ca0a4a46232d716779421bbebbcad23c08d37c980f02cc3a6bd115ad277"}, + {file = "pyzmq-26.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e1e5d0a25aea8b691a00d6b54b28ac514c8cc0d8646d05f7ca6cb64b97358250"}, + {file = "pyzmq-26.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:fc82269d24860cfa859b676d18850cbb8e312dcd7eada09e7d5b007e2f3d9eb1"}, + {file = "pyzmq-26.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:416ac51cabd54f587995c2b05421324700b22e98d3d0aa2cfaec985524d16f1d"}, + {file = "pyzmq-26.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:ff832cce719edd11266ca32bc74a626b814fff236824aa1aeaad399b69fe6eae"}, + {file = "pyzmq-26.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:393daac1bcf81b2a23e696b7b638eedc965e9e3d2112961a072b6cd8179ad2eb"}, + {file = "pyzmq-26.1.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9869fa984c8670c8ab899a719eb7b516860a29bc26300a84d24d8c1b71eae3ec"}, + {file = "pyzmq-26.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b3b8e36fd4c32c0825b4461372949ecd1585d326802b1321f8b6dc1d7e9318c"}, + {file = "pyzmq-26.1.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:3ee647d84b83509b7271457bb428cc347037f437ead4b0b6e43b5eba35fec0aa"}, + {file = "pyzmq-26.1.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:45cb1a70eb00405ce3893041099655265fabcd9c4e1e50c330026e82257892c1"}, + {file = "pyzmq-26.1.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:5cca7b4adb86d7470e0fc96037771981d740f0b4cb99776d5cb59cd0e6684a73"}, + {file = "pyzmq-26.1.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:91d1a20bdaf3b25f3173ff44e54b1cfbc05f94c9e8133314eb2962a89e05d6e3"}, + {file = "pyzmq-26.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c0665d85535192098420428c779361b8823d3d7ec4848c6af3abb93bc5c915bf"}, + {file = "pyzmq-26.1.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:96d7c1d35ee4a495df56c50c83df7af1c9688cce2e9e0edffdbf50889c167595"}, + {file = "pyzmq-26.1.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b281b5ff5fcc9dcbfe941ac5c7fcd4b6c065adad12d850f95c9d6f23c2652384"}, + {file = "pyzmq-26.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5384c527a9a004445c5074f1e20db83086c8ff1682a626676229aafd9cf9f7d1"}, + {file = "pyzmq-26.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:754c99a9840839375ee251b38ac5964c0f369306eddb56804a073b6efdc0cd88"}, + {file = "pyzmq-26.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9bdfcb74b469b592972ed881bad57d22e2c0acc89f5e8c146782d0d90fb9f4bf"}, + {file = "pyzmq-26.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bd13f0231f4788db619347b971ca5f319c5b7ebee151afc7c14632068c6261d3"}, + {file = "pyzmq-26.1.0-cp37-cp37m-win32.whl", hash = "sha256:c5668dac86a869349828db5fc928ee3f58d450dce2c85607067d581f745e4fb1"}, + {file = "pyzmq-26.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ad875277844cfaeca7fe299ddf8c8d8bfe271c3dc1caf14d454faa5cdbf2fa7a"}, + {file = "pyzmq-26.1.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:65c6e03cc0222eaf6aad57ff4ecc0a070451e23232bb48db4322cc45602cede0"}, + {file = "pyzmq-26.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:038ae4ffb63e3991f386e7fda85a9baab7d6617fe85b74a8f9cab190d73adb2b"}, + {file = "pyzmq-26.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:bdeb2c61611293f64ac1073f4bf6723b67d291905308a7de9bb2ca87464e3273"}, + {file = "pyzmq-26.1.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:61dfa5ee9d7df297c859ac82b1226d8fefaf9c5113dc25c2c00ecad6feeeb04f"}, + {file = "pyzmq-26.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3292d384537b9918010769b82ab3e79fca8b23d74f56fc69a679106a3e2c2cf"}, + {file = "pyzmq-26.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f9499c70c19ff0fbe1007043acb5ad15c1dec7d8e84ab429bca8c87138e8f85c"}, + {file = "pyzmq-26.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d3dd5523ed258ad58fed7e364c92a9360d1af8a9371e0822bd0146bdf017ef4c"}, + {file = "pyzmq-26.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baba2fd199b098c5544ef2536b2499d2e2155392973ad32687024bd8572a7d1c"}, + {file = "pyzmq-26.1.0-cp38-cp38-win32.whl", hash = "sha256:ddbb2b386128d8eca92bd9ca74e80f73fe263bcca7aa419f5b4cbc1661e19741"}, + {file = "pyzmq-26.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:79e45a4096ec8388cdeb04a9fa5e9371583bcb826964d55b8b66cbffe7b33c86"}, + {file = "pyzmq-26.1.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:add52c78a12196bc0fda2de087ba6c876ea677cbda2e3eba63546b26e8bf177b"}, + {file = "pyzmq-26.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:98c03bd7f3339ff47de7ea9ac94a2b34580a8d4df69b50128bb6669e1191a895"}, + {file = "pyzmq-26.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dcc37d9d708784726fafc9c5e1232de655a009dbf97946f117aefa38d5985a0f"}, + {file = "pyzmq-26.1.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a6ed52f0b9bf8dcc64cc82cce0607a3dfed1dbb7e8c6f282adfccc7be9781de"}, + {file = "pyzmq-26.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:451e16ae8bea3d95649317b463c9f95cd9022641ec884e3d63fc67841ae86dfe"}, + {file = "pyzmq-26.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:906e532c814e1d579138177a00ae835cd6becbf104d45ed9093a3aaf658f6a6a"}, + {file = "pyzmq-26.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:05bacc4f94af468cc82808ae3293390278d5f3375bb20fef21e2034bb9a505b6"}, + {file = "pyzmq-26.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:57bb2acba798dc3740e913ffadd56b1fcef96f111e66f09e2a8db3050f1f12c8"}, + {file = "pyzmq-26.1.0-cp39-cp39-win32.whl", hash = "sha256:f774841bb0e8588505002962c02da420bcfb4c5056e87a139c6e45e745c0e2e2"}, + {file = "pyzmq-26.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:359c533bedc62c56415a1f5fcfd8279bc93453afdb0803307375ecf81c962402"}, + {file = "pyzmq-26.1.0-cp39-cp39-win_arm64.whl", hash = "sha256:7907419d150b19962138ecec81a17d4892ea440c184949dc29b358bc730caf69"}, + {file = "pyzmq-26.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b24079a14c9596846bf7516fe75d1e2188d4a528364494859106a33d8b48be38"}, + {file = "pyzmq-26.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59d0acd2976e1064f1b398a00e2c3e77ed0a157529779e23087d4c2fb8aaa416"}, + {file = "pyzmq-26.1.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:911c43a4117915203c4cc8755e0f888e16c4676a82f61caee2f21b0c00e5b894"}, + {file = "pyzmq-26.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b10163e586cc609f5f85c9b233195554d77b1e9a0801388907441aaeb22841c5"}, + {file = "pyzmq-26.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:28a8b2abb76042f5fd7bd720f7fea48c0fd3e82e9de0a1bf2c0de3812ce44a42"}, + {file = "pyzmq-26.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bef24d3e4ae2c985034439f449e3f9e06bf579974ce0e53d8a507a1577d5b2ab"}, + {file = "pyzmq-26.1.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2cd0f4d314f4a2518e8970b6f299ae18cff7c44d4a1fc06fc713f791c3a9e3ea"}, + {file = "pyzmq-26.1.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fa25a620eed2a419acc2cf10135b995f8f0ce78ad00534d729aa761e4adcef8a"}, + {file = "pyzmq-26.1.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef3b048822dca6d231d8a8ba21069844ae38f5d83889b9b690bf17d2acc7d099"}, + {file = "pyzmq-26.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:9a6847c92d9851b59b9f33f968c68e9e441f9a0f8fc972c5580c5cd7cbc6ee24"}, + {file = "pyzmq-26.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9b9305004d7e4e6a824f4f19b6d8f32b3578aad6f19fc1122aaf320cbe3dc83"}, + {file = "pyzmq-26.1.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:63c1d3a65acb2f9c92dce03c4e1758cc552f1ae5c78d79a44e3bb88d2fa71f3a"}, + {file = "pyzmq-26.1.0-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d36b8fffe8b248a1b961c86fbdfa0129dfce878731d169ede7fa2631447331be"}, + {file = "pyzmq-26.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67976d12ebfd61a3bc7d77b71a9589b4d61d0422282596cf58c62c3866916544"}, + {file = "pyzmq-26.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:998444debc8816b5d8d15f966e42751032d0f4c55300c48cc337f2b3e4f17d03"}, + {file = "pyzmq-26.1.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e5c88b2f13bcf55fee78ea83567b9fe079ba1a4bef8b35c376043440040f7edb"}, + {file = "pyzmq-26.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d906d43e1592be4b25a587b7d96527cb67277542a5611e8ea9e996182fae410"}, + {file = "pyzmq-26.1.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80b0c9942430d731c786545da6be96d824a41a51742e3e374fedd9018ea43106"}, + {file = "pyzmq-26.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:314d11564c00b77f6224d12eb3ddebe926c301e86b648a1835c5b28176c83eab"}, + {file = "pyzmq-26.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:093a1a3cae2496233f14b57f4b485da01b4ff764582c854c0f42c6dd2be37f3d"}, + {file = "pyzmq-26.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3c397b1b450f749a7e974d74c06d69bd22dd362142f370ef2bd32a684d6b480c"}, + {file = "pyzmq-26.1.0.tar.gz", hash = "sha256:6c5aeea71f018ebd3b9115c7cb13863dd850e98ca6b9258509de1246461a7e7f"}, ] [package.dependencies] @@ -3537,141 +3672,141 @@ files = [ [[package]] name = "rpds-py" -version = "0.19.1" +version = "0.20.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.19.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:aaf71f95b21f9dc708123335df22e5a2fef6307e3e6f9ed773b2e0938cc4d491"}, - {file = "rpds_py-0.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ca0dda0c5715efe2ab35bb83f813f681ebcd2840d8b1b92bfc6fe3ab382fae4a"}, - {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81db2e7282cc0487f500d4db203edc57da81acde9e35f061d69ed983228ffe3b"}, - {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1a8dfa125b60ec00c7c9baef945bb04abf8ac772d8ebefd79dae2a5f316d7850"}, - {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:271accf41b02687cef26367c775ab220372ee0f4925591c6796e7c148c50cab5"}, - {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9bc4161bd3b970cd6a6fcda70583ad4afd10f2750609fb1f3ca9505050d4ef3"}, - {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0cf2a0dbb5987da4bd92a7ca727eadb225581dd9681365beba9accbe5308f7d"}, - {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b5e28e56143750808c1c79c70a16519e9bc0a68b623197b96292b21b62d6055c"}, - {file = "rpds_py-0.19.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c7af6f7b80f687b33a4cdb0a785a5d4de1fb027a44c9a049d8eb67d5bfe8a687"}, - {file = "rpds_py-0.19.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e429fc517a1c5e2a70d576077231538a98d59a45dfc552d1ac45a132844e6dfb"}, - {file = "rpds_py-0.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d2dbd8f4990d4788cb122f63bf000357533f34860d269c1a8e90ae362090ff3a"}, - {file = "rpds_py-0.19.1-cp310-none-win32.whl", hash = "sha256:e0f9d268b19e8f61bf42a1da48276bcd05f7ab5560311f541d22557f8227b866"}, - {file = "rpds_py-0.19.1-cp310-none-win_amd64.whl", hash = "sha256:df7c841813f6265e636fe548a49664c77af31ddfa0085515326342a751a6ba51"}, - {file = "rpds_py-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:902cf4739458852fe917104365ec0efbea7d29a15e4276c96a8d33e6ed8ec137"}, - {file = "rpds_py-0.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f3d73022990ab0c8b172cce57c69fd9a89c24fd473a5e79cbce92df87e3d9c48"}, - {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3837c63dd6918a24de6c526277910e3766d8c2b1627c500b155f3eecad8fad65"}, - {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cdb7eb3cf3deb3dd9e7b8749323b5d970052711f9e1e9f36364163627f96da58"}, - {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26ab43b6d65d25b1a333c8d1b1c2f8399385ff683a35ab5e274ba7b8bb7dc61c"}, - {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75130df05aae7a7ac171b3b5b24714cffeabd054ad2ebc18870b3aa4526eba23"}, - {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c34f751bf67cab69638564eee34023909380ba3e0d8ee7f6fe473079bf93f09b"}, - {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2671cb47e50a97f419a02cd1e0c339b31de017b033186358db92f4d8e2e17d8"}, - {file = "rpds_py-0.19.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c73254c256081704dba0a333457e2fb815364018788f9b501efe7c5e0ada401"}, - {file = "rpds_py-0.19.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4383beb4a29935b8fa28aca8fa84c956bf545cb0c46307b091b8d312a9150e6a"}, - {file = "rpds_py-0.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dbceedcf4a9329cc665452db1aaf0845b85c666e4885b92ee0cddb1dbf7e052a"}, - {file = "rpds_py-0.19.1-cp311-none-win32.whl", hash = "sha256:f0a6d4a93d2a05daec7cb885157c97bbb0be4da739d6f9dfb02e101eb40921cd"}, - {file = "rpds_py-0.19.1-cp311-none-win_amd64.whl", hash = "sha256:c149a652aeac4902ecff2dd93c3b2681c608bd5208c793c4a99404b3e1afc87c"}, - {file = "rpds_py-0.19.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:56313be667a837ff1ea3508cebb1ef6681d418fa2913a0635386cf29cff35165"}, - {file = "rpds_py-0.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d1d7539043b2b31307f2c6c72957a97c839a88b2629a348ebabe5aa8b626d6b"}, - {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1dc59a5e7bc7f44bd0c048681f5e05356e479c50be4f2c1a7089103f1621d5"}, - {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b8f78398e67a7227aefa95f876481485403eb974b29e9dc38b307bb6eb2315ea"}, - {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ef07a0a1d254eeb16455d839cef6e8c2ed127f47f014bbda64a58b5482b6c836"}, - {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8124101e92c56827bebef084ff106e8ea11c743256149a95b9fd860d3a4f331f"}, - {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08ce9c95a0b093b7aec75676b356a27879901488abc27e9d029273d280438505"}, - {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0b02dd77a2de6e49078c8937aadabe933ceac04b41c5dde5eca13a69f3cf144e"}, - {file = "rpds_py-0.19.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4dd02e29c8cbed21a1875330b07246b71121a1c08e29f0ee3db5b4cfe16980c4"}, - {file = "rpds_py-0.19.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9c7042488165f7251dc7894cd533a875d2875af6d3b0e09eda9c4b334627ad1c"}, - {file = "rpds_py-0.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f809a17cc78bd331e137caa25262b507225854073fd319e987bd216bed911b7c"}, - {file = "rpds_py-0.19.1-cp312-none-win32.whl", hash = "sha256:3ddab996807c6b4227967fe1587febade4e48ac47bb0e2d3e7858bc621b1cace"}, - {file = "rpds_py-0.19.1-cp312-none-win_amd64.whl", hash = "sha256:32e0db3d6e4f45601b58e4ac75c6f24afbf99818c647cc2066f3e4b192dabb1f"}, - {file = "rpds_py-0.19.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:747251e428406b05fc86fee3904ee19550c4d2d19258cef274e2151f31ae9d38"}, - {file = "rpds_py-0.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dc733d35f861f8d78abfaf54035461e10423422999b360966bf1c443cbc42705"}, - {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbda75f245caecff8faa7e32ee94dfaa8312a3367397975527f29654cd17a6ed"}, - {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd04d8cab16cab5b0a9ffc7d10f0779cf1120ab16c3925404428f74a0a43205a"}, - {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2d66eb41ffca6cc3c91d8387509d27ba73ad28371ef90255c50cb51f8953301"}, - {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdf4890cda3b59170009d012fca3294c00140e7f2abe1910e6a730809d0f3f9b"}, - {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1fa67ef839bad3815124f5f57e48cd50ff392f4911a9f3cf449d66fa3df62a5"}, - {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b82c9514c6d74b89a370c4060bdb80d2299bc6857e462e4a215b4ef7aa7b090e"}, - {file = "rpds_py-0.19.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c7b07959866a6afb019abb9564d8a55046feb7a84506c74a6f197cbcdf8a208e"}, - {file = "rpds_py-0.19.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4f580ae79d0b861dfd912494ab9d477bea535bfb4756a2269130b6607a21802e"}, - {file = "rpds_py-0.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c6d20c8896c00775e6f62d8373aba32956aa0b850d02b5ec493f486c88e12859"}, - {file = "rpds_py-0.19.1-cp313-none-win32.whl", hash = "sha256:afedc35fe4b9e30ab240b208bb9dc8938cb4afe9187589e8d8d085e1aacb8309"}, - {file = "rpds_py-0.19.1-cp313-none-win_amd64.whl", hash = "sha256:1d4af2eb520d759f48f1073ad3caef997d1bfd910dc34e41261a595d3f038a94"}, - {file = "rpds_py-0.19.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:34bca66e2e3eabc8a19e9afe0d3e77789733c702c7c43cd008e953d5d1463fde"}, - {file = "rpds_py-0.19.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:24f8ae92c7fae7c28d0fae9b52829235df83f34847aa8160a47eb229d9666c7b"}, - {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71157f9db7f6bc6599a852852f3389343bea34315b4e6f109e5cbc97c1fb2963"}, - {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1d494887d40dc4dd0d5a71e9d07324e5c09c4383d93942d391727e7a40ff810b"}, - {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7b3661e6d4ba63a094138032c1356d557de5b3ea6fd3cca62a195f623e381c76"}, - {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97fbb77eaeb97591efdc654b8b5f3ccc066406ccfb3175b41382f221ecc216e8"}, - {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cc4bc73e53af8e7a42c8fd7923bbe35babacfa7394ae9240b3430b5dcf16b2a"}, - {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:35af5e4d5448fa179fd7fff0bba0fba51f876cd55212f96c8bbcecc5c684ae5c"}, - {file = "rpds_py-0.19.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3511f6baf8438326e351097cecd137eb45c5f019944fe0fd0ae2fea2fd26be39"}, - {file = "rpds_py-0.19.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:57863d16187995c10fe9cf911b897ed443ac68189179541734502353af33e693"}, - {file = "rpds_py-0.19.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:9e318e6786b1e750a62f90c6f7fa8b542102bdcf97c7c4de2a48b50b61bd36ec"}, - {file = "rpds_py-0.19.1-cp38-none-win32.whl", hash = "sha256:53dbc35808c6faa2ce3e48571f8f74ef70802218554884787b86a30947842a14"}, - {file = "rpds_py-0.19.1-cp38-none-win_amd64.whl", hash = "sha256:8df1c283e57c9cb4d271fdc1875f4a58a143a2d1698eb0d6b7c0d7d5f49c53a1"}, - {file = "rpds_py-0.19.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e76c902d229a3aa9d5ceb813e1cbcc69bf5bda44c80d574ff1ac1fa3136dea71"}, - {file = "rpds_py-0.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de1f7cd5b6b351e1afd7568bdab94934d656abe273d66cda0ceea43bbc02a0c2"}, - {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fc5a84777cb61692d17988989690d6f34f7f95968ac81398d67c0d0994a897"}, - {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:74129d5ffc4cde992d89d345f7f7d6758320e5d44a369d74d83493429dad2de5"}, - {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e360188b72f8080fefa3adfdcf3618604cc8173651c9754f189fece068d2a45"}, - {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13e6d4840897d4e4e6b2aa1443e3a8eca92b0402182aafc5f4ca1f5e24f9270a"}, - {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f09529d2332264a902688031a83c19de8fda5eb5881e44233286b9c9ec91856d"}, - {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0d4b52811dcbc1aba08fd88d475f75b4f6db0984ba12275d9bed1a04b2cae9b5"}, - {file = "rpds_py-0.19.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dd635c2c4043222d80d80ca1ac4530a633102a9f2ad12252183bcf338c1b9474"}, - {file = "rpds_py-0.19.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f35b34a5184d5e0cc360b61664c1c06e866aab077b5a7c538a3e20c8fcdbf90b"}, - {file = "rpds_py-0.19.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d4ec0046facab83012d821b33cead742a35b54575c4edfb7ed7445f63441835f"}, - {file = "rpds_py-0.19.1-cp39-none-win32.whl", hash = "sha256:f5b8353ea1a4d7dfb59a7f45c04df66ecfd363bb5b35f33b11ea579111d4655f"}, - {file = "rpds_py-0.19.1-cp39-none-win_amd64.whl", hash = "sha256:1fb93d3486f793d54a094e2bfd9cd97031f63fcb5bc18faeb3dd4b49a1c06523"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7d5c7e32f3ee42f77d8ff1a10384b5cdcc2d37035e2e3320ded909aa192d32c3"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:89cc8921a4a5028d6dd388c399fcd2eef232e7040345af3d5b16c04b91cf3c7e"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca34e913d27401bda2a6f390d0614049f5a95b3b11cd8eff80fe4ec340a1208"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5953391af1405f968eb5701ebbb577ebc5ced8d0041406f9052638bafe52209d"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:840e18c38098221ea6201f091fc5d4de6128961d2930fbbc96806fb43f69aec1"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d8b735c4d162dc7d86a9cf3d717f14b6c73637a1f9cd57fe7e61002d9cb1972"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce757c7c90d35719b38fa3d4ca55654a76a40716ee299b0865f2de21c146801c"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9421b23c85f361a133aa7c5e8ec757668f70343f4ed8fdb5a4a14abd5437244"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:3b823be829407393d84ee56dc849dbe3b31b6a326f388e171555b262e8456cc1"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:5e58b61dcbb483a442c6239c3836696b79f2cd8e7eec11e12155d3f6f2d886d1"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39d67896f7235b2c886fb1ee77b1491b77049dcef6fbf0f401e7b4cbed86bbd4"}, - {file = "rpds_py-0.19.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8b32cd4ab6db50c875001ba4f5a6b30c0f42151aa1fbf9c2e7e3674893fb1dc4"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1c32e41de995f39b6b315d66c27dea3ef7f7c937c06caab4c6a79a5e09e2c415"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a129c02b42d46758c87faeea21a9f574e1c858b9f358b6dd0bbd71d17713175"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:346557f5b1d8fd9966059b7a748fd79ac59f5752cd0e9498d6a40e3ac1c1875f"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:31e450840f2f27699d014cfc8865cc747184286b26d945bcea6042bb6aa4d26e"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01227f8b3e6c8961490d869aa65c99653df80d2f0a7fde8c64ebddab2b9b02fd"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69084fd29bfeff14816666c93a466e85414fe6b7d236cfc108a9c11afa6f7301"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d2b88efe65544a7d5121b0c3b003ebba92bfede2ea3577ce548b69c5235185"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ea961a674172ed2235d990d7edf85d15d8dfa23ab8575e48306371c070cda67"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:5beffdbe766cfe4fb04f30644d822a1080b5359df7db3a63d30fa928375b2720"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:720f3108fb1bfa32e51db58b832898372eb5891e8472a8093008010911e324c5"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c2087dbb76a87ec2c619253e021e4fb20d1a72580feeaa6892b0b3d955175a71"}, - {file = "rpds_py-0.19.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2ddd50f18ebc05ec29a0d9271e9dbe93997536da3546677f8ca00b76d477680c"}, - {file = "rpds_py-0.19.1.tar.gz", hash = "sha256:31dd5794837f00b46f4096aa8ccaa5972f73a938982e32ed817bb520c465e520"}, + {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, + {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, + {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, + {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, + {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, + {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, + {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, + {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, + {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, + {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, + {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, + {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, + {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, + {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, + {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, + {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, + {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, + {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, + {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, + {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, + {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, + {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, + {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, + {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, + {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, + {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, + {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, + {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, + {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, + {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, + {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, + {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, + {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, + {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, + {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, + {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, + {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, + {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, + {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, ] [[package]] name = "ruff" -version = "0.5.5" +version = "0.5.7" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.5.5-py3-none-linux_armv6l.whl", hash = "sha256:605d589ec35d1da9213a9d4d7e7a9c761d90bba78fc8790d1c5e65026c1b9eaf"}, - {file = "ruff-0.5.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00817603822a3e42b80f7c3298c8269e09f889ee94640cd1fc7f9329788d7bf8"}, - {file = "ruff-0.5.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:187a60f555e9f865a2ff2c6984b9afeffa7158ba6e1eab56cb830404c942b0f3"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe26fc46fa8c6e0ae3f47ddccfbb136253c831c3289bba044befe68f467bfb16"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4ad25dd9c5faac95c8e9efb13e15803cd8bbf7f4600645a60ffe17c73f60779b"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f70737c157d7edf749bcb952d13854e8f745cec695a01bdc6e29c29c288fc36e"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:cfd7de17cef6ab559e9f5ab859f0d3296393bc78f69030967ca4d87a541b97a0"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a09b43e02f76ac0145f86a08e045e2ea452066f7ba064fd6b0cdccb486f7c3e7"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0b856cb19c60cd40198be5d8d4b556228e3dcd545b4f423d1ad812bfdca5884"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3687d002f911e8a5faf977e619a034d159a8373514a587249cc00f211c67a091"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ac9dc814e510436e30d0ba535f435a7f3dc97f895f844f5b3f347ec8c228a523"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:af9bdf6c389b5add40d89b201425b531e0a5cceb3cfdcc69f04d3d531c6be74f"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d40a8533ed545390ef8315b8e25c4bb85739b90bd0f3fe1280a29ae364cc55d8"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cab904683bf9e2ecbbe9ff235bfe056f0eba754d0168ad5407832928d579e7ab"}, - {file = "ruff-0.5.5-py3-none-win32.whl", hash = "sha256:696f18463b47a94575db635ebb4c178188645636f05e934fdf361b74edf1bb2d"}, - {file = "ruff-0.5.5-py3-none-win_amd64.whl", hash = "sha256:50f36d77f52d4c9c2f1361ccbfbd09099a1b2ea5d2b2222c586ab08885cf3445"}, - {file = "ruff-0.5.5-py3-none-win_arm64.whl", hash = "sha256:3191317d967af701f1b73a31ed5788795936e423b7acce82a2b63e26eb3e89d6"}, - {file = "ruff-0.5.5.tar.gz", hash = "sha256:cc5516bdb4858d972fbc31d246bdb390eab8df1a26e2353be2dbc0c2d7f5421a"}, + {file = "ruff-0.5.7-py3-none-linux_armv6l.whl", hash = "sha256:548992d342fc404ee2e15a242cdbea4f8e39a52f2e7752d0e4cbe88d2d2f416a"}, + {file = "ruff-0.5.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00cc8872331055ee017c4f1071a8a31ca0809ccc0657da1d154a1d2abac5c0be"}, + {file = "ruff-0.5.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:eaf3d86a1fdac1aec8a3417a63587d93f906c678bb9ed0b796da7b59c1114a1e"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a01c34400097b06cf8a6e61b35d6d456d5bd1ae6961542de18ec81eaf33b4cb8"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcc8054f1a717e2213500edaddcf1dbb0abad40d98e1bd9d0ad364f75c763eea"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f70284e73f36558ef51602254451e50dd6cc479f8b6f8413a95fcb5db4a55fc"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a78ad870ae3c460394fc95437d43deb5c04b5c29297815a2a1de028903f19692"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ccd078c66a8e419475174bfe60a69adb36ce04f8d4e91b006f1329d5cd44bcf"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e31c9bad4ebf8fdb77b59cae75814440731060a09a0e0077d559a556453acbb"}, + {file = "ruff-0.5.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d796327eed8e168164346b769dd9a27a70e0298d667b4ecee6877ce8095ec8e"}, + {file = "ruff-0.5.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a09ea2c3f7778cc635e7f6edf57d566a8ee8f485f3c4454db7771efb692c499"}, + {file = "ruff-0.5.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a36d8dcf55b3a3bc353270d544fb170d75d2dff41eba5df57b4e0b67a95bb64e"}, + {file = "ruff-0.5.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9369c218f789eefbd1b8d82a8cf25017b523ac47d96b2f531eba73770971c9e5"}, + {file = "ruff-0.5.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b88ca3db7eb377eb24fb7c82840546fb7acef75af4a74bd36e9ceb37a890257e"}, + {file = "ruff-0.5.7-py3-none-win32.whl", hash = "sha256:33d61fc0e902198a3e55719f4be6b375b28f860b09c281e4bdbf783c0566576a"}, + {file = "ruff-0.5.7-py3-none-win_amd64.whl", hash = "sha256:083bbcbe6fadb93cd86709037acc510f86eed5a314203079df174c40bbbca6b3"}, + {file = "ruff-0.5.7-py3-none-win_arm64.whl", hash = "sha256:2dca26154ff9571995107221d0aeaad0e75a77b5a682d6236cf89a58c70b76f4"}, + {file = "ruff-0.5.7.tar.gz", hash = "sha256:8dfc0a458797f5d9fb622dd0efc52d796f23f0a1493a9527f4e49a550ae9a7e5"}, ] [[package]] @@ -3741,60 +3876,60 @@ files = [ [[package]] name = "sqlalchemy" -version = "2.0.31" +version = "2.0.32" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.31-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f2a213c1b699d3f5768a7272de720387ae0122f1becf0901ed6eaa1abd1baf6c"}, - {file = "SQLAlchemy-2.0.31-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9fea3d0884e82d1e33226935dac990b967bef21315cbcc894605db3441347443"}, - {file = "SQLAlchemy-2.0.31-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3ad7f221d8a69d32d197e5968d798217a4feebe30144986af71ada8c548e9fa"}, - {file = "SQLAlchemy-2.0.31-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2bee229715b6366f86a95d497c347c22ddffa2c7c96143b59a2aa5cc9eebbc"}, - {file = "SQLAlchemy-2.0.31-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cd5b94d4819c0c89280b7c6109c7b788a576084bf0a480ae17c227b0bc41e109"}, - {file = "SQLAlchemy-2.0.31-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:750900a471d39a7eeba57580b11983030517a1f512c2cb287d5ad0fcf3aebd58"}, - {file = "SQLAlchemy-2.0.31-cp310-cp310-win32.whl", hash = "sha256:7bd112be780928c7f493c1a192cd8c5fc2a2a7b52b790bc5a84203fb4381c6be"}, - {file = "SQLAlchemy-2.0.31-cp310-cp310-win_amd64.whl", hash = "sha256:5a48ac4d359f058474fadc2115f78a5cdac9988d4f99eae44917f36aa1476327"}, - {file = "SQLAlchemy-2.0.31-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f68470edd70c3ac3b6cd5c2a22a8daf18415203ca1b036aaeb9b0fb6f54e8298"}, - {file = "SQLAlchemy-2.0.31-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e2c38c2a4c5c634fe6c3c58a789712719fa1bf9b9d6ff5ebfce9a9e5b89c1ca"}, - {file = "SQLAlchemy-2.0.31-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd15026f77420eb2b324dcb93551ad9c5f22fab2c150c286ef1dc1160f110203"}, - {file = "SQLAlchemy-2.0.31-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2196208432deebdfe3b22185d46b08f00ac9d7b01284e168c212919891289396"}, - {file = "SQLAlchemy-2.0.31-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:352b2770097f41bff6029b280c0e03b217c2dcaddc40726f8f53ed58d8a85da4"}, - {file = "SQLAlchemy-2.0.31-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:56d51ae825d20d604583f82c9527d285e9e6d14f9a5516463d9705dab20c3740"}, - {file = "SQLAlchemy-2.0.31-cp311-cp311-win32.whl", hash = "sha256:6e2622844551945db81c26a02f27d94145b561f9d4b0c39ce7bfd2fda5776dac"}, - {file = "SQLAlchemy-2.0.31-cp311-cp311-win_amd64.whl", hash = "sha256:ccaf1b0c90435b6e430f5dd30a5aede4764942a695552eb3a4ab74ed63c5b8d3"}, - {file = "SQLAlchemy-2.0.31-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3b74570d99126992d4b0f91fb87c586a574a5872651185de8297c6f90055ae42"}, - {file = "SQLAlchemy-2.0.31-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f77c4f042ad493cb8595e2f503c7a4fe44cd7bd59c7582fd6d78d7e7b8ec52c"}, - {file = "SQLAlchemy-2.0.31-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd1591329333daf94467e699e11015d9c944f44c94d2091f4ac493ced0119449"}, - {file = "SQLAlchemy-2.0.31-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74afabeeff415e35525bf7a4ecdab015f00e06456166a2eba7590e49f8db940e"}, - {file = "SQLAlchemy-2.0.31-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b9c01990d9015df2c6f818aa8f4297d42ee71c9502026bb074e713d496e26b67"}, - {file = "SQLAlchemy-2.0.31-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:66f63278db425838b3c2b1c596654b31939427016ba030e951b292e32b99553e"}, - {file = "SQLAlchemy-2.0.31-cp312-cp312-win32.whl", hash = "sha256:0b0f658414ee4e4b8cbcd4a9bb0fd743c5eeb81fc858ca517217a8013d282c96"}, - {file = "SQLAlchemy-2.0.31-cp312-cp312-win_amd64.whl", hash = "sha256:fa4b1af3e619b5b0b435e333f3967612db06351217c58bfb50cee5f003db2a5a"}, - {file = "SQLAlchemy-2.0.31-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f43e93057cf52a227eda401251c72b6fbe4756f35fa6bfebb5d73b86881e59b0"}, - {file = "SQLAlchemy-2.0.31-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d337bf94052856d1b330d5fcad44582a30c532a2463776e1651bd3294ee7e58b"}, - {file = "SQLAlchemy-2.0.31-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c06fb43a51ccdff3b4006aafee9fcf15f63f23c580675f7734245ceb6b6a9e05"}, - {file = "SQLAlchemy-2.0.31-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:b6e22630e89f0e8c12332b2b4c282cb01cf4da0d26795b7eae16702a608e7ca1"}, - {file = "SQLAlchemy-2.0.31-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:79a40771363c5e9f3a77f0e28b3302801db08040928146e6808b5b7a40749c88"}, - {file = "SQLAlchemy-2.0.31-cp37-cp37m-win32.whl", hash = "sha256:501ff052229cb79dd4c49c402f6cb03b5a40ae4771efc8bb2bfac9f6c3d3508f"}, - {file = "SQLAlchemy-2.0.31-cp37-cp37m-win_amd64.whl", hash = "sha256:597fec37c382a5442ffd471f66ce12d07d91b281fd474289356b1a0041bdf31d"}, - {file = "SQLAlchemy-2.0.31-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dc6d69f8829712a4fd799d2ac8d79bdeff651c2301b081fd5d3fe697bd5b4ab9"}, - {file = "SQLAlchemy-2.0.31-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:23b9fbb2f5dd9e630db70fbe47d963c7779e9c81830869bd7d137c2dc1ad05fb"}, - {file = "SQLAlchemy-2.0.31-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a21c97efcbb9f255d5c12a96ae14da873233597dfd00a3a0c4ce5b3e5e79704"}, - {file = "SQLAlchemy-2.0.31-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26a6a9837589c42b16693cf7bf836f5d42218f44d198f9343dd71d3164ceeeac"}, - {file = "SQLAlchemy-2.0.31-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc251477eae03c20fae8db9c1c23ea2ebc47331bcd73927cdcaecd02af98d3c3"}, - {file = "SQLAlchemy-2.0.31-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2fd17e3bb8058359fa61248c52c7b09a97cf3c820e54207a50af529876451808"}, - {file = "SQLAlchemy-2.0.31-cp38-cp38-win32.whl", hash = "sha256:c76c81c52e1e08f12f4b6a07af2b96b9b15ea67ccdd40ae17019f1c373faa227"}, - {file = "SQLAlchemy-2.0.31-cp38-cp38-win_amd64.whl", hash = "sha256:4b600e9a212ed59355813becbcf282cfda5c93678e15c25a0ef896b354423238"}, - {file = "SQLAlchemy-2.0.31-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b6cf796d9fcc9b37011d3f9936189b3c8074a02a4ed0c0fbbc126772c31a6d4"}, - {file = "SQLAlchemy-2.0.31-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:78fe11dbe37d92667c2c6e74379f75746dc947ee505555a0197cfba9a6d4f1a4"}, - {file = "SQLAlchemy-2.0.31-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fc47dc6185a83c8100b37acda27658fe4dbd33b7d5e7324111f6521008ab4fe"}, - {file = "SQLAlchemy-2.0.31-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a41514c1a779e2aa9a19f67aaadeb5cbddf0b2b508843fcd7bafdf4c6864005"}, - {file = "SQLAlchemy-2.0.31-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:afb6dde6c11ea4525318e279cd93c8734b795ac8bb5dda0eedd9ebaca7fa23f1"}, - {file = "SQLAlchemy-2.0.31-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3f9faef422cfbb8fd53716cd14ba95e2ef655400235c3dfad1b5f467ba179c8c"}, - {file = "SQLAlchemy-2.0.31-cp39-cp39-win32.whl", hash = "sha256:fc6b14e8602f59c6ba893980bea96571dd0ed83d8ebb9c4479d9ed5425d562e9"}, - {file = "SQLAlchemy-2.0.31-cp39-cp39-win_amd64.whl", hash = "sha256:3cb8a66b167b033ec72c3812ffc8441d4e9f5f78f5e31e54dcd4c90a4ca5bebc"}, - {file = "SQLAlchemy-2.0.31-py3-none-any.whl", hash = "sha256:69f3e3c08867a8e4856e92d7afb618b95cdee18e0bc1647b77599722c9a28911"}, - {file = "SQLAlchemy-2.0.31.tar.gz", hash = "sha256:b607489dd4a54de56984a0c7656247504bd5523d9d0ba799aef59d4add009484"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0c9045ecc2e4db59bfc97b20516dfdf8e41d910ac6fb667ebd3a79ea54084619"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1467940318e4a860afd546ef61fefb98a14d935cd6817ed07a228c7f7c62f389"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5954463675cb15db8d4b521f3566a017c8789222b8316b1e6934c811018ee08b"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:167e7497035c303ae50651b351c28dc22a40bb98fbdb8468cdc971821b1ae533"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b27dfb676ac02529fb6e343b3a482303f16e6bc3a4d868b73935b8792edb52d0"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bf2360a5e0f7bd75fa80431bf8ebcfb920c9f885e7956c7efde89031695cafb8"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-win32.whl", hash = "sha256:306fe44e754a91cd9d600a6b070c1f2fadbb4a1a257b8781ccf33c7067fd3e4d"}, + {file = "SQLAlchemy-2.0.32-cp310-cp310-win_amd64.whl", hash = "sha256:99db65e6f3ab42e06c318f15c98f59a436f1c78179e6a6f40f529c8cc7100b22"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:21b053be28a8a414f2ddd401f1be8361e41032d2ef5884b2f31d31cb723e559f"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b178e875a7a25b5938b53b006598ee7645172fccafe1c291a706e93f48499ff5"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723a40ee2cc7ea653645bd4cf024326dea2076673fc9d3d33f20f6c81db83e1d"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:295ff8689544f7ee7e819529633d058bd458c1fd7f7e3eebd0f9268ebc56c2a0"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49496b68cd190a147118af585173ee624114dfb2e0297558c460ad7495f9dfe2"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:acd9b73c5c15f0ec5ce18128b1fe9157ddd0044abc373e6ecd5ba376a7e5d961"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-win32.whl", hash = "sha256:9365a3da32dabd3e69e06b972b1ffb0c89668994c7e8e75ce21d3e5e69ddef28"}, + {file = "SQLAlchemy-2.0.32-cp311-cp311-win_amd64.whl", hash = "sha256:8bd63d051f4f313b102a2af1cbc8b80f061bf78f3d5bd0843ff70b5859e27924"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6bab3db192a0c35e3c9d1560eb8332463e29e5507dbd822e29a0a3c48c0a8d92"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:19d98f4f58b13900d8dec4ed09dd09ef292208ee44cc9c2fe01c1f0a2fe440e9"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cd33c61513cb1b7371fd40cf221256456d26a56284e7d19d1f0b9f1eb7dd7e8"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d6ba0497c1d066dd004e0f02a92426ca2df20fac08728d03f67f6960271feec"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2b6be53e4fde0065524f1a0a7929b10e9280987b320716c1509478b712a7688c"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:916a798f62f410c0b80b63683c8061f5ebe237b0f4ad778739304253353bc1cb"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-win32.whl", hash = "sha256:31983018b74908ebc6c996a16ad3690301a23befb643093fcfe85efd292e384d"}, + {file = "SQLAlchemy-2.0.32-cp312-cp312-win_amd64.whl", hash = "sha256:4363ed245a6231f2e2957cccdda3c776265a75851f4753c60f3004b90e69bfeb"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8afd5b26570bf41c35c0121801479958b4446751a3971fb9a480c1afd85558e"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c750987fc876813f27b60d619b987b057eb4896b81117f73bb8d9918c14f1cad"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ada0102afff4890f651ed91120c1120065663506b760da4e7823913ebd3258be"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:78c03d0f8a5ab4f3034c0e8482cfcc415a3ec6193491cfa1c643ed707d476f16"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:3bd1cae7519283ff525e64645ebd7a3e0283f3c038f461ecc1c7b040a0c932a1"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-win32.whl", hash = "sha256:01438ebcdc566d58c93af0171c74ec28efe6a29184b773e378a385e6215389da"}, + {file = "SQLAlchemy-2.0.32-cp37-cp37m-win_amd64.whl", hash = "sha256:4979dc80fbbc9d2ef569e71e0896990bc94df2b9fdbd878290bd129b65ab579c"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c742be912f57586ac43af38b3848f7688863a403dfb220193a882ea60e1ec3a"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:62e23d0ac103bcf1c5555b6c88c114089587bc64d048fef5bbdb58dfd26f96da"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:251f0d1108aab8ea7b9aadbd07fb47fb8e3a5838dde34aa95a3349876b5a1f1d"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ef18a84e5116340e38eca3e7f9eeaaef62738891422e7c2a0b80feab165905f"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3eb6a97a1d39976f360b10ff208c73afb6a4de86dd2a6212ddf65c4a6a2347d5"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0c1c9b673d21477cec17ab10bc4decb1322843ba35b481585facd88203754fc5"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-win32.whl", hash = "sha256:c41a2b9ca80ee555decc605bd3c4520cc6fef9abde8fd66b1cf65126a6922d65"}, + {file = "SQLAlchemy-2.0.32-cp38-cp38-win_amd64.whl", hash = "sha256:8a37e4d265033c897892279e8adf505c8b6b4075f2b40d77afb31f7185cd6ecd"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:52fec964fba2ef46476312a03ec8c425956b05c20220a1a03703537824b5e8e1"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:328429aecaba2aee3d71e11f2477c14eec5990fb6d0e884107935f7fb6001632"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85a01b5599e790e76ac3fe3aa2f26e1feba56270023d6afd5550ed63c68552b3"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aaf04784797dcdf4c0aa952c8d234fa01974c4729db55c45732520ce12dd95b4"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4488120becf9b71b3ac718f4138269a6be99a42fe023ec457896ba4f80749525"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:14e09e083a5796d513918a66f3d6aedbc131e39e80875afe81d98a03312889e6"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-win32.whl", hash = "sha256:0d322cc9c9b2154ba7e82f7bf25ecc7c36fbe2d82e2933b3642fc095a52cfc78"}, + {file = "SQLAlchemy-2.0.32-cp39-cp39-win_amd64.whl", hash = "sha256:7dd8583df2f98dea28b5cd53a1beac963f4f9d087888d75f22fcc93a07cf8d84"}, + {file = "SQLAlchemy-2.0.32-py3-none-any.whl", hash = "sha256:e567a8793a692451f706b363ccf3c45e056b67d90ead58c3bc9471af5d212202"}, + {file = "SQLAlchemy-2.0.32.tar.gz", hash = "sha256:c1b88cc8b02b6a5f0efb0345a03672d4c897dc7d92585176f88c67346f565ea8"}, ] [package.dependencies] @@ -4009,13 +4144,13 @@ files = [ [[package]] name = "tqdm" -version = "4.66.4" +version = "4.66.5" description = "Fast, Extensible Progress Meter" optional = true python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"}, - {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"}, + {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, + {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, ] [package.dependencies] @@ -4117,24 +4252,24 @@ files = [ [[package]] name = "types-pyyaml" -version = "6.0.12.20240724" +version = "6.0.12.20240808" description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.8" files = [ - {file = "types-PyYAML-6.0.12.20240724.tar.gz", hash = "sha256:cf7b31ae67e0c5b2919c703d2affc415485099d3fe6666a6912f040fd05cb67f"}, - {file = "types_PyYAML-6.0.12.20240724-py3-none-any.whl", hash = "sha256:e5becec598f3aa3a2ddf671de4a75fa1c6856fbf73b2840286c9d50fae2d5d48"}, + {file = "types-PyYAML-6.0.12.20240808.tar.gz", hash = "sha256:b8f76ddbd7f65440a8bda5526a9607e4c7a322dc2f8e1a8c405644f9a6f4b9af"}, + {file = "types_PyYAML-6.0.12.20240808-py3-none-any.whl", hash = "sha256:deda34c5c655265fc517b546c902aa6eed2ef8d3e921e4765fe606fe2afe8d35"}, ] [[package]] name = "types-redis" -version = "4.6.0.20240726" +version = "4.6.0.20240806" description = "Typing stubs for redis" optional = false python-versions = ">=3.8" files = [ - {file = "types-redis-4.6.0.20240726.tar.gz", hash = "sha256:de2aefcf7afe80057debada8c540463d06c8863de50b8016bd369ccdbcb59b5e"}, - {file = "types_redis-4.6.0.20240726-py3-none-any.whl", hash = "sha256:233062b7120a9908532ec9163d17af74b80fa49a89d510444cad4cac42717378"}, + {file = "types-redis-4.6.0.20240806.tar.gz", hash = "sha256:60dd02c2b91ea2d42ad079ac58dedc31d71d6eedb1c21d3796811b02baac655d"}, + {file = "types_redis-4.6.0.20240806-py3-none-any.whl", hash = "sha256:9d8fbe0ce37e3660c0a06982db7812384295d10a93d637c7f8604a2f3c88b0e6"}, ] [package.dependencies] @@ -4171,13 +4306,13 @@ urllib3 = ">=2" [[package]] name = "types-setuptools" -version = "71.1.0.20240726" +version = "71.1.0.20240806" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-71.1.0.20240726.tar.gz", hash = "sha256:85ba28e9461bb1be86ebba4db0f1c2408f2b11115b1966334ea9dc464e29303e"}, - {file = "types_setuptools-71.1.0.20240726-py3-none-any.whl", hash = "sha256:a7775376f36e0ff09bcad236bf265777590a66b11623e48c20bfc30f1444ea36"}, + {file = "types-setuptools-71.1.0.20240806.tar.gz", hash = "sha256:ae5e7b4d643ab9e99fc00ac00041804118cabe72a56183c30d524fb064897ad6"}, + {file = "types_setuptools-71.1.0.20240806-py3-none-any.whl", hash = "sha256:3bd8dd02039be0bb79ad880d8893b8eefcb022fabbeeb61245c61b20c9ab1ed0"}, ] [[package]] @@ -4292,43 +4427,46 @@ tests = ["Werkzeug (==2.0.3)", "aiohttp", "boto3", "httplib2", "httpx", "pytest" [[package]] name = "watchdog" -version = "4.0.1" +version = "4.0.2" description = "Filesystem events monitoring" optional = false python-versions = ">=3.8" files = [ - {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:da2dfdaa8006eb6a71051795856bedd97e5b03e57da96f98e375682c48850645"}, - {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e93f451f2dfa433d97765ca2634628b789b49ba8b504fdde5837cdcf25fdb53b"}, - {file = "watchdog-4.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ef0107bbb6a55f5be727cfc2ef945d5676b97bffb8425650dadbb184be9f9a2b"}, - {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:17e32f147d8bf9657e0922c0940bcde863b894cd871dbb694beb6704cfbd2fb5"}, - {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03e70d2df2258fb6cb0e95bbdbe06c16e608af94a3ffbd2b90c3f1e83eb10767"}, - {file = "watchdog-4.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123587af84260c991dc5f62a6e7ef3d1c57dfddc99faacee508c71d287248459"}, - {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:093b23e6906a8b97051191a4a0c73a77ecc958121d42346274c6af6520dec175"}, - {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:611be3904f9843f0529c35a3ff3fd617449463cb4b73b1633950b3d97fa4bfb7"}, - {file = "watchdog-4.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:62c613ad689ddcb11707f030e722fa929f322ef7e4f18f5335d2b73c61a85c28"}, - {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d4925e4bf7b9bddd1c3de13c9b8a2cdb89a468f640e66fbfabaf735bd85b3e35"}, - {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cad0bbd66cd59fc474b4a4376bc5ac3fc698723510cbb64091c2a793b18654db"}, - {file = "watchdog-4.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a3c2c317a8fb53e5b3d25790553796105501a235343f5d2bf23bb8649c2c8709"}, - {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c9904904b6564d4ee8a1ed820db76185a3c96e05560c776c79a6ce5ab71888ba"}, - {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:667f3c579e813fcbad1b784db7a1aaa96524bed53437e119f6a2f5de4db04235"}, - {file = "watchdog-4.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d10a681c9a1d5a77e75c48a3b8e1a9f2ae2928eda463e8d33660437705659682"}, - {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7"}, - {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:998d2be6976a0ee3a81fb8e2777900c28641fb5bfbd0c84717d89bca0addcdc5"}, - {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e7921319fe4430b11278d924ef66d4daa469fafb1da679a2e48c935fa27af193"}, - {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:f0de0f284248ab40188f23380b03b59126d1479cd59940f2a34f8852db710625"}, - {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bca36be5707e81b9e6ce3208d92d95540d4ca244c006b61511753583c81c70dd"}, - {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ab998f567ebdf6b1da7dc1e5accfaa7c6992244629c0fdaef062f43249bd8dee"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:dddba7ca1c807045323b6af4ff80f5ddc4d654c8bce8317dde1bd96b128ed253"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:4513ec234c68b14d4161440e07f995f231be21a09329051e67a2118a7a612d2d"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_i686.whl", hash = "sha256:4107ac5ab936a63952dea2a46a734a23230aa2f6f9db1291bf171dac3ebd53c6"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:6e8c70d2cd745daec2a08734d9f63092b793ad97612470a0ee4cbb8f5f705c57"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f27279d060e2ab24c0aa98363ff906d2386aa6c4dc2f1a374655d4e02a6c5e5e"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:f8affdf3c0f0466e69f5b3917cdd042f89c8c63aebdb9f7c078996f607cdb0f5"}, - {file = "watchdog-4.0.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84"}, - {file = "watchdog-4.0.1-py3-none-win32.whl", hash = "sha256:206afc3d964f9a233e6ad34618ec60b9837d0582b500b63687e34011e15bb429"}, - {file = "watchdog-4.0.1-py3-none-win_amd64.whl", hash = "sha256:7577b3c43e5909623149f76b099ac49a1a01ca4e167d1785c76eb52fa585745a"}, - {file = "watchdog-4.0.1-py3-none-win_ia64.whl", hash = "sha256:d7b9f5f3299e8dd230880b6c55504a1f69cf1e4316275d1b215ebdd8187ec88d"}, - {file = "watchdog-4.0.1.tar.gz", hash = "sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44"}, + {file = "watchdog-4.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ede7f010f2239b97cc79e6cb3c249e72962404ae3865860855d5cbe708b0fd22"}, + {file = "watchdog-4.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a2cffa171445b0efa0726c561eca9a27d00a1f2b83846dbd5a4f639c4f8ca8e1"}, + {file = "watchdog-4.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c50f148b31b03fbadd6d0b5980e38b558046b127dc483e5e4505fcef250f9503"}, + {file = "watchdog-4.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7c7d4bf585ad501c5f6c980e7be9c4f15604c7cc150e942d82083b31a7548930"}, + {file = "watchdog-4.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:914285126ad0b6eb2258bbbcb7b288d9dfd655ae88fa28945be05a7b475a800b"}, + {file = "watchdog-4.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:984306dc4720da5498b16fc037b36ac443816125a3705dfde4fd90652d8028ef"}, + {file = "watchdog-4.0.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1cdcfd8142f604630deef34722d695fb455d04ab7cfe9963055df1fc69e6727a"}, + {file = "watchdog-4.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d7ab624ff2f663f98cd03c8b7eedc09375a911794dfea6bf2a359fcc266bff29"}, + {file = "watchdog-4.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:132937547a716027bd5714383dfc40dc66c26769f1ce8a72a859d6a48f371f3a"}, + {file = "watchdog-4.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:cd67c7df93eb58f360c43802acc945fa8da70c675b6fa37a241e17ca698ca49b"}, + {file = "watchdog-4.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcfd02377be80ef3b6bc4ce481ef3959640458d6feaae0bd43dd90a43da90a7d"}, + {file = "watchdog-4.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:980b71510f59c884d684b3663d46e7a14b457c9611c481e5cef08f4dd022eed7"}, + {file = "watchdog-4.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:aa160781cafff2719b663c8a506156e9289d111d80f3387cf3af49cedee1f040"}, + {file = "watchdog-4.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f6ee8dedd255087bc7fe82adf046f0b75479b989185fb0bdf9a98b612170eac7"}, + {file = "watchdog-4.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0b4359067d30d5b864e09c8597b112fe0a0a59321a0f331498b013fb097406b4"}, + {file = "watchdog-4.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:770eef5372f146997638d737c9a3c597a3b41037cfbc5c41538fc27c09c3a3f9"}, + {file = "watchdog-4.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eeea812f38536a0aa859972d50c76e37f4456474b02bd93674d1947cf1e39578"}, + {file = "watchdog-4.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b2c45f6e1e57ebb4687690c05bc3a2c1fb6ab260550c4290b8abb1335e0fd08b"}, + {file = "watchdog-4.0.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:10b6683df70d340ac3279eff0b2766813f00f35a1d37515d2c99959ada8f05fa"}, + {file = "watchdog-4.0.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f7c739888c20f99824f7aa9d31ac8a97353e22d0c0e54703a547a218f6637eb3"}, + {file = "watchdog-4.0.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c100d09ac72a8a08ddbf0629ddfa0b8ee41740f9051429baa8e31bb903ad7508"}, + {file = "watchdog-4.0.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:f5315a8c8dd6dd9425b974515081fc0aadca1d1d61e078d2246509fd756141ee"}, + {file = "watchdog-4.0.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2d468028a77b42cc685ed694a7a550a8d1771bb05193ba7b24006b8241a571a1"}, + {file = "watchdog-4.0.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f15edcae3830ff20e55d1f4e743e92970c847bcddc8b7509bcd172aa04de506e"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:936acba76d636f70db8f3c66e76aa6cb5136a936fc2a5088b9ce1c7a3508fc83"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_armv7l.whl", hash = "sha256:e252f8ca942a870f38cf785aef420285431311652d871409a64e2a0a52a2174c"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_i686.whl", hash = "sha256:0e83619a2d5d436a7e58a1aea957a3c1ccbf9782c43c0b4fed80580e5e4acd1a"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_ppc64.whl", hash = "sha256:88456d65f207b39f1981bf772e473799fcdc10801062c36fd5ad9f9d1d463a73"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:32be97f3b75693a93c683787a87a0dc8db98bb84701539954eef991fb35f5fbc"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_s390x.whl", hash = "sha256:c82253cfc9be68e3e49282831afad2c1f6593af80c0daf1287f6a92657986757"}, + {file = "watchdog-4.0.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c0b14488bd336c5b1845cee83d3e631a1f8b4e9c5091ec539406e4a324f882d8"}, + {file = "watchdog-4.0.2-py3-none-win32.whl", hash = "sha256:0d8a7e523ef03757a5aa29f591437d64d0d894635f8a50f370fe37f913ce4e19"}, + {file = "watchdog-4.0.2-py3-none-win_amd64.whl", hash = "sha256:c344453ef3bf875a535b0488e3ad28e341adbd5a9ffb0f7d62cefacc8824ef2b"}, + {file = "watchdog-4.0.2-py3-none-win_ia64.whl", hash = "sha256:baececaa8edff42cd16558a639a9b0ddf425f93d892e8392a56bf904f5eff22c"}, + {file = "watchdog-4.0.2.tar.gz", hash = "sha256:b4dfbb6c49221be4535623ea4474a4d6ee0a9cef4a80b20c28db4d858b64e270"}, ] [package.extras] @@ -4347,13 +4485,13 @@ files = [ [[package]] name = "webcolors" -version = "24.6.0" +version = "24.8.0" description = "A library for working with the color formats defined by HTML and CSS." optional = false python-versions = ">=3.8" files = [ - {file = "webcolors-24.6.0-py3-none-any.whl", hash = "sha256:8cf5bc7e28defd1d48b9e83d5fc30741328305a8195c29a8e668fa45586568a1"}, - {file = "webcolors-24.6.0.tar.gz", hash = "sha256:1d160d1de46b3e81e58d0a280d0c78b467dc80f47294b91b1ad8029d2cedb55b"}, + {file = "webcolors-24.8.0-py3-none-any.whl", hash = "sha256:fc4c3b59358ada164552084a8ebee637c221e4059267d0f8325b3b560f6c7f0a"}, + {file = "webcolors-24.8.0.tar.gz", hash = "sha256:08b07af286a01bcd30d583a7acadf629583d1f79bfef27dd2c2c5c263817277d"}, ] [package.extras] @@ -4582,13 +4720,13 @@ multidict = ">=4.0" [[package]] name = "zipp" -version = "3.19.2" +version = "3.20.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, - {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, + {file = "zipp-3.20.0-py3-none-any.whl", hash = "sha256:58da6168be89f0be59beb194da1250516fdaa062ccebd30127ac65d30045e10d"}, + {file = "zipp-3.20.0.tar.gz", hash = "sha256:0145e43d89664cfe1a2e533adc75adafed82fe2da404b4bbb6b026c0157bdb31"}, ] [package.extras] @@ -4598,4 +4736,4 @@ test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", [metadata] lock-version = "2.0" python-versions = ">=3.8.1,<4.0" -content-hash = "eaa92063c582b9655bca9cf689cb372d10ad0a95238f2bed45e1207464cbd333" +content-hash = "2439e88ef92c6ce5df913542f4244f1d683316a4e34690f179c088b24dd9a7f5" diff --git a/libs/langchain/pyproject.toml b/libs/langchain/pyproject.toml index a2cf612ef53be..da155aba3e781 100644 --- a/libs/langchain/pyproject.toml +++ b/libs/langchain/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "langchain" -version = "0.2.12" +version = "0.2.13" description = "Building applications with LLMs through composability" authors = [] license = "MIT" @@ -33,7 +33,7 @@ langchain-server = "langchain.server:main" [tool.poetry.dependencies] python = ">=3.8.1,<4.0" -langchain-core = "^0.2.27" +langchain-core = "^0.2.30" langchain-text-splitters = "^0.2.0" langsmith = "^0.1.17" pydantic = ">=1,<3" diff --git a/libs/partners/ai21/langchain_ai21/ai21_base.py b/libs/partners/ai21/langchain_ai21/ai21_base.py index 0c7c79f64cc7c..5b8fcca0f120b 100644 --- a/libs/partners/ai21/langchain_ai21/ai21_base.py +++ b/libs/partners/ai21/langchain_ai21/ai21_base.py @@ -16,9 +16,17 @@ class Config: client: Any = Field(default=None, exclude=True) #: :meta private: api_key: Optional[SecretStr] = None + """API key for AI21 API.""" api_host: Optional[str] = None + """Host URL""" timeout_sec: Optional[float] = None + """Timeout in seconds. + + If not set, it will default to the value of the environment + variable `AI21_TIMEOUT_SEC` or 300 seconds. + """ num_retries: Optional[int] = None + """Maximum number of retries for API requests before giving up.""" @root_validator() def validate_environment(cls, values: Dict) -> Dict: diff --git a/libs/partners/ai21/langchain_ai21/embeddings.py b/libs/partners/ai21/langchain_ai21/embeddings.py index 87ef389470d4b..9d18c55e4b93a 100644 --- a/libs/partners/ai21/langchain_ai21/embeddings.py +++ b/libs/partners/ai21/langchain_ai21/embeddings.py @@ -15,18 +15,64 @@ def _split_texts_into_batches(texts: List[str], batch_size: int) -> Iterator[Lis class AI21Embeddings(Embeddings, AI21Base): - """AI21 embedding model. + """AI21 embedding model integration. - To use, you should have the 'AI21_API_KEY' environment variable set - or pass as a named parameter to the constructor. + Install ``langchain_ai21`` and set environment variable ``AI21_API_KEY``. - Example: + .. code-block:: bash + + pip install -U langchain_ai21 + export AI21_API_KEY="your-api-key" + + Key init args — client params: + api_key: Optional[SecretStr] + batch_size: int + The number of texts that will be sent to the API in each batch. + Use larger batch sizes if working with many short texts. This will reduce + the number of API calls made, and can improve the time it takes to embed + a large number of texts. + num_retries: Optional[int] + Maximum number of retries for API requests before giving up. + timeout_sec: Optional[float] + Timeout in seconds for API requests. If not set, it will default to the + value of the environment variable `AI21_TIMEOUT_SEC` or 300 seconds. + + See full list of supported init args and their descriptions in the params section. + + Instantiate: .. code-block:: python from langchain_ai21 import AI21Embeddings - embeddings = AI21Embeddings() - query_result = embeddings.embed_query("Hello embeddings world!") + embed = AI21Embeddings( + # api_key="...", + # batch_size=128, + ) + + Embed single text: + .. code-block:: python + + input_text = "The meaning of life is 42" + vector = embed.embed_query(input_text) + print(vector[:3]) + + .. code-block:: python + + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] + + Embed multiple texts: + .. code-block:: python + + input_texts = ["Document 1...", "Document 2..."] + vectors = embed.embed_documents(input_texts) + print(len(vectors)) + # The first 3 coordinates for the first vector + print(vectors[0][:3]) + + .. code-block:: python + + 2 + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] """ batch_size: int = _DEFAULT_BATCH_SIZE diff --git a/libs/partners/astradb/README.md b/libs/partners/astradb/README.md new file mode 100644 index 0000000000000..62566a5677632 --- /dev/null +++ b/libs/partners/astradb/README.md @@ -0,0 +1,3 @@ +This package has moved! + +https://github.com/langchain-ai/langchain-datastax/tree/main/libs/astradb \ No newline at end of file diff --git a/libs/partners/azure-dynamic-sessions/langchain_azure_dynamic_sessions/tools/sessions.py b/libs/partners/azure-dynamic-sessions/langchain_azure_dynamic_sessions/tools/sessions.py index 99d5b3b034091..f71464488cfea 100644 --- a/libs/partners/azure-dynamic-sessions/langchain_azure_dynamic_sessions/tools/sessions.py +++ b/libs/partners/azure-dynamic-sessions/langchain_azure_dynamic_sessions/tools/sessions.py @@ -92,18 +92,50 @@ def from_dict(data: dict) -> "RemoteFileMetadata": class SessionsPythonREPLTool(BaseTool): - """A tool for running Python code. + r"""Azure Dynamic Sessions tool. - Run python code in an Azure Container Apps dynamic sessions code interpreter. + Setup: + Install ``langchain-azure-dynamic-sessions`` and create a session pool, which you can do by following the instructions [here](https://learn.microsoft.com/en-us/azure/container-apps/sessions-code-interpreter?tabs=azure-cli#create-a-session-pool-with-azure-cli). - Example: + .. code-block:: bash + + pip install -U langchain-azure-dynamic-sessions + + .. code-block:: python + + import getpass + + POOL_MANAGEMENT_ENDPOINT = getpass.getpass("Enter the management endpoint of the session pool: ") + + Instantiation: .. code-block:: python from langchain_azure_dynamic_sessions import SessionsPythonREPLTool - tool = SessionsPythonREPLTool(pool_management_endpoint="...") - result = tool.invoke("6 * 7") - """ + tool = SessionsPythonREPLTool( + pool_management_endpoint=POOL_MANAGEMENT_ENDPOINT + ) + + + Invocation with args: + .. code-block:: python + + tool.invoke("6 * 7") + + .. code-block:: python + + '{\\n "result": 42,\\n "stdout": "",\\n "stderr": ""\\n}' + + Invocation with ToolCall: + + .. code-block:: python + + tool.invoke({"args": {"input":"6 * 7"}, "id": "1", "name": tool.name, "type": "tool_call"}) + + .. code-block:: python + + '{\\n "result": 42,\\n "stdout": "",\\n "stderr": ""\\n}' + """ # noqa: E501 name: str = "Python_REPL" description: str = ( diff --git a/libs/partners/exa/langchain_exa/tools.py b/libs/partners/exa/langchain_exa/tools.py index a6d98ec9b72f9..808f6bdc57c67 100644 --- a/libs/partners/exa/langchain_exa/tools.py +++ b/libs/partners/exa/langchain_exa/tools.py @@ -14,7 +14,43 @@ class ExaSearchResults(BaseTool): - """Tool that queries the Metaphor Search API and gets back json.""" + """Exa Search tool. + + Setup: + Install ``langchain-exa`` and set environment variable ``EXA_API_KEY``. + + .. code-block:: bash + + pip install -U langchain-exa + export EXA_API_KEY="your-api-key" + + Instantiation: + .. code-block:: python + + from langchain-exa import ExaSearchResults + + tool = ExaSearchResults() + + Invocation with args: + .. code-block:: python + + tool.invoke({"query":"what is the weather in SF","num_results":1}) + + .. code-block:: python + + SearchResponse(results=[Result(url='https://www.wunderground.com/weather/37.8,-122.4', id='https://www.wunderground.com/weather/37.8,-122.4', title='San Francisco, CA Weather Conditionsstar_ratehome', score=0.1843988299369812, published_date='2023-02-23T01:17:06.594Z', author=None, text='The time period when the sun is no more than 6 degrees below the horizon at either sunrise or sunset. The horizon should be clearly defined and the brightest stars should be visible under good atmospheric conditions (i.e. no moonlight, or other lights). One still should be able to carry on ordinary outdoor activities. The time period when the sun is between 6 and 12 degrees below the horizon at either sunrise or sunset. The horizon is well defined and the outline of objects might be visible without artificial light. Ordinary outdoor activities are not possible at this time without extra illumination. The time period when the sun is between 12 and 18 degrees below the horizon at either sunrise or sunset. The sun does not contribute to the illumination of the sky before this time in the morning, or after this time in the evening. In the beginning of morning astronomical twilight and at the end of astronomical twilight in the evening, sky illumination is very faint, and might be undetectable. The time of Civil Sunset minus the time of Civil Sunrise. The time of Actual Sunset minus the time of Actual Sunrise. The change in length of daylight between today and tomorrow is also listed when available.', highlights=None, highlight_scores=None, summary=None)], autoprompt_string=None) + + Invocation with ToolCall: + + .. code-block:: python + + tool.invoke({"args": {"query":"what is the weather in SF","num_results":1}, "id": "1", "name": tool.name, "type": "tool_call"}) + + .. code-block:: python + + ToolMessage(content='Title: San Francisco, CA Weather Conditionsstar_ratehome\nURL: https://www.wunderground.com/weather/37.8,-122.4\nID: https://www.wunderground.com/weather/37.8,-122.4\nScore: 0.1843988299369812\nPublished Date: 2023-02-23T01:17:06.594Z\nAuthor: None\nText: The time period when the sun is no more than 6 degrees below the horizon at either sunrise or sunset. The horizon should be clearly defined and the brightest stars should be visible under good atmospheric conditions (i.e. no moonlight, or other lights). One still should be able to carry on ordinary outdoor activities. The time period when the sun is between 6 and 12 degrees below the horizon at either sunrise or sunset. The horizon is well defined and the outline of objects might be visible without artificial light. Ordinary outdoor activities are not possible at this time without extra illumination. The time period when the sun is between 12 and 18 degrees below the horizon at either sunrise or sunset. The sun does not contribute to the illumination of the sky before this time in the morning, or after this time in the evening. In the beginning of morning astronomical twilight and at the end of astronomical twilight in the evening, sky illumination is very faint, and might be undetectable. The time of Civil Sunset minus the time of Civil Sunrise. The time of Actual Sunset minus the time of Actual Sunrise. The change in length of daylight between today and tomorrow is also listed when available.\nHighlights: None\nHighlight Scores: None\nSummary: None\n', name='exa_search_results_json', tool_call_id='1') + + """ # noqa: E501 name: str = "exa_search_results_json" description: str = ( diff --git a/libs/partners/fireworks/langchain_fireworks/embeddings.py b/libs/partners/fireworks/langchain_fireworks/embeddings.py index 449c7d201cb2d..bb5693675ea78 100644 --- a/libs/partners/fireworks/langchain_fireworks/embeddings.py +++ b/libs/partners/fireworks/langchain_fireworks/embeddings.py @@ -8,16 +8,62 @@ class FireworksEmbeddings(BaseModel, Embeddings): - """FireworksEmbeddings embedding model. + """Fireworks embedding model integration. - Example: - .. code-block:: python + Setup: + Install ``langchain_fireworks`` and set environment variable + ``FIREWORKS_API_KEY``. - from langchain_fireworks import FireworksEmbeddings + .. code-block:: bash - model = FireworksEmbeddings( - model='nomic-ai/nomic-embed-text-v1.5' - ) + pip install -U langchain_fireworks + export FIREWORKS_API_KEY="your-api-key" + + Key init args — completion params: + model: str + Name of Fireworks model to use. + + Key init args — client params: + fireworks_api_key: SecretStr + Fireworks API key. + + See full list of supported init args and their descriptions in the params section. + + Instantiate: + .. code-block:: python + + from langchain_fireworks import FireworksEmbeddings + + model = FireworksEmbeddings( + model='nomic-ai/nomic-embed-text-v1.5' + # Use FIREWORKS_API_KEY env var or pass it in directly + # fireworks_api_key="..." + ) + + Embed multiple texts: + .. code-block:: python + + vectors = embeddings.embed_documents(['hello', 'goodbye']) + # Showing only the first 3 coordinates + print(len(vectors)) + print(vectors[0][:3]) + + .. code-block:: python + + 2 + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] + + + Embed single text: + .. code-block:: python + + input_text = "The meaning of life is 42" + vector = embeddings.embed_query('hello') + print(vector[:3]) + + .. code-block:: python + + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] """ _client: OpenAI = Field(default=None) diff --git a/libs/partners/mistralai/langchain_mistralai/embeddings.py b/libs/partners/mistralai/langchain_mistralai/embeddings.py index f2f8067bd1175..bbba05de37d2c 100644 --- a/libs/partners/mistralai/langchain_mistralai/embeddings.py +++ b/libs/partners/mistralai/langchain_mistralai/embeddings.py @@ -32,20 +32,82 @@ def encode_batch(self, texts: List[str]) -> List[List[str]]: class MistralAIEmbeddings(BaseModel, Embeddings): - """MistralAI embedding models. + """MistralAI embedding model integration. - To use, set the environment variable `MISTRAL_API_KEY` is set with your API key or - pass it as a named parameter to the constructor. + Setup: + Install ``langchain_mistralai`` and set environment variable + ``MISTRAL_API_KEY``. - Example: + .. code-block:: bash + + pip install -U langchain_mistralai + export MISTRAL_API_KEY="your-api-key" + + Key init args — completion params: + model: str + Name of MistralAI model to use. + + Key init args — client params: + api_key: Optional[SecretStr] + The API key for the MistralAI API. If not provided, it will be read from the + environment variable `MISTRAL_API_KEY`. + max_retries: int + The number of times to retry a request if it fails. + timeout: int + The number of seconds to wait for a response before timing out. + max_concurrent_requests: int + The maximum number of concurrent requests to make to the Mistral API. + + See full list of supported init args and their descriptions in the params section. + + Instantiate: .. code-block:: python - from langchain_mistralai import MistralAIEmbeddings + from __module_name__ import MistralAIEmbeddings - mistral = MistralAIEmbeddings( + embed = MistralAIEmbeddings( model="mistral-embed", - api_key="my-api-key" + # api_key="...", + # other params... ) + + Embed single text: + .. code-block:: python + + input_text = "The meaning of life is 42" + vector = embed.embed_query(input_text) + print(vector[:3]) + + .. code-block:: python + + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] + + Embed multiple text: + .. code-block:: python + + input_texts = ["Document 1...", "Document 2..."] + vectors = embed.embed_documents(input_texts) + print(len(vectors)) + # The first 3 coordinates for the first vector + print(vectors[0][:3]) + + .. code-block:: python + + 2 + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] + + Async: + .. code-block:: python + + vector = await embed.aembed_query(input_text) + print(vector[:3]) + + # multiple: + # await embed.aembed_documents(input_texts) + + .. code-block:: python + + [-0.009100092574954033, 0.005071679595857859, -0.0029193938244134188] """ client: httpx.Client = Field(default=None) #: :meta private: diff --git a/libs/partners/ollama/langchain_ollama/embeddings.py b/libs/partners/ollama/langchain_ollama/embeddings.py index 357878d28103e..6f538b0635448 100644 --- a/libs/partners/ollama/langchain_ollama/embeddings.py +++ b/libs/partners/ollama/langchain_ollama/embeddings.py @@ -9,16 +9,111 @@ class OllamaEmbeddings(BaseModel, Embeddings): - """OllamaEmbeddings embedding model. + """Ollama embedding model integration. - Example: + Set up a local Ollama instance: + Install the Ollama package and set up a local Ollama instance + using the instructions here: https://github.com/ollama/ollama . + + You will need to choose a model to serve. + + You can view a list of available models via the model library (https://ollama.com/library). + + To fetch a model from the Ollama model library use ``ollama pull ``. + + For example, to pull the llama3 model: + + .. code-block:: bash + + ollama pull llama3 + + This will download the default tagged version of the model. + Typically, the default points to the latest, smallest sized-parameter model. + + * On Mac, the models will be downloaded to ~/.ollama/models + * On Linux (or WSL), the models will be stored at /usr/share/ollama/.ollama/models + + You can specify the exact version of the model of interest + as such ``ollama pull vicuna:13b-v1.5-16k-q4_0``. + + To view pulled models: + + .. code-block:: bash + + ollama list + + To start serving: + + .. code-block:: bash + + ollama serve + + View the Ollama documentation for more commands. + + .. code-block:: bash + + ollama help + + Install the langchain-ollama integration package: + .. code-block:: bash + + pip install -U langchain_ollama + + Key init args — completion params: + model: str + Name of Ollama model to use. + base_url: Optional[str] + Base url the model is hosted under. + + See full list of supported init args and their descriptions in the params section. + + Instantiate: .. code-block:: python from langchain_ollama import OllamaEmbeddings - embedder = OllamaEmbeddings(model="llama3") - embedder.embed_query("what is the place that jonathan worked at?") - """ + embed = OllamaEmbeddings( + model="llama3" + ) + + Embed single text: + .. code-block:: python + + input_text = "The meaning of life is 42" + vector = embed.embed_query(input_text) + print(vector[:3]) + + .. code-block:: python + + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] + + Embed multiple texts: + .. code-block:: python + + input_texts = ["Document 1...", "Document 2..."] + vectors = embed.embed_documents(input_texts) + print(len(vectors)) + # The first 3 coordinates for the first vector + print(vectors[0][:3]) + + .. code-block:: python + + 2 + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] + + Async: + .. code-block:: python + + vector = await embed.aembed_query(input_text) + print(vector[:3]) + + # multiple: + # await embed.aembed_documents(input_texts) + + .. code-block:: python + + [-0.009100092574954033, 0.005071679595857859, -0.0029193938244134188] + """ # noqa: E501 model: str """Model name to use.""" diff --git a/libs/partners/openai/langchain_openai/embeddings/azure.py b/libs/partners/openai/langchain_openai/embeddings/azure.py index f56515f715fc0..79b90b95f282e 100644 --- a/libs/partners/openai/langchain_openai/embeddings/azure.py +++ b/libs/partners/openai/langchain_openai/embeddings/azure.py @@ -13,19 +13,92 @@ class AzureOpenAIEmbeddings(OpenAIEmbeddings): - """`Azure OpenAI` Embeddings API. + """AzureOpenAI embedding model integration. - To use, you should have the - environment variable ``AZURE_OPENAI_API_KEY`` set with your API key or pass it - as a named parameter to the constructor. + Setup: + To access AzureOpenAI embedding models you'll need to create an Azure account, + get an API key, and install the `langchain-openai` integration package. - Example: + You’ll need to have an Azure OpenAI instance deployed. + You can deploy a version on Azure Portal following this + [guide](https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/create-resource?pivots=web-portal). + + Once you have your instance running, make sure you have the name of your + instance and key. You can find the key in the Azure Portal, + under the “Keys and Endpoint” section of your instance. + + .. code-block:: bash + + pip install -U langchain_openai + + # Set up your environment variables (or pass them directly to the model) + export AZURE_OPENAI_API_KEY="your-api-key" + export AZURE_OPENAI_ENDPOINT="https://.openai.azure.com/" + export AZURE_OPENAI_API_VERSION="2024-02-01" + + Key init args — completion params: + model: str + Name of AzureOpenAI model to use. + dimensions: Optional[int] + Number of dimensions for the embeddings. Can be specified only + if the underlying model supports it. + + Key init args — client params: + api_key: Optional[SecretStr] + + See full list of supported init args and their descriptions in the params section. + + Instantiate: .. code-block:: python from langchain_openai import AzureOpenAIEmbeddings - openai = AzureOpenAIEmbeddings(model="text-embedding-3-large") - """ + embeddings = AzureOpenAIEmbeddings( + model="text-embedding-3-large" + # dimensions: Optional[int] = None, # Can specify dimensions with new text-embedding-3 models + # azure_endpoint="https://.openai.azure.com/", If not provided, will read env variable AZURE_OPENAI_ENDPOINT + # api_key=... # Can provide an API key directly. If missing read env variable AZURE_OPENAI_API_KEY + # openai_api_version=..., # If not provided, will read env variable AZURE_OPENAI_API_VERSION + ) + + Embed single text: + .. code-block:: python + + input_text = "The meaning of life is 42" + vector = embed.embed_query(input_text) + print(vector[:3]) + + .. code-block:: python + + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] + + Embed multiple texts: + .. code-block:: python + + input_texts = ["Document 1...", "Document 2..."] + vectors = embed.embed_documents(input_texts) + print(len(vectors)) + # The first 3 coordinates for the first vector + print(vectors[0][:3]) + + .. code-block:: python + + 2 + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] + + Async: + .. code-block:: python + + vector = await embed.aembed_query(input_text) + print(vector[:3]) + + # multiple: + # await embed.aembed_documents(input_texts) + + .. code-block:: python + + [-0.009100092574954033, 0.005071679595857859, -0.0029193938244134188] + """ # noqa: E501 azure_endpoint: Union[str, None] = None """Your Azure endpoint, including the resource. diff --git a/libs/partners/openai/langchain_openai/embeddings/base.py b/libs/partners/openai/langchain_openai/embeddings/base.py index 8894364b24fcb..39247d891ecd2 100644 --- a/libs/partners/openai/langchain_openai/embeddings/base.py +++ b/libs/partners/openai/langchain_openai/embeddings/base.py @@ -99,21 +99,85 @@ def _process_batched_chunked_embeddings( class OpenAIEmbeddings(BaseModel, Embeddings): - """OpenAI embedding models. + """OpenAI embedding model integration. - To use, you should have the - environment variable ``OPENAI_API_KEY`` set with your API key or pass it - as a named parameter to the constructor. + Setup: + Install ``langchain_openai`` and set environment variable ``OPENAI_API_KEY``. - In order to use the library with Microsoft Azure endpoints, use - AzureOpenAIEmbeddings. + .. code-block:: bash - Example: - .. code-block:: python + pip install -U langchain_openai + export OPENAI_API_KEY="your-api-key" - from langchain_openai import OpenAIEmbeddings + Key init args — embedding params: + model: str + Name of OpenAI model to use. + dimensions: Optional[int] = None + The number of dimensions the resulting output embeddings should have. + Only supported in `text-embedding-3` and later models. - model = OpenAIEmbeddings(model="text-embedding-3-large") + Key init args — client params: + api_key: Optional[SecretStr] = None + OpenAI API key. + organization: Optional[str] = None + OpenAI organization ID. If not passed in will be read + from env var OPENAI_ORG_ID. + max_retries: int = 2 + Maximum number of retries to make when generating. + request_timeout: Optional[Union[float, Tuple[float, float], Any]] = None + Timeout for requests to OpenAI completion API + + See full list of supported init args and their descriptions in the params section. + + Instantiate: + .. code-block:: python + + from langchain_openai import OpenAIEmbeddings + + embed = OpenAIEmbeddings( + model="text-embedding-3-large" + # With the `text-embedding-3` class + # of models, you can specify the size + # of the embeddings you want returned. + # dimensions=1024 + ) + + Embed single text: + .. code-block:: python + + input_text = "The meaning of life is 42" + vector = embeddings.embed_query("hello") + print(vector[:3]) + + .. code-block:: python + + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] + + Embed multiple texts: + .. code-block:: python + + vectors = embeddings.embed_documents(["hello", "goodbye"]) + # Showing only the first 3 coordinates + print(len(vectors)) + print(vectors[0][:3]) + + .. code-block:: python + + 2 + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] + + Async: + .. code-block:: python + + await embed.aembed_query(input_text) + print(vector[:3]) + + # multiple: + # await embed.aembed_documents(input_texts) + + .. code-block:: python + + [-0.009100092574954033, 0.005071679595857859, -0.0029193938244134188] """ client: Any = Field(default=None, exclude=True) #: :meta private: diff --git a/libs/partners/openai/langchain_openai/llms/base.py b/libs/partners/openai/langchain_openai/llms/base.py index e1d0938f01871..0584b52a751fa 100644 --- a/libs/partners/openai/langchain_openai/llms/base.py +++ b/libs/partners/openai/langchain_openai/llms/base.py @@ -605,21 +605,105 @@ def max_tokens_for_prompt(self, prompt: str) -> int: class OpenAI(BaseOpenAI): - """OpenAI large language models. + """OpenAI completion model integration. + + Setup: + Install ``langchain-openai`` and set environment variable ``OPENAI_API_KEY``. + + .. code-block:: bash + + pip install -U langchain-openai + export OPENAI_API_KEY="your-api-key" + + Key init args — completion params: + model: str + Name of OpenAI model to use. + temperature: float + Sampling temperature. + max_tokens: Optional[int] + Max number of tokens to generate. + logprobs: Optional[bool] + Whether to return logprobs. + stream_options: Dict + Configure streaming outputs, like whether to return token usage when + streaming (``{"include_usage": True}``). + + Key init args — client params: + timeout: Union[float, Tuple[float, float], Any, None] + Timeout for requests. + max_retries: int + Max number of retries. + api_key: Optional[str] + OpenAI API key. If not passed in will be read from env var OPENAI_API_KEY. + base_url: Optional[str] + Base URL for API requests. Only specify if using a proxy or service + emulator. + organization: Optional[str] + OpenAI organization ID. If not passed in will be read from env + var OPENAI_ORG_ID. + + See full list of supported init args and their descriptions in the params section. + + Instantiate: + .. code-block:: python - To use, you should have the environment variable ``OPENAI_API_KEY`` - set with your API key, or pass it as a named parameter to the constructor. + from langchain_openai import OpenAI - Any parameters that are valid to be passed to the openai.create call can be passed - in, even if not explicitly saved on this class. + llm = OpenAI( + model="gpt-3.5-turbo-instruct", + temperature=0, + max_retries=2, + # api_key="...", + # base_url="...", + # organization="...", + # other params... + ) - Example: + Invoke: .. code-block:: python - from langchain_openai import OpenAI + input_text = "The meaning of life is " + llm.invoke(input_text) - model = OpenAI(model_name="gpt-3.5-turbo-instruct") - """ + .. code-block:: none + + "a philosophical question that has been debated by thinkers and scholars for centuries." + + Stream: + .. code-block:: python + + for chunk in llm.stream(input_text): + print(chunk, end="|") + + .. code-block:: none + + a| philosophical| question| that| has| been| debated| by| thinkers| and| scholars| for| centuries|. + + .. code-block:: python + + "".join(llm.stream(input_text)) + + .. code-block:: none + + "a philosophical question that has been debated by thinkers and scholars for centuries." + + Async: + .. code-block:: python + + await llm.ainvoke(input_text) + + # stream: + # async for chunk in (await llm.astream(input_text)): + # print(chunk) + + # batch: + # await llm.abatch([input_text]) + + .. code-block:: none + + "a philosophical question that has been debated by thinkers and scholars for centuries." + + """ # noqa: E501 @classmethod def get_lc_namespace(cls) -> List[str]: diff --git a/libs/partners/openai/pyproject.toml b/libs/partners/openai/pyproject.toml index 3309e38e15005..3c148c1f37768 100644 --- a/libs/partners/openai/pyproject.toml +++ b/libs/partners/openai/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "langchain-openai" -version = "0.1.21rc2" +version = "0.1.21" description = "An integration package connecting OpenAI and LangChain" authors = [] readme = "README.md" diff --git a/libs/partners/qdrant/langchain_qdrant/qdrant.py b/libs/partners/qdrant/langchain_qdrant/qdrant.py index 7490baaa97fbf..165ca66cf8875 100644 --- a/libs/partners/qdrant/langchain_qdrant/qdrant.py +++ b/libs/partners/qdrant/langchain_qdrant/qdrant.py @@ -42,17 +42,19 @@ class QdrantVectorStore(VectorStore): """Qdrant vector store integration. Setup: - Install ``langchain-qdrant`` and ``qdrant-client[fastembed]`` packages. + Install ``langchain-qdrant`` package. .. code-block:: bash - pip install -qU langchain-qdrant 'qdrant-client[fastembed]' + pip install -qU langchain-qdrant Key init args — indexing params: collection_name: str Name of the collection. embedding: Embeddings Embedding function to use. + sparse_embedding: SparseEmbeddings + Optional sparse embedding function to use. Key init args — client params: client: QdrantClient diff --git a/libs/partners/together/langchain_together/embeddings.py b/libs/partners/together/langchain_together/embeddings.py index c19a76e1a063d..d568aeff4f6b9 100644 --- a/libs/partners/together/langchain_together/embeddings.py +++ b/libs/partners/together/langchain_together/embeddings.py @@ -35,17 +35,74 @@ class TogetherEmbeddings(BaseModel, Embeddings): - """TogetherEmbeddings embedding model. + """Together embedding model integration. - To use, set the environment variable `TOGETHER_API_KEY` with your API key or - pass it as a named parameter to the constructor. + Setup: + Install ``langchain_together`` and set environment variable + ``TOGETHER_API_KEY``. + + .. code-block:: bash + + pip install -U langchain_together + export TOGETHER_API_KEY="your-api-key" + + Key init args — completion params: + model: str + Name of Together model to use. + + Key init args — client params: + api_key: Optional[SecretStr] + + See full list of supported init args and their descriptions in the params section. + + Instantiate: + .. code-block:: python + + from __module_name__ import TogetherEmbeddings + + embed = TogetherEmbeddings( + model="togethercomputer/m2-bert-80M-8k-retrieval", + # api_key="...", + # other params... + ) + + Embed single text: + .. code-block:: python + + input_text = "The meaning of life is 42" + vector = embed.embed_query(input_text) + print(vector[:3]) - Example: .. code-block:: python - from langchain_together import TogetherEmbeddings + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] + + Embed multiple texts: + .. code-block:: python + + input_texts = ["Document 1...", "Document 2..."] + vectors = embed.embed_documents(input_texts) + print(len(vectors)) + # The first 3 coordinates for the first vector + print(vectors[0][:3]) + + .. code-block:: python + + 2 + [-0.024603435769677162, -0.007543657906353474, 0.0039630369283258915] + + Async: + .. code-block:: python + + vector = await embed.aembed_query(input_text) + print(vector[:3]) + + # multiple: + # await embed.aembed_documents(input_texts) + + .. code-block:: python - model = TogetherEmbeddings() + [-0.009100092574954033, 0.005071679595857859, -0.0029193938244134188] """ client: Any = Field(default=None, exclude=True) #: :meta private: diff --git a/libs/partners/unstructured/langchain_unstructured/document_loaders.py b/libs/partners/unstructured/langchain_unstructured/document_loaders.py index 39452aa2c6b99..bd3bcd6dbbe63 100644 --- a/libs/partners/unstructured/langchain_unstructured/document_loaders.py +++ b/libs/partners/unstructured/langchain_unstructured/document_loaders.py @@ -24,29 +24,9 @@ class UnstructuredLoader(BaseLoader): """Unstructured document loader interface. - Partition and load files using either the `unstructured-client` sdk and the - Unstructured API or locally using the `unstructured` library. - - API: - This package is configured to work with the Unstructured API by default. - To use the Unstructured API, set - `partition_via_api=True` and define `api_key`. If you are running the unstructured - API locally, you can change the API rule by defining `url` when you initialize the - loader. The hosted Unstructured API requires an API key. See the links below to - learn more about our API offerings and get an API key. - - Local: - To partition files locally, you must have the `unstructured` package installed. - You can install it with `pip install unstructured`. - By default the file loader uses the Unstructured `partition` function and will - automatically detect the file type. - - In addition to document specific partition parameters, Unstructured has a rich set - of "chunking" parameters for post-processing elements into more useful text segments - for uses cases such as Retrieval Augmented Generation (RAG). You can pass additional - Unstructured kwargs to the loader to configure different unstructured settings. - Setup: + Install ``langchain-unstructured`` and set environment variable ``UNSTRUCTURED_API_KEY``. + .. code-block:: bash pip install -U langchain-unstructured export UNSTRUCTURED_API_KEY="your-api-key" @@ -63,20 +43,46 @@ class UnstructuredLoader(BaseLoader): strategy="fast", ) - Load: + Lazy load: + .. code-block:: python + + docs = [] + docs_lazy = loader.lazy_load() + + # async variant: + # docs_lazy = await loader.alazy_load() + + for doc in docs_lazy: + docs.append(doc) + print(docs[0].page_content[:100]) + print(docs[0].metadata) + .. code-block:: python - docs = loader.load() + 1 2 0 2 + {'source': './example_data/layout-parser-paper.pdf', 'coordinates': {'points': ((16.34, 213.36), (16.34, 253.36), (36.34, 253.36), (36.34, 213.36)), 'system': 'PixelSpace', 'layout_width': 612, 'layout_height': 792}, 'file_directory': './example_data', 'filename': 'layout-parser-paper.pdf', 'languages': ['eng'], 'last_modified': '2024-07-25T21:28:58', 'page_number': 1, 'filetype': 'application/pdf', 'category': 'UncategorizedText', 'element_id': 'd3ce55f220dfb75891b4394a18bcb973'} + + + Async load: + .. code-block:: python + + docs = await loader.aload() print(docs[0].page_content[:100]) print(docs[0].metadata) + .. code-block:: python + + 1 2 0 2 + {'source': './example_data/layout-parser-paper.pdf', 'coordinates': {'points': ((16.34, 213.36), (16.34, 253.36), (36.34, 253.36), (36.34, 213.36)), 'system': 'PixelSpace', 'layout_width': 612, 'layout_height': 792}, 'file_directory': './example_data', 'filename': 'layout-parser-paper.pdf', 'languages': ['eng'], 'last_modified': '2024-07-25T21:28:58', 'page_number': 1, 'filetype': 'application/pdf', 'category': 'UncategorizedText', 'element_id': 'd3ce55f220dfb75891b4394a18bcb973'} + + References ---------- https://docs.unstructured.io/api-reference/api-services/sdk https://docs.unstructured.io/api-reference/api-services/overview https://docs.unstructured.io/open-source/core-functionality/partitioning https://docs.unstructured.io/open-source/core-functionality/chunking - """ + """ # noqa: E501 def __init__( self, diff --git a/libs/standard-tests/langchain_standard_tests/integration_tests/chat_models.py b/libs/standard-tests/langchain_standard_tests/integration_tests/chat_models.py index ffec9dc90bc46..bcb47a4c151a7 100644 --- a/libs/standard-tests/langchain_standard_tests/integration_tests/chat_models.py +++ b/libs/standard-tests/langchain_standard_tests/integration_tests/chat_models.py @@ -481,3 +481,31 @@ class color_picker(BaseModel): ), ] model.bind_tools([color_picker]).invoke(messages) + + def test_tool_message_error_status(self, model: BaseChatModel) -> None: + """Test that ToolMessage with status='error' can be handled.""" + if not self.has_tool_calling: + pytest.skip("Test requires tool calling.") + model_with_tools = model.bind_tools([my_adder_tool]) + messages = [ + HumanMessage("What is 1 + 2"), + AIMessage( + "", + tool_calls=[ + { + "name": "my_adder_tool", + "args": {"a": 1}, + "id": "abc123", + "type": "tool_call", + }, + ], + ), + ToolMessage( + "Error: Missing required argument 'b'.", + name="my_adder_tool", + tool_call_id="abc123", + status="error", + ), + ] + result = model_with_tools.invoke(messages) + assert isinstance(result, AIMessage) diff --git a/libs/standard-tests/langchain_standard_tests/integration_tests/vectorstores.py b/libs/standard-tests/langchain_standard_tests/integration_tests/vectorstores.py index 83e76aaff802c..d7735cfdd2bcf 100644 --- a/libs/standard-tests/langchain_standard_tests/integration_tests/vectorstores.py +++ b/libs/standard-tests/langchain_standard_tests/integration_tests/vectorstores.py @@ -1,6 +1,5 @@ """Test suite to test vectostores.""" -import inspect from abc import abstractmethod import pytest @@ -169,39 +168,31 @@ def test_get_by_ids_missing(self, vectorstore: VectorStore) -> None: documents = vectorstore.get_by_ids(["1", "2", "3"]) assert documents == [] - def test_upsert_documents(self, vectorstore: VectorStore) -> None: - """Run upsert tests.""" + def test_add_documents_documents(self, vectorstore: VectorStore) -> None: + """Run add_documents tests.""" documents = [ Document(page_content="foo", metadata={"id": 1}), Document(page_content="bar", metadata={"id": 2}), ] - response = vectorstore.upsert(documents) - ids = response["succeeded"] + ids = vectorstore.add_documents(documents) assert vectorstore.get_by_ids(ids) == [ Document(page_content="foo", metadata={"id": 1}, id=ids[0]), Document(page_content="bar", metadata={"id": 2}, id=ids[1]), ] - def test_upsert_with_existing_ids(self, vectorstore: VectorStore) -> None: - """Test that upserting with existing IDs is idempotent.""" + def test_add_documents_with_existing_ids(self, vectorstore: VectorStore) -> None: + """Test that add_documentsing with existing IDs is idempotent.""" documents = [ Document(id="foo", page_content="foo", metadata={"id": 1}), Document(page_content="bar", metadata={"id": 2}), ] - response = vectorstore.upsert(documents) - ids = response["succeeded"] - assert response["failed"] == [] + ids = vectorstore.add_documents(documents) assert "foo" in ids assert vectorstore.get_by_ids(ids) == [ Document(page_content="foo", metadata={"id": 1}, id="foo"), Document(page_content="bar", metadata={"id": 2}, id=ids[1]), ] - def test_upsert_documents_has_no_ids(self, vectorstore: VectorStore) -> None: - """Verify that there is not parameter called ids in upsert""" - signature = inspect.signature(vectorstore.upsert) - assert "ids" not in signature.parameters - class AsyncReadWriteTestSuite(BaseStandardTests): """Test suite for checking the **async** read-write API of a vectorstore. @@ -359,35 +350,29 @@ async def test_get_by_ids_missing(self, vectorstore: VectorStore) -> None: # This should not raise an exception assert await vectorstore.aget_by_ids(["1", "2", "3"]) == [] - async def test_upsert_documents(self, vectorstore: VectorStore) -> None: - """Run upsert tests.""" + async def test_add_documents_documents(self, vectorstore: VectorStore) -> None: + """Run add_documents tests.""" documents = [ Document(page_content="foo", metadata={"id": 1}), Document(page_content="bar", metadata={"id": 2}), ] - response = await vectorstore.aupsert(documents) - ids = response["succeeded"] + ids = await vectorstore.aadd_documents(documents) assert await vectorstore.aget_by_ids(ids) == [ Document(page_content="foo", metadata={"id": 1}, id=ids[0]), Document(page_content="bar", metadata={"id": 2}, id=ids[1]), ] - async def test_upsert_with_existing_ids(self, vectorstore: VectorStore) -> None: - """Test that upserting with existing IDs is idempotent.""" + async def test_add_documents_with_existing_ids( + self, vectorstore: VectorStore + ) -> None: + """Test that add_documentsing with existing IDs is idempotent.""" documents = [ Document(id="foo", page_content="foo", metadata={"id": 1}), Document(page_content="bar", metadata={"id": 2}), ] - response = await vectorstore.aupsert(documents) - ids = response["succeeded"] - assert response["failed"] == [] + ids = await vectorstore.aadd_documents(documents) assert "foo" in ids assert await vectorstore.aget_by_ids(ids) == [ Document(page_content="foo", metadata={"id": 1}, id="foo"), Document(page_content="bar", metadata={"id": 2}, id=ids[1]), ] - - async def test_upsert_documents_has_no_ids(self, vectorstore: VectorStore) -> None: - """Verify that there is not parameter called ids in upsert""" - signature = inspect.signature(vectorstore.aupsert) - assert "ids" not in signature.parameters