kensho-kfinance 2.9.0__py3-none-any.whl → 3.0.1__py3-none-any.whl

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.

Files changed (135) hide show
  1. {kensho_kfinance-2.9.0.dist-info → kensho_kfinance-3.0.1.dist-info}/METADATA +1 -1
  2. kensho_kfinance-3.0.1.dist-info/RECORD +111 -0
  3. kfinance/CHANGELOG.md +6 -0
  4. kfinance/__init__.py +1 -0
  5. kfinance/client/README.md +9 -0
  6. kfinance/{batch_request_handling.py → client/batch_request_handling.py} +63 -27
  7. kfinance/{fetch.py → client/fetch.py} +23 -29
  8. kfinance/{kfinance.py → client/kfinance.py} +37 -33
  9. kfinance/{meta_classes.py → client/meta_classes.py} +26 -35
  10. kfinance/{decimal_with_unit.py → client/models/decimal_with_unit.py} +1 -1
  11. kfinance/{tests → client/models/tests}/test_decimal_with_unit.py +1 -1
  12. kfinance/client/permission_models.py +16 -0
  13. kfinance/client/tests/__init__.py +0 -0
  14. kfinance/{tests → client/tests}/test_batch_requests.py +8 -6
  15. kfinance/{tests → client/tests}/test_client.py +25 -19
  16. kfinance/{tests → client/tests}/test_fetch.py +11 -29
  17. kfinance/{tests → client/tests}/test_group_objects.py +1 -1
  18. kfinance/{tests → client/tests}/test_objects.py +33 -29
  19. kfinance/{tests/conftest.py → conftest.py} +14 -2
  20. kfinance/domains/README.md +14 -0
  21. kfinance/domains/__init__.py +0 -0
  22. kfinance/domains/business_relationships/__init__.py +0 -0
  23. kfinance/{models → domains/business_relationships}/business_relationship_models.py +10 -0
  24. kfinance/domains/business_relationships/business_relationship_tools.py +74 -0
  25. kfinance/domains/business_relationships/tests/__init__.py +0 -0
  26. kfinance/domains/business_relationships/tests/test_business_relationship_tools.py +55 -0
  27. kfinance/domains/capitalizations/__init__.py +0 -0
  28. kfinance/{models → domains/capitalizations}/capitalization_models.py +24 -17
  29. kfinance/domains/capitalizations/capitalization_tools.py +89 -0
  30. kfinance/domains/capitalizations/tests/__init__.py +0 -0
  31. kfinance/{tests/test_models → domains/capitalizations/tests}/test_capitalization_models.py +8 -10
  32. kfinance/domains/capitalizations/tests/test_capitalization_tools.py +85 -0
  33. kfinance/domains/companies/__init__.py +0 -0
  34. kfinance/domains/companies/company_identifiers.py +175 -0
  35. kfinance/domains/companies/company_models.py +27 -0
  36. kfinance/domains/companies/company_tools.py +66 -0
  37. kfinance/domains/companies/tests/__init__.py +0 -0
  38. kfinance/domains/companies/tests/test_company_tools.py +26 -0
  39. kfinance/domains/competitors/__init__.py +0 -0
  40. kfinance/{models → domains/competitors}/competitor_models.py +7 -0
  41. kfinance/domains/competitors/competitor_tools.py +62 -0
  42. kfinance/domains/competitors/tests/__init__.py +0 -0
  43. kfinance/domains/competitors/tests/test_competitor_tools.py +45 -0
  44. kfinance/domains/cusip_and_isin/__init__.py +0 -0
  45. kfinance/domains/cusip_and_isin/cusip_and_isin_tools.py +80 -0
  46. kfinance/domains/cusip_and_isin/tests/__init__.py +0 -0
  47. kfinance/domains/cusip_and_isin/tests/test_cusip_and_isin_tools.py +57 -0
  48. kfinance/domains/earnings/__init__.py +0 -0
  49. kfinance/domains/earnings/earning_models.py +41 -0
  50. kfinance/domains/earnings/earning_tools.py +174 -0
  51. kfinance/domains/earnings/tests/__init__.py +0 -0
  52. kfinance/domains/earnings/tests/test_earnings_tools.py +195 -0
  53. kfinance/domains/line_items/__init__.py +0 -0
  54. kfinance/domains/line_items/line_item_tools.py +117 -0
  55. kfinance/domains/line_items/tests/__init__.py +0 -0
  56. kfinance/domains/line_items/tests/test_line_item_tools.py +86 -0
  57. kfinance/domains/mergers_and_acquisitions/__init__.py +0 -0
  58. kfinance/domains/mergers_and_acquisitions/merger_and_acquisition_tools.py +176 -0
  59. kfinance/domains/mergers_and_acquisitions/tests/__init__.py +0 -0
  60. kfinance/domains/mergers_and_acquisitions/tests/test_merger_and_acquisition_tools.py +124 -0
  61. kfinance/domains/prices/__init__.py +0 -0
  62. kfinance/{models → domains/prices}/price_models.py +1 -1
  63. kfinance/domains/prices/price_tools.py +165 -0
  64. kfinance/domains/prices/tests/__init__.py +0 -0
  65. kfinance/{tests/test_models → domains/prices/tests}/test_price_models.py +2 -2
  66. kfinance/domains/prices/tests/test_price_tools.py +141 -0
  67. kfinance/domains/segments/__init__.py +0 -0
  68. kfinance/domains/segments/segment_tools.py +91 -0
  69. kfinance/domains/segments/tests/__init__.py +0 -0
  70. kfinance/domains/segments/tests/test_segment_tools.py +80 -0
  71. kfinance/domains/statements/__init__.py +0 -0
  72. kfinance/domains/statements/statement_tools.py +116 -0
  73. kfinance/domains/statements/tests/__init__.py +0 -0
  74. kfinance/domains/statements/tests/test_statement_tools.py +73 -0
  75. kfinance/integrations/README.md +8 -0
  76. kfinance/integrations/__init__.py +0 -0
  77. kfinance/integrations/mcp/__init__.py +0 -0
  78. kfinance/{mcp.py → integrations/mcp/mcp.py} +2 -2
  79. kfinance/integrations/tests/__init__.py +0 -0
  80. kfinance/{tests → integrations/tests}/test_example_notebook.py +4 -4
  81. kfinance/{tool_calling → integrations/tool_calling}/README.md +2 -2
  82. kfinance/integrations/tool_calling/__init__.py +0 -0
  83. kfinance/integrations/tool_calling/all_tools.py +55 -0
  84. kfinance/{tool_calling → integrations/tool_calling}/prompts.py +3 -2
  85. kfinance/integrations/tool_calling/static_tools/README.md +4 -0
  86. kfinance/integrations/tool_calling/static_tools/__init__.py +0 -0
  87. kfinance/{tool_calling → integrations/tool_calling/static_tools}/get_latest.py +3 -3
  88. kfinance/{tool_calling → integrations/tool_calling/static_tools}/get_n_quarters_ago.py +3 -3
  89. kfinance/integrations/tool_calling/static_tools/tests/__init__.py +0 -0
  90. kfinance/integrations/tool_calling/static_tools/tests/test_get_lastest.py +30 -0
  91. kfinance/integrations/tool_calling/static_tools/tests/test_get_n_quarters_ago.py +24 -0
  92. kfinance/integrations/tool_calling/tests/__init__.py +0 -0
  93. kfinance/integrations/tool_calling/tests/test_tool_calling_models.py +69 -0
  94. kfinance/{tool_calling/shared_models.py → integrations/tool_calling/tool_calling_models.py} +37 -7
  95. kfinance/models/permission_models.py +1 -0
  96. kfinance/version.py +2 -2
  97. kensho_kfinance-2.9.0.dist-info/RECORD +0 -70
  98. kfinance/models/id_models.py +0 -7
  99. kfinance/prompt.py +0 -526
  100. kfinance/pydantic_models.py +0 -33
  101. kfinance/tests/test_tools.py +0 -804
  102. kfinance/tool_calling/__init__.py +0 -53
  103. kfinance/tool_calling/get_advisors_for_company_in_transaction_from_identifier.py +0 -42
  104. kfinance/tool_calling/get_business_relationship_from_identifier.py +0 -30
  105. kfinance/tool_calling/get_capitalization_from_identifier.py +0 -35
  106. kfinance/tool_calling/get_competitors_from_identifier.py +0 -25
  107. kfinance/tool_calling/get_cusip_from_ticker.py +0 -20
  108. kfinance/tool_calling/get_earnings.py +0 -33
  109. kfinance/tool_calling/get_financial_line_item_from_identifier.py +0 -48
  110. kfinance/tool_calling/get_financial_statement_from_identifier.py +0 -44
  111. kfinance/tool_calling/get_history_metadata_from_identifier.py +0 -17
  112. kfinance/tool_calling/get_info_from_identifier.py +0 -16
  113. kfinance/tool_calling/get_isin_from_ticker.py +0 -20
  114. kfinance/tool_calling/get_latest_earnings.py +0 -30
  115. kfinance/tool_calling/get_merger_info_from_transaction_id.py +0 -69
  116. kfinance/tool_calling/get_mergers_from_identifier.py +0 -44
  117. kfinance/tool_calling/get_next_earnings.py +0 -30
  118. kfinance/tool_calling/get_prices_from_identifier.py +0 -46
  119. kfinance/tool_calling/get_segments_from_identifier.py +0 -44
  120. kfinance/tool_calling/get_transcript.py +0 -23
  121. kfinance/tool_calling/resolve_identifier.py +0 -18
  122. {kensho_kfinance-2.9.0.dist-info → kensho_kfinance-3.0.1.dist-info}/WHEEL +0 -0
  123. {kensho_kfinance-2.9.0.dist-info → kensho_kfinance-3.0.1.dist-info}/licenses/AUTHORS.md +0 -0
  124. {kensho_kfinance-2.9.0.dist-info → kensho_kfinance-3.0.1.dist-info}/licenses/LICENSE +0 -0
  125. {kensho_kfinance-2.9.0.dist-info → kensho_kfinance-3.0.1.dist-info}/top_level.txt +0 -0
  126. /kfinance/{models → client}/__init__.py +0 -0
  127. /kfinance/{models → client}/industry_models.py +0 -0
  128. /kfinance/{tests → client/models}/__init__.py +0 -0
  129. /kfinance/{models → client/models}/currency_models.py +0 -0
  130. /kfinance/{models → client/models}/date_and_period_models.py +0 -0
  131. /kfinance/{tests/test_models → client/models/tests}/__init__.py +0 -0
  132. /kfinance/{server_thread.py → client/server_thread.py} +0 -0
  133. /kfinance/{models → domains/line_items}/line_item_models.py +0 -0
  134. /kfinance/{models → domains/segments}/segment_models.py +0 -0
  135. /kfinance/{models → domains/statements}/statement_models.py +0 -0
@@ -0,0 +1,69 @@
1
+ import contextlib
2
+ from contextlib import nullcontext as does_not_raise
3
+
4
+ from pydantic import BaseModel, ValidationError
5
+ import pytest
6
+ from requests_mock import Mocker
7
+
8
+ from kfinance.client.kfinance import Client
9
+ from kfinance.conftest import SPGI_COMPANY_ID
10
+ from kfinance.domains.companies.company_tools import GetInfoFromIdentifiers
11
+ from kfinance.integrations.tool_calling.tool_calling_models import ValidQuarter
12
+
13
+
14
+ class TestGetEndpointsFromToolCallsWithGrounding:
15
+ def test_get_info_from_identifier_with_grounding(
16
+ self, mock_client: Client, requests_mock: Mocker
17
+ ):
18
+ """
19
+ GIVEN a KfinanceTool tool
20
+ WHEN we run the tool with `run_with_grounding`
21
+ THEN we get back endpoint urls in addition to the usual tool response.
22
+ """
23
+
24
+ # truncated from the original
25
+ resp_data = {"name": "S&P Global Inc.", "status": "Operating"}
26
+ resp_endpoint = [
27
+ "https://kfinance.kensho.com/api/v1/id/SPGI",
28
+ "https://kfinance.kensho.com/api/v1/info/21719",
29
+ ]
30
+ expected_resp = {"data": {"SPGI": resp_data}, "endpoint_urls": resp_endpoint}
31
+
32
+ requests_mock.get(
33
+ url=f"https://kfinance.kensho.com/api/v1/info/{SPGI_COMPANY_ID}",
34
+ json=resp_data,
35
+ )
36
+
37
+ tool = GetInfoFromIdentifiers(kfinance_client=mock_client)
38
+ resp = tool.run_with_grounding(identifiers=["SPGI"])
39
+ assert resp == expected_resp
40
+
41
+
42
+ class TestValidQuarter:
43
+ class QuarterModel(BaseModel):
44
+ quarter: ValidQuarter | None
45
+
46
+ @pytest.mark.parametrize(
47
+ "input_quarter, expectation, expected_quarter",
48
+ [
49
+ pytest.param(1, does_not_raise(), 1, id="int input works"),
50
+ pytest.param("1", does_not_raise(), 1, id="str input works"),
51
+ pytest.param(None, does_not_raise(), None, id="None input works"),
52
+ pytest.param(5, pytest.raises(ValidationError), None, id="invalid int raises"),
53
+ pytest.param("5", pytest.raises(ValidationError), None, id="invalid str raises"),
54
+ ],
55
+ )
56
+ def test_valid_quarter(
57
+ self,
58
+ input_quarter: int | str | None,
59
+ expectation: contextlib.AbstractContextManager,
60
+ expected_quarter: int | None,
61
+ ) -> None:
62
+ """
63
+ GIVEN a model that uses `ValidQuarter`
64
+ WHEN we deserialize with int, str, or None
65
+ THEN valid str get coerced to int. Invalid values raise.
66
+ """
67
+ with expectation:
68
+ res = self.QuarterModel.model_validate(dict(quarter=input_quarter))
69
+ assert res.quarter == expected_quarter
@@ -3,8 +3,8 @@ from typing import Annotated, Any, Literal, Type
3
3
  from langchain_core.tools import BaseTool
4
4
  from pydantic import BaseModel, BeforeValidator, ConfigDict, Field
5
5
 
6
- from kfinance.kfinance import Client
7
- from kfinance.models.permission_models import Permission
6
+ from kfinance.client.kfinance import Client
7
+ from kfinance.client.permission_models import Permission
8
8
 
9
9
 
10
10
  class KfinanceTool(BaseTool):
@@ -20,7 +20,7 @@ class KfinanceTool(BaseTool):
20
20
  description="The set of accepted permissions needed to access the tool. Only one of the permissions is required (or None)."
21
21
  )
22
22
 
23
- model_config = ConfigDict(populate_by_name=True, extra="forbid")
23
+ model_config = ConfigDict(extra="forbid")
24
24
 
25
25
  def run_without_langchain(self, *args: Any, **kwargs: Any) -> Any:
26
26
  """Execute a Kfinance tool without langchain.
@@ -60,19 +60,49 @@ class KfinanceTool(BaseTool):
60
60
  }
61
61
 
62
62
  def _run(self, *args: Any, **kwargs: Any) -> Any:
63
- """The code to execute the tool"""
63
+ """The code to execute the tool.
64
+
65
+ Where feasible and useful, tools should use batch processing to parallelize
66
+ requests, usually by allowing callers to pass in multiple identifiers.
67
+ The usual processing order for functions with multiple identifiers is:
68
+ - Parse string identifiers into `CompanyIdentifier`
69
+ - batch fetch the required id for the api call (company/security/trading item id) via
70
+ fetch_<relevant>_ids_from_identifiers
71
+ - batch fetch the required info based on the ids via process_tasks_in_thread_pool_executor
72
+ - format results for output
73
+
74
+ Any company_ids in the response should be prefixed with the COMPANY_ID_PREFIX ("C_").
75
+ This allows us to circumvent overlaps between tickers (which can be purely numerical)
76
+ and company_ids. Company_ids with prefixes can be used like normal identifiers.
77
+ For example:
78
+ Request: get_business_relationship_from_identifiers(identifiers=["SPGI"], business_relationship="supplier")
79
+ Response: {"SPGI": {"current": [{"company_id": "C_883103", "company_name": "A Corp"}]...
80
+ Request: get_prices_from_identifiers(identifiers=["C_883103"])
81
+ """
64
82
  ...
65
83
 
66
84
 
67
85
  class ToolArgsWithIdentifier(BaseModel):
68
86
  """Tool argument with an identifier.
69
87
 
70
- All tools using an identifier should subclass this model to ensure that the description
71
- of identifier is always the same.
88
+ All tools using identifiers should subclass this model to ensure that the description
89
+ of identifiers is always the same.
72
90
  """
73
91
 
74
92
  identifier: str = Field(
75
- description="The identifier, which can be a ticker symbol, ISIN, or CUSIP"
93
+ description="The identifier, which can be a ticker symbol, ISIN, CUSIP, or company_id"
94
+ )
95
+
96
+
97
+ class ToolArgsWithIdentifiers(BaseModel):
98
+ """Tool argument with a list of identifiers.
99
+
100
+ All tools using identifiers should subclass this model to ensure that the description
101
+ of identifiers is always the same.
102
+ """
103
+
104
+ identifiers: list[str] = Field(
105
+ description="The identifiers, which can be a list of ticker symbols, ISINs, or CUSIPs, or company_ids"
76
106
  )
77
107
 
78
108
 
@@ -13,3 +13,4 @@ class Permission(StrEnum):
13
13
  SegmentsPermission = "SegmentsPermission"
14
14
  StatementsPermission = "StatementsPermission"
15
15
  TranscriptsPermission = "TranscriptsPermission"
16
+ PrivateCompanyFinancialsPermission = "PrivateCompanyFinancialsPermission"
kfinance/version.py CHANGED
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '2.9.0'
21
- __version_tuple__ = version_tuple = (2, 9, 0)
20
+ __version__ = version = '3.0.1'
21
+ __version_tuple__ = version_tuple = (3, 0, 1)
@@ -1,70 +0,0 @@
1
- kensho_kfinance-2.9.0.dist-info/licenses/AUTHORS.md,sha256=0h9ClbI0pu1oKj1M28ROUsaxrbZg-6ukQGl6X4y9noI,68
2
- kensho_kfinance-2.9.0.dist-info/licenses/LICENSE,sha256=bsY4blvSgq6o0FMQ3RXa2NCgco--nHCCchLXzxr6kms,83
3
- kfinance/CHANGELOG.md,sha256=vwLoxhyrR2AGSJbkfkvWYjjZQ6UBrfjOPSZq4eM9nok,2280
4
- kfinance/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- kfinance/batch_request_handling.py,sha256=G9rhpgQaCdb5C1dsfuJip8383iszibcOJ5k8gxld-tQ,5001
6
- kfinance/decimal_with_unit.py,sha256=U1eJSJ-4zPHkdtHcrfaW9CmmaLPE13MiWJy6odRyeXo,2904
7
- kfinance/fetch.py,sha256=MSdDddZ_1YdmzCuXqCXwY_vfFLdbdQeCJ6YRQrwCUCI,28157
8
- kfinance/kfinance.py,sha256=ob5jNO5-aTSfBwknsSVCMLQJD5mWZkPTAZlvsBJ_Z2Y,72584
9
- kfinance/mcp.py,sha256=MbktclVfBOEwfe-eR7kPaTXopMJmn_8RMlf4Jx5CXKU,3689
10
- kfinance/meta_classes.py,sha256=0wI70PXfQzNbRUW2nYVfxJjqCqqI5EukUIKjaMcrzVA,21804
11
- kfinance/prompt.py,sha256=PtVB8c_FcSlVdyGgByAnIFGzuUuBaEjciCqnBJl1hSQ,25133
12
- kfinance/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- kfinance/pydantic_models.py,sha256=avpbPqwrAyLqsCbrmFpK_B8_fj1nPlBHrnPxRcBaSkE,774
14
- kfinance/server_thread.py,sha256=jUnt1YGoYDkqqz1MbCwd44zJs1T_Z2BCgvj75bdtLgA,2574
15
- kfinance/version.py,sha256=pqhLPO2SP7VnEU-lJpoO0qS9x0Kgz8BD6Rgr6J_aK-o,511
16
- kfinance/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- kfinance/models/business_relationship_models.py,sha256=XlkYI_XUegORH4U4oLXjdFIX9Pr9FvQUnFAc67D2M4s,770
18
- kfinance/models/capitalization_models.py,sha256=jB0MIZ94UOPfVckuS2asED9ARjisrStC_O4KgfHmoJw,3193
19
- kfinance/models/competitor_models.py,sha256=0yDu49Pe28ErpCMLX-BBeUnjjxqerb49ToVKSTOivNk,565
20
- kfinance/models/currency_models.py,sha256=JfDZf-nATCyjThBw-Ky2BNvM-n2oHepBLIHMCIyCRUE,19201
21
- kfinance/models/date_and_period_models.py,sha256=B508v1SLy_mbSSuSbPz41xeFNRAeBFv41gJSlaXyHnU,1062
22
- kfinance/models/id_models.py,sha256=xhFKmDddBfqkQZsbOP8za8VnxIFHiwvGThKjeGKC2Hg,138
23
- kfinance/models/industry_models.py,sha256=ydB_cTIsNsfCUeaO7K2qqLUuHdG6WfUCoAzBigKVV8M,243
24
- kfinance/models/line_item_models.py,sha256=JIdoSYxoJDQVkmqUK6_ABpb6lULXRvrCDJGiKL6kRhE,45399
25
- kfinance/models/permission_models.py,sha256=z6MKY7Zf7StPKwsucsoVqltUesicU6MC6rxRGmlRwZI,557
26
- kfinance/models/price_models.py,sha256=saiJk1ZIs02cHtY54-5YvS7NgH3EABR2RGT6wpzRauY,2149
27
- kfinance/models/segment_models.py,sha256=GSJhK1HmbMmwRDFmrDTZzx8aYrAaHN13IJ0J9GTBn9Y,145
28
- kfinance/models/statement_models.py,sha256=RmclTeyahCODUP0-KgZZZequFgQ2pUQ8cdfHI96c9vA,207
29
- kfinance/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- kfinance/tests/conftest.py,sha256=dhL_RSc-af3j-2_UrAGRE9mxgcbjuIRtj08DTx79pQc,1123
31
- kfinance/tests/test_batch_requests.py,sha256=JjP5OOKyxzYqmVmTR2hzM4Q6wyYDCEDHINH4vNFd6ag,11597
32
- kfinance/tests/test_client.py,sha256=YZT-AXpFsVHpdoZj01d2TkmUkNP-8f3cIOgeXtP_05U,3870
33
- kfinance/tests/test_decimal_with_unit.py,sha256=98zZmSLojWq3FS0e5AuNxv9eluqGVEoqM3r_agkmt_Y,2188
34
- kfinance/tests/test_example_notebook.py,sha256=VFS2W_T0yEtd74YiRxj3KA7eEL_fJuCpWwUAkiFqzkc,6501
35
- kfinance/tests/test_fetch.py,sha256=s8fSkXDtNjDcK_jWQYUO1stx9ElX1I54qG_48WxfBAc,18558
36
- kfinance/tests/test_group_objects.py,sha256=SoMEZmkG4RYdgWOAwxLHHtzIQho92KM01YbQXPUg578,1689
37
- kfinance/tests/test_objects.py,sha256=cpTE22omZATe-2j9jnuchgEiZtNM-wler95ainYoh_o,42471
38
- kfinance/tests/test_tools.py,sha256=jLrugYTSdK6Cw4SmJxsxdYdJ1S3X7wDcBC7kQAWe75A,31024
39
- kfinance/tests/test_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- kfinance/tests/test_models/test_capitalization_models.py,sha256=E-5eZX0ufdFsmcWATt5agyH4Ks-q8TNO-W6cnYIMOcE,3116
41
- kfinance/tests/test_models/test_price_models.py,sha256=DHBMAFJ8axat1s_C0tElqcCjw6YhmzF9WWKpKmySwv0,2378
42
- kfinance/tool_calling/README.md,sha256=omJq7Us6r4U45QB7hRpLjRJ5BMalCkZkh4uXBjTbJXc,2022
43
- kfinance/tool_calling/__init__.py,sha256=UmtbtG6PvQHB1fInEL-K5q0kPHL__zTY9wzaPRSp1wg,2174
44
- kfinance/tool_calling/get_advisors_for_company_in_transaction_from_identifier.py,sha256=IYpImoYfeq7Ep_IrUZgsSHC0oLSmI1mwuTR_1ftTPMY,1789
45
- kfinance/tool_calling/get_business_relationship_from_identifier.py,sha256=oPlVpDy4AY8nQFZnHRp9DhpL8SecIlyEY6aiklHtVDg,1551
46
- kfinance/tool_calling/get_capitalization_from_identifier.py,sha256=qciQI9gSJh4gGatnjOkid-GJSlzXkvt7-2VcK2yBfrg,1558
47
- kfinance/tool_calling/get_competitors_from_identifier.py,sha256=J9TVWNU_6d6ltJLIJTdCtkhbc0MqoCbqdWUxrwBkOUs,1156
48
- kfinance/tool_calling/get_cusip_from_ticker.py,sha256=ebzFmjZFkcuydntQXmuxfh8mhPiXmmzUTb2ncHy00ao,667
49
- kfinance/tool_calling/get_earnings.py,sha256=d7UvVsSAcrVlveWyUpua35vdloA_QgJnQ4Nmg7wT7m0,1245
50
- kfinance/tool_calling/get_financial_line_item_from_identifier.py,sha256=hsKmObT2TJ4HMusVtQXU6FMDmyY7bKg2V-x-IXuU71c,2270
51
- kfinance/tool_calling/get_financial_statement_from_identifier.py,sha256=ba8Z378YrQ_J0-A6KVLOtxe-hYMP68780g0xXZfAyT8,2023
52
- kfinance/tool_calling/get_history_metadata_from_identifier.py,sha256=hPC-RwwcnJ9kkhxTUJLE-xvCqfIq5kJcKM4deiL8zlI,789
53
- kfinance/tool_calling/get_info_from_identifier.py,sha256=2-NmGvFpYXASGV_lJaYhhdXMxQpyvi30bXY9mGWwbBw,787
54
- kfinance/tool_calling/get_isin_from_ticker.py,sha256=tp79lowBUdkv7fm-8QX4vJqeDZiq5M_jkkp8XKC1KY4,661
55
- kfinance/tool_calling/get_latest.py,sha256=m6nBA8Bo51Q85kGbGnP59IUz4-lm_CRo1kSuNM26iXg,857
56
- kfinance/tool_calling/get_latest_earnings.py,sha256=R98ImaONP3AjVshygkRLwcAHKscvVRkVoPw117O9nuw,1197
57
- kfinance/tool_calling/get_merger_info_from_transaction_id.py,sha256=gB6VUmCAKS0OBclpcdp2gQq7cdxKbWTXt5Z8aMH_-ys,3243
58
- kfinance/tool_calling/get_mergers_from_identifier.py,sha256=tgpcLQM1CPvyk4_xyUhcZh01kAzwdkQCV6gq-bEsFhA,1935
59
- kfinance/tool_calling/get_n_quarters_ago.py,sha256=VYUBbQIowHXmNuln1oKoDKeWDbnXLg4p6X0d1HoY_NY,784
60
- kfinance/tool_calling/get_next_earnings.py,sha256=vL3sCoocPhHDRawVRu9IyQPLXVAgODrZgKSqkP3Scs8,1177
61
- kfinance/tool_calling/get_prices_from_identifier.py,sha256=uXD9fiLFI0vUM_YY8DI_9ifC0oeeC3KCyaTQQ0IjuSA,1966
62
- kfinance/tool_calling/get_segments_from_identifier.py,sha256=1Ux9ZWEU3xmOSuAPGedo2r8wdRa_glv8roghp08MJ-c,1980
63
- kfinance/tool_calling/get_transcript.py,sha256=urZgpQXigmahy-vj6OjkGI9O6HJcPIpd-5CRU7NI3YQ,782
64
- kfinance/tool_calling/prompts.py,sha256=Yw1DJIMh90cjL-8q6_RMRiSjCtFDXvJAy7QiV5_uAU8,911
65
- kfinance/tool_calling/resolve_identifier.py,sha256=Rkhwi6m3hffE19qaxRkrsu6slRKyiAXjfLr8L41N2zc,647
66
- kfinance/tool_calling/shared_models.py,sha256=Sx_zlwk5YLu533406Pmh499NH5oTBWrZf8Ua8zoUSRk,3746
67
- kensho_kfinance-2.9.0.dist-info/METADATA,sha256=NhJXLeMBY0A1QP2PaA2BWB7-m-cUxY1wqp7TlDRqPAY,6202
68
- kensho_kfinance-2.9.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
69
- kensho_kfinance-2.9.0.dist-info/top_level.txt,sha256=kT_kNwVhfQoOAecY8W7uYah5xaHMoHoAdBIvXh6DaKM,9
70
- kensho_kfinance-2.9.0.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- from typing import NamedTuple
2
-
3
-
4
- class IdentificationTriple(NamedTuple):
5
- trading_item_id: int
6
- security_id: int
7
- company_id: int