luminarycloud 0.15.2__py3-none-any.whl → 0.15.4__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 +1 -0
- luminarycloud/_helpers/_code_representation.py +44 -19
- luminarycloud/_helpers/_create_simulation.py +2 -0
- luminarycloud/_helpers/_entity_identifier.py +6 -0
- luminarycloud/_helpers/named_variables.py +6 -15
- luminarycloud/_helpers/warnings/experimental.py +6 -2
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.py +103 -81
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.pyi +37 -1
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.py +33 -0
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.pyi +10 -0
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2.py +45 -15
- luminarycloud/_proto/api/v0/luminarycloud/physics_ai/physics_ai_pb2.pyi +104 -22
- luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2.py +46 -46
- luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2.pyi +7 -1
- luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2.py +12 -12
- luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2.pyi +10 -2
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.py +221 -143
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.pyi +154 -7
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2_grpc.py +33 -0
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2_grpc.pyi +10 -0
- luminarycloud/_proto/assistant/assistant_pb2.py +92 -71
- luminarycloud/_proto/assistant/assistant_pb2.pyi +58 -11
- luminarycloud/_proto/assistant/assistant_pb2_grpc.py +47 -13
- luminarycloud/_proto/assistant/assistant_pb2_grpc.pyi +18 -6
- luminarycloud/_proto/client/simulation_pb2.py +373 -324
- luminarycloud/_proto/client/simulation_pb2.pyi +123 -3
- luminarycloud/_proto/fvm/solver_results_pb2.py +25 -11
- luminarycloud/_proto/fvm/solver_results_pb2.pyi +24 -1
- luminarycloud/_proto/geometry/geometry_pb2.py +64 -63
- luminarycloud/_proto/geometry/geometry_pb2.pyi +11 -3
- luminarycloud/_proto/hexmesh/hexmesh_pb2.py +18 -14
- luminarycloud/_proto/hexmesh/hexmesh_pb2.pyi +14 -4
- luminarycloud/_proto/named_variable_set/named_variable_set_pb2.py +49 -0
- luminarycloud/_proto/named_variable_set/named_variable_set_pb2.pyi +53 -0
- luminarycloud/_proto/namedvariableset/namedvariableset_pb2.py +49 -0
- luminarycloud/_proto/namedvariableset/namedvariableset_pb2.pyi +53 -0
- luminarycloud/_proto/quantity/quantity_pb2.py +8 -5
- luminarycloud/_proto/quantity/quantity_pb2.pyi +2 -0
- luminarycloud/_wrapper.py +26 -7
- luminarycloud/enum/__init__.py +5 -0
- luminarycloud/enum/physics_ai_lifecycle_state.py +30 -0
- luminarycloud/enum/quantity_type.py +43 -0
- luminarycloud/enum/vis_enums.py +6 -2
- luminarycloud/geometry.py +46 -2
- luminarycloud/meshing/mesh_generation_params.py +6 -5
- luminarycloud/meshing/sizing_strategy/sizing_strategies.py +2 -1
- luminarycloud/named_variable_set.py +13 -6
- luminarycloud/params/enum/_enum_wrappers.py +68 -0
- luminarycloud/params/simulation/_lib.py +1 -1
- luminarycloud/params/simulation/adaptive_mesh_refinement/boundary_layer_profile_.py +5 -6
- luminarycloud/params/simulation/adaptive_mesh_refinement_.py +6 -7
- luminarycloud/params/simulation/adjoint_.py +3 -4
- luminarycloud/params/simulation/basic/gravity/gravity_off_.py +3 -4
- luminarycloud/params/simulation/basic/gravity/gravity_on_.py +3 -4
- luminarycloud/params/simulation/basic/gravity_.py +3 -4
- luminarycloud/params/simulation/body_frame_.py +3 -4
- luminarycloud/params/simulation/entity_relationships/volume_material_relationship_.py +9 -6
- luminarycloud/params/simulation/entity_relationships/volume_physics_relationship_.py +9 -6
- luminarycloud/params/simulation/entity_relationships_.py +3 -4
- luminarycloud/params/simulation/general_.py +3 -4
- luminarycloud/params/simulation/material/fluid/boussinesq_approximation/boussinesq_off_.py +3 -4
- luminarycloud/params/simulation/material/fluid/boussinesq_approximation/boussinesq_on_.py +5 -6
- luminarycloud/params/simulation/material/fluid/boussinesq_approximation_.py +3 -4
- luminarycloud/params/simulation/material/fluid/material_model/ideal_gas_.py +5 -6
- luminarycloud/params/simulation/material/fluid/material_model/incompressible_fluid_.py +4 -5
- luminarycloud/params/simulation/material/fluid/material_model/incompressible_fluid_with_energy_.py +5 -6
- luminarycloud/params/simulation/material/fluid/material_model_.py +3 -4
- luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/prescribed_conductivity_.py +4 -5
- luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/prescribed_prandtl_number_.py +4 -5
- luminarycloud/params/simulation/material/fluid/thermal_conductivity_model/temperature_dependent_conductivity_.py +3 -4
- luminarycloud/params/simulation/material/fluid/thermal_conductivity_model_.py +3 -4
- luminarycloud/params/simulation/material/fluid/viscosity_model/prescribed_viscosity_.py +4 -5
- luminarycloud/params/simulation/material/fluid/viscosity_model/sutherland_.py +6 -7
- luminarycloud/params/simulation/material/fluid/viscosity_model/temperature_dependent_viscosity_.py +3 -4
- luminarycloud/params/simulation/material/fluid/viscosity_model_.py +3 -4
- luminarycloud/params/simulation/material/material_fluid_.py +4 -5
- luminarycloud/params/simulation/material/material_solid_.py +6 -7
- luminarycloud/params/simulation/material_entity_.py +6 -5
- luminarycloud/params/simulation/monitor_plane_.py +4 -5
- luminarycloud/params/simulation/motion_data/frame_transforms/no_transform_.py +3 -4
- luminarycloud/params/simulation/motion_data/frame_transforms/rotational_transform_.py +3 -4
- luminarycloud/params/simulation/motion_data/frame_transforms/translational_transform_.py +3 -4
- luminarycloud/params/simulation/motion_data/frame_transforms_.py +3 -4
- luminarycloud/params/simulation/motion_data/motion_type/constant_angular_motion_.py +3 -4
- luminarycloud/params/simulation/motion_data/motion_type/constant_translation_motion_.py +3 -4
- luminarycloud/params/simulation/motion_data/motion_type_.py +3 -4
- luminarycloud/params/simulation/motion_data_.py +3 -4
- luminarycloud/params/simulation/multi_physics_coupling_options_.py +3 -4
- luminarycloud/params/simulation/output_.py +3 -4
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection/actuator_disk_specify_normal_vector_.py +3 -4
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection/actuator_disk_specify_rotation_angles_.py +3 -4
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection_.py +3 -4
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk_.py +5 -6
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_line_.py +3 -4
- luminarycloud/params/simulation/particle_group/particle_group_type/probe_points_.py +3 -4
- luminarycloud/params/simulation/particle_group/particle_group_type/source_points_.py +3 -4
- luminarycloud/params/simulation/particle_group/particle_group_type_.py +3 -4
- luminarycloud/params/simulation/particle_group_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/adjoint_controls_fluid_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/basic_fluid_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/farfield_.py +9 -10
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/fan_curve_inlet_.py +5 -6
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/mach_inlet_.py +5 -6
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/mass_flow_inlet_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/total_pressure_inlet_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/velocity_components_inlet_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/velocity_magnitude_inlet_.py +5 -6
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/fan_curve_outlet_.py +5 -6
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_pressure_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_target_corrected_mass_flow_rate_.py +7 -8
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_target_mass_flow_rate_.py +5 -6
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet/outlet_strategy_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/outlet_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/symmetry_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/turbulence_boundary_conditions_.py +9 -10
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/energy/prescribed_heat_flux_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/energy/prescribed_temperature_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/no_slip_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/slip_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/momentum/wall_model_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/wall_energy_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall/wall_momentum_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/wall_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions_fluid_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/initialization/fluid_existing_solution_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/initialization/fluid_farfield_values_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/initialization/fluid_prescribed_values_.py +5 -6
- luminarycloud/params/simulation/physics/fluid/initialization/turbulence_initialization_.py +9 -10
- luminarycloud/params/simulation/physics/fluid/initialization_fluid_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/physical_behavior/blade_element_airfoil_data_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_blade_element_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_radial_distribution_.py +6 -7
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_uniform_thrust_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/fan_curve_internal_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_line_model/actuator_line_blade_element_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/actuator_line_model_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/blade_element_params_.py +5 -6
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model/general_acceleration_source_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model/general_mass_source_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/physical_behavior/physical_behavior_model_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/physical_behavior_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/porous_behavior_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_explicit_relaxation_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/robust_startup_off_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/robust_startup_on_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation_.py +8 -9
- luminarycloud/params/simulation/physics/fluid/solution_controls/fluid_relaxation_method_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method/cfl_based_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method/fixed_pseudo_time_step_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/solution_controls/pseudo_time_step_method_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/solution_controls_fluid_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/ec2_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/fds_.py +5 -6
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/ld2_.py +5 -6
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme/rhie_chow_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order/first_order_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order/second_order_.py +8 -9
- luminarycloud/params/simulation/physics/fluid/spatial_discretization/convective_scheme_order_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/spatial_discretization_fluid_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/ddes_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/ddes_vtm_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation/iddes_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/turbulence/des_formulation_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/constants/custom_komega_sst_constants_.py +16 -17
- luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/constants/default_komega_sst_constants_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst/komega_sst_constants_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/turbulence/komega_sst_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/constants/custom_spalart_allmaras_constants_.py +15 -16
- luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/constants/default_spalart_allmaras_constants_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras/spalart_allmaras_constants_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/turbulence/spalart_allmaras_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/amd_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/sigma_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/smagorinsky_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/vreman_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model/wale_.py +4 -5
- luminarycloud/params/simulation/physics/fluid/turbulence/sub_grid_scale_model_.py +3 -4
- luminarycloud/params/simulation/physics/fluid/turbulence_.py +5 -6
- luminarycloud/params/simulation/physics/fluid_.py +7 -6
- luminarycloud/params/simulation/physics/heat/adjoint_controls_heat_.py +3 -4
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_convection_.py +5 -6
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_heat_flux_.py +4 -5
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_integrated_heat_flux_.py +4 -5
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_symmetry_.py +3 -4
- luminarycloud/params/simulation/physics/heat/boundary_conditions/heat_bc_temperature_.py +4 -5
- luminarycloud/params/simulation/physics/heat/boundary_conditions_heat_.py +3 -4
- luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type/heat_source_type_power_.py +4 -5
- luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type/heat_source_type_power_per_unit_of_volume_.py +4 -5
- luminarycloud/params/simulation/physics/heat/heat_source/heat_source_type_.py +3 -4
- luminarycloud/params/simulation/physics/heat/heat_source_.py +3 -4
- luminarycloud/params/simulation/physics/heat/initialization/heat_existing_solution_.py +3 -4
- luminarycloud/params/simulation/physics/heat/initialization/heat_prescribed_values_.py +4 -5
- luminarycloud/params/simulation/physics/heat/initialization_heat_.py +3 -4
- luminarycloud/params/simulation/physics/heat/solution_controls/heat_relaxation_method/heat_implicit_relaxation_.py +3 -4
- luminarycloud/params/simulation/physics/heat/solution_controls/heat_relaxation_method_.py +3 -4
- luminarycloud/params/simulation/physics/heat/solution_controls_heat_.py +3 -4
- luminarycloud/params/simulation/physics/heat/spatial_discretization_heat_.py +5 -6
- luminarycloud/params/simulation/physics/heat_.py +5 -5
- luminarycloud/params/simulation/physics/periodic_pair/periodicity_type/rotational_periodicity_.py +3 -4
- luminarycloud/params/simulation/physics/periodic_pair/periodicity_type/translational_periodicity_.py +3 -4
- luminarycloud/params/simulation/physics/periodic_pair/periodicity_type_.py +3 -4
- luminarycloud/params/simulation/physics/periodic_pair_.py +3 -4
- luminarycloud/params/simulation/physics/solution_controls/linear_solver_type/gauss_seidel_.py +3 -4
- luminarycloud/params/simulation/physics/solution_controls/linear_solver_type/krylov_amg_.py +4 -5
- luminarycloud/params/simulation/physics/solution_controls/linear_solver_type_.py +4 -5
- luminarycloud/params/simulation/physics_.py +6 -5
- luminarycloud/params/simulation/simulation_param_.py +3 -4
- luminarycloud/params/simulation/sliding_interfaces_.py +3 -4
- luminarycloud/params/simulation/surface_name_.py +3 -4
- luminarycloud/params/simulation/time/compute_statistics/compute_statistics_off_.py +3 -4
- luminarycloud/params/simulation/time/compute_statistics/compute_statistics_on_.py +3 -4
- luminarycloud/params/simulation/time/compute_statistics_.py +3 -4
- luminarycloud/params/simulation/time/time_marching/time_explicit_.py +3 -4
- luminarycloud/params/simulation/time/time_marching/time_implicit_.py +3 -4
- luminarycloud/params/simulation/time/time_marching_.py +3 -4
- luminarycloud/params/simulation/time/time_step_ramp/time_step_ramp_off_.py +3 -4
- luminarycloud/params/simulation/time/time_step_ramp/time_step_ramp_on_.py +4 -5
- luminarycloud/params/simulation/time/time_step_ramp_.py +3 -4
- luminarycloud/params/simulation/time_.py +4 -5
- luminarycloud/params/simulation/volume_entity_.py +6 -5
- luminarycloud/physics_ai/__init__.py +2 -0
- luminarycloud/physics_ai/architectures.py +42 -8
- luminarycloud/physics_ai/inference.py +0 -2
- luminarycloud/physics_ai/models.py +44 -15
- luminarycloud/pipeline_util/dictable.py +27 -0
- luminarycloud/pipeline_util/yaml.py +55 -0
- luminarycloud/pipelines/__init__.py +29 -0
- luminarycloud/pipelines/core.py +225 -0
- luminarycloud/pipelines/operators.py +197 -0
- luminarycloud/pipelines/parameters.py +42 -0
- luminarycloud/project.py +60 -9
- luminarycloud/simulation.py +35 -4
- luminarycloud/simulation_param.py +16 -12
- luminarycloud/simulation_template.py +31 -12
- luminarycloud/solution.py +1 -1
- luminarycloud/types/__init__.py +2 -0
- luminarycloud/types/adfloat.py +50 -8
- luminarycloud/types/ids.py +2 -0
- luminarycloud/types/vector3.py +2 -1
- luminarycloud/vis/__init__.py +12 -5
- luminarycloud/vis/data_extraction.py +546 -0
- luminarycloud/vis/display.py +64 -8
- luminarycloud/vis/filters.py +183 -43
- luminarycloud/vis/interactive_scene.py +2 -1
- luminarycloud/vis/primitives.py +38 -0
- luminarycloud/vis/vis_util.py +56 -0
- luminarycloud/vis/visualization.py +241 -71
- {luminarycloud-0.15.2.dist-info → luminarycloud-0.15.4.dist-info}/METADATA +3 -1
- {luminarycloud-0.15.2.dist-info → luminarycloud-0.15.4.dist-info}/RECORD +255 -240
- {luminarycloud-0.15.2.dist-info → luminarycloud-0.15.4.dist-info}/WHEEL +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# Copyright 2023-2024 Luminary Cloud, Inc. All Rights Reserved.
|
|
1
2
|
import dataclasses as dc
|
|
2
3
|
import io
|
|
3
4
|
import json
|
|
@@ -7,23 +8,47 @@ from time import sleep, time
|
|
|
7
8
|
from typing import Dict, List, Tuple, cast
|
|
8
9
|
|
|
9
10
|
import luminarycloud._proto.api.v0.luminarycloud.common.common_pb2 as common_pb2
|
|
10
|
-
import requests
|
|
11
11
|
from luminarycloud.params.simulation.physics.fluid.boundary_conditions import Farfield
|
|
12
12
|
from luminarycloud.types import Vector3, Vector3Like
|
|
13
13
|
|
|
14
14
|
from .._client import get_default_client
|
|
15
15
|
from .._helpers._get_project_id import _get_project_id
|
|
16
|
+
from .._proto.quantity import quantity_pb2 as quantitypb
|
|
16
17
|
from .._proto.api.v0.luminarycloud.vis import vis_pb2
|
|
17
|
-
from ..
|
|
18
|
+
from ..types import SimulationID, MeshID
|
|
19
|
+
from luminarycloud.enum import (
|
|
20
|
+
CameraDirection,
|
|
21
|
+
CameraProjection,
|
|
22
|
+
RenderStatusType,
|
|
23
|
+
EntityType,
|
|
24
|
+
SceneMode,
|
|
25
|
+
VisQuantity,
|
|
26
|
+
FieldComponent,
|
|
27
|
+
Representation,
|
|
28
|
+
ColorMapPreset,
|
|
29
|
+
)
|
|
18
30
|
from ..exceptions import NotFoundError
|
|
19
31
|
from ..geometry import Geometry, get_geometry
|
|
20
32
|
from ..mesh import Mesh, get_mesh, get_mesh_metadata
|
|
21
33
|
from ..simulation import get_simulation
|
|
22
34
|
from ..solution import Solution
|
|
23
35
|
from ..types.vector3 import _to_vector3
|
|
24
|
-
from .display import ColorMap, ColorMapAppearance, DisplayAttributes, Field
|
|
25
|
-
from .filters import
|
|
36
|
+
from .display import ColorMap, ColorMapAppearance, DisplayAttributes, Field, DataRange
|
|
37
|
+
from .filters import (
|
|
38
|
+
BoxClip,
|
|
39
|
+
Filter,
|
|
40
|
+
PlaneClip,
|
|
41
|
+
Slice,
|
|
42
|
+
SurfaceStreamlines,
|
|
43
|
+
SurfaceLIC,
|
|
44
|
+
Threshold,
|
|
45
|
+
RakeStreamlines,
|
|
46
|
+
ScaledVectorGlyphs,
|
|
47
|
+
FixedSizeVectorGlyphs,
|
|
48
|
+
Isosurface,
|
|
49
|
+
)
|
|
26
50
|
from .interactive_scene import InteractiveScene
|
|
51
|
+
from .vis_util import _InternalToken, _download_file, _get_status
|
|
27
52
|
|
|
28
53
|
logger = logging.getLogger(__name__)
|
|
29
54
|
|
|
@@ -63,6 +88,18 @@ class DirectionalCamera:
|
|
|
63
88
|
1.0
|
|
64
89
|
"""
|
|
65
90
|
|
|
91
|
+
def _from_proto(self, static_ani: vis_pb2.AnimationSettingsStatic) -> None:
|
|
92
|
+
"""Populate this DirectionalCamera from a proto static animation property."""
|
|
93
|
+
c_typ = static_ani.camera.WhichOneof("specification")
|
|
94
|
+
if c_typ != "direction":
|
|
95
|
+
raise TypeError(f"Expected 'direction' camera type, got {c_typ}. ")
|
|
96
|
+
self.label = static_ani.label if static_ani.label else ""
|
|
97
|
+
self.direction = CameraDirection(static_ani.camera.direction)
|
|
98
|
+
self.zoom_in = static_ani.camera.zoom
|
|
99
|
+
self.width = static_ani.resolution.width
|
|
100
|
+
self.height = static_ani.resolution.height
|
|
101
|
+
self.projection = CameraProjection(static_ani.camera.projection)
|
|
102
|
+
|
|
66
103
|
|
|
67
104
|
@dc.dataclass
|
|
68
105
|
class LookAtCamera:
|
|
@@ -104,11 +141,23 @@ class LookAtCamera:
|
|
|
104
141
|
scene where pan is used (i.e., control + middle mouse).
|
|
105
142
|
"""
|
|
106
143
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
144
|
+
def _from_proto(self, static_ani: vis_pb2.AnimationSettingsStatic) -> None:
|
|
145
|
+
"""Populate this LookAtCamera from a proto static animation property."""
|
|
146
|
+
c_typ = static_ani.camera.WhichOneof("specification")
|
|
147
|
+
if c_typ != "look_at":
|
|
148
|
+
raise TypeError(f"Expected 'look_at' camera type, got {c_typ}. ")
|
|
149
|
+
self.label = static_ani.label if static_ani.label else ""
|
|
150
|
+
self.position = Vector3()
|
|
151
|
+
self.position._from_proto(static_ani.camera.look_at.position)
|
|
152
|
+
self.up = Vector3()
|
|
153
|
+
self.up._from_proto(static_ani.camera.look_at.up)
|
|
154
|
+
self.look_at = Vector3()
|
|
155
|
+
self.look_at._from_proto(static_ani.camera.look_at.look_at)
|
|
156
|
+
self.pan_x = static_ani.camera.look_at.pan.x
|
|
157
|
+
self.pan_y = static_ani.camera.look_at.pan.y
|
|
158
|
+
self.width = static_ani.resolution.width
|
|
159
|
+
self.height = static_ani.resolution.height
|
|
160
|
+
self.projection = CameraProjection(static_ani.camera.projection)
|
|
112
161
|
|
|
113
162
|
|
|
114
163
|
class RenderOutput:
|
|
@@ -172,8 +221,7 @@ class RenderOutput:
|
|
|
172
221
|
self
|
|
173
222
|
"""
|
|
174
223
|
self._fail_if_deleted()
|
|
175
|
-
|
|
176
|
-
self.status = render.status
|
|
224
|
+
self.status = _get_status(self._project_id, self._extract_id)
|
|
177
225
|
return self
|
|
178
226
|
|
|
179
227
|
def wait(
|
|
@@ -231,23 +279,12 @@ class RenderOutput:
|
|
|
231
279
|
req.project_id = self._project_id
|
|
232
280
|
res: vis_pb2.DownloadExtractResponse = get_default_client().DownloadExtract(req)
|
|
233
281
|
|
|
234
|
-
|
|
235
|
-
assert len(res.files) == len(res.labels)
|
|
236
|
-
for output, label in zip(res.files, res.labels):
|
|
237
|
-
buffer =
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
response.raise_for_status()
|
|
241
|
-
for chunk in response.iter_content(chunk_size=8192):
|
|
242
|
-
buffer.write(chunk)
|
|
243
|
-
elif output.full_contents:
|
|
244
|
-
buffer.write(output.full_contents)
|
|
245
|
-
else:
|
|
246
|
-
raise Exception("download_image respose contains no data.")
|
|
247
|
-
# Reset buffer position to the beginning for reading
|
|
248
|
-
buffer.seek(0)
|
|
249
|
-
buffers.append((buffer, label))
|
|
250
|
-
return buffers
|
|
282
|
+
image_buffers: List[Tuple["io.BytesIO", str]] = []
|
|
283
|
+
assert len(res.images.files) == len(res.images.labels)
|
|
284
|
+
for output, label in zip(res.images.files, res.images.labels):
|
|
285
|
+
buffer = _download_file(output)
|
|
286
|
+
image_buffers.append((buffer, label))
|
|
287
|
+
return image_buffers
|
|
251
288
|
|
|
252
289
|
def save_images(self, file_prefix: str, write_labels: bool = False) -> None:
|
|
253
290
|
"""
|
|
@@ -437,12 +474,26 @@ class Scene:
|
|
|
437
474
|
|
|
438
475
|
def hide_far_field(self) -> None:
|
|
439
476
|
"""
|
|
440
|
-
Hide all far fields surfaces based on simulation parameters. Will work
|
|
441
|
-
if the entity is a simulation.
|
|
477
|
+
Hide all far fields surfaces based on simulation parameters. Will only work
|
|
478
|
+
if the entity is a simulation, otherwise it will raise an error.
|
|
442
479
|
"""
|
|
443
480
|
|
|
481
|
+
if self._entity_type != EntityType.SIMULATION:
|
|
482
|
+
raise ValueError(
|
|
483
|
+
"hide_far_field: This method only works with solutions, not meshes or geometries."
|
|
484
|
+
)
|
|
485
|
+
|
|
444
486
|
for boundary_id in self._far_field_boundary_ids:
|
|
445
|
-
self.
|
|
487
|
+
if boundary_id in self._surface_ids:
|
|
488
|
+
self.surface_visibility(boundary_id, False)
|
|
489
|
+
elif boundary_id in self._tag_ids:
|
|
490
|
+
self.tag_visibility(boundary_id, False)
|
|
491
|
+
else:
|
|
492
|
+
# This should not happen, but if it does, we raise an error.
|
|
493
|
+
raise ValueError(
|
|
494
|
+
f"Internal Error: Boundary id {boundary_id} not found in surface ids {self._surface_ids} "
|
|
495
|
+
f"or tag ids {self._tag_ids}"
|
|
496
|
+
)
|
|
446
497
|
|
|
447
498
|
def surface_ids(self) -> List[str]:
|
|
448
499
|
"""Get a list of all the surface ids associated with the mesh."""
|
|
@@ -476,6 +527,7 @@ class Scene:
|
|
|
476
527
|
if not tag_id in self._tag_ids:
|
|
477
528
|
raise ValueError(f"Id {tag_id} not a known tag id {self._tag_ids}")
|
|
478
529
|
self._surface_visibilities[tag_id] = visible
|
|
530
|
+
# TODO(matt): unroll the tags for the interactive scene.
|
|
479
531
|
|
|
480
532
|
def add_filter(self, filter: Filter) -> None:
|
|
481
533
|
"""
|
|
@@ -580,16 +632,7 @@ class Scene:
|
|
|
580
632
|
static.resolution.height = camera.height
|
|
581
633
|
req.spec.animation_properties.statics.items.append(static)
|
|
582
634
|
|
|
583
|
-
req.spec.global_display_attributes.
|
|
584
|
-
req.spec.global_display_attributes.representation = (
|
|
585
|
-
self.global_display_attrs.representation.value
|
|
586
|
-
)
|
|
587
|
-
req.spec.global_display_attributes.field.component = (
|
|
588
|
-
self.global_display_attrs.field.component.value
|
|
589
|
-
)
|
|
590
|
-
req.spec.global_display_attributes.field.quantity_typ = (
|
|
591
|
-
self.global_display_attrs.field.quantity.value
|
|
592
|
-
)
|
|
635
|
+
req.spec.global_display_attributes.CopyFrom(self.global_display_attrs._to_proto())
|
|
593
636
|
|
|
594
637
|
for id, visible in self._surface_visibilities.items():
|
|
595
638
|
attrs = vis_pb2.DisplayAttributes()
|
|
@@ -629,6 +672,14 @@ class Scene:
|
|
|
629
672
|
):
|
|
630
673
|
cmap_fields[filter.display_attrs.field] = True
|
|
631
674
|
|
|
675
|
+
# Add the global display field as well if visible
|
|
676
|
+
if (
|
|
677
|
+
self.auto_color_map_annotations
|
|
678
|
+
and self.global_display_attrs.field.quantity != VisQuantity.NONE
|
|
679
|
+
and self.global_display_attrs.visible
|
|
680
|
+
):
|
|
681
|
+
cmap_fields[self.global_display_attrs.field] = True
|
|
682
|
+
|
|
632
683
|
for cmap in self._color_maps:
|
|
633
684
|
if self.auto_color_map_annotations and not cmap.appearance:
|
|
634
685
|
# Defer color map processing to the auto color annotation.
|
|
@@ -638,7 +689,7 @@ class Scene:
|
|
|
638
689
|
|
|
639
690
|
# Add the automated color maps if enabled. If we don't specify them
|
|
640
691
|
# in the proto, the annotations will not appear in the image.
|
|
641
|
-
if self.auto_color_map_annotations:
|
|
692
|
+
if self.auto_color_map_annotations and self._entity_type == EntityType.SIMULATION:
|
|
642
693
|
auto_cmaps: List[ColorMap] = []
|
|
643
694
|
for field in cmap_fields:
|
|
644
695
|
found = False
|
|
@@ -808,35 +859,6 @@ class Scene:
|
|
|
808
859
|
return cloned
|
|
809
860
|
|
|
810
861
|
|
|
811
|
-
def get_render(project_id: str, extract_id: str) -> RenderOutput:
|
|
812
|
-
"""
|
|
813
|
-
Get a previously created set of render outputs by project and extract id.
|
|
814
|
-
|
|
815
|
-
.. warning:: This feature is experimental and may change or be removed in the future.
|
|
816
|
-
|
|
817
|
-
Parameters
|
|
818
|
-
----------
|
|
819
|
-
project_id : str
|
|
820
|
-
The project id to of the extract.
|
|
821
|
-
extract_id: str
|
|
822
|
-
The id to of the extract.
|
|
823
|
-
|
|
824
|
-
"""
|
|
825
|
-
req = vis_pb2.GetExtractRequest()
|
|
826
|
-
req.extract_id = extract_id
|
|
827
|
-
req.project_id = project_id
|
|
828
|
-
res: vis_pb2.GetExtractResponse = get_default_client().GetExtract(req)
|
|
829
|
-
render_output = RenderOutput(_InternalToken())
|
|
830
|
-
render_output._set_data(
|
|
831
|
-
extract_id=extract_id,
|
|
832
|
-
project_id=project_id,
|
|
833
|
-
name=res.extract.name,
|
|
834
|
-
desciption=res.extract.description,
|
|
835
|
-
status=RenderStatusType(res.extract.status),
|
|
836
|
-
)
|
|
837
|
-
return render_output
|
|
838
|
-
|
|
839
|
-
|
|
840
862
|
def list_quantities(solution: Solution) -> List[VisQuantity]:
|
|
841
863
|
"""
|
|
842
864
|
List the quantity types, including derived quantities, that are available in
|
|
@@ -911,6 +933,8 @@ def list_renders(entity: Geometry | Mesh | Solution) -> List[RenderOutput]:
|
|
|
911
933
|
else:
|
|
912
934
|
raise ValueError(f"Unknown entity type: '{entity_type}' ")
|
|
913
935
|
|
|
936
|
+
# We are requesting images not data
|
|
937
|
+
req.data_only = False
|
|
914
938
|
res: vis_pb2.ListExtractsResponse = get_default_client().ListExtracts(req)
|
|
915
939
|
|
|
916
940
|
results: List[RenderOutput] = []
|
|
@@ -928,3 +952,149 @@ def list_renders(entity: Geometry | Mesh | Solution) -> List[RenderOutput]:
|
|
|
928
952
|
results.append(result)
|
|
929
953
|
|
|
930
954
|
return results
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
def _reconstruct(extract_id: str, project_id: str) -> Scene:
|
|
958
|
+
"""
|
|
959
|
+
This function reconstructs a scene from an extract id and project id. The
|
|
960
|
+
resulting scene should produce an identical image to the one that was
|
|
961
|
+
originally rendered. The main use case for this function is to support code
|
|
962
|
+
generation. Note: the scene will render the same image, but the might not
|
|
963
|
+
contain the exact same settings. For example, we auto-generate color maps
|
|
964
|
+
for all fields used in the global and filter display attributes by default.
|
|
965
|
+
When we get the extract back, we don't know if it was auto-generated or not.
|
|
966
|
+
Thus, the resulting color maps will be much more verbose than the original.
|
|
967
|
+
"""
|
|
968
|
+
req = vis_pb2.GetExtractRequest()
|
|
969
|
+
req.extract_id = extract_id
|
|
970
|
+
req.project_id = project_id
|
|
971
|
+
res: vis_pb2.GetExtractSpecResponse = get_default_client().GetExtractSpec(req)
|
|
972
|
+
if res.spec.data_only:
|
|
973
|
+
raise ValueError("Error: cannot reconstruct a scene from a data only extract")
|
|
974
|
+
|
|
975
|
+
entity = res.spec.entity_type.WhichOneof("entity")
|
|
976
|
+
if entity == "geometry":
|
|
977
|
+
geom = get_geometry(res.spec.entity_type.geometry.id)
|
|
978
|
+
scene = Scene(geom)
|
|
979
|
+
elif entity == "mesh":
|
|
980
|
+
mesh_id = MeshID(res.spec.entity_type.mesh.id)
|
|
981
|
+
mesh = get_mesh(mesh_id)
|
|
982
|
+
scene = Scene(mesh)
|
|
983
|
+
elif entity == "simulation":
|
|
984
|
+
sim_id = SimulationID(res.spec.entity_type.simulation.id)
|
|
985
|
+
sim = get_simulation(sim_id)
|
|
986
|
+
sols = sim.list_solutions()
|
|
987
|
+
found = False
|
|
988
|
+
for sol in sols:
|
|
989
|
+
if sol.id == res.spec.entity_type.simulation.solution_id:
|
|
990
|
+
scene = Scene(sol)
|
|
991
|
+
found = True
|
|
992
|
+
break
|
|
993
|
+
if not found:
|
|
994
|
+
raise ValueError(f"Error: could not find the solution")
|
|
995
|
+
else:
|
|
996
|
+
raise ValueError(f"Error: could not resolve entity type")
|
|
997
|
+
|
|
998
|
+
try:
|
|
999
|
+
_ = scene # check to see if this is bound
|
|
1000
|
+
except NameError:
|
|
1001
|
+
raise ValueError(f"Error: could not create scene from entity")
|
|
1002
|
+
|
|
1003
|
+
# keep track of filter ids so we connect them later and keep track of
|
|
1004
|
+
# surface and tag visibilties.
|
|
1005
|
+
filter_ids: List[str] = []
|
|
1006
|
+
for filter in res.spec.filters:
|
|
1007
|
+
filter_ids.append(filter.id)
|
|
1008
|
+
typ = filter.WhichOneof("value")
|
|
1009
|
+
pfilter: Filter | None = None
|
|
1010
|
+
if typ == "clip":
|
|
1011
|
+
c_typ = filter.clip.WhichOneof("clip_function")
|
|
1012
|
+
if c_typ == "box":
|
|
1013
|
+
pfilter = BoxClip("")
|
|
1014
|
+
else:
|
|
1015
|
+
pfilter = PlaneClip("")
|
|
1016
|
+
elif typ == "slice":
|
|
1017
|
+
pfilter = Slice("")
|
|
1018
|
+
elif typ == "streamlines":
|
|
1019
|
+
s_typ = filter.streamlines.WhichOneof("seed_type")
|
|
1020
|
+
if s_typ == "surface":
|
|
1021
|
+
pfilter = SurfaceStreamlines("")
|
|
1022
|
+
elif s_typ == "rake":
|
|
1023
|
+
pfilter = RakeStreamlines("")
|
|
1024
|
+
else:
|
|
1025
|
+
raise ValueError(f"Error: unsupported streamlines seed type {s_typ}")
|
|
1026
|
+
elif typ == "glyph":
|
|
1027
|
+
g_typ = filter.glyph.WhichOneof("glyph_size")
|
|
1028
|
+
if g_typ == "fixed_size_glyphs":
|
|
1029
|
+
pfilter = FixedSizeVectorGlyphs("")
|
|
1030
|
+
else:
|
|
1031
|
+
pfilter = ScaledVectorGlyphs("")
|
|
1032
|
+
elif typ == "surface_lic":
|
|
1033
|
+
pfilter = SurfaceLIC("")
|
|
1034
|
+
elif typ == "threshold":
|
|
1035
|
+
pfilter = Threshold("")
|
|
1036
|
+
elif typ == "contour":
|
|
1037
|
+
pfilter = Isosurface("")
|
|
1038
|
+
else:
|
|
1039
|
+
raise ValueError(f"Error: unknown filter type {typ}")
|
|
1040
|
+
|
|
1041
|
+
assert pfilter is not None, "Internal error: filter type not set"
|
|
1042
|
+
pfilter._from_proto(filter)
|
|
1043
|
+
# Set the display attributes
|
|
1044
|
+
pattrs = DisplayAttributes()
|
|
1045
|
+
attrs = res.spec.display_attributes[pfilter.id]
|
|
1046
|
+
assert attrs is not None, "Internal error: display attributes not set"
|
|
1047
|
+
pfilter.display_attrs._from_proto(attrs)
|
|
1048
|
+
scene.add_filter(pfilter)
|
|
1049
|
+
|
|
1050
|
+
# Connect filters to their parents.
|
|
1051
|
+
for parent_id, children in res.spec.filter_connections.items():
|
|
1052
|
+
parent_filter = next((f for f in scene._filters if f.id == parent_id), None)
|
|
1053
|
+
if parent_filter is not None:
|
|
1054
|
+
for child_id in children.children_id:
|
|
1055
|
+
child_filter = next((f for f in scene._filters if f.id == child_id), None)
|
|
1056
|
+
if child_filter is not None:
|
|
1057
|
+
child_filter.set_parent(parent_filter)
|
|
1058
|
+
else:
|
|
1059
|
+
raise ValueError(
|
|
1060
|
+
f"Error: child filter {child_id} not found in the scene filters"
|
|
1061
|
+
)
|
|
1062
|
+
else:
|
|
1063
|
+
raise ValueError(f"Error: parent filter {parent_id} not found in the scene filters")
|
|
1064
|
+
|
|
1065
|
+
# scene attributes
|
|
1066
|
+
scene.supersampling = res.spec.supersampling_ratio
|
|
1067
|
+
scene.triad_visible = res.spec.triad_properties.visible
|
|
1068
|
+
scene.axes_grid_visible = res.spec.axes_grid_properties.visible
|
|
1069
|
+
scene.background_color = Vector3(
|
|
1070
|
+
x=res.spec.background_properties.color.r,
|
|
1071
|
+
y=res.spec.background_properties.color.g,
|
|
1072
|
+
z=res.spec.background_properties.color.b,
|
|
1073
|
+
)
|
|
1074
|
+
scene.global_display_attrs._from_proto(res.spec.global_display_attributes)
|
|
1075
|
+
|
|
1076
|
+
for id, attrs in res.spec.display_attributes.items():
|
|
1077
|
+
if id in filter_ids:
|
|
1078
|
+
continue # Skip filters, we already processed them.
|
|
1079
|
+
if id in scene._surface_ids or id in scene._tag_ids:
|
|
1080
|
+
# We only use visible or not for surfaces. The rest of the
|
|
1081
|
+
# attributes are set in the global display attributes.
|
|
1082
|
+
scene._surface_visibilities[id] = attrs.visible
|
|
1083
|
+
|
|
1084
|
+
for static_ani in res.spec.animation_properties.statics.items:
|
|
1085
|
+
cam_typ = static_ani.camera.WhichOneof("specification")
|
|
1086
|
+
if cam_typ == "direction":
|
|
1087
|
+
cam = DirectionalCamera()
|
|
1088
|
+
cam._from_proto(static_ani)
|
|
1089
|
+
scene.add_camera(cam)
|
|
1090
|
+
else:
|
|
1091
|
+
l_cam = LookAtCamera()
|
|
1092
|
+
l_cam._from_proto(static_ani)
|
|
1093
|
+
scene.add_camera(l_cam)
|
|
1094
|
+
|
|
1095
|
+
# Add color maps
|
|
1096
|
+
for color_map in res.spec.color_maps:
|
|
1097
|
+
cmap = ColorMap()
|
|
1098
|
+
cmap._from_proto(color_map)
|
|
1099
|
+
scene.add_color_map(cmap)
|
|
1100
|
+
return scene
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: luminarycloud
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.4
|
|
4
4
|
Summary: Luminary Cloud SDK
|
|
5
5
|
Project-URL: Homepage, https://www.luminarycloud.com/
|
|
6
6
|
Project-URL: Documentation, https://app.luminarycloud.com/docs/api/
|
|
@@ -24,9 +24,11 @@ Requires-Dist: opentelemetry-semantic-conventions~=0.46b0
|
|
|
24
24
|
Requires-Dist: protobuf~=4.21
|
|
25
25
|
Requires-Dist: pyjwt~=2.6
|
|
26
26
|
Requires-Dist: python-dotenv~=1.0.0
|
|
27
|
+
Requires-Dist: pyyaml~=6.0.2
|
|
27
28
|
Requires-Dist: requests~=2.28
|
|
28
29
|
Requires-Dist: waitress~=3.0.1
|
|
29
30
|
Requires-Dist: werkzeug~=3.0.1
|
|
31
|
+
Requires-Dist: zstandard
|
|
30
32
|
Provides-Extra: jupyter
|
|
31
33
|
Requires-Dist: luminarycloud-jupyter; extra == 'jupyter'
|
|
32
34
|
Description-Content-Type: text/markdown
|