luminarycloud 0.13.0__py3-none-any.whl → 0.14.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/_helpers/cond.py +262 -165
- luminarycloud/_helpers/defaults.py +3 -3
- luminarycloud/_helpers/download.py +12 -1
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.py +69 -47
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.pyi +45 -1
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.py +34 -0
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.pyi +12 -0
- luminarycloud/_proto/api/v0/luminarycloud/mesh/mesh_pb2.py +86 -65
- luminarycloud/_proto/api/v0/luminarycloud/mesh/mesh_pb2.pyi +38 -1
- luminarycloud/_proto/api/v0/luminarycloud/mesh/mesh_pb2_grpc.py +33 -0
- luminarycloud/_proto/api/v0/luminarycloud/mesh/mesh_pb2_grpc.pyi +10 -0
- luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2.py +12 -12
- luminarycloud/_proto/api/v0/luminarycloud/simulation/simulation_pb2.pyi +5 -1
- luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2_grpc.py +2 -1
- luminarycloud/_proto/api/v0/luminarycloud/simulation_template/simulation_template_pb2_grpc.pyi +6 -2
- luminarycloud/_proto/api/v0/luminarycloud/solution/solution_pb2.py +14 -14
- luminarycloud/_proto/api/v0/luminarycloud/solution/solution_pb2.pyi +5 -1
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.py +170 -85
- luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.pyi +215 -10
- luminarycloud/_proto/assistant/assistant_pb2.py +177 -21
- luminarycloud/_proto/assistant/assistant_pb2.pyi +380 -7
- luminarycloud/_proto/client/simulation_pb2.py +705 -521
- luminarycloud/_proto/client/simulation_pb2.pyi +552 -35
- luminarycloud/_proto/geometry/geometry_pb2.py +74 -40
- luminarycloud/_proto/geometry/geometry_pb2.pyi +68 -4
- luminarycloud/_proto/hexmesh/hexmesh_pb2.py +321 -0
- luminarycloud/_proto/hexmesh/hexmesh_pb2.pyi +648 -0
- luminarycloud/_proto/options/options_pb2.py +9 -5
- luminarycloud/_proto/options/options_pb2.pyi +4 -0
- luminarycloud/_proto/output/reference_values_pb2.py +22 -5
- luminarycloud/_proto/output/reference_values_pb2.pyi +1 -1
- luminarycloud/_proto/quantity/quantity_options_pb2.py +28 -4
- luminarycloud/_proto/quantity/quantity_options_pb2.pyi +58 -1
- luminarycloud/_proto/quantity/quantity_pb2.py +162 -159
- luminarycloud/_proto/quantity/quantity_pb2.pyi +2 -0
- luminarycloud/enum/vis_enums.py +82 -2
- luminarycloud/geometry.py +22 -5
- luminarycloud/meshing/mesh_generation_params.py +8 -2
- luminarycloud/params/__init__.py +1 -2
- luminarycloud/params/enum/_enum_wrappers.py +1184 -3
- luminarycloud/params/outputs/output.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/__init__.py +15 -14
- luminarycloud/params/{param_wrappers → simulation}/_lib.py +2 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/adaptive_mesh_refinement/boundary_layer_profile_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/adaptive_mesh_refinement_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/adjoint_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/basic/gravity/gravity_off_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/basic/gravity/gravity_on_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/basic/gravity_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/body_frame_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/entity_relationships/volume_material_relationship_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/entity_relationships/volume_physics_relationship_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/entity_relationships_.py +6 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/general_.py +8 -10
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/boussinesq_approximation/boussinesq_off_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/boussinesq_approximation/boussinesq_on_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/boussinesq_approximation_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/material_model/ideal_gas_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/material_model/incompressible_fluid_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/material_model/incompressible_fluid_with_energy_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/material_model_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/thermal_conductivity_model/prescribed_conductivity_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/thermal_conductivity_model/prescribed_prandtl_number_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/thermal_conductivity_model/temperature_dependent_conductivity_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/thermal_conductivity_model_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/viscosity_model/prescribed_viscosity_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/viscosity_model/sutherland_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/viscosity_model/temperature_dependent_viscosity_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/viscosity_model_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/material_fluid_.py +32 -40
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/material_solid_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material_entity_.py +6 -10
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/monitor_plane_.py +10 -5
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/motion_data/frame_transforms/no_transform_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/motion_data/frame_transforms/rotational_transform_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/motion_data/frame_transforms/translational_transform_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/motion_data/frame_transforms_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/motion_data/motion_type/constant_angular_motion_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/motion_data/motion_type/constant_translation_motion_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/motion_data/motion_type_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/motion_data_.py +16 -20
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/multi_physics_coupling_options_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/output_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection/actuator_disk_specify_normal_vector_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection/actuator_disk_specify_rotation_angles_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection_.py +2 -2
- luminarycloud/params/simulation/particle_group/particle_group_type/actuator_disk_.py +49 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/particle_group/particle_group_type/actuator_line_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/particle_group/particle_group_type/probe_points_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/particle_group/particle_group_type/source_points_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/particle_group/particle_group_type_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/particle_group_.py +20 -17
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/adjoint_controls_fluid_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/basic_fluid_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/__init__.py +3 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/farfield_.py +111 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/inlet/__init__.py +4 -3
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/inlet/fan_curve_inlet_.py +4 -6
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet/mach_inlet_.py +55 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/inlet/mass_flow_inlet_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/inlet/total_pressure_inlet_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/inlet/velocity_components_inlet_.py +8 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/inlet/velocity_magnitude_inlet_.py +8 -6
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/inlet_.py +104 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/outlet/outlet_strategy/fan_curve_outlet_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_pressure_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_target_corrected_mass_flow_rate_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/outlet/outlet_strategy/outlet_target_mass_flow_rate_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/outlet/outlet_strategy_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/outlet_.py +14 -14
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/symmetry_.py +4 -4
- luminarycloud/params/simulation/physics/fluid/boundary_conditions/turbulence_boundary_conditions_.py +50 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/wall/energy/prescribed_heat_flux_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/wall/energy/prescribed_temperature_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/wall/momentum/no_slip_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/wall/momentum/slip_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/wall/momentum/wall_model_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/wall/wall_energy_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/wall/wall_momentum_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/wall_.py +18 -18
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions_fluid_.py +9 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/initialization/__init__.py +1 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/initialization/fluid_existing_solution_.py +4 -6
- luminarycloud/params/simulation/physics/fluid/initialization/fluid_farfield_values_.py +65 -0
- luminarycloud/params/simulation/physics/fluid/initialization/fluid_prescribed_values_.py +77 -0
- luminarycloud/params/simulation/physics/fluid/initialization/turbulence_initialization_.py +44 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/initialization_fluid_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/blade_element_airfoil_data_.py +12 -8
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_blade_element_.py +6 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_radial_distribution_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/actuator_disk_uniform_thrust_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/fan_curve_internal_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model_.py +8 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/actuator_line_model/actuator_line_blade_element_.py +6 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/actuator_line_model_.py +8 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/blade_element_params_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model/general_acceleration_source_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model/general_mass_source_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model_.py +8 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior_.py +34 -29
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/porous_behavior_.py +14 -10
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/fluid_relaxation_method/fluid_explicit_relaxation_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/robust_startup_off_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/robust_startup_on_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation_.py +16 -16
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/fluid_relaxation_method_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/pseudo_time_step_method/cfl_based_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/pseudo_time_step_method/fixed_pseudo_time_step_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/pseudo_time_step_method_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls_fluid_.py +14 -14
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/spatial_discretization/convective_scheme/ec2_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/spatial_discretization/convective_scheme/fds_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/spatial_discretization/convective_scheme/ld2_.py +6 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/spatial_discretization/convective_scheme/rhie_chow_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/spatial_discretization/convective_scheme_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/spatial_discretization/convective_scheme_order/first_order_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/spatial_discretization/convective_scheme_order/second_order_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/spatial_discretization/convective_scheme_order_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/spatial_discretization_fluid_.py +20 -18
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/des_formulation/ddes_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/des_formulation/ddes_vtm_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/des_formulation/iddes_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/des_formulation_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/komega_sst/constants/custom_komega_sst_constants_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/komega_sst/constants/default_komega_sst_constants_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/komega_sst/komega_sst_constants_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/komega_sst_.py +10 -12
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/spalart_allmaras/constants/custom_spalart_allmaras_constants_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/spalart_allmaras/constants/default_spalart_allmaras_constants_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/spalart_allmaras/spalart_allmaras_constants_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/spalart_allmaras_.py +10 -12
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/sub_grid_scale_model/amd_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/sub_grid_scale_model/sigma_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/sub_grid_scale_model/smagorinsky_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/sub_grid_scale_model/vreman_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/sub_grid_scale_model/wale_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/sub_grid_scale_model_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence_.py +22 -32
- luminarycloud/params/simulation/physics/fluid_.py +233 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/adjoint_controls_heat_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/boundary_conditions/heat_bc_convection_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/boundary_conditions/heat_bc_heat_flux_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/boundary_conditions/heat_bc_integrated_heat_flux_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/boundary_conditions/heat_bc_symmetry_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/boundary_conditions/heat_bc_temperature_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/boundary_conditions_heat_.py +9 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/heat_source/heat_source_type/heat_source_type_power_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/heat_source/heat_source_type/heat_source_type_power_per_unit_of_volume_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/heat_source/heat_source_type_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/heat_source_.py +20 -17
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/initialization/heat_existing_solution_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/initialization/heat_prescribed_values_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/initialization_heat_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/solution_controls/heat_relaxation_method/heat_implicit_relaxation_.py +10 -10
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/solution_controls/heat_relaxation_method_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/solution_controls_heat_.py +6 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/spatial_discretization_heat_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat_.py +33 -42
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/periodic_pair/periodicity_type/rotational_periodicity_.py +5 -7
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/periodic_pair/periodicity_type/translational_periodicity_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/periodic_pair/periodicity_type_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/periodic_pair_.py +8 -10
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/solution_controls/linear_solver_type/gauss_seidel_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/solution_controls/linear_solver_type/krylov_amg_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/solution_controls/linear_solver_type_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics_.py +6 -6
- luminarycloud/params/{param_wrappers → simulation}/simulation_param_.py +34 -40
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/sliding_interfaces_.py +10 -5
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/surface_name_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time/compute_statistics/compute_statistics_off_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time/compute_statistics/compute_statistics_on_.py +4 -6
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time/compute_statistics_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time/time_marching/time_explicit_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time/time_marching/time_implicit_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time/time_marching_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time/time_step_ramp/time_step_ramp_off_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time/time_step_ramp/time_step_ramp_on_.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time/time_step_ramp_.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time_.py +20 -30
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/volume_entity_.py +2 -2
- luminarycloud/project.py +63 -7
- luminarycloud/reference_values.py +1 -1
- luminarycloud/simulation.py +13 -2
- luminarycloud/simulation_param.py +8 -8
- luminarycloud/solution.py +7 -1
- luminarycloud/types/vector3.py +28 -2
- luminarycloud/vis/__init__.py +6 -1
- luminarycloud/vis/display.py +101 -51
- luminarycloud/vis/filters.py +384 -15
- luminarycloud/vis/interactive_scene.py +46 -23
- luminarycloud/vis/visualization.py +204 -58
- {luminarycloud-0.13.0.dist-info → luminarycloud-0.14.0.dist-info}/METADATA +1 -2
- luminarycloud-0.14.0.dist-info/RECORD +466 -0
- luminarycloud/params/param_wrappers/__init__.py +0 -2
- luminarycloud/params/param_wrappers/simulation_param/particle_group/particle_group_type/actuator_disk_.py +0 -51
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/farfield_.py +0 -197
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/inlet_.py +0 -189
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/turbulence/__init__.py +0 -4
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/turbulence/komega/__init__.py +0 -5
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/turbulence/komega/bc_komega_variables_.py +0 -37
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/turbulence/komega/bc_turbulent_viscosity_and_intensity_komega_.py +0 -33
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/turbulence/komega/bc_turbulent_viscosity_ratio_and_intensity_komega_.py +0 -33
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/turbulence/komega_boundary_conditions_.py +0 -25
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/turbulence/spalart_allmaras/__init__.py +0 -3
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/turbulence/spalart_allmaras/bc_sa_variable_.py +0 -33
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/turbulence/spalart_allmaras/bc_turbulent_viscosity_ratio_sa_.py +0 -31
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/turbulence/spalart_allmaras/bc_turbulent_viscosity_sa_.py +0 -31
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/turbulence/spalart_allmaras_boundary_conditions_.py +0 -25
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/boundary_conditions/turbulence_boundary_conditions_.py +0 -65
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/fluid_farfield_values_.py +0 -173
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/fluid_prescribed_values_.py +0 -185
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/turbulence/__init__.py +0 -4
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/turbulence/komega/__init__.py +0 -5
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/turbulence/komega/init_farfield_values_komega_.py +0 -30
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/turbulence/komega/init_turbulent_viscosity_and_intensity_komega_.py +0 -33
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/turbulence/komega/init_turbulent_viscosity_ratio_and_intensity_komega_.py +0 -33
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/turbulence/komega_initialization_.py +0 -25
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/turbulence/spalart_allmaras/__init__.py +0 -4
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/turbulence/spalart_allmaras/init_farfield_values_sa_.py +0 -30
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/turbulence/spalart_allmaras/init_sa_variable_.py +0 -31
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/turbulence/spalart_allmaras/init_turbulent_viscosity_ratio_sa_.py +0 -31
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/turbulence/spalart_allmaras/init_turbulent_viscosity_sa_.py +0 -31
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/turbulence/spalart_allmaras_initialization_.py +0 -25
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid/initialization/turbulence_initialization_.py +0 -69
- luminarycloud/params/param_wrappers/simulation_param/physics/fluid_.py +0 -438
- luminarycloud-0.13.0.dist-info/RECORD +0 -487
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/adaptive_mesh_refinement/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/basic/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/basic/gravity/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/entity_relationships/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/__init__.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/boussinesq_approximation/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/material_model/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/thermal_conductivity_model/__init__.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/material/fluid/viscosity_model/__init__.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/motion_data/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/motion_data/frame_transforms/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/motion_data/motion_type/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/particle_group/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/particle_group/particle_group_type/__init__.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/particle_group/particle_group_type/actuator_disk/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/particle_group/particle_group_type/actuator_disk/actuator_disk_orientation_selection/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/__init__.py +3 -3
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/__init__.py +8 -8
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/outlet/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/outlet/outlet_strategy/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/wall/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/wall/energy/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/boundary_conditions/wall/momentum/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/__init__.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/actuator_disk_model/__init__.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/actuator_line_model/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/physical_behavior/physical_behavior_model/particle_source_model/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/fluid_relaxation_method/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/fluid_relaxation_method/fluid_implicit_relaxation/robust_startup/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/solution_controls/pseudo_time_step_method/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/spatial_discretization/__init__.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/spatial_discretization/convective_scheme/__init__.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/spatial_discretization/convective_scheme_order/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/__init__.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/des_formulation/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/komega_sst/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/komega_sst/constants/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/spalart_allmaras/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/spalart_allmaras/constants/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/fluid/turbulence/sub_grid_scale_model/__init__.py +2 -2
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/__init__.py +4 -4
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/boundary_conditions/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/heat_source/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/heat_source/heat_source_type/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/initialization/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/solution_controls/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/heat/solution_controls/heat_relaxation_method/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/periodic_pair/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/periodic_pair/periodicity_type/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/solution_controls/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/physics/solution_controls/linear_solver_type/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time/compute_statistics/__init__.py +0 -0
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time/time_marching/__init__.py +1 -1
- luminarycloud/params/{param_wrappers/simulation_param → simulation}/time/time_step_ramp/__init__.py +1 -1
- {luminarycloud-0.13.0.dist-info → luminarycloud-0.14.0.dist-info}/WHEEL +0 -0
|
@@ -1,16 +1,15 @@
|
|
|
1
|
+
from .display import DisplayAttributes
|
|
2
|
+
from .filters import SurfaceStreamlines, Filter
|
|
1
3
|
from .._client import get_default_client
|
|
2
|
-
from ..enum.vis_enums import EntityType
|
|
3
|
-
from typing import TYPE_CHECKING
|
|
4
|
+
from ..enum.vis_enums import EntityType, SceneMode
|
|
5
|
+
from typing import TYPE_CHECKING, cast
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
from .._proto.api.v0.luminarycloud.vis import vis_pb2
|
|
6
8
|
|
|
7
9
|
if TYPE_CHECKING:
|
|
8
10
|
from .visualization import Scene, LookAtCamera
|
|
9
|
-
import requests
|
|
10
11
|
|
|
11
12
|
try:
|
|
12
|
-
# we need requests for downloading render data
|
|
13
|
-
import requests
|
|
14
13
|
import luminarycloud_jupyter as lcj
|
|
15
14
|
except ImportError:
|
|
16
15
|
lcj = None
|
|
@@ -26,16 +25,23 @@ class InteractiveScene:
|
|
|
26
25
|
|
|
27
26
|
# Using the type causes a circular import error, not sure on best way to resolve.
|
|
28
27
|
# I do want to keep this in a separate file
|
|
29
|
-
def __init__(self, scene: "Scene") -> None:
|
|
30
|
-
if not lcj
|
|
28
|
+
def __init__(self, scene: "Scene", mode: SceneMode) -> None:
|
|
29
|
+
if not lcj:
|
|
31
30
|
raise ImportError("InteractiveScene requires luminarycloud[jupyter] to be installed")
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
self.widget = lcj.LCVisWidget()
|
|
31
|
+
self.widget = lcj.LCVisWidget(scene_mode=mode)
|
|
32
|
+
self.set_scene(scene)
|
|
35
33
|
|
|
34
|
+
def _ipython_display_(self) -> None:
|
|
35
|
+
"""
|
|
36
|
+
When the InteractiveScene is shown in Jupyter we show the underlying widget
|
|
37
|
+
to run the widget's frontend code
|
|
38
|
+
"""
|
|
39
|
+
self.widget._ipython_display_()
|
|
40
|
+
|
|
41
|
+
def set_scene(self, scene: "Scene") -> None:
|
|
36
42
|
# Display the initial scene we've been given
|
|
37
43
|
# Submit request for the render data URLs we need
|
|
38
|
-
req =
|
|
44
|
+
req = vis_pb2.GetRenderDataUrlsRequest()
|
|
39
45
|
req.project_id = scene._project_id
|
|
40
46
|
if scene._entity_type == EntityType.SIMULATION:
|
|
41
47
|
req.entity.simulation.id = scene._solution.simulation_id
|
|
@@ -50,20 +56,34 @@ class InteractiveScene:
|
|
|
50
56
|
f"Expected Solution, Mesh or Geometry in Scene, got {scene._entity_type}"
|
|
51
57
|
)
|
|
52
58
|
|
|
53
|
-
#
|
|
54
|
-
#
|
|
59
|
+
# Validate filter connections and filter params.
|
|
60
|
+
# we don't care about validating anything else that the Scene checks in _create_request
|
|
61
|
+
# for now. We could unify this code more later.
|
|
62
|
+
scene._validate_filter_connections()
|
|
63
|
+
for filter in scene._filters:
|
|
64
|
+
if isinstance(filter, SurfaceStreamlines):
|
|
65
|
+
# Validate surfaces names
|
|
66
|
+
streamlines = cast(SurfaceStreamlines, filter)
|
|
67
|
+
bad_ids = scene._validate_surfaces_and_tags(streamlines._surface_names)
|
|
68
|
+
if len(bad_ids) != 0:
|
|
69
|
+
raise ValueError(f"SurfaceStreamlines has invalid surfaces: {bad_ids}")
|
|
70
|
+
|
|
71
|
+
if isinstance(filter, Filter):
|
|
72
|
+
vis_filter: vis_pb2.Filter = filter._to_proto()
|
|
73
|
+
req.filters.append(vis_filter)
|
|
74
|
+
else:
|
|
75
|
+
raise TypeError(f"Expected 'filter', got {type(filter).__name__}")
|
|
76
|
+
if filter.get_parent_id():
|
|
77
|
+
req.filter_connections[filter.get_parent_id()].children_id.append(filter.id)
|
|
78
|
+
|
|
79
|
+
# TODO: would be nice to show execution progress of the workspace here,
|
|
80
|
+
# some inline progress bar in the notebook
|
|
55
81
|
resp = get_default_client().GetRenderDataUrls(req)
|
|
56
82
|
|
|
57
83
|
# TODO: would be nice to print/report some download progress info
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
def _ipython_display_(self) -> None:
|
|
62
|
-
"""
|
|
63
|
-
When the InteractiveScene is shown in Jupyter we show the underlying widget
|
|
64
|
-
to run the widget's frontend code
|
|
65
|
-
"""
|
|
66
|
-
self.widget._ipython_display_()
|
|
84
|
+
# This can be done on the app frontend side now that the download
|
|
85
|
+
# is moved there.
|
|
86
|
+
self.widget.set_workspace_state(scene, resp)
|
|
67
87
|
|
|
68
88
|
def set_surface_visibility(self, surface_id: str, visible: bool) -> None:
|
|
69
89
|
self.widget.set_surface_visibility(surface_id, visible)
|
|
@@ -71,6 +91,9 @@ class InteractiveScene:
|
|
|
71
91
|
def set_surface_color(self, surface_id: str, color: list[float]) -> None:
|
|
72
92
|
self.widget.set_surface_color(surface_id, color)
|
|
73
93
|
|
|
94
|
+
def set_display_attributes(self, object_id: str, attrs: DisplayAttributes) -> None:
|
|
95
|
+
self.widget.set_display_attributes(object_id, attrs)
|
|
96
|
+
|
|
74
97
|
def reset_camera(self) -> None:
|
|
75
98
|
self.widget.reset_camera()
|
|
76
99
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from .._proto.api.v0.luminarycloud.vis import vis_pb2
|
|
2
|
+
import luminarycloud._proto.api.v0.luminarycloud.common.common_pb2 as common_pb2
|
|
2
3
|
from .._client import get_default_client
|
|
3
4
|
from ..solution import Solution
|
|
4
5
|
from ..mesh import get_mesh_metadata, Mesh, get_mesh
|
|
@@ -6,8 +7,8 @@ from ..geometry import Geometry, get_geometry, Tag
|
|
|
6
7
|
from ..enum.vis_enums import *
|
|
7
8
|
from ..enum.quantity_type import QuantityType
|
|
8
9
|
from ..simulation import get_simulation
|
|
9
|
-
from .display import DisplayAttributes, ColorMap
|
|
10
|
-
from .filters import Filter, PlaneClip, Slice, BoxClip
|
|
10
|
+
from .display import DisplayAttributes, ColorMap, Field, ColorMapAppearance
|
|
11
|
+
from .filters import Filter, PlaneClip, Slice, BoxClip, SurfaceStreamlines
|
|
11
12
|
from luminarycloud.types import Vector3, Vector3Like
|
|
12
13
|
from ..types.vector3 import _to_vector3
|
|
13
14
|
from .._helpers._get_project_id import _get_project_id
|
|
@@ -16,7 +17,7 @@ from .interactive_scene import InteractiveScene
|
|
|
16
17
|
import io
|
|
17
18
|
import json
|
|
18
19
|
from luminarycloud._proto.client import simulation_pb2 as clientpb
|
|
19
|
-
from typing import List, Tuple, cast, Union
|
|
20
|
+
from typing import List, Tuple, cast, Union, Dict
|
|
20
21
|
import requests
|
|
21
22
|
from time import time, sleep
|
|
22
23
|
import logging
|
|
@@ -25,6 +26,10 @@ import dataclasses as dc
|
|
|
25
26
|
logger = logging.getLogger(__name__)
|
|
26
27
|
|
|
27
28
|
|
|
29
|
+
def _is_valid_color(obj: common_pb2.Vector3) -> bool:
|
|
30
|
+
return all(0 <= getattr(obj, attr) <= 1 for attr in ["x", "y", "z"])
|
|
31
|
+
|
|
32
|
+
|
|
28
33
|
@dc.dataclass
|
|
29
34
|
class DirectionalCamera:
|
|
30
35
|
"""
|
|
@@ -34,29 +39,20 @@ class DirectionalCamera:
|
|
|
34
39
|
|
|
35
40
|
.. warning:: This feature is experimental and may change or be removed in the future.
|
|
36
41
|
|
|
37
|
-
Attributes:
|
|
38
|
-
-----------
|
|
39
|
-
name : str
|
|
40
|
-
A user defined name for the camera.
|
|
41
|
-
direction : CameraDirection
|
|
42
|
-
The orientation of the camera. Default: X_POSITIVE
|
|
43
|
-
projection : CameraProjection
|
|
44
|
-
The type of projection used for the camera. Default: ORTHOGRAPHIC
|
|
45
|
-
label: str
|
|
46
|
-
A user defined label to help distinguish between multiple images.
|
|
47
|
-
Default: ""
|
|
48
|
-
width: int
|
|
49
|
-
The width of the output image in pixels. Default: 1024
|
|
50
|
-
height: int
|
|
51
|
-
The height of the output image in pixels. Default: 1024
|
|
52
42
|
"""
|
|
53
43
|
|
|
54
44
|
name: str = "default directional camera"
|
|
45
|
+
""" A user defined name for the camera. """
|
|
55
46
|
direction: CameraDirection = CameraDirection.X_POSITIVE
|
|
47
|
+
""" The orientation of the camera. Default: X_POSITIVE """
|
|
56
48
|
projection: CameraProjection = CameraProjection.ORTHOGRAPHIC
|
|
49
|
+
""" The type of projection used for the camera. Default: ORTHOGRAPHIC """
|
|
57
50
|
label: str = ""
|
|
51
|
+
"""A user defined label to help distinguish between multiple images."""
|
|
58
52
|
width: int = 1024
|
|
53
|
+
"""The width of the output image in pixels. Default: 1024"""
|
|
59
54
|
height: int = 1024
|
|
55
|
+
"""The height of the output image in pixels. Default: 1024"""
|
|
60
56
|
|
|
61
57
|
|
|
62
58
|
@dc.dataclass
|
|
@@ -68,39 +64,39 @@ class LookAtCamera:
|
|
|
68
64
|
|
|
69
65
|
.. warning:: This feature is experimental and may change or be removed in the future.
|
|
70
66
|
|
|
71
|
-
Attributes:
|
|
72
|
-
-----------
|
|
73
|
-
look_at: Vector3
|
|
74
|
-
The point the camera is looking at. Default (0,0,0)
|
|
75
|
-
position: Vector3
|
|
76
|
-
The position of the camera. Default (0,1,0)
|
|
77
|
-
up: Vector3
|
|
78
|
-
The up vector for the camera. Default (0,0,1)
|
|
79
|
-
projection : CameraProjection
|
|
80
|
-
The type of projection used for the camera. Default: ORTHOGRAPHIC
|
|
81
|
-
label: str
|
|
82
|
-
A user defined label to help distinguish between multiple images. Default: ""
|
|
83
|
-
width: int
|
|
84
|
-
The width of the output image in pixels. Default: 1024
|
|
85
|
-
height: int
|
|
86
|
-
The height of the output image in pixels. Default: 1024
|
|
87
67
|
"""
|
|
88
68
|
|
|
89
69
|
look_at: Vector3Like = dc.field(default_factory=lambda: Vector3(x=0, y=0, z=0))
|
|
70
|
+
""" The point the camera is looking at. Default (0,0,0) """
|
|
90
71
|
position: Vector3Like = dc.field(default_factory=lambda: Vector3(x=0, y=1, z=0))
|
|
72
|
+
""" The position of the camera. Default (0,1,0) """
|
|
91
73
|
up: Vector3Like = dc.field(default_factory=lambda: Vector3(x=0, y=0, z=1))
|
|
74
|
+
""" The up vector for the camera. Default (0,0,1) """
|
|
92
75
|
projection: CameraProjection = CameraProjection.ORTHOGRAPHIC
|
|
76
|
+
""" The type of projection used for the camera. Default: ORTHOGRAPHIC """
|
|
93
77
|
label: str = ""
|
|
78
|
+
""" A user defined label to help distinguish between multiple images. Default: "" """
|
|
94
79
|
width: int = 1024
|
|
80
|
+
""" The width of the output image in pixels. Default: 1024 """
|
|
95
81
|
height: int = 1024
|
|
82
|
+
""" The height of the output image in pixels. Default: 1024 """
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
class _InternalToken:
|
|
86
|
+
"""Marker class to control instantiation access for RenderOutput."""
|
|
87
|
+
|
|
88
|
+
pass
|
|
96
89
|
|
|
97
90
|
|
|
98
91
|
class RenderOutput:
|
|
99
92
|
"""
|
|
100
|
-
The render output represents the request to render images from a geometry,
|
|
101
|
-
solution
|
|
102
|
-
|
|
103
|
-
resuling image is available
|
|
93
|
+
The render output represents the request to render images from a geometry,
|
|
94
|
+
mesh or solution, and is contructed by the Scene class. The operation
|
|
95
|
+
exectutes asyncronously, so the caller must check the status of the image
|
|
96
|
+
extract. If the status is completed, then the resuling image is available
|
|
97
|
+
for download.
|
|
98
|
+
|
|
99
|
+
.. warning:: This class should not be directly instantiated by users.
|
|
104
100
|
|
|
105
101
|
.. warning:: This feature is experimental and may change or be removed in the future.
|
|
106
102
|
|
|
@@ -120,17 +116,27 @@ class RenderOutput:
|
|
|
120
116
|
Internal flag to track if the extract has been deleted.
|
|
121
117
|
"""
|
|
122
118
|
|
|
123
|
-
def __init__(
|
|
124
|
-
|
|
125
|
-
|
|
119
|
+
def __init__(self, factory_token: _InternalToken):
|
|
120
|
+
if not isinstance(factory_token, _InternalToken):
|
|
121
|
+
raise ValueError("This class can only be constructed through the Scene class")
|
|
122
|
+
|
|
126
123
|
# TODO(matt): We could make all of these read only.
|
|
127
|
-
self._extract_id: str =
|
|
128
|
-
self._project_id: str =
|
|
129
|
-
self.status: RenderStatusType =
|
|
130
|
-
self.name: str =
|
|
131
|
-
self.description: str =
|
|
124
|
+
self._extract_id: str = ""
|
|
125
|
+
self._project_id: str = ""
|
|
126
|
+
self.status: RenderStatusType = RenderStatusType.INVALID
|
|
127
|
+
self.name: str = ""
|
|
128
|
+
self.description: str = ""
|
|
132
129
|
self._deleted = False
|
|
133
130
|
|
|
131
|
+
def _set_data(
|
|
132
|
+
self, extract_id: str, project_id: str, name: str, desciption: str, status: RenderStatusType
|
|
133
|
+
) -> None:
|
|
134
|
+
self._extract_id = extract_id
|
|
135
|
+
self._project_id = project_id
|
|
136
|
+
self.status = status
|
|
137
|
+
self.name = name
|
|
138
|
+
self.description = desciption
|
|
139
|
+
|
|
134
140
|
def __repr__(self) -> str:
|
|
135
141
|
return f"RenderOutput(Id: {self._extract_id} status: {self.status})"
|
|
136
142
|
|
|
@@ -275,13 +281,13 @@ class Scene:
|
|
|
275
281
|
with what "entity" you want to visualize: a solution, a mesh, or
|
|
276
282
|
a geometry.
|
|
277
283
|
|
|
278
|
-
|
|
284
|
+
Global display attributes: The global display attributes control the default
|
|
279
285
|
appearance of all the surfaces (i.e. boundaries). Attributes include visibitiy,
|
|
280
286
|
what fields are displayed on the surfaces (if applicable), and representation
|
|
281
287
|
(e.g., surface, surface with edges, ...).
|
|
282
288
|
|
|
283
|
-
|
|
284
|
-
Additionally, if the scene is
|
|
289
|
+
Individual surface visibilities can be overidden to hide/show specific surfaces.
|
|
290
|
+
Additionally, if the scene is constructed around a simulation, a helper method is
|
|
285
291
|
provided to automatically hide surfaces associated with far fields.
|
|
286
292
|
|
|
287
293
|
.. warning:: This feature is experimental and may change or be removed in the future.
|
|
@@ -292,9 +298,32 @@ class Scene:
|
|
|
292
298
|
These attributes apply to all the surfaces in the
|
|
293
299
|
geometry/mesh/solution. Individual surface visibilities can be
|
|
294
300
|
overridden with the 'surface_visibility' function.
|
|
301
|
+
triad_visible: bool
|
|
302
|
+
This value controls whether the triad is visible or not in the rendered
|
|
303
|
+
images. Default: True
|
|
304
|
+
background_color: Vector3Like
|
|
305
|
+
This value controls then scene background color. These are rgb values in
|
|
306
|
+
the range [0,1] for each component. Default: [0,0,0]
|
|
307
|
+
axes_grid_visible: bool
|
|
308
|
+
This values controls whether the axes grid is visible or not in the
|
|
309
|
+
rendered images. Default: False
|
|
310
|
+
auto_color_map_annotations: bool
|
|
311
|
+
This values controls whether we automatically generate color map
|
|
312
|
+
annotations for all fields used in global and filter display attributes.
|
|
313
|
+
When False, only color maps explicitly added by the user appear in the
|
|
314
|
+
images. Default: True
|
|
315
|
+
supersampling: int
|
|
316
|
+
Supersampling controls anti-aliasing in output images. A value of 1 means no supersampling.
|
|
317
|
+
A value of 2 means we internally render at 2x the image resolution and downsample the image
|
|
318
|
+
to the requested resolution. Valid values are between 1 and 8. Default: 2
|
|
295
319
|
"""
|
|
296
320
|
|
|
297
321
|
def __init__(self, entity: Geometry | Mesh | Solution):
|
|
322
|
+
self.triad_visible: bool = True
|
|
323
|
+
self.axes_grid_visible: bool = True
|
|
324
|
+
self.background_color: Vector3 = Vector3(x=0, y=0, z=0)
|
|
325
|
+
self.auto_color_map_annotations = True
|
|
326
|
+
self.supersampling: int = 2
|
|
298
327
|
# Global display attrs
|
|
299
328
|
self.global_display_attrs = DisplayAttributes()
|
|
300
329
|
self._filters: List[Filter] = []
|
|
@@ -347,7 +376,7 @@ class Scene:
|
|
|
347
376
|
elif self._entity_type == EntityType.MESH:
|
|
348
377
|
mesh_meta = get_mesh_metadata(self._mesh.id)
|
|
349
378
|
try:
|
|
350
|
-
geom = get_geometry(self._mesh.geometry_version().
|
|
379
|
+
geom = get_geometry(self._mesh.geometry_version().geometry_id)
|
|
351
380
|
except NotFoundError:
|
|
352
381
|
self._has_tags = False
|
|
353
382
|
except Exception as e:
|
|
@@ -469,6 +498,35 @@ class Scene:
|
|
|
469
498
|
)
|
|
470
499
|
self._cameras.append(camera)
|
|
471
500
|
|
|
501
|
+
def _validate_surfaces_and_tags(self, ids: List[str]) -> List[str]:
|
|
502
|
+
"""
|
|
503
|
+
Validate a list of ids as either tags or ids. Returns a list of invalid ids. If the
|
|
504
|
+
length of the list is zero, the input list is valid.
|
|
505
|
+
"""
|
|
506
|
+
bad_ids: List[str] = []
|
|
507
|
+
for id in ids:
|
|
508
|
+
if id in self._tag_ids:
|
|
509
|
+
continue
|
|
510
|
+
if id not in self._surface_ids:
|
|
511
|
+
bad_ids.append(id)
|
|
512
|
+
return bad_ids
|
|
513
|
+
|
|
514
|
+
def _validate_filter_connections(self) -> None:
|
|
515
|
+
"""
|
|
516
|
+
Validate that the filters have valid connections.
|
|
517
|
+
"""
|
|
518
|
+
filter_ids: List[str] = []
|
|
519
|
+
for filter in self._filters:
|
|
520
|
+
filter_ids.append(filter.id)
|
|
521
|
+
|
|
522
|
+
for filter in self._filters:
|
|
523
|
+
parent_id = filter.get_parent_id()
|
|
524
|
+
if not parent_id:
|
|
525
|
+
# Using the root when we have an empty string
|
|
526
|
+
continue
|
|
527
|
+
if parent_id not in filter_ids:
|
|
528
|
+
raise ValueError(f"Filter {filter.id} parent {parent_id} not present in filters")
|
|
529
|
+
|
|
472
530
|
def _create_request(self, name: str, description: str) -> vis_pb2.CreateExtractRequest:
|
|
473
531
|
req = vis_pb2.CreateExtractRequest()
|
|
474
532
|
if len(self._cameras) == 0:
|
|
@@ -512,18 +570,104 @@ class Scene:
|
|
|
512
570
|
attrs.field.quantity_typ = quantitypb.INVALID_QUANTITY_TYPE
|
|
513
571
|
req.spec.display_attributes[id].CopyFrom(attrs)
|
|
514
572
|
|
|
573
|
+
self._validate_filter_connections()
|
|
574
|
+
cmap_fields: Dict[Field, bool] = {}
|
|
515
575
|
for filter in self._filters:
|
|
576
|
+
if isinstance(filter, SurfaceStreamlines):
|
|
577
|
+
# Validate surfaces names
|
|
578
|
+
streamlines = cast(SurfaceStreamlines, filter)
|
|
579
|
+
bad_ids = self._validate_surfaces_and_tags(streamlines._surface_names)
|
|
580
|
+
if len(bad_ids) != 0:
|
|
581
|
+
raise ValueError(f"SurfaceStreamlines has invalid surfaces: {bad_ids}")
|
|
582
|
+
|
|
516
583
|
if isinstance(filter, Filter):
|
|
517
584
|
vis_filter: vis_pb2.Filter = filter._to_proto()
|
|
518
585
|
req.spec.filters.append(vis_filter)
|
|
519
586
|
req.spec.display_attributes[filter.id].CopyFrom(filter.display_attrs._to_proto())
|
|
520
587
|
else:
|
|
521
588
|
raise TypeError(f"Expected 'filter', got {type(filter).__name__}")
|
|
589
|
+
if filter.get_parent_id():
|
|
590
|
+
req.spec.filter_connections[filter.get_parent_id()].children_id.append(filter.id)
|
|
591
|
+
if (
|
|
592
|
+
self.auto_color_map_annotations
|
|
593
|
+
and filter.display_attrs.field.quantity != VisQuantity.NONE
|
|
594
|
+
and filter.display_attrs.visible
|
|
595
|
+
):
|
|
596
|
+
cmap_fields[filter.display_attrs.field] = True
|
|
522
597
|
|
|
523
598
|
for cmap in self._color_maps:
|
|
599
|
+
if self.auto_color_map_annotations and not cmap.appearance:
|
|
600
|
+
# Defer color map processing to the auto color annotation.
|
|
601
|
+
continue
|
|
524
602
|
color_map: vis_pb2.ColorMap = cmap._to_proto()
|
|
525
603
|
req.spec.color_maps.append(color_map)
|
|
526
604
|
|
|
605
|
+
# Add the automated color maps if enabled. If we don't specify them
|
|
606
|
+
# in the proto, the annotations will not appear in the image.
|
|
607
|
+
if self.auto_color_map_annotations:
|
|
608
|
+
auto_cmaps: List[ColorMap] = []
|
|
609
|
+
for field in cmap_fields:
|
|
610
|
+
found = False
|
|
611
|
+
# Make sure we don't have an explicit color map for this field.
|
|
612
|
+
for cmap in self._color_maps:
|
|
613
|
+
if field == cmap.field:
|
|
614
|
+
found = True
|
|
615
|
+
if not found:
|
|
616
|
+
default_cmap = ColorMap()
|
|
617
|
+
default_cmap.field = field
|
|
618
|
+
default_cmap.appearance = ColorMapAppearance()
|
|
619
|
+
auto_cmaps.append(default_cmap)
|
|
620
|
+
for cmap in self._color_maps:
|
|
621
|
+
if not cmap.appearance:
|
|
622
|
+
# Include any color maps with no appearance set. We skipped
|
|
623
|
+
# processing them above
|
|
624
|
+
cmap.appearance = ColorMapAppearance()
|
|
625
|
+
auto_cmaps.append(cmap)
|
|
626
|
+
if len(auto_cmaps) != 0:
|
|
627
|
+
# These are all default contructed, so they all have the same dimentions.
|
|
628
|
+
# All the coordinates are in normalized device space.
|
|
629
|
+
assert auto_cmaps[0].appearance != None
|
|
630
|
+
appearance = cast(ColorMapAppearance, auto_cmaps[0].appearance)
|
|
631
|
+
width = appearance.width
|
|
632
|
+
height = appearance.height
|
|
633
|
+
x_padding = 0.05
|
|
634
|
+
y_padding = 0.05
|
|
635
|
+
# Placing them on the right side.
|
|
636
|
+
lower_left_x = 1.0 - width - x_padding
|
|
637
|
+
lower_left_y = 1.0 - height - y_padding
|
|
638
|
+
for cmap in auto_cmaps:
|
|
639
|
+
assert cmap.appearance != None
|
|
640
|
+
cmap_appearance = cast(ColorMapAppearance, cmap.appearance)
|
|
641
|
+
cmap_appearance.lower_left_x = lower_left_x
|
|
642
|
+
cmap_appearance.lower_left_y = lower_left_y
|
|
643
|
+
lower_left_y = lower_left_y - height - y_padding
|
|
644
|
+
if lower_left_y < 0:
|
|
645
|
+
lower_left_y = 0
|
|
646
|
+
color_map_proto: vis_pb2.ColorMap = cmap._to_proto()
|
|
647
|
+
req.spec.color_maps.append(color_map_proto)
|
|
648
|
+
|
|
649
|
+
if not isinstance(self.triad_visible, bool):
|
|
650
|
+
raise TypeError(f"Expected 'bool', got {type(self.triad_visible).__name__}")
|
|
651
|
+
req.spec.triad_properties.visible = self.triad_visible
|
|
652
|
+
|
|
653
|
+
if not isinstance(self.axes_grid_visible, bool):
|
|
654
|
+
raise TypeError(f"Expected 'bool', got {type(self.axes_grid_visible).__name__}")
|
|
655
|
+
req.spec.axes_grid_properties.visible = self.axes_grid_visible
|
|
656
|
+
|
|
657
|
+
bg_color = _to_vector3(self.background_color)._to_proto()
|
|
658
|
+
if not _is_valid_color(bg_color):
|
|
659
|
+
raise ValueError(f"Background color is not in the range [0,1]: {bg_color}")
|
|
660
|
+
req.spec.background_properties.color.r = bg_color.x
|
|
661
|
+
req.spec.background_properties.color.g = bg_color.y
|
|
662
|
+
req.spec.background_properties.color.b = bg_color.z
|
|
663
|
+
req.spec.background_properties.color.a = 1
|
|
664
|
+
|
|
665
|
+
if not isinstance(self.supersampling, int):
|
|
666
|
+
raise TypeError(f"Expected 'int', got {type(self.supersampling).__name__}")
|
|
667
|
+
if self.supersampling < 1 or self.supersampling > 8:
|
|
668
|
+
raise ValueError(f"Supersampling value is not in the range [1,8]: {self.supersampling}")
|
|
669
|
+
req.spec.supersampling_ratio = self.supersampling
|
|
670
|
+
|
|
527
671
|
req.project_id = self._project_id
|
|
528
672
|
if self._entity_type == EntityType.SIMULATION:
|
|
529
673
|
req.spec.entity_type.simulation.id = self._solution.simulation_id
|
|
@@ -552,22 +696,24 @@ class Scene:
|
|
|
552
696
|
req: vis_pb2.CreateExtractRequest = self._create_request(name=name, description=description)
|
|
553
697
|
res: vis_pb2.CreateExtractResponse = get_default_client().CreateExtract(req)
|
|
554
698
|
logger.info("Successfully submitted 'render_images' request")
|
|
555
|
-
|
|
699
|
+
render_output = RenderOutput(_InternalToken())
|
|
700
|
+
render_output._set_data(
|
|
556
701
|
extract_id=res.extract.extract_id,
|
|
557
702
|
project_id=self._project_id,
|
|
558
703
|
name=name,
|
|
559
704
|
desciption=description,
|
|
560
705
|
status=RenderStatusType(res.extract.status),
|
|
561
706
|
)
|
|
707
|
+
return render_output
|
|
562
708
|
|
|
563
|
-
def interact(self) -> InteractiveScene:
|
|
709
|
+
def interact(self, scene_mode: SceneMode = SceneMode.SIDE_PANEL) -> InteractiveScene:
|
|
564
710
|
"""
|
|
565
711
|
Start an interactive display of the scene, when running inside LuminaryCloud's
|
|
566
712
|
AI Notebook environment or Jupyter Lab. The returned object must be displayed
|
|
567
713
|
in the notebook to display the interactive visualization. This requires that
|
|
568
714
|
the luminarycloud package was installed with the optional jupyter feature.
|
|
569
715
|
"""
|
|
570
|
-
self._interactive_scene = InteractiveScene(self)
|
|
716
|
+
self._interactive_scene = InteractiveScene(self, mode=scene_mode)
|
|
571
717
|
return self._interactive_scene
|
|
572
718
|
|
|
573
719
|
|
|
@@ -589,14 +735,15 @@ def get_render(project_id: str, extract_id: str) -> RenderOutput:
|
|
|
589
735
|
req.extract_id = extract_id
|
|
590
736
|
req.project_id = project_id
|
|
591
737
|
res: vis_pb2.GetExtractResponse = get_default_client().GetExtract(req)
|
|
592
|
-
|
|
738
|
+
render_output = RenderOutput(_InternalToken())
|
|
739
|
+
render_output._set_data(
|
|
593
740
|
extract_id=extract_id,
|
|
594
741
|
project_id=project_id,
|
|
595
742
|
name=res.extract.name,
|
|
596
743
|
desciption=res.extract.description,
|
|
597
744
|
status=RenderStatusType(res.extract.status),
|
|
598
745
|
)
|
|
599
|
-
return
|
|
746
|
+
return render_output
|
|
600
747
|
|
|
601
748
|
|
|
602
749
|
def list_quantities(solution: Solution) -> List[VisQuantity]:
|
|
@@ -677,15 +824,14 @@ def list_renders(entity: Geometry | Mesh | Solution) -> List[RenderOutput]:
|
|
|
677
824
|
|
|
678
825
|
results: List[RenderOutput] = []
|
|
679
826
|
for extract in res.extracts:
|
|
680
|
-
result = RenderOutput(
|
|
827
|
+
result = RenderOutput(_InternalToken())
|
|
828
|
+
result._set_data(
|
|
681
829
|
extract_id=extract.extract_id,
|
|
682
830
|
project_id=extract.project_id,
|
|
683
831
|
name=extract.name,
|
|
684
832
|
desciption=extract.description,
|
|
685
833
|
status=RenderStatusType(extract.status),
|
|
686
834
|
)
|
|
687
|
-
|
|
688
|
-
# TODO(matt): the List extracts request is giving us nil for the status.
|
|
689
835
|
# This need to be fixed on the backend, but manually refreshing works for now.
|
|
690
836
|
result.refresh()
|
|
691
837
|
results.append(result)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: luminarycloud
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0
|
|
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/
|
|
@@ -29,7 +29,6 @@ Requires-Dist: waitress~=3.0.1
|
|
|
29
29
|
Requires-Dist: werkzeug~=3.0.1
|
|
30
30
|
Provides-Extra: jupyter
|
|
31
31
|
Requires-Dist: luminarycloud-jupyter; extra == 'jupyter'
|
|
32
|
-
Requires-Dist: requests; extra == 'jupyter'
|
|
33
32
|
Description-Content-Type: text/markdown
|
|
34
33
|
|
|
35
34
|
Luminary Cloud's Python Software Development Kit (SDK) allows you to access many of the features within our platform programmatically (i.e. without needing to go through the graphical user interface in your browser).
|