Skip to content

Commit 4b2283c

Browse files
list_ refactor and docs fix (#393)
1 parent aef5177 commit 4b2283c

3 files changed

Lines changed: 55 additions & 37 deletions

File tree

python/lib/sift_client/resources/file_attachments.py

Lines changed: 53 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
from sift_client.util import cel_utils as cel
1010

1111
if TYPE_CHECKING:
12+
import re
13+
1214
from sift_client.client import SiftClient
1315
from sift_client.sift_types.asset import Asset
1416
from sift_client.sift_types.file_attachment import (
@@ -56,54 +58,69 @@ async def get(self, *, file_attachment_id: str) -> FileAttachment:
5658
async def list_(
5759
self,
5860
*,
59-
entity: Run | Asset | TestReport | None = None,
60-
remote_file_id: str | None = None,
61-
file_name: str | None = None,
62-
entity_type: RemoteFileEntityType | None = None,
63-
entity_id: str | None = None,
61+
name: str | None = None,
62+
names: list[str] | None = None,
63+
name_contains: str | None = None,
64+
name_regex: str | re.Pattern | None = None,
65+
# self ids
66+
remote_file_ids: list[str] | None = None,
67+
# created/modified ranges TODO: please make a ticket since the backend needs to add
68+
# created_after: datetime | None = None,
69+
# created_before: datetime | None = None,
70+
# modified_after: datetime | None = None,
71+
# modified_before: datetime | None = None,
72+
# created/modified users TODO: please make a ticket since the backend needs to add
73+
# created_by: Any | str | None = None,
74+
# modified_by: Any | str | None = None,
75+
# metadata TODO: please make a ticket
76+
# metadata: list[Any] | None = None,
77+
# file specific
78+
entities: list[Run | Asset | TestReport] | None = None,
79+
entity_types: list[RemoteFileEntityType] | None = None,
80+
entity_ids: list[str] | None = None,
81+
# common filters
82+
description_contains: str | None = None,
83+
filter_query: str | None = None,
6484
order_by: str | None = None,
6585
limit: int | None = None,
66-
page_size: int | None = None,
6786
) -> list[FileAttachment]:
6887
"""List file attachments with optional filtering.
69-
70-
Args:
71-
entity: Filter by entity (Run, Asset, or TestReport).
72-
remote_file_id: Filter by remote file ID.
73-
file_name: Filter by file name.
74-
entity_type: Filter by entity type enum value (e.g., 1 for Run, 3 for Asset, 5 for TestReport).
75-
entity_id: Filter by entity ID.
76-
order_by: The field to order by.
77-
limit: Maximum number of results to return.
78-
page_size: Number of results per page.
79-
80-
Returns:
81-
A list of FileAttachments.
88+
...
8289
"""
83-
# Build filter parts
84-
filter_parts = []
85-
86-
if entity is not None:
87-
filter_parts.append(cel.equals("entity_id", entity._id_or_error))
88-
filter_parts.append(cel.equals("entity_type", entity._get_entity_type_name()))
89-
else:
90-
if entity_id:
91-
filter_parts.append(cel.equals("entity_id", entity_id))
92-
if entity_type:
93-
filter_parts.append(cel.equals("entity_type", entity_type))
94-
if remote_file_id:
95-
filter_parts.append(cel.equals("remote_file_id", remote_file_id))
96-
if file_name:
97-
filter_parts.append(cel.equals("file_name", file_name))
90+
filter_parts = [
91+
*self._build_name_cel_filters(
92+
name=name, names=names, name_contains=name_contains, name_regex=name_regex
93+
),
94+
# *self._build_time_cel_filters(
95+
# created_after=created_after,
96+
# created_before=created_before,
97+
# modified_after=modified_after,
98+
# modified_before=modified_before,
99+
# created_by=created_by,
100+
# modified_by=modified_by,
101+
# ),
102+
# *self._build_tags_metadata_cel_filters(metadata=metadata),
103+
*self._build_common_cel_filters(
104+
description_contains=description_contains,
105+
filter_query=filter_query,
106+
),
107+
]
108+
109+
entity_ids += [entity._id_or_error for entity in entities]
110+
111+
if entity_ids:
112+
filter_parts.append(cel.in_("entity_id", entity_ids))
113+
if entity_types:
114+
filter_parts.append(cel.in_("entity_type", [str(et) for et in entity_types]))
115+
if remote_file_ids:
116+
filter_parts.append(cel.in_("remote_file_id", remote_file_ids))
98117

99118
query_filter = cel.and_(*filter_parts)
100119

101120
file_attachments = await self._low_level_client.list_all_remote_files(
102121
query_filter=query_filter or None,
103122
order_by=order_by,
104123
max_results=limit,
105-
page_size=page_size,
106-
sift_client=self.client,
107124
)
108125
return self._apply_client_to_instances(file_attachments)
109126

python/lib/sift_client/sift_types/file_attachment.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def from_str(cls, val: str) -> RemoteFileEntityType | None:
3939
return cls(int(val))
4040

4141
def __str__(self) -> str:
42-
return self.name.lower()
42+
return "ENTITY_TYPE_" + self.name
4343

4444
@staticmethod
4545
def from_api_format(val: str) -> RemoteFileEntityType | None:

python/mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ plugins:
9898
show_symbol_type_heading: true
9999
show_symbol_type_toc: true
100100
summary: true
101+
inherited_members: true
101102
# Custom Griffe extension to inspect the sync stubs and generate their signatures
102103
extensions:
103104
- griffe_extensions/sync_stubs_inspector.py:InspectSpecificObjects:

0 commit comments

Comments
 (0)