luminarycloud 0.19.0__py3-none-any.whl → 0.22.0__py3-none-any.whl
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.
- luminarycloud/__init__.py +5 -1
- luminarycloud/_client/client.py +7 -0
- luminarycloud/_client/http_client.py +10 -8
- luminarycloud/_feature_flag.py +22 -0
- luminarycloud/_helpers/_create_simulation.py +7 -2
- luminarycloud/_helpers/_upload_mesh.py +1 -0
- luminarycloud/_helpers/_wait_for_mesh.py +6 -5
- luminarycloud/_helpers/_wait_for_simulation.py +3 -3
- luminarycloud/_helpers/download.py +3 -1
- luminarycloud/_helpers/pagination.py +62 -0
- luminarycloud/_helpers/proto_decorator.py +13 -5
- luminarycloud/_helpers/upload.py +18 -12
- luminarycloud/_proto/api/v0/luminarycloud/feature_flag/feature_flag_pb2.py +55 -0
- luminarycloud/_proto/api/v0/luminarycloud/feature_flag/feature_flag_pb2.pyi +52 -0
- luminarycloud/_proto/api/v0/luminarycloud/feature_flag/feature_flag_pb2_grpc.py +72 -0
- luminarycloud/_proto/api/v0/luminarycloud/feature_flag/feature_flag_pb2_grpc.pyi +35 -0
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.py +168 -124
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.pyi +133 -4
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.py +66 -0
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.pyi +20 -0
- luminarycloud/_proto/api/v0/luminarycloud/inference/inference_pb2.py +8 -8
- luminarycloud/_proto/api/v0/luminarycloud/inference/inference_pb2.pyi +5 -5
- luminarycloud/_proto/api/v0/luminarycloud/mesh/mesh_pb2.py +74 -73
- luminarycloud/_proto/api/v0/luminarycloud/mesh/mesh_pb2.pyi +17 -3
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2.py +96 -25
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2.pyi +235 -1
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2_grpc.py +34 -0
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2_grpc.pyi +12 -0
- luminarycloud/_proto/api/v0/luminarycloud/project/project_pb2.py +16 -16
- luminarycloud/_proto/api/v0/luminarycloud/project/project_pb2.pyi +7 -3
- luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2.py +97 -61
- luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2.pyi +77 -4
- luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2_grpc.py +34 -0
- luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2_grpc.pyi +12 -0
- luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2.py +33 -31
- luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2.pyi +23 -2
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.py +126 -27
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.pyi +183 -0
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2_grpc.py +99 -0
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2_grpc.pyi +30 -0
- luminarycloud/_proto/assistant/assistant_pb2.py +74 -41
- luminarycloud/_proto/assistant/assistant_pb2.pyi +64 -2
- luminarycloud/_proto/assistant/assistant_pb2_grpc.py +33 -0
- luminarycloud/_proto/assistant/assistant_pb2_grpc.pyi +10 -0
- luminarycloud/_proto/base/base_pb2.py +20 -7
- luminarycloud/_proto/base/base_pb2.pyi +38 -0
- luminarycloud/_proto/cad/shape_pb2.py +39 -19
- luminarycloud/_proto/cad/shape_pb2.pyi +86 -34
- luminarycloud/_proto/cad/transformation_pb2.py +60 -16
- luminarycloud/_proto/cad/transformation_pb2.pyi +138 -32
- luminarycloud/_proto/client/simulation_pb2.py +501 -348
- luminarycloud/_proto/client/simulation_pb2.pyi +607 -11
- luminarycloud/_proto/geometry/geometry_pb2.py +77 -63
- luminarycloud/_proto/geometry/geometry_pb2.pyi +42 -3
- luminarycloud/_proto/hexmesh/hexmesh_pb2.py +24 -18
- luminarycloud/_proto/hexmesh/hexmesh_pb2.pyi +23 -2
- luminarycloud/_proto/inferenceservice/inferenceservice_pb2.py +10 -10
- luminarycloud/_proto/inferenceservice/inferenceservice_pb2.pyi +5 -5
- luminarycloud/_proto/physicsaitrainingservice/physicsaitrainingservice_pb2.py +29 -0
- luminarycloud/_proto/physicsaitrainingservice/physicsaitrainingservice_pb2.pyi +7 -0
- luminarycloud/_proto/physicsaitrainingservice/physicsaitrainingservice_pb2_grpc.py +70 -0
- luminarycloud/_proto/physicsaitrainingservice/physicsaitrainingservice_pb2_grpc.pyi +30 -0
- luminarycloud/_proto/quantity/quantity_options_pb2.py +6 -6
- luminarycloud/_proto/quantity/quantity_options_pb2.pyi +10 -1
- luminarycloud/_proto/quantity/quantity_pb2.py +176 -167
- luminarycloud/_proto/quantity/quantity_pb2.pyi +11 -5
- luminarycloud/enum/__init__.py +1 -0
- luminarycloud/enum/gpu_type.py +2 -0
- luminarycloud/enum/quantity_type.py +9 -0
- luminarycloud/enum/vis_enums.py +23 -3
- luminarycloud/exceptions.py +7 -1
- luminarycloud/feature_modification.py +45 -35
- luminarycloud/geometry.py +107 -9
- luminarycloud/geometry_version.py +57 -3
- luminarycloud/mesh.py +1 -2
- luminarycloud/meshing/mesh_generation_params.py +8 -8
- luminarycloud/params/enum/_enum_wrappers.py +562 -30
- luminarycloud/params/simulation/adaptive_mesh_refinement_.py +4 -0
- luminarycloud/params/simulation/material/material_solid_.py +15 -1
- luminarycloud/params/simulation/physics/__init__.py +0 -1
- luminarycloud/params/simulation/physics/periodic_pair_.py +12 -31
- luminarycloud/physics_ai/architectures.py +58 -0
- luminarycloud/physics_ai/inference.py +13 -13
- luminarycloud/physics_ai/solution.py +3 -1
- luminarycloud/physics_ai/training_jobs.py +37 -0
- luminarycloud/pipelines/__init__.py +11 -3
- luminarycloud/pipelines/api.py +248 -16
- luminarycloud/pipelines/arguments.py +15 -0
- luminarycloud/pipelines/core.py +113 -96
- luminarycloud/pipelines/{operators.py → stages.py} +96 -39
- luminarycloud/project.py +15 -47
- luminarycloud/simulation.py +69 -5
- luminarycloud/simulation_param.py +0 -9
- luminarycloud/simulation_template.py +2 -1
- luminarycloud/types/matrix3.py +12 -0
- luminarycloud/vis/__init__.py +17 -0
- luminarycloud/vis/data_extraction.py +20 -4
- luminarycloud/vis/interactive_report.py +110 -0
- luminarycloud/vis/interactive_scene.py +29 -2
- luminarycloud/vis/report.py +252 -0
- luminarycloud/vis/visualization.py +127 -5
- luminarycloud/volume_selection.py +132 -69
- {luminarycloud-0.19.0.dist-info → luminarycloud-0.22.0.dist-info}/METADATA +1 -1
- {luminarycloud-0.19.0.dist-info → luminarycloud-0.22.0.dist-info}/RECORD +105 -97
- luminarycloud/params/simulation/physics/periodic_pair/__init__.py +0 -2
- luminarycloud/params/simulation/physics/periodic_pair/periodicity_type/__init__.py +0 -2
- luminarycloud/params/simulation/physics/periodic_pair/periodicity_type/rotational_periodicity_.py +0 -31
- luminarycloud/params/simulation/physics/periodic_pair/periodicity_type/translational_periodicity_.py +0 -29
- luminarycloud/params/simulation/physics/periodic_pair/periodicity_type_.py +0 -25
- {luminarycloud-0.19.0.dist-info → luminarycloud-0.22.0.dist-info}/WHEEL +0 -0
|
@@ -3,6 +3,7 @@ from datetime import datetime
|
|
|
3
3
|
|
|
4
4
|
from ._client import get_default_client
|
|
5
5
|
from ._helpers._timestamp_to_datetime import timestamp_to_datetime
|
|
6
|
+
from ._helpers.pagination import PaginationIterator
|
|
6
7
|
from ._proto.api.v0.luminarycloud.geometry import geometry_pb2 as geometrypb
|
|
7
8
|
from ._proto.geometry import geometry_pb2 as gpb
|
|
8
9
|
from ._wrapper import ProtoWrapper, ProtoWrapperBase
|
|
@@ -87,7 +88,7 @@ class GeometryVersion(ProtoWrapperBase):
|
|
|
87
88
|
]
|
|
88
89
|
return surfaces, volumes
|
|
89
90
|
|
|
90
|
-
def copy_to_new_geometry(self, name: str = "") -> Geometry:
|
|
91
|
+
def copy_to_new_geometry(self, name: str = "", request_id: str = "") -> Geometry:
|
|
91
92
|
"""
|
|
92
93
|
Copy this GeometryVersion and create a new Geometry containing only that newly copied version.
|
|
93
94
|
|
|
@@ -95,6 +96,11 @@ class GeometryVersion(ProtoWrapperBase):
|
|
|
95
96
|
----------
|
|
96
97
|
name : str, optional
|
|
97
98
|
The name of the new Geometry. If not provided, a default name will be used.
|
|
99
|
+
request_id : str, optional
|
|
100
|
+
A deduplication key, useful for idempotency. The first time copy_to_new_geometry() is
|
|
101
|
+
called with a given request_id, a new geometry will be created. Subsequent calls with
|
|
102
|
+
the same request_id will return the same geometry. If not provided, no deduplication is
|
|
103
|
+
done. Max length: 256 characters.
|
|
98
104
|
|
|
99
105
|
Returns
|
|
100
106
|
-------
|
|
@@ -104,6 +110,7 @@ class GeometryVersion(ProtoWrapperBase):
|
|
|
104
110
|
req = geometrypb.CopyGeometryFromVersionRequest(
|
|
105
111
|
geometry_version_id=self.id,
|
|
106
112
|
name=name,
|
|
113
|
+
request_id=request_id,
|
|
107
114
|
)
|
|
108
115
|
res: geometrypb.CopyGeometryFromVersionResponse = (
|
|
109
116
|
get_default_client().CopyGeometryFromVersion(req)
|
|
@@ -173,14 +180,39 @@ class GeometryVersion(ProtoWrapperBase):
|
|
|
173
180
|
return res.sdk_code
|
|
174
181
|
|
|
175
182
|
|
|
183
|
+
class GeometryVersionIterator(PaginationIterator[GeometryVersion]):
|
|
184
|
+
"""Iterator class for geometry versions that provides length hint."""
|
|
185
|
+
|
|
186
|
+
def __init__(self, geometry_id: str, unfiltered: bool, page_size: int):
|
|
187
|
+
super().__init__(page_size)
|
|
188
|
+
self._geometry_id: str = geometry_id
|
|
189
|
+
self._unfiltered: bool = unfiltered
|
|
190
|
+
|
|
191
|
+
def _fetch_page(
|
|
192
|
+
self, page_size: int, page_token: str
|
|
193
|
+
) -> tuple[list[GeometryVersion], str, int]:
|
|
194
|
+
req = geometrypb.ListGeometryVersionsRequest(
|
|
195
|
+
page_size=page_size,
|
|
196
|
+
page_token=page_token,
|
|
197
|
+
geometry_id=self._geometry_id,
|
|
198
|
+
unfiltered=self._unfiltered,
|
|
199
|
+
)
|
|
200
|
+
res = self._client.ListGeometryVersions(req)
|
|
201
|
+
return (
|
|
202
|
+
[GeometryVersion(gv) for gv in res.geometry_versions],
|
|
203
|
+
res.next_page_token,
|
|
204
|
+
res.total_count,
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
|
|
176
208
|
def get_geometry_version(id: str) -> GeometryVersion:
|
|
177
209
|
"""
|
|
178
|
-
Get a
|
|
210
|
+
Get a geometry version by its ID.
|
|
179
211
|
|
|
180
212
|
Parameters
|
|
181
213
|
----------
|
|
182
214
|
id : str
|
|
183
|
-
|
|
215
|
+
ID of the geometry version to get.
|
|
184
216
|
|
|
185
217
|
Returns
|
|
186
218
|
-------
|
|
@@ -191,3 +223,25 @@ def get_geometry_version(id: str) -> GeometryVersion:
|
|
|
191
223
|
req = geometrypb.GetGeometryVersionRequest(geometry_version_id=id)
|
|
192
224
|
res: geometrypb.GetGeometryVersionResponse = get_default_client().GetGeometryVersion(req)
|
|
193
225
|
return GeometryVersion(res.geometry_version)
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
def update_geometry_version(id: str, name: str) -> GeometryVersion:
|
|
229
|
+
"""
|
|
230
|
+
Update a geometry version.
|
|
231
|
+
|
|
232
|
+
Parameters
|
|
233
|
+
----------
|
|
234
|
+
id : str
|
|
235
|
+
ID of the geometry version to update.
|
|
236
|
+
name : str
|
|
237
|
+
The new name for the geometry version. Pass an empty string to clear the name.
|
|
238
|
+
|
|
239
|
+
Returns
|
|
240
|
+
-------
|
|
241
|
+
GeometryVersion
|
|
242
|
+
The updated GeometryVersion.
|
|
243
|
+
"""
|
|
244
|
+
|
|
245
|
+
req = geometrypb.UpdateGeometryVersionRequest(geometry_version_id=id, name=name)
|
|
246
|
+
res: geometrypb.UpdateGeometryVersionResponse = get_default_client().UpdateGeometryVersion(req)
|
|
247
|
+
return GeometryVersion(res.geometry_version)
|
luminarycloud/mesh.py
CHANGED
|
@@ -106,8 +106,7 @@ class Mesh(ProtoWrapperBase):
|
|
|
106
106
|
interval_seconds=interval_seconds,
|
|
107
107
|
timeout_seconds=timeout_seconds,
|
|
108
108
|
)
|
|
109
|
-
self.
|
|
110
|
-
return self.status
|
|
109
|
+
return self.refresh().status
|
|
111
110
|
|
|
112
111
|
def refresh(self) -> "Mesh":
|
|
113
112
|
"""
|
|
@@ -108,15 +108,15 @@ class RefinementRegion(PipelineDictable):
|
|
|
108
108
|
proto.name = self.name
|
|
109
109
|
proto.h_limit = self.h_limit
|
|
110
110
|
if isinstance(self.shape, Sphere):
|
|
111
|
-
proto.sphere.
|
|
112
|
-
proto.sphere.
|
|
111
|
+
proto.sphere.center_float.CopyFrom(self.shape.center._to_base_proto())
|
|
112
|
+
proto.sphere.radius_float = self.shape.radius
|
|
113
113
|
elif isinstance(self.shape, SphereShell):
|
|
114
114
|
proto.sphere_shell.center.CopyFrom(self.shape.center._to_base_proto())
|
|
115
115
|
proto.sphere_shell.radius = self.shape.radius
|
|
116
116
|
proto.sphere_shell.radius_inner = self.shape.radius_inner
|
|
117
117
|
elif isinstance(self.shape, Cube):
|
|
118
|
-
proto.cube.
|
|
119
|
-
proto.cube.
|
|
118
|
+
proto.cube.min_float.CopyFrom(self.shape.min._to_base_proto())
|
|
119
|
+
proto.cube.max_float.CopyFrom(self.shape.max._to_base_proto())
|
|
120
120
|
elif isinstance(self.shape, OrientedCube):
|
|
121
121
|
proto.oriented_cube.min.CopyFrom(self.shape.min._to_base_proto())
|
|
122
122
|
proto.oriented_cube.max.CopyFrom(self.shape.max._to_base_proto())
|
|
@@ -124,9 +124,9 @@ class RefinementRegion(PipelineDictable):
|
|
|
124
124
|
proto.oriented_cube.x_axis.CopyFrom(self.shape.x_axis._to_base_proto())
|
|
125
125
|
proto.oriented_cube.y_axis.CopyFrom(self.shape.y_axis._to_base_proto())
|
|
126
126
|
elif isinstance(self.shape, Cylinder):
|
|
127
|
-
proto.cylinder.
|
|
128
|
-
proto.cylinder.
|
|
129
|
-
proto.cylinder.
|
|
127
|
+
proto.cylinder.start_float.CopyFrom(self.shape.start._to_base_proto())
|
|
128
|
+
proto.cylinder.end_float.CopyFrom(self.shape.end._to_base_proto())
|
|
129
|
+
proto.cylinder.radius_float = self.shape.radius
|
|
130
130
|
elif isinstance(self.shape, AnnularCylinder):
|
|
131
131
|
proto.annular_cylinder.start.CopyFrom(self.shape.start._to_base_proto())
|
|
132
132
|
proto.annular_cylinder.end.CopyFrom(self.shape.end._to_base_proto())
|
|
@@ -143,7 +143,7 @@ class MeshGenerationParams(PipelineDictable):
|
|
|
143
143
|
|
|
144
144
|
geometry_id: str
|
|
145
145
|
"The ID of the geometry to generate a mesh for"
|
|
146
|
-
sizing_strategy: SizingStrategy = field(default_factory=
|
|
146
|
+
sizing_strategy: SizingStrategy = field(default_factory=Minimal)
|
|
147
147
|
"The sizing strategy to use"
|
|
148
148
|
|
|
149
149
|
# Defaults copied from ts/frontend/src/lib/paramDefaults/meshGenerationState.ts
|