langchain-timbr 2.0.4__tar.gz → 2.1.1__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.
Files changed (56) hide show
  1. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/PKG-INFO +5 -9
  2. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/pyproject.toml +6 -8
  3. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/requirements.txt +0 -2
  4. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/requirements310.txt +2 -2
  5. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/requirements311.txt +2 -2
  6. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/_version.py +2 -2
  7. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/utils/timbr_llm_utils.py +6 -5
  8. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/standard/test_chain_documentation.py +1 -1
  9. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/.github/dependabot.yml +0 -0
  10. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/.github/pull_request_template.md +0 -0
  11. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/.github/workflows/_codespell.yml +0 -0
  12. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/.github/workflows/_fossa.yml +0 -0
  13. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/.github/workflows/install-dependencies-and-run-tests.yml +0 -0
  14. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/.github/workflows/publish.yml +0 -0
  15. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/.gitignore +0 -0
  16. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/LICENSE +0 -0
  17. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/README.md +0 -0
  18. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/pytest.ini +0 -0
  19. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/__init__.py +0 -0
  20. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/config.py +0 -0
  21. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/langchain/__init__.py +0 -0
  22. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/langchain/execute_timbr_query_chain.py +0 -0
  23. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/langchain/generate_answer_chain.py +0 -0
  24. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/langchain/generate_timbr_sql_chain.py +0 -0
  25. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/langchain/identify_concept_chain.py +0 -0
  26. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/langchain/timbr_sql_agent.py +0 -0
  27. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/langchain/validate_timbr_sql_chain.py +0 -0
  28. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/langgraph/__init__.py +0 -0
  29. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/langgraph/execute_timbr_query_node.py +0 -0
  30. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/langgraph/generate_response_node.py +0 -0
  31. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/langgraph/generate_timbr_sql_node.py +0 -0
  32. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/langgraph/identify_concept_node.py +0 -0
  33. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/langgraph/validate_timbr_query_node.py +0 -0
  34. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/llm_wrapper/llm_wrapper.py +0 -0
  35. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/llm_wrapper/timbr_llm_wrapper.py +0 -0
  36. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/timbr_llm_connector.py +0 -0
  37. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/utils/general.py +0 -0
  38. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/utils/prompt_service.py +0 -0
  39. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/utils/temperature_supported_models.json +0 -0
  40. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/src/langchain_timbr/utils/timbr_utils.py +0 -0
  41. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/README.md +0 -0
  42. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/conftest.py +0 -0
  43. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/integration/test_agent_integration.py +0 -0
  44. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/integration/test_azure_databricks_provider.py +0 -0
  45. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/integration/test_azure_openai_model.py +0 -0
  46. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/integration/test_chain_pipeline.py +0 -0
  47. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/integration/test_jwt_token.py +0 -0
  48. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/integration/test_langchain_chains.py +0 -0
  49. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/integration/test_langgraph_nodes.py +0 -0
  50. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/integration/test_timeout_functionality.py +0 -0
  51. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/standard/conftest.py +0 -0
  52. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/standard/test_connection_validation.py +0 -0
  53. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/standard/test_llm_wrapper_optional_params.py +0 -0
  54. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/standard/test_optional_llm_integration.py +0 -0
  55. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/standard/test_standard_chain_requirements.py +0 -0
  56. {langchain_timbr-2.0.4 → langchain_timbr-2.1.1}/tests/standard/test_unit_tests.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langchain-timbr
3
- Version: 2.0.4
3
+ Version: 2.1.1
4
4
  Summary: LangChain & LangGraph extensions that parse LLM prompts into Timbr semantic SQL and execute them.
5
5
  Project-URL: Homepage, https://github.com/WPSemantix/langchain-timbr
6
6
  Project-URL: Documentation, https://docs.timbr.ai/doc/docs/integration/langchain-sdk/
@@ -45,12 +45,10 @@ Requires-Dist: langchain==0.3.27; python_version >= '3.11'
45
45
  Requires-Dist: langchain>=0.3.25; python_version == '3.10'
46
46
  Requires-Dist: langgraph==0.6.8; python_version >= '3.11'
47
47
  Requires-Dist: langgraph>=0.3.20; python_version == '3.10'
48
- Requires-Dist: numpy==1.26.4; python_version >= '3.11'
49
- Requires-Dist: numpy~=1.26.2; python_version == '3.10'
50
48
  Requires-Dist: openai==2.1.0; python_version >= '3.11'
51
49
  Requires-Dist: openai>=1.77.0; python_version == '3.10'
52
- Requires-Dist: pyarrow<20.0.0,>=19.0.1; python_version == '3.10'
53
- Requires-Dist: pyarrow==19.0.1; python_version >= '3.11'
50
+ Requires-Dist: opentelemetry-api==1.38.0; python_version == '3.10'
51
+ Requires-Dist: opentelemetry-sdk==1.38.0; python_version == '3.10'
54
52
  Requires-Dist: pydantic==2.10.4
55
53
  Requires-Dist: pytest==8.3.4
56
54
  Requires-Dist: pytimbr-api==2.0.0; python_version >= '3.11'
@@ -82,8 +80,6 @@ Requires-Dist: langchain-tests==0.3.22; (python_version >= '3.11') and extra ==
82
80
  Requires-Dist: langchain-tests>=0.3.20; (python_version == '3.10') and extra == 'all'
83
81
  Requires-Dist: openai==2.1.0; (python_version >= '3.11') and extra == 'all'
84
82
  Requires-Dist: openai>=1.77.0; (python_version == '3.10') and extra == 'all'
85
- Requires-Dist: pyarrow<20.0.0,>=19.0.1; (python_version == '3.10') and extra == 'all'
86
- Requires-Dist: pyarrow==19.0.1; (python_version >= '3.11') and extra == 'all'
87
83
  Requires-Dist: pytest==8.3.4; extra == 'all'
88
84
  Requires-Dist: snowflake-snowpark-python==1.39.1; (python_version >= '3.11') and extra == 'all'
89
85
  Requires-Dist: snowflake-snowpark-python>=1.39.1; (python_version == '3.10') and extra == 'all'
@@ -107,8 +103,6 @@ Requires-Dist: databricks-sdk==0.64.0; extra == 'databricks'
107
103
  Provides-Extra: dev
108
104
  Requires-Dist: langchain-tests==0.3.22; (python_version >= '3.11') and extra == 'dev'
109
105
  Requires-Dist: langchain-tests>=0.3.20; (python_version == '3.10') and extra == 'dev'
110
- Requires-Dist: pyarrow<20.0.0,>=19.0.1; (python_version == '3.10') and extra == 'dev'
111
- Requires-Dist: pyarrow==19.0.1; (python_version >= '3.11') and extra == 'dev'
112
106
  Requires-Dist: pytest==8.3.4; extra == 'dev'
113
107
  Requires-Dist: uvicorn==0.34.0; extra == 'dev'
114
108
  Provides-Extra: google
@@ -121,6 +115,8 @@ Requires-Dist: langchain-openai>=0.3.16; (python_version == '3.10') and extra ==
121
115
  Requires-Dist: openai==2.1.0; (python_version >= '3.11') and extra == 'openai'
122
116
  Requires-Dist: openai>=1.77.0; (python_version == '3.10') and extra == 'openai'
123
117
  Provides-Extra: snowflake
118
+ Requires-Dist: opentelemetry-api==1.38.0; (python_version < '3.12') and extra == 'snowflake'
119
+ Requires-Dist: opentelemetry-sdk==1.38.0; (python_version < '3.12') and extra == 'snowflake'
124
120
  Requires-Dist: snowflake-snowpark-python==1.39.1; (python_version >= '3.11') and extra == 'snowflake'
125
121
  Requires-Dist: snowflake-snowpark-python>=1.39.1; (python_version == '3.10') and extra == 'snowflake'
126
122
  Requires-Dist: snowflake==1.8.0; (python_version >= '3.11') and extra == 'snowflake'
@@ -45,9 +45,9 @@ dependencies = [
45
45
  "langchain-openai==0.3.34; python_version>='3.11'",
46
46
  "langchain-tests==0.3.22; python_version>='3.11'",
47
47
  "langgraph==0.6.8; python_version>='3.11'",
48
- "numpy==1.26.4; python_version>='3.11'",
49
48
  "openai==2.1.0; python_version>='3.11'",
50
- "pyarrow==19.0.1; python_version>='3.11'",
49
+ "opentelemetry-api==1.38.0; python_version=='3.10'",
50
+ "opentelemetry-sdk==1.38.0; python_version=='3.10'",
51
51
  "pytimbr_api==2.0.0; python_version>='3.11'",
52
52
  "snowflake==1.8.0; python_version>='3.11'",
53
53
  "snowflake-snowpark-python==1.39.1; python_version>='3.11'",
@@ -65,9 +65,9 @@ dependencies = [
65
65
  "langchain-openai>=0.3.16; python_version=='3.10'",
66
66
  "langchain-tests>=0.3.20; python_version=='3.10'",
67
67
  "langgraph>=0.3.20; python_version=='3.10'",
68
- "numpy~=1.26.2; python_version=='3.10'",
69
68
  "openai>=1.77.0; python_version=='3.10'",
70
- "pyarrow>=19.0.1,<20.0.0; python_version=='3.10'",
69
+ "opentelemetry-api==1.38.0; python_version=='3.10'",
70
+ "opentelemetry-sdk==1.38.0; python_version=='3.10'",
71
71
  "pytimbr-api>=2.0.0; python_version=='3.10'",
72
72
  "snowflake>=1.8.0; python_version=='3.10'",
73
73
  "snowflake-snowpark-python>=1.39.1; python_version=='3.10'",
@@ -106,6 +106,8 @@ vertex_ai = [
106
106
  "langchain-google-vertexai>=2.0.28; python_version=='3.10'"
107
107
  ]
108
108
  snowflake = [
109
+ "opentelemetry-api==1.38.0; python_version<'3.12'",
110
+ "opentelemetry-sdk==1.38.0; python_version<'3.12'",
109
111
  "snowflake==1.8.0; python_version>='3.11'",
110
112
  "snowflake-snowpark-python==1.39.1; python_version>='3.11'",
111
113
  "snowflake>=1.8.0; python_version=='3.10'",
@@ -120,10 +122,8 @@ databricks = [
120
122
  dev = [
121
123
  "pytest==8.3.4",
122
124
  "langchain-tests==0.3.22; python_version>='3.11'",
123
- "pyarrow==19.0.1; python_version>='3.11'",
124
125
  "uvicorn==0.34.0",
125
126
  "langchain-tests>=0.3.20; python_version=='3.10'",
126
- "pyarrow>=19.0.1,<20.0.0; python_version=='3.10'"
127
127
  ]
128
128
 
129
129
  # All optional dependencies
@@ -144,7 +144,6 @@ all = [
144
144
  "snowflake==1.8.0; python_version>='3.11'",
145
145
  "snowflake-snowpark-python==1.39.1; python_version>='3.11'",
146
146
  "langchain-tests==0.3.22; python_version>='3.11'",
147
- "pyarrow==19.0.1; python_version>='3.11'",
148
147
  # Python 3.10 versions
149
148
  "azure-identity>=1.16.1; python_version=='3.10'",
150
149
  "langchain-anthropic>=0.3.1; python_version=='3.10'",
@@ -155,7 +154,6 @@ all = [
155
154
  "snowflake>=1.8.0; python_version=='3.10'",
156
155
  "snowflake-snowpark-python>=1.39.1; python_version=='3.10'",
157
156
  "langchain-tests>=0.3.20; python_version=='3.10'",
158
- "pyarrow>=19.0.1,<20.0.0; python_version=='3.10'"
159
157
  ]
160
158
 
161
159
  [project.urls]
@@ -13,9 +13,7 @@ langchain-google-vertexai==2.1.2
13
13
  langchain-openai==0.3.34
14
14
  langchain-tests==0.3.22
15
15
  langgraph==0.6.8
16
- numpy==1.26.4
17
16
  openai==2.1.0
18
- pyarrow==19.0.1
19
17
  pydantic==2.10.4
20
18
  pytest==8.3.4
21
19
  pytimbr_api==2.0.0
@@ -13,9 +13,9 @@ langchain-google-vertexai>=2.0.28
13
13
  langchain-openai>=0.3.16
14
14
  langchain-tests>=0.3.20
15
15
  langgraph>=0.3.20
16
- numpy~=1.26.2
17
16
  openai>=1.77.0
18
- pyarrow>=19.0.1,<20.0.0
17
+ opentelemetry-api==1.38.0 # Required when using snowflake with Python under 3.12
18
+ opentelemetry-sdk==1.38.0 # Required when using snowflake with Python under 3.12
19
19
  pydantic==2.10.4
20
20
  pytest==8.3.4
21
21
  pytimbr-api>=2.0.0
@@ -13,9 +13,9 @@ langchain-google-vertexai==2.1.2
13
13
  langchain-openai==0.3.34
14
14
  langchain-tests==0.3.22
15
15
  langgraph==0.6.8
16
- numpy==1.26.4
17
16
  openai==2.1.0
18
- pyarrow==19.0.1
17
+ opentelemetry-api==1.38.0 # Required when using snowflake with Python under 3.12
18
+ opentelemetry-sdk==1.38.0 # Required when using snowflake with Python under 3.12
19
19
  pydantic==2.10.4
20
20
  pytest==8.3.4
21
21
  pytimbr_api==2.0.0
@@ -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 = '2.0.4'
32
- __version_tuple__ = version_tuple = (2, 0, 4)
31
+ __version__ = version = '2.1.1'
32
+ __version_tuple__ = version_tuple = (2, 1, 1)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -180,6 +180,10 @@ def _get_response_text(response: Any) -> str:
180
180
  else:
181
181
  raise ValueError("Unexpected response format from LLM.")
182
182
 
183
+ if "QUESTION VALIDATION ERROR:" in response_text:
184
+ err = response_text.split("QUESTION VALIDATION ERROR:", 1)[1].strip()
185
+ raise ValueError(err)
186
+
183
187
  return response_text
184
188
 
185
189
  def _extract_usage_metadata(response: Any) -> dict:
@@ -282,7 +286,7 @@ def determine_concept(
282
286
  response = _call_llm_with_timeout(llm, prompt, timeout=timeout)
283
287
  except TimeoutError as e:
284
288
  error = f"LLM call timed out: {str(e)}"
285
- continue
289
+ raise Exception(error)
286
290
  except Exception as e:
287
291
  error = f"LLM call failed: {str(e)}"
288
292
  continue
@@ -505,10 +509,7 @@ def generate_sql(
505
509
  response = _call_llm_with_timeout(llm, prompt, timeout=timeout)
506
510
  except TimeoutError as e:
507
511
  error = f"LLM call timed out: {str(e)}"
508
- if should_validate_sql:
509
- continue
510
- else:
511
- raise Exception(error)
512
+ raise Exception(error)
512
513
  except Exception as e:
513
514
  error = f"LLM call failed: {str(e)}"
514
515
  if should_validate_sql:
@@ -220,7 +220,7 @@ class TestChainExamples:
220
220
  chain = ExecuteTimbrQueryChain(**config_dict)
221
221
 
222
222
  # Test basic functionality
223
- result = chain.invoke({"prompt": f"test configuration {i}"})
223
+ result = chain.invoke({"prompt": "Count all orders"})
224
224
  assert isinstance(result, dict)
225
225
 
226
226
  except Exception as e:
File without changes