Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
97eb31a
chore: update CHANGELOG for v0.9.0 (#1753)
pyansys-ci-bot Feb 17, 2025
1547839
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Mar 10, 2025
5a48878
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Mar 27, 2025
4109456
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Apr 8, 2025
e00316b
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu May 20, 2025
1afa37a
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Jun 11, 2025
7c595bb
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Jun 24, 2025
6a23076
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Jul 7, 2025
62ca792
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Jul 9, 2025
40c19c1
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Jul 28, 2025
40a13e2
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Sep 3, 2025
269ec5b
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Sep 22, 2025
6217f4a
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Sep 24, 2025
7a728c4
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Sep 25, 2025
6c462de
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Sep 30, 2025
3611a99
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Oct 8, 2025
c5a4e86
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Oct 11, 2025
ecd7567
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Oct 13, 2025
7e56087
adding tracker to components.
umutsoysalansys Oct 28, 2025
ec15305
parts and components update methods are added.
umutsoysalansys Nov 3, 2025
ec8f85e
Merge branch 'feat/component-tracking' into feat/tracking-updates
umutsoysalansys Nov 5, 2025
52d1011
temp hack to deal with flukes.
umutsoysalansys Nov 5, 2025
f78c491
response name is changed in backend.
umutsoysalansys Nov 5, 2025
f6c1272
rename fix
umutsoysalansys Nov 5, 2025
0e470ab
update methods to return the componets and parts
umutsoysalansys Nov 6, 2025
42a75d5
adding created components.
umutsoysalansys Nov 6, 2025
d1045ff
Update prepare_tools.py
umutsoysalansys Nov 6, 2025
e751e5a
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Nov 6, 2025
4936133
Update __init__.py
umutsoysalansys Nov 6, 2025
4399c80
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Nov 6, 2025
83b07dc
revert change
umutsoysalansys Nov 7, 2025
9f3de08
clean up
umutsoysalansys Nov 7, 2025
7dae04f
Update admin.py
umutsoysalansys Nov 7, 2025
f9e31f3
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Nov 7, 2025
c752837
Update admin.py
umutsoysalansys Nov 7, 2025
b902219
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Nov 7, 2025
f8718f7
Update test_design.py
umutsoysalansys Nov 10, 2025
387882e
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Nov 10, 2025
5b8451e
chore: adding changelog file 2359.added.md [dependabot-skip]
pyansys-ci-bot Nov 11, 2025
8b628a2
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Nov 18, 2025
f55daa8
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Nov 21, 2025
38324c1
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Nov 24, 2025
18f6686
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Nov 25, 2025
6147028
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Dec 1, 2025
85a9d0b
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Dec 1, 2025
a3de5c0
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Dec 2, 2025
df4f408
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Dec 3, 2025
5d166fb
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Dec 8, 2025
ab94a17
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Dec 9, 2025
98e2fec
fixes for tracker
smereu Dec 9, 2025
8336a35
fix enhancedsharetopology
smereu Dec 10, 2025
0180065
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 10, 2025
d03a7c3
Merge branch 'main' into feat/tracking-updates
umutsoysalansys Dec 10, 2025
f745363
chore: adding changelog file 2359.added.md [dependabot-skip]
pyansys-ci-bot Dec 10, 2025
bc629a4
chore: adding changelog file 2456.maintenance.md [dependabot-skip]
pyansys-ci-bot Dec 10, 2025
1a22362
Merge branch 'main' of https://github.com/ansys/pyansys-geometry
smereu Dec 10, 2025
a069ae4
Merge branch 'main' into ci/fix_tracker_issues
smereu Dec 10, 2025
15cf355
Push remaining outstanding changes for repair tool
smereu Dec 10, 2025
3af3d1a
Fix remaining failures in repair tools
smereu Dec 10, 2025
0901b2d
fix logo detection and respond to code review
smereu Dec 10, 2025
9556f0f
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 10, 2025
b0bd109
Merge branch 'main' into ci/fix_tracker_issues
jacobrkerstetter Dec 11, 2025
2c99760
Misc. fixes for proper handling of ids
smereu Dec 11, 2025
d84f5ea
Merge branch 'ci/fix_tracker_issues' of https://github.com/ansys/pyan…
smereu Dec 11, 2025
8b7260e
Merge branch 'main' into feat/tracking-updates
umutsoysalansys Dec 11, 2025
c36be31
fixing backward compat test
jacobrkerstetter Dec 11, 2025
d721470
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 11, 2025
5a7975e
Merge branch 'tracker_unified' into feat/tracking-updates
umutsoysalansys Dec 11, 2025
3c5b823
Merge branch 'main' into feat/tracking-updates
umutsoysalansys Dec 11, 2025
b044bae
Update conversions.py
umutsoysalansys Dec 11, 2025
c79f192
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 11, 2025
7a5a951
Update prepare_tools.py
umutsoysalansys Dec 11, 2025
e51417f
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Dec 11, 2025
0548156
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 11, 2025
f964a4d
Update repair_tools.py
umutsoysalansys Dec 11, 2025
1f4480c
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Dec 11, 2025
4fec65b
Update prepare_tools.py
umutsoysalansys Dec 11, 2025
87772de
Update __init__.py
umutsoysalansys Dec 11, 2025
d681891
test case
umutsoysalansys Dec 11, 2025
459cebf
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 11, 2025
2a80786
Update hollowCylinder1.dsco
umutsoysalansys Dec 11, 2025
05a794b
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Dec 11, 2025
10fdac8
object name difference in v1
umutsoysalansys Dec 13, 2025
d5ed2f9
added comment and rename
umutsoysalansys Dec 13, 2025
e82b5f1
type hints, refactorings
umutsoysalansys Dec 13, 2025
48687e8
type hints, clean ups
umutsoysalansys Dec 13, 2025
18a859e
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 13, 2025
ab4335f
clean up
umutsoysalansys Dec 13, 2025
a3bcb12
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Dec 13, 2025
e18019c
rename
umutsoysalansys Dec 15, 2025
97b1dbd
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 15, 2025
b462cf2
test_update
umutsoysalansys Dec 15, 2025
d6f4de3
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 15, 2025
dc30974
Update test_design.py
umutsoysalansys Dec 16, 2025
6f00363
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 16, 2025
53ab464
v0 clean up
umutsoysalansys Dec 16, 2025
4bfd4d6
chore: adding changelog file 2359.added.md [dependabot-skip]
pyansys-ci-bot Dec 16, 2025
7d0f611
Update test_design.py
umutsoysalansys Dec 16, 2025
a7c956e
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Dec 16, 2025
2b5e581
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 16, 2025
a990023
rename
umutsoysalansys Dec 16, 2025
233006e
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Dec 16, 2025
0c32390
Merge branch 'main' into feat/tracking-updates
jacobrkerstetter Dec 17, 2025
df19d44
test clean up
umutsoysalansys Dec 17, 2025
847dd63
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Dec 17, 2025
660b3f7
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 17, 2025
b43971a
test files are added.
umutsoysalansys Dec 18, 2025
bba0ee0
re adding objects
umutsoysalansys Dec 18, 2025
5dba072
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 18, 2025
274fa11
Update edges.py
umutsoysalansys Dec 18, 2025
b6b7f9a
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Dec 18, 2025
1e03f3a
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 18, 2025
63381e7
clean up
umutsoysalansys Dec 18, 2025
33748fe
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Dec 18, 2025
0ef22cd
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 18, 2025
1aa24cf
test clean ups due to serializer updates
umutsoysalansys Dec 18, 2025
209df9f
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Dec 18, 2025
f87ca22
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 18, 2025
a4e9702
excluding new tests from old api tests.
umutsoysalansys Dec 18, 2025
6b2ff17
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Dec 18, 2025
ac6c6dd
chore: auto fixes from pre-commit hooks
pre-commit-ci[bot] Dec 18, 2025
50f3c8d
serialize response before passing back
umutsoysalansys Dec 18, 2025
a7d074d
Merge branch 'feat/tracking-updates' of https://github.com/ansys/pyan…
umutsoysalansys Dec 18, 2025
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
1 change: 1 addition & 0 deletions doc/changelog.d/2359.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Tracking updates
4 changes: 3 additions & 1 deletion src/ansys/geometry/core/_grpc/_services/v1/bodies.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
from_tess_options_to_grpc_tess_options,
from_trimmed_curve_to_grpc_trimmed_curve,
from_unit_vector_to_grpc_direction,
serialize_tracked_command_response,
)


Expand Down Expand Up @@ -1006,8 +1007,9 @@ def boolean(self, **kwargs) -> dict: # noqa: D102
if not response.tracked_command_response.command_response.success:
raise ValueError(f"Boolean operation failed: {kwargs['err_msg']}")

serialized_response = serialize_tracked_command_response(response.tracked_command_response)
# Return the response - formatted as a dictionary
return {"complete_command_response": response}
return {"complete_command_response": serialized_response}

@protect_grpc
def combine(self, **kwargs) -> dict: # noqa: D102
Expand Down
311 changes: 255 additions & 56 deletions src/ansys/geometry/core/_grpc/_services/v1/conversions.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@
Quantity as GRPCQuantity,
)
from ansys.api.discovery.v1.design.designmessages_pb2 import (
BodyEntity as GRPCBodyEntity,
ComponentEntity as GRPCComponentEntity,
CurveGeometry as GRPCCurveGeometry,
DatumPointEntity as GRPCDesignPoint,
DrivingDimensionEntity as GRPCDrivingDimension,
Expand All @@ -55,6 +57,7 @@
Matrix as GRPCMatrix,
NurbsCurve as GRPCNurbsCurve,
NurbsSurface as GRPCNurbsSurface,
PartEntity as GRPCPartEntity,
Surface as GRPCSurface,
Tessellation as GRPCTessellation,
TessellationOptions as GRPCTessellationOptions,
Expand Down Expand Up @@ -1654,6 +1657,178 @@ def from_enclosure_options_to_grpc_enclosure_options(
)


def serialize_body(body: GRPCBodyEntity) -> dict:
"""Serialize a GRPCBodyEntity object into a dictionary.

It is not directly converted to a pygeometry object because we'll assign it in place and
construct the object while updating the design object by the tracker output.

Parameters
----------
body : GRPCBodyEntity
The gRPC BodyEntity object to serialize.

Returns
-------
dict
A dictionary representation of the BodyEntity object without gRPC dependencies.
"""
# Extract basic fields
body_id = body.id.id
body_name = body.name
body_can_suppress = body.can_suppress
body_master_id = (
body.master_id.id.id
if hasattr(body.master_id, "id") and hasattr(body.master_id.id, "id")
else (body.master_id.id if hasattr(body.master_id, "id") else "")
)
body_parent_id = (
body.parent_id.id.id
if hasattr(body.parent_id, "id") and hasattr(body.parent_id.id, "id")
else (body.parent_id.id if hasattr(body.parent_id, "id") else "")
)
body_is_surface = body.is_surface

# Extract transform_to_master matrix
transform_m00 = body.transform_to_master.m00
transform_m11 = body.transform_to_master.m11
transform_m22 = body.transform_to_master.m22
transform_m33 = body.transform_to_master.m33

transform_to_master = {
"m00": transform_m00,
"m11": transform_m11,
"m22": transform_m22,
"m33": transform_m33,
}

return {
"id": body_id,
"name": body_name,
"can_suppress": body_can_suppress,
"transform_to_master": transform_to_master,
"master_id": body_master_id,
"parent_id": body_parent_id,
"is_surface": body_is_surface,
}


def serialize_component(component: GRPCComponentEntity) -> dict:
"""Serialize a GRPCComponentEntity object into a dictionary.

Parameters
----------
component : GRPCComponentEntity
The gRPC ComponentEntity object to serialize.

Returns
-------
dict
A dictionary representation of the ComponentEntity object without gRPC dependencies.
"""

def extract_id(obj):
if hasattr(obj, "id"):
if hasattr(obj.id, "id"):
return obj.id.id
return obj.id
return ""

# Extract basic fields
component_id = component.id.id
component_name = component.name
component_display_name = component.display_name

# Extract part_occurrence
part_occurrence = None
if hasattr(component, "part_occurrence"):
part_occurrence_id = extract_id(component.part_occurrence)
part_occurrence_name = component.part_occurrence.name
part_occurrence = {
"id": part_occurrence_id,
"name": part_occurrence_name,
}

# Extract placement matrix
placement_m00 = 1.0
placement_m11 = 1.0
placement_m22 = 1.0
placement_m33 = 1.0
if hasattr(component, "placement"):
placement_m00 = component.placement.m00
placement_m11 = component.placement.m11
placement_m22 = component.placement.m22
placement_m33 = component.placement.m33

placement = {
"m00": placement_m00,
"m11": placement_m11,
"m22": placement_m22,
"m33": placement_m33,
}

# Extract part_master
part_master = None
if hasattr(component, "part_master"):
part_master_id = extract_id(component.part_master)
part_master_name = component.part_master.name
part_master = {
"id": part_master_id,
"name": part_master_name,
}

# Extract master_id and parent_id
master_id = extract_id(component.master_id) if hasattr(component, "master_id") else ""
parent_id = extract_id(component.parent_id) if hasattr(component, "parent_id") else ""

return {
"id": component_id,
"name": component_name,
"display_name": component_display_name,
"part_occurrence": part_occurrence,
"placement": placement,
"part_master": part_master,
"master_id": master_id,
"parent_id": parent_id,
}


def serialize_part(part: GRPCPartEntity) -> dict:
"""Serialize a GRPCPartEntity object into a dictionary.

Parameters
----------
part : GRPCPartEntity
The gRPC PartEntity object to serialize.

Returns
-------
dict
A dictionary representation of the PartEntity object without gRPC dependencies.
"""
return {
"id": part.id.id,
}


def serialize_entity_identifier(entity: EntityIdentifier) -> dict:
"""Serialize an EntityIdentifier object into a dictionary.

Parameters
----------
entity : EntityIdentifier
The gRPC EntityIdentifier object to serialize.

Returns
-------
dict
A dictionary representation of the EntityIdentifier object without gRPC dependencies.
"""
return {
"id": entity.id,
}


def serialize_tracked_command_response(response: GRPCTrackedCommandResponse) -> dict:
"""Serialize a TrackedCommandResponse object into a dictionary.

Expand All @@ -1667,66 +1842,90 @@ def serialize_tracked_command_response(response: GRPCTrackedCommandResponse) ->
dict
A dictionary representation of the TrackedCommandResponse object.
"""
# Extract command response success status
success = getattr(response.command_response, "success", False)

def serialize_body(body):
return {
"id": body.id,
"name": body.name,
"can_suppress": body.can_suppress,
"transform_to_master": {
"m00": body.transform_to_master.m00,
"m11": body.transform_to_master.m11,
"m22": body.transform_to_master.m22,
"m33": body.transform_to_master.m33,
},
"master_id": body.master_id,
"parent_id": body.parent_id,
"is_surface": body.is_surface,
}
# Extract tracked changes
tracked_changes = response.tracked_changes

def serialize_entity_identifier(entity):
"""Serialize an EntityIdentifier object into a dictionary."""
return {
"id": entity.id,
}
# Extract and serialize parts
created_parts = [serialize_part(part) for part in getattr(tracked_changes, "created_parts", [])]
modified_parts = [
serialize_part(part) for part in getattr(tracked_changes, "modified_parts", [])
]
deleted_parts = [
serialize_entity_identifier(entity)
for entity in getattr(tracked_changes, "deleted_parts", [])
]

# Extract and serialize components
created_components = [
serialize_component(component)
for component in getattr(tracked_changes, "created_components", [])
]
modified_components = [
serialize_component(component)
for component in getattr(tracked_changes, "modified_components", [])
]
deleted_components = [
serialize_entity_identifier(entity)
for entity in getattr(tracked_changes, "deleted_components", [])
]

# Extract and serialize bodies
created_bodies = [
serialize_body(body) for body in getattr(tracked_changes, "created_bodies", [])
]
modified_bodies = [
serialize_body(body) for body in getattr(tracked_changes, "modified_bodies", [])
]
deleted_bodies = [
serialize_entity_identifier(entity)
for entity in getattr(tracked_changes, "deleted_bodies", [])
]

created_faces = [
serialize_entity_identifier(entity)
for entity in getattr(tracked_changes, "created_faces", [])
]
modified_faces = [
serialize_entity_identifier(entity)
for entity in getattr(tracked_changes, "modified_faces", [])
]
deleted_faces = [
serialize_entity_identifier(entity)
for entity in getattr(tracked_changes, "deleted_faces", [])
]
created_edges = [
serialize_entity_identifier(entity)
for entity in getattr(tracked_changes, "created_edges", [])
]
modified_edges = [
serialize_entity_identifier(entity)
for entity in getattr(tracked_changes, "modified_edges", [])
]
deleted_edges = [
serialize_entity_identifier(entity)
for entity in getattr(tracked_changes, "deleted_edges", [])
]

return {
"success": getattr(response.command_response, "success", False),
"created_bodies": [
serialize_body(body) for body in getattr(response.tracked_changes, "created_bodies", [])
],
"modified_bodies": [
serialize_body(body)
for body in getattr(response.tracked_changes, "modified_bodies", [])
],
"deleted_bodies": [
serialize_entity_identifier(entity)
for entity in getattr(response.tracked_changes, "deleted_bodies", [])
],
"created_faces": [
serialize_entity_identifier(entity)
for entity in getattr(response.tracked_changes, "created_face_ids", [])
],
"modified_faces": [
serialize_entity_identifier(entity)
for entity in getattr(response.tracked_changes, "modified_face_ids", [])
],
"deleted_faces": [
Copy link
Contributor

Choose a reason for hiding this comment

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

@jacobrkerstetter Faces and edges are always queried from the server so we weren't planning to track them. I am not sure if @umutsoysalansys removed them intentionally but we may need to discuss whether there was a need for them

serialize_entity_identifier(entity)
for entity in getattr(response.tracked_changes, "deleted_face_ids", [])
],
"created_edges": [
serialize_entity_identifier(entity)
for entity in getattr(response.tracked_changes, "created_edge_ids", [])
],
"modified_edges": [
serialize_entity_identifier(entity)
for entity in getattr(response.tracked_changes, "modified_edge_ids", [])
],
"deleted_edges": [
serialize_entity_identifier(entity)
for entity in getattr(response.tracked_changes, "deleted_edge_ids", [])
],
"success": success,
"created_parts": created_parts,
"modified_parts": modified_parts,
"deleted_parts": deleted_parts,
"created_components": created_components,
"modified_components": modified_components,
"deleted_components": deleted_components,
"created_bodies": created_bodies,
"modified_bodies": modified_bodies,
"deleted_bodies": deleted_bodies,
"created_faces": created_faces,
"modified_faces": modified_faces,
"deleted_faces": deleted_faces,
"created_edges": created_edges,
"modified_edges": modified_edges,
"deleted_edges": deleted_edges,
}


Expand Down
8 changes: 2 additions & 6 deletions src/ansys/geometry/core/_grpc/_services/v1/edges.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,9 +222,7 @@ def extrude_edges(self, **kwargs) -> dict: # noqa: D102
# Return the response - formatted as a dictionary
return {
"success": tracked_response.get("success"),
"created_bodies": [
body.get("id").id for body in tracked_response.get("created_bodies")
],
"created_bodies": [body.get("id") for body in tracked_response.get("created_bodies")],
}

@protect_grpc
Expand Down Expand Up @@ -254,9 +252,7 @@ def extrude_edges_up_to(self, **kwargs) -> dict: # noqa: D102
# Return the response - formatted as a dictionary
return {
"success": tracked_response.get("success"),
"created_bodies": [
body.get("id").id for body in tracked_response.get("created_bodies")
],
"created_bodies": [body.get("id") for body in tracked_response.get("created_bodies")],
}

@protect_grpc
Expand Down
Loading
Loading