uipath-langchain 0.0.81__tar.gz → 0.0.83__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 uipath-langchain might be problematic. Click here for more details.

Files changed (36) hide show
  1. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/.gitignore +1 -0
  2. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/PKG-INFO +2 -2
  3. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/pyproject.toml +2 -2
  4. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_cli/_runtime/_input.py +7 -5
  5. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_cli/_runtime/_output.py +1 -1
  6. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/retrievers/context_grounding_retriever.py +3 -3
  7. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/tracers/AsyncUiPathTracer.py +3 -1
  8. uipath_langchain-0.0.83/uipath_langchain/tracers/_utils.py +52 -0
  9. uipath_langchain-0.0.81/uipath_langchain/tracers/_utils.py +0 -24
  10. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/README.md +0 -0
  11. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/__init__.py +0 -0
  12. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_cli/__init__.py +0 -0
  13. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_cli/_runtime/_context.py +0 -0
  14. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_cli/_runtime/_escalation.py +0 -0
  15. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_cli/_runtime/_exception.py +0 -0
  16. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_cli/_runtime/_runtime.py +0 -0
  17. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_cli/_utils/_graph.py +0 -0
  18. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_cli/cli_init.py +0 -0
  19. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_cli/cli_run.py +0 -0
  20. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_utils/__init__.py +0 -0
  21. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_utils/_request_mixin.py +0 -0
  22. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_utils/_settings.py +0 -0
  23. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_utils/_sleep_policy.py +0 -0
  24. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_utils/tests/cached_embeddings/text-embedding-3-large5034ec3c-85c9-54b8-ac89-5e0cbcf99e3b +0 -0
  25. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_utils/tests/cached_embeddings/text-embedding-3-largec48857ed-1302-5954-9e24-69fa9b45e457 +0 -0
  26. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/_utils/tests/tests_uipath_cache.db +0 -0
  27. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/chat/__init__.py +0 -0
  28. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/chat/models.py +0 -0
  29. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/chat/utils/__init__.py +0 -0
  30. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/chat/utils/_chat_types.py +0 -0
  31. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/embeddings/__init__.py +0 -0
  32. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/embeddings/embeddings.py +0 -0
  33. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/middlewares.py +0 -0
  34. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/retrievers/__init__.py +0 -0
  35. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/tracers/UiPathTracer.py +0 -0
  36. {uipath_langchain-0.0.81 → uipath_langchain-0.0.83}/uipath_langchain/tracers/__init__.py +0 -0
@@ -13,6 +13,7 @@ wheels/
13
13
  **/.uipath
14
14
  **/**.nupkg
15
15
  **/uipath.json
16
+ **/__uipath/
16
17
 
17
18
  **/playground.py
18
19
  **/.idea
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath-langchain
3
- Version: 0.0.81
3
+ Version: 0.0.83
4
4
  Summary: UiPath Langchain
5
5
  Project-URL: Homepage, https://uipath.com
6
6
  Project-URL: Repository, https://github.com/UiPath/uipath-python
@@ -25,5 +25,5 @@ Requires-Dist: pydantic-settings>=2.6.0
25
25
  Requires-Dist: python-dotenv>=1.0.1
26
26
  Requires-Dist: requests>=2.23.3
27
27
  Requires-Dist: types-requests>=2.32.0.20241016
28
- Requires-Dist: uipath-sdk>=0.0.109
28
+ Requires-Dist: uipath-sdk==0.0.112
29
29
  Provides-Extra: langchain
@@ -1,11 +1,11 @@
1
1
  [project]
2
2
  name = "uipath-langchain"
3
- version = "0.0.81"
3
+ version = "0.0.83"
4
4
  description = "UiPath Langchain"
5
5
  readme = { file = "README.md", content-type = "text/markdown" }
6
6
  requires-python = ">=3.9"
7
7
  dependencies = [
8
- "uipath-sdk>=0.0.109",
8
+ "uipath-sdk==0.0.112",
9
9
  "langgraph>=0.2.70",
10
10
  "langchain-core>=0.3.34",
11
11
  "langgraph-checkpoint-sqlite>=2.0.3",
@@ -76,21 +76,23 @@ class LangGraphInputProcessor:
76
76
  elif type == UiPathResumeTriggerType.JOB.value and key:
77
77
  job = await self.uipath.jobs.retrieve_async(key)
78
78
  if (
79
- job.State
80
- and not job.State.lower()
79
+ job.state
80
+ and not job.state.lower()
81
81
  == UiPathRuntimeStatus.SUCCESSFUL.value.lower()
82
82
  ):
83
83
  error_code = "INVOKED_PROCESS_FAILURE"
84
84
  error_title = "Invoked process did not finish successfully."
85
- error_detail = try_convert_to_json_format(str(job.JobError or job.Info))
85
+ error_detail = try_convert_to_json_format(
86
+ str(job.job_error or job.info)
87
+ )
86
88
  raise LangGraphRuntimeError(
87
89
  error_code,
88
90
  error_title,
89
91
  error_detail,
90
92
  UiPathErrorCategory.USER,
91
93
  )
92
- if job.OutputArguments:
93
- return Command(resume=try_convert_to_json_format(job.OutputArguments))
94
+ if job.output_arguments:
95
+ return Command(resume=try_convert_to_json_format(job.output_arguments))
94
96
  return Command(resume=self.context.input_json)
95
97
 
96
98
  async def _get_latest_trigger(self) -> Optional[tuple[str, str]]:
@@ -248,7 +248,7 @@ class LangGraphOutputProcessor:
248
248
  elif isinstance(self.interrupt_value, WaitJob):
249
249
  self._resume_trigger = UiPathResumeTrigger(
250
250
  triggerType=UiPathResumeTriggerType.JOB,
251
- itemKey=self.interrupt_value.job.Key,
251
+ itemKey=self.interrupt_value.job.key,
252
252
  )
253
253
  elif self.interrupt_info.type is UiPathResumeTriggerType.ACTION:
254
254
  if isinstance(self.interrupt_value, CreateAction):
@@ -25,10 +25,10 @@ class ContextGroundingRetriever(BaseRetriever):
25
25
 
26
26
  return [
27
27
  Document(
28
- page_content=x["content"],
28
+ page_content=x.content,
29
29
  metadata={
30
- "source": x["source"],
31
- "page_number": x["page_number"],
30
+ "source": x.source,
31
+ "page_number": x.page_number,
32
32
  },
33
33
  )
34
34
  for x in results
@@ -13,10 +13,12 @@ from langchain_core.tracers.base import AsyncBaseTracer
13
13
  from langchain_core.tracers.schemas import Run
14
14
  from pydantic import PydanticDeprecationWarning
15
15
 
16
- from ._utils import _simple_serialize_defaults
16
+ from ._utils import _setup_tracer_httpx_logging, _simple_serialize_defaults
17
17
 
18
18
  logger = logging.getLogger(__name__)
19
19
 
20
+ _setup_tracer_httpx_logging("/llmops_/api/Agent/trace/")
21
+
20
22
 
21
23
  class Status:
22
24
  SUCCESS = 1
@@ -0,0 +1,52 @@
1
+ import datetime
2
+ import logging
3
+ from zoneinfo import ZoneInfo
4
+
5
+
6
+ class IgnoreSpecificUrl(logging.Filter):
7
+ def __init__(self, url_to_ignore):
8
+ super().__init__()
9
+ self.url_to_ignore = url_to_ignore
10
+
11
+ def filter(self, record):
12
+ try:
13
+ if record.msg == 'HTTP Request: %s %s "%s %d %s"':
14
+ # Ignore the log if the URL matches the one we want to ignore
15
+ method = record.args[0]
16
+ url = record.args[1]
17
+
18
+ if method == "POST" and url.path.endswith(self.url_to_ignore):
19
+ # Check if the URL contains the specific path we want to ignore
20
+ return True
21
+ return False
22
+
23
+ except Exception:
24
+ return False
25
+
26
+
27
+ def _setup_tracer_httpx_logging(url: str):
28
+ # Create a custom logger for httpx
29
+ # Add the custom filter to the root logger
30
+ logging.getLogger("httpx").addFilter(IgnoreSpecificUrl(url))
31
+
32
+
33
+ def _simple_serialize_defaults(obj):
34
+ if hasattr(obj, "model_dump"):
35
+ return obj.model_dump(exclude_none=True, mode="json")
36
+ if hasattr(obj, "dict"):
37
+ return obj.dict()
38
+ if hasattr(obj, "to_dict"):
39
+ return obj.to_dict()
40
+
41
+ if isinstance(obj, (set, tuple)):
42
+ if hasattr(obj, "_asdict") and callable(obj._asdict):
43
+ return obj._asdict()
44
+ return list(obj)
45
+
46
+ if isinstance(obj, datetime.datetime):
47
+ return obj.isoformat()
48
+
49
+ if isinstance(obj, (datetime.timezone, ZoneInfo)):
50
+ return obj.tzname(None)
51
+
52
+ return str(obj)
@@ -1,24 +0,0 @@
1
- import datetime
2
- from zoneinfo import ZoneInfo
3
-
4
-
5
- def _simple_serialize_defaults(obj):
6
- if hasattr(obj, "model_dump"):
7
- return obj.model_dump(exclude_none=True, mode="json")
8
- if hasattr(obj, "dict"):
9
- return obj.dict()
10
- if hasattr(obj, "to_dict"):
11
- return obj.to_dict()
12
-
13
- if isinstance(obj, (set, tuple)):
14
- if hasattr(obj, "_asdict") and callable(obj._asdict):
15
- return obj._asdict()
16
- return list(obj)
17
-
18
- if isinstance(obj, datetime.datetime):
19
- return obj.isoformat()
20
-
21
- if isinstance(obj, (datetime.timezone, ZoneInfo)):
22
- return obj.tzname(None)
23
-
24
- return str(obj)