Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "uipath"
version = "2.1.51"
version = "2.1.52"
description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools."
readme = { file = "README.md", content-type = "text/markdown" }
requires-python = ">=3.10"
Expand Down
20 changes: 7 additions & 13 deletions src/uipath/_services/attachments_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from .._utils import Endpoint, RequestSpec, header_folder
from .._utils._ssl_context import get_httpx_client_kwargs
from .._utils.constants import TEMP_ATTACHMENTS_FOLDER
from ..models.exceptions import EnrichedException
from ..tracing._traced import traced
from ._base_service import BaseService

Expand Down Expand Up @@ -130,9 +131,9 @@ def download(
file.write(chunk)

return attachment_name
except Exception as e:
except EnrichedException as e:
# If not found in UiPath, check local storage
if "404" in str(e):
if e.status_code == 404:
Copy link

Copilot AI Sep 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code assumes EnrichedException has a status_code attribute, but this may not always be the case. Consider adding a safety check like getattr(e, 'status_code', None) == 404 to prevent AttributeError if the exception doesn't have this attribute.

Suggested change
if e.status_code == 404:
if getattr(e, 'status_code', None) == 404:

Copilot uses AI. Check for mistakes.

# Check if file exists in temp directory
if os.path.exists(self._temp_dir):
# Look for any file starting with our UUID
Expand All @@ -151,11 +152,7 @@ def download(
shutil.copy2(local_file, destination_path)

return original_name

# Re-raise the original exception if we can't find it locally
raise Exception(
f"Attachment with key {key} not found in UiPath or local storage"
) from e
raise e

@traced(name="attachments_download", run_type="uipath")
async def download_async(
Expand Down Expand Up @@ -248,9 +245,9 @@ async def main():
file.write(chunk)

return attachment_name
except Exception as e:
except EnrichedException as e:
# If not found in UiPath, check local storage
if "404" in str(e):
if e.status_code == 404:
Copy link

Copilot AI Sep 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same issue as in the sync version - the code assumes EnrichedException has a status_code attribute without checking. Consider adding a safety check like getattr(e, 'status_code', None) == 404 to prevent AttributeError.

Suggested change
if e.status_code == 404:
if getattr(e, 'status_code', None) == 404:

Copilot uses AI. Check for mistakes.

# Check if file exists in temp directory
if os.path.exists(self._temp_dir):
# Look for any file starting with our UUID
Expand All @@ -270,10 +267,7 @@ async def main():

return original_name

# Re-raise the original exception if we can't find it locally
raise Exception(
f"Attachment with key {key} not found in UiPath or local storage"
) from e
raise e

@overload
def upload(
Expand Down
Loading