kensho-kfinance 3.2.7__tar.gz → 3.2.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of kensho-kfinance might be problematic. Click here for more details.
- {kensho_kfinance-3.2.7/kensho_kfinance.egg-info → kensho_kfinance-3.2.9}/PKG-INFO +1 -1
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9/kensho_kfinance.egg-info}/PKG-INFO +1 -1
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/CHANGELOG.md +6 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/line_items/line_item_models.py +1 -1
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/line_items/line_item_tools.py +5 -3
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/line_items/tests/test_line_item_tools.py +32 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/segments/segment_tools.py +10 -4
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/segments/tests/test_segment_tools.py +37 -2
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/statements/statement_tools.py +5 -3
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/statements/tests/test_statement_tools.py +42 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/version.py +3 -3
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/.coveragerc +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/.github/workflows/ci-lint.yml +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/.github/workflows/ci-test.yml +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/.github/workflows/python-publish.yml +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/.gitignore +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/.readthedocs.yaml +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/AUTHORS.md +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/CODE_OF_CONDUCT.md +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/CONTRIBUTING.md +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/LICENSE +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/README.md +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/docs/build_tool_calling_documentation.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/docs/conf.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/docs/index.rst +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/docs/kfinance.rst +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/docs/requirements.txt +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/docs/templates/apidoc/package.rst_t +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/docs/templates/apidoc/toc.rst_t +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/docs/tool_calling.rst +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/example_notebooks/basic_usage.ipynb +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/example_notebooks/tool_calling/langchain/anthropic_langchain_tool_calling.ipynb +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/example_notebooks/tool_calling/langchain/google_gemini_langchain_tool_calling.ipynb +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/example_notebooks/tool_calling/langchain/openai_langchain_tool_calling.ipynb +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/example_notebooks/tool_calling/non-langchain/anthropic_tool_calling.ipynb +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/example_notebooks/tool_calling/non-langchain/google_gemini_tool_calling.ipynb +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/example_notebooks/tool_calling/non-langchain/openai_langchain_tool_calling.ipynb +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/images/colab_logo_32px.png +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/justfile +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kensho_kfinance.egg-info/SOURCES.txt +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kensho_kfinance.egg-info/dependency_links.txt +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kensho_kfinance.egg-info/requires.txt +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kensho_kfinance.egg-info/top_level.txt +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/README.md +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/batch_request_handling.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/fetch.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/industry_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/kfinance.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/meta_classes.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/models/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/models/currency_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/models/date_and_period_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/models/decimal_with_unit.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/models/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/models/tests/test_decimal_with_unit.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/permission_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/server_thread.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/tests/test_batch_requests.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/tests/test_client.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/tests/test_fetch.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/tests/test_group_objects.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/tests/test_objects.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/conftest.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/README.md +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/business_relationships/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/business_relationships/business_relationship_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/business_relationships/business_relationship_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/business_relationships/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/business_relationships/tests/test_business_relationship_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/capitalizations/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/capitalizations/capitalization_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/capitalizations/capitalization_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/capitalizations/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/capitalizations/tests/test_capitalization_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/capitalizations/tests/test_capitalization_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/companies/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/companies/company_identifiers.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/companies/company_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/companies/company_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/companies/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/companies/tests/test_company_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/competitors/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/competitors/competitor_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/competitors/competitor_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/competitors/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/competitors/tests/test_competitor_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/cusip_and_isin/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/cusip_and_isin/cusip_and_isin_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/cusip_and_isin/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/cusip_and_isin/tests/test_cusip_and_isin_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/earnings/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/earnings/earning_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/earnings/earning_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/earnings/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/earnings/tests/test_earnings_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/line_items/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/line_items/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/mergers_and_acquisitions/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/mergers_and_acquisitions/merger_and_acquisition_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/mergers_and_acquisitions/merger_and_acquisition_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/mergers_and_acquisitions/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/mergers_and_acquisitions/tests/test_merger_and_acquisition_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/prices/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/prices/price_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/prices/price_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/prices/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/prices/tests/test_price_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/prices/tests/test_price_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/segments/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/segments/segment_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/segments/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/statements/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/statements/statement_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/statements/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/README.md +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/local_mcp/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/local_mcp/kfinance_mcp.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/local_mcp/local_mcp.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tests/test_example_notebook.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/README.md +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/all_tools.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/prompts.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/static_tools/README.md +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/static_tools/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/static_tools/get_latest.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/static_tools/get_n_quarters_ago.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/static_tools/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/static_tools/tests/test_get_lastest.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/static_tools/tests/test_get_n_quarters_ago.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/tests/__init__.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/tests/test_tool_calling_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/tool_calling_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/mcp.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/models/permission_models.py +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/py.typed +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/pyproject.toml +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/scripts/copyright_line_check.sh +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/scripts/lint.sh +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/scripts/test.sh +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/setup.cfg +0 -0
- {kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kensho-kfinance
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.9
|
|
4
4
|
Summary: Python CLI for kFinance
|
|
5
5
|
Author-email: Luke Brown <luke.brown@kensho.com>, Michelle Keoy <michelle.keoy@kensho.com>, Keith Page <keith.page@kensho.com>, Matthew Rosen <matthew.rosen@kensho.com>, Nick Roshdieh <nick.roshdieh@kensho.com>
|
|
6
6
|
Project-URL: source, https://github.com/kensho-technologies/kfinance
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kensho-kfinance
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.9
|
|
4
4
|
Summary: Python CLI for kFinance
|
|
5
5
|
Author-email: Luke Brown <luke.brown@kensho.com>, Michelle Keoy <michelle.keoy@kensho.com>, Keith Page <keith.page@kensho.com>, Matthew Rosen <matthew.rosen@kensho.com>, Nick Roshdieh <nick.roshdieh@kensho.com>
|
|
6
6
|
Project-URL: source, https://github.com/kensho-technologies/kfinance
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
# v3.2.9
|
|
4
|
+
- Updated tool descriptions for line items, segments, and statements to mention that all period-based inputs and outputs refer only to the calendar year.
|
|
5
|
+
|
|
6
|
+
# v3.2.8
|
|
7
|
+
- Added support for None to LineItemResponse & empty behavior for line items, segments, and statements
|
|
8
|
+
|
|
3
9
|
# v3.2.7
|
|
4
10
|
- Fix validator for UnifiedIdTripleResponse
|
|
5
11
|
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/line_items/line_item_tools.py
RENAMED
|
@@ -43,6 +43,7 @@ class GetFinancialLineItemFromIdentifiers(KfinanceTool):
|
|
|
43
43
|
|
|
44
44
|
- When possible, pass multiple identifiers in a single call rather than making multiple calls.
|
|
45
45
|
- To fetch the most recent value for the line item, leave start_year, start_quarter, end_year, and end_quarter as None.
|
|
46
|
+
- The tool accepts arguments in calendar years, and all outputs will be presented in terms of calendar years. Please note that these calendar years may not align with the company's fiscal year.
|
|
46
47
|
|
|
47
48
|
Example:
|
|
48
49
|
Query: "What are the revenues of Lowe's and Home Depot?"
|
|
@@ -109,9 +110,10 @@ class GetFinancialLineItemFromIdentifiers(KfinanceTool):
|
|
|
109
110
|
and len(line_item_responses) > 1
|
|
110
111
|
):
|
|
111
112
|
for line_item_response in line_item_responses.values():
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
if line_item_response.line_item:
|
|
114
|
+
most_recent_year = max(line_item_response.line_item.keys())
|
|
115
|
+
most_recent_year_data = line_item_response.line_item[most_recent_year]
|
|
116
|
+
line_item_response.line_item = {most_recent_year: most_recent_year_data}
|
|
115
117
|
|
|
116
118
|
return GetFinancialLineItemFromIdentifiersResp(
|
|
117
119
|
results=line_item_responses, errors=list(id_triple_resp.errors.values())
|
|
@@ -86,6 +86,38 @@ class TestGetFinancialLineItemFromCompanyIds:
|
|
|
86
86
|
response = tool.run(args.model_dump(mode="json"))
|
|
87
87
|
assert response == expected_response
|
|
88
88
|
|
|
89
|
+
def test_empty_most_recent_request(self, requests_mock: Mocker, mock_client: Client) -> None:
|
|
90
|
+
"""
|
|
91
|
+
GIVEN the GetFinancialLineItemFromIdentifiers tool
|
|
92
|
+
WHEN we request most recent line items for multiple companies
|
|
93
|
+
THEN we only get back the most recent line item for each company
|
|
94
|
+
UNLESS no line items exist
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
company_ids = [1, 2]
|
|
98
|
+
|
|
99
|
+
c_1_line_item_resp = LineItemResponse(line_item={})
|
|
100
|
+
c_2_line_item_resp = LineItemResponse(line_item={"2024": Decimal(14208000000)})
|
|
101
|
+
expected_response = GetFinancialLineItemFromIdentifiersResp(
|
|
102
|
+
results={"C_1": c_1_line_item_resp, "C_2": c_2_line_item_resp},
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
requests_mock.get(
|
|
106
|
+
url=f"https://kfinance.kensho.com/api/v1/line_item/1/revenue/none/none/none/none/none",
|
|
107
|
+
json={"line_item": {}},
|
|
108
|
+
)
|
|
109
|
+
requests_mock.get(
|
|
110
|
+
url=f"https://kfinance.kensho.com/api/v1/line_item/2/revenue/none/none/none/none/none",
|
|
111
|
+
json=self.line_item_resp,
|
|
112
|
+
)
|
|
113
|
+
tool = GetFinancialLineItemFromIdentifiers(kfinance_client=mock_client)
|
|
114
|
+
args = GetFinancialLineItemFromIdentifiersArgs(
|
|
115
|
+
identifiers=[f"{COMPANY_ID_PREFIX}{company_id}" for company_id in company_ids],
|
|
116
|
+
line_item="revenue",
|
|
117
|
+
)
|
|
118
|
+
response = tool.run(args.model_dump(mode="json"))
|
|
119
|
+
assert response == expected_response
|
|
120
|
+
|
|
89
121
|
def test_line_items_and_aliases_included_in_schema(self, mock_client: Client):
|
|
90
122
|
"""
|
|
91
123
|
GIVEN a GetFinancialLineItemFromCompanyIds tool
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from textwrap import dedent
|
|
1
2
|
from typing import Literal, Type
|
|
2
3
|
|
|
3
4
|
from pydantic import BaseModel, Field
|
|
@@ -30,7 +31,11 @@ class GetSegmentsFromIdentifiersResp(ToolRespWithErrors):
|
|
|
30
31
|
|
|
31
32
|
class GetSegmentsFromIdentifiers(KfinanceTool):
|
|
32
33
|
name: str = "get_segments_from_identifiers"
|
|
33
|
-
description: str = "
|
|
34
|
+
description: str = dedent("""
|
|
35
|
+
Get the templated segments associated with a list of identifiers.
|
|
36
|
+
|
|
37
|
+
- The tool accepts arguments in calendar years, and all outputs will be presented in terms of calendar years. Please note that these calendar years may not align with the company's fiscal year.
|
|
38
|
+
""").strip()
|
|
34
39
|
args_schema: Type[BaseModel] = GetSegmentsFromIdentifiersArgs
|
|
35
40
|
accepted_permissions: set[Permission] | None = {Permission.SegmentsPermission}
|
|
36
41
|
|
|
@@ -98,9 +103,10 @@ class GetSegmentsFromIdentifiers(KfinanceTool):
|
|
|
98
103
|
and len(segments_responses) > 1
|
|
99
104
|
):
|
|
100
105
|
for segments_response in segments_responses.values():
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
106
|
+
if segments_response.segments:
|
|
107
|
+
most_recent_year = max(segments_response.segments.keys())
|
|
108
|
+
most_recent_year_data = segments_response.segments[most_recent_year]
|
|
109
|
+
segments_response.segments = {most_recent_year: most_recent_year_data}
|
|
104
110
|
|
|
105
111
|
return GetSegmentsFromIdentifiersResp(
|
|
106
112
|
results=segments_responses, errors=list(id_triple_resp.errors.values())
|
|
@@ -63,8 +63,8 @@ class TestGetSegmentsFromIdentifier:
|
|
|
63
63
|
def test_most_recent_request(self, requests_mock: Mocker, mock_client: Client) -> None:
|
|
64
64
|
"""
|
|
65
65
|
GIVEN the GetFinancialLineItemFromIdentifiers tool
|
|
66
|
-
WHEN we request most recent
|
|
67
|
-
THEN we only get back the most recent
|
|
66
|
+
WHEN we request most recent segment for multiple companies
|
|
67
|
+
THEN we only get back the most recent segment for each company
|
|
68
68
|
"""
|
|
69
69
|
|
|
70
70
|
company_ids = [1, 2]
|
|
@@ -90,3 +90,38 @@ class TestGetSegmentsFromIdentifier:
|
|
|
90
90
|
)
|
|
91
91
|
response = tool.run(args.model_dump(mode="json"))
|
|
92
92
|
assert response == expected_response
|
|
93
|
+
|
|
94
|
+
def test_empty_most_recent_request(self, requests_mock: Mocker, mock_client: Client) -> None:
|
|
95
|
+
"""
|
|
96
|
+
GIVEN the GetFinancialLineItemFromIdentifiers tool
|
|
97
|
+
WHEN we request most recent segment for multiple companies
|
|
98
|
+
THEN we only get back the most recent segment for each company
|
|
99
|
+
UNLESS no segments exist
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
company_ids = [1, 2]
|
|
103
|
+
expected_response = GetSegmentsFromIdentifiersResp.model_validate(
|
|
104
|
+
{
|
|
105
|
+
"results": {
|
|
106
|
+
"C_1": {"segments": {}},
|
|
107
|
+
"C_2": {"segments": {"2021": self.segments_response["segments"]["2021"]}},
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
requests_mock.get(
|
|
113
|
+
url=f"https://kfinance.kensho.com/api/v1/segments/1/business/none/none/none/none/none",
|
|
114
|
+
json={"segments": {}},
|
|
115
|
+
)
|
|
116
|
+
requests_mock.get(
|
|
117
|
+
url=f"https://kfinance.kensho.com/api/v1/segments/2/business/none/none/none/none/none",
|
|
118
|
+
json=self.segments_response,
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
tool = GetSegmentsFromIdentifiers(kfinance_client=mock_client)
|
|
122
|
+
args = GetSegmentsFromIdentifiersArgs(
|
|
123
|
+
identifiers=[f"{COMPANY_ID_PREFIX}{company_id}" for company_id in company_ids],
|
|
124
|
+
segment_type=SegmentType.business,
|
|
125
|
+
)
|
|
126
|
+
response = tool.run(args.model_dump(mode="json"))
|
|
127
|
+
assert response == expected_response
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/statements/statement_tools.py
RENAMED
|
@@ -35,6 +35,7 @@ class GetFinancialStatementFromIdentifiers(KfinanceTool):
|
|
|
35
35
|
Get a financial statement associated with a group of identifiers.
|
|
36
36
|
|
|
37
37
|
- To fetch the most recent value for the statement, leave start_year, start_quarter, end_year, and end_quarter as None.
|
|
38
|
+
- The tool accepts arguments in calendar years, and all outputs will be presented in terms of calendar years. Please note that these calendar years may not align with the company's fiscal year.
|
|
38
39
|
|
|
39
40
|
Example:
|
|
40
41
|
Query: "Fetch the balance sheets of BAC and GS for 2024"
|
|
@@ -105,9 +106,10 @@ class GetFinancialStatementFromIdentifiers(KfinanceTool):
|
|
|
105
106
|
and len(statement_responses) > 1
|
|
106
107
|
):
|
|
107
108
|
for statement_response in statement_responses.values():
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
if statement_response.statements:
|
|
110
|
+
most_recent_year = max(statement_response.statements.keys())
|
|
111
|
+
most_recent_year_data = statement_response.statements[most_recent_year]
|
|
112
|
+
statement_response.statements = {most_recent_year: most_recent_year_data}
|
|
111
113
|
|
|
112
114
|
return GetFinancialStatementFromIdentifiersResp(
|
|
113
115
|
results=statement_responses, errors=list(id_triple_resp.errors.values())
|
|
@@ -105,3 +105,45 @@ class TestGetFinancialStatementFromIdentifiers:
|
|
|
105
105
|
)
|
|
106
106
|
response = tool.run(args.model_dump(mode="json"))
|
|
107
107
|
assert response == expected_response
|
|
108
|
+
|
|
109
|
+
def test_empty_most_recent_request(self, requests_mock: Mocker, mock_client: Client) -> None:
|
|
110
|
+
"""
|
|
111
|
+
GIVEN the GetFinancialStatementFromIdentifiers tool
|
|
112
|
+
WHEN we request most recent statement for multiple companies
|
|
113
|
+
THEN we only get back the most recent statement for each company
|
|
114
|
+
UNLESS no statements exist
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
company_ids = [1, 2]
|
|
118
|
+
expected_response = GetFinancialStatementFromIdentifiersResp.model_validate(
|
|
119
|
+
{
|
|
120
|
+
"results": {
|
|
121
|
+
"C_1": {"statements": {}},
|
|
122
|
+
"C_2": {
|
|
123
|
+
"statements": {
|
|
124
|
+
"2021": {
|
|
125
|
+
"Revenues": "8243000000.000000",
|
|
126
|
+
"Total Revenues": "8243000000.000000",
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
requests_mock.get(
|
|
135
|
+
url=f"https://kfinance.kensho.com/api/v1/statements/1/income_statement/none/none/none/none/none",
|
|
136
|
+
json={"statements": {}},
|
|
137
|
+
)
|
|
138
|
+
requests_mock.get(
|
|
139
|
+
url=f"https://kfinance.kensho.com/api/v1/statements/2/income_statement/none/none/none/none/none",
|
|
140
|
+
json=self.statement_resp,
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
tool = GetFinancialStatementFromIdentifiers(kfinance_client=mock_client)
|
|
144
|
+
args = GetFinancialStatementFromIdentifiersArgs(
|
|
145
|
+
identifiers=[f"{COMPANY_ID_PREFIX}{company_id}" for company_id in company_ids],
|
|
146
|
+
statement=StatementType.income_statement,
|
|
147
|
+
)
|
|
148
|
+
response = tool.run(args.model_dump(mode="json"))
|
|
149
|
+
assert response == expected_response
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '3.2.
|
|
32
|
-
__version_tuple__ = version_tuple = (3, 2,
|
|
31
|
+
__version__ = version = '3.2.9'
|
|
32
|
+
__version_tuple__ = version_tuple = (3, 2, 9)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g1b5b8b25a'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kensho_kfinance.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/models/date_and_period_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/client/tests/test_batch_requests.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/business_relationships/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/capitalizations/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/capitalizations/tests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/companies/company_identifiers.py
RENAMED
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/companies/company_models.py
RENAMED
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/companies/tests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/competitors/competitor_models.py
RENAMED
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/competitors/competitor_tools.py
RENAMED
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/competitors/tests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/cusip_and_isin/tests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/line_items/tests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/prices/tests/test_price_models.py
RENAMED
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/prices/tests/test_price_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/statements/statement_models.py
RENAMED
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/domains/statements/tests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/local_mcp/kfinance_mcp.py
RENAMED
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/local_mcp/local_mcp.py
RENAMED
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tests/test_example_notebook.py
RENAMED
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/README.md
RENAMED
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/__init__.py
RENAMED
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/all_tools.py
RENAMED
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/prompts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kensho_kfinance-3.2.7 → kensho_kfinance-3.2.9}/kfinance/integrations/tool_calling/tests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|