resqpy 4.18.11__tar.gz → 5.0.0__tar.gz
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.
- {resqpy-4.18.11 → resqpy-5.0.0}/PKG-INFO +7 -7
- {resqpy-4.18.11 → resqpy-5.0.0}/pyproject.toml +8 -8
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/__init__.py +1 -1
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/__init__.py +2 -3
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_grid.py +1 -7
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid_surface/_find_faces.py +3 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/lines/_polyline.py +24 -33
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/model/_model.py +4 -2
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/multi_processing/wrappers/grid_surface_mp.py +1 -1
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/triangulation.py +4 -3
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/volume.py +0 -20
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/__init__.py +3 -2
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/rq_import/_grid_from_cp.py +2 -2
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/surface/_surface.py +223 -47
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/time_series/_any_time_series.py +5 -4
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/well/_blocked_well.py +1916 -1910
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/well/_md_datum.py +11 -21
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/well/_wellbore_frame.py +10 -2
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/well/well_utils.py +33 -0
- resqpy-4.18.11/resqpy/grid/_moved_functions.py +0 -15
- {resqpy-4.18.11 → resqpy-5.0.0}/LICENSE +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/README.md +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/crs.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_add_edges_per_column_property_array.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_add_faults.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_add_one_blocked_well_property.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_add_one_grid_property_array.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_add_single_cell_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_add_wells_from_ascii_file.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_add_zone_by_layer_property.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_coarsened_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_common.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_copy_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_drape_to_surface.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_extract_box.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_extract_box_for_well.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_fault_throw_scaling.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_gather_ensemble.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_interpolated_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_local_depth_adjustment.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_refined_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_tilted_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_unsplit_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_zonal_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/derived_model/_zone_layer_ranges_from_array.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/fault/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/fault/_gcs_functions.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/fault/_grid_connection_set.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_cell_properties.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_connection_sets.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_create_grid_xml.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_defined_geometry.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_extract_functions.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_face_functions.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_faults.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_grid_types.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_intervals_info.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_pillars.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_pixel_maps.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_points_functions.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_regular_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_transmissibility.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_write_hdf5_from_caches.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_write_nexus_corp.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid/_xyz.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid_surface/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid_surface/_blocked_well_populate.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid_surface/_grid_skin.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid_surface/_grid_surface.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid_surface/_trajectory_intersects.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/grid_surface/grid_surface_cuda.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/lines/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/lines/_common.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/lines/_polyline_set.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/model/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/model/_catalogue.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/model/_context.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/model/_forestry.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/model/_grids.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/model/_hdf5.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/model/_xml.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/multi_processing/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/multi_processing/_multiprocessing.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/multi_processing/wrappers/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/multi_processing/wrappers/blocked_well_mp.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/multi_processing/wrappers/mesh_mp.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/ab_toolbox.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/base.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/box_utilities.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/class_dict.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/consolidation.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/data/build.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/data/properties.json +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/dataframe.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/exceptions.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/factors.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/fine_coarse.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/grid_functions.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/intersection.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/keyword_files.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/load_data.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/point_inclusion.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/random_seed.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/read_nexus_fault.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/relperm.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/simple_lines.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/time.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/trademark.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/transmission.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/uuid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/vdb.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/vector_utilities.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/wellspec_keywords.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/write_data.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/write_hdf5.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/xml_et.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/xml_namespaces.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/olio/zmap_reader.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/_utils.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/boundary_feature.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/boundary_feature_interpretation.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/earth_model_interpretation.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/fault_interpretation.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/fluid_boundary_feature.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/frontier_feature.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/generic_interpretation.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/genetic_boundary_feature.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/geobody_boundary_interpretation.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/geobody_feature.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/geobody_interpretation.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/geologic_unit_feature.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/horizon_interpretation.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/organization_feature.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/rock_fluid_unit_feature.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/structural_organization_interpretation.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/tectonic_boundary_feature.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/wellbore_feature.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/organize/wellbore_interpretation.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/_collection_add_part.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/_collection_create_xml.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/_collection_get_attributes.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/_collection_support.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/_property.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/attribute_property_set.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/grid_property_collection.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/property_collection.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/property_common.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/property_kind.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/string_lookup.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/well_interval_property.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/well_interval_property_collection.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/well_log.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/property/well_log_collection.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/rq_import/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/rq_import/_add_ab_properties.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/rq_import/_add_surfaces.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/rq_import/_import_nexus.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/rq_import/_import_vdb_all_grids.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/rq_import/_import_vdb_ensemble.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/strata/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/strata/_binary_contact_interpretation.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/strata/_geologic_unit_interpretation.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/strata/_strata_common.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/strata/_stratigraphic_column.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/strata/_stratigraphic_column_rank.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/strata/_stratigraphic_unit_feature.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/strata/_stratigraphic_unit_interpretation.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/surface/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/surface/_base_surface.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/surface/_combined_surface.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/surface/_mesh.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/surface/_pointset.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/surface/_tri_mesh.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/surface/_tri_mesh_stencil.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/surface/_triangulated_patch.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/time_series/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/time_series/_from_nexus_summary.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/time_series/_functions.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/time_series/_geologic_time_series.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/time_series/_time_duration.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/time_series/_time_series.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/unstructured/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/unstructured/_hexa_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/unstructured/_prism_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/unstructured/_pyramid_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/unstructured/_tetra_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/unstructured/_unstructured_grid.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/weights_and_measures/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/weights_and_measures/nexus_units.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/weights_and_measures/weights_and_measures.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/well/__init__.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/well/_deviation_survey.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/well/_trajectory.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/well/_wellbore_marker.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/well/_wellbore_marker_frame.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/well/blocked_well_frame.py +0 -0
- {resqpy-4.18.11 → resqpy-5.0.0}/resqpy/well/well_object_funcs.py +0 -0
@@ -1,12 +1,12 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: resqpy
|
3
|
-
Version:
|
3
|
+
Version: 5.0.0
|
4
4
|
Summary: Python API for working with RESQML models
|
5
5
|
Home-page: https://github.com/bp/resqpy
|
6
6
|
License: MIT
|
7
7
|
Keywords: RESQML
|
8
8
|
Author: BP
|
9
|
-
Requires-Python: >=3.
|
9
|
+
Requires-Python: >=3.9,<3.13
|
10
10
|
Classifier: Development Status :: 5 - Production/Stable
|
11
11
|
Classifier: License :: OSI Approved :: MIT License
|
12
12
|
Classifier: Operating System :: OS Independent
|
@@ -14,17 +14,17 @@ Classifier: Programming Language :: Python :: 3
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.9
|
15
15
|
Classifier: Programming Language :: Python :: 3.10
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
17
|
-
Classifier: Programming Language :: Python :: 3.
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
18
18
|
Classifier: Topic :: Scientific/Engineering
|
19
19
|
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
20
20
|
Classifier: Topic :: System :: Filesystems
|
21
21
|
Requires-Dist: h5py (>=3.7,<4.0)
|
22
22
|
Requires-Dist: joblib (>=1.2,<2.0)
|
23
23
|
Requires-Dist: lasio (>=0.31,<0.32)
|
24
|
-
Requires-Dist: lxml (>=
|
25
|
-
Requires-Dist: numba (>=0.
|
26
|
-
Requires-Dist: numpy (>=1.
|
27
|
-
Requires-Dist: pandas (>=
|
24
|
+
Requires-Dist: lxml (>=5.1,<6.0)
|
25
|
+
Requires-Dist: numba (>=0.59,<1.0)
|
26
|
+
Requires-Dist: numpy (>=1.26,<2.0)
|
27
|
+
Requires-Dist: pandas (>=2.2,<3.0)
|
28
28
|
Requires-Dist: scipy (>=1.9,<2.0)
|
29
29
|
Project-URL: Documentation, https://resqpy.readthedocs.io/en/latest/
|
30
30
|
Project-URL: Repository, https://github.com/bp/resqpy
|
@@ -9,7 +9,7 @@ build-backend = "poetry.masonry.api"
|
|
9
9
|
|
10
10
|
[tool.poetry]
|
11
11
|
name = "resqpy"
|
12
|
-
version = "
|
12
|
+
version = "5.0.0" # Set at build time
|
13
13
|
description = "Python API for working with RESQML models"
|
14
14
|
authors = ["BP"]
|
15
15
|
license = "MIT"
|
@@ -20,10 +20,10 @@ keywords = ["RESQML"]
|
|
20
20
|
classifiers = [
|
21
21
|
"License :: OSI Approved :: MIT License",
|
22
22
|
"Operating System :: OS Independent",
|
23
|
-
"Programming Language :: Python :: 3.8",
|
24
23
|
"Programming Language :: Python :: 3.9",
|
25
24
|
"Programming Language :: Python :: 3.10",
|
26
25
|
"Programming Language :: Python :: 3.11",
|
26
|
+
"Programming Language :: Python :: 3.12",
|
27
27
|
"Development Status :: 5 - Production/Stable",
|
28
28
|
"Topic :: Scientific/Engineering",
|
29
29
|
"Topic :: System :: Filesystems",
|
@@ -40,14 +40,14 @@ include = ["data/*.json"]
|
|
40
40
|
# - https://semver.org/
|
41
41
|
# See here for "caret" style dependency specifications:
|
42
42
|
# - https://python-poetry.org/docs/dependency-specification/
|
43
|
-
python = ">= 3.
|
44
|
-
numpy = "^1.
|
45
|
-
pandas = "^
|
43
|
+
python = ">= 3.9, < 3.13"
|
44
|
+
numpy = "^1.26"
|
45
|
+
pandas = "^2.2"
|
46
46
|
h5py = "^3.7"
|
47
|
-
lxml = "^
|
47
|
+
lxml = "^5.1"
|
48
48
|
lasio = "^0.31"
|
49
49
|
scipy = "^1.9"
|
50
|
-
numba = ">=0.
|
50
|
+
numba = ">=0.59, < 1.0"
|
51
51
|
joblib = "^1.2"
|
52
52
|
|
53
53
|
[tool.poetry.group.dev.dependencies]
|
@@ -117,4 +117,4 @@ filterwarnings = [
|
|
117
117
|
"ignore:.*importing the ABCs from 'collections'.*:DeprecationWarning:.*pyreadline.*",
|
118
118
|
"ignore:.*the imp module is deprecated in favour of importlib.*:DeprecationWarning:.*pywintypes.*",
|
119
119
|
"ignore:.*distutils package is deprecated.*:DeprecationWarning:.*joblib.*",
|
120
|
-
]
|
120
|
+
]
|
@@ -1,14 +1,13 @@
|
|
1
1
|
"""The Grid Module."""
|
2
2
|
|
3
3
|
__all__ = [
|
4
|
-
'Grid', 'RegularGrid', 'extract_grid_parent', '
|
5
|
-
'
|
4
|
+
'Grid', 'RegularGrid', 'extract_grid_parent', 'find_cell_for_x_sect_xz', 'grid_flavour', 'is_regular_grid',
|
5
|
+
'any_grid'
|
6
6
|
]
|
7
7
|
|
8
8
|
from ._grid import Grid
|
9
9
|
from ._regular_grid import RegularGrid
|
10
10
|
from ._grid_types import grid_flavour, is_regular_grid, any_grid
|
11
|
-
from ._moved_functions import establish_zone_property_kind
|
12
11
|
from ._extract_functions import extract_grid_parent, extent_kji_from_root
|
13
12
|
from ._points_functions import find_cell_for_x_sect_xz
|
14
13
|
|
@@ -680,13 +680,7 @@ class Grid(BaseResqpy):
|
|
680
680
|
return _create_grid_xml(self, ijk, ext_uuid, add_as_part, add_relationships, write_active, write_geometry,
|
681
681
|
use_lattice, use_parametric_lines)
|
682
682
|
|
683
|
-
|
684
|
-
"""Deprecated: please use `unsplit_x_section_points` instead."""
|
685
|
-
warnings.warn('Deprecated: please use `unsplit_x_section_points` instead.', DeprecationWarning)
|
686
|
-
|
687
|
-
return unsplit_x_section_points(self, axis, ref_slice0 = ref_slice0, plus_face = plus_face, masked = masked)
|
688
|
-
|
689
|
-
# The implementations of the below functions have been moved to separate modules.
|
683
|
+
# the implementations of the functions below have been moved to separate modules
|
690
684
|
|
691
685
|
def cell_geometry_is_defined(self, cell_kji0 = None, cell_geometry_is_defined_root = None, cache_array = True):
|
692
686
|
"""Returns True if the geometry of the specified cell is defined.
|
@@ -558,6 +558,8 @@ def find_faces_to_represent_surface_regular_dense_optimised(grid,
|
|
558
558
|
to a grid connection set; use the non-dense version of the function for a reduced memory footprint;
|
559
559
|
this function is DEPRECATED pending proving of newer find_faces_to_represent_surface_regular_optimised()
|
560
560
|
"""
|
561
|
+
warnings.warn('DEPRECATED: grid_surface.find_faces_to_represent_surface_regular_dense_optimised() function; ' +
|
562
|
+
'use find_faces_to_represent_surface_regular_optimised() instead')
|
561
563
|
|
562
564
|
assert isinstance(grid, grr.RegularGrid)
|
563
565
|
assert grid.is_aligned
|
@@ -1363,6 +1365,7 @@ def bisector_from_faces( # type: ignore
|
|
1363
1365
|
assigned to either the True or False part
|
1364
1366
|
- this function is DEPRECATED, pending proving of newer indices based approach
|
1365
1367
|
"""
|
1368
|
+
warnings.warn('DEPRECATED: grid_surface.bisector_from_faces() function; use bisector_from_face_indices() instead')
|
1366
1369
|
assert len(grid_extent_kji) == 3
|
1367
1370
|
|
1368
1371
|
# find the surface boundary (includes a buffer slice where surface does not reach edge of grid)
|
@@ -25,25 +25,22 @@ class Polyline(rql_c._BasePolyline):
|
|
25
25
|
|
26
26
|
resqml_type = 'PolylineRepresentation'
|
27
27
|
|
28
|
-
def __init__(
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
originator = None,
|
39
|
-
extra_metadata = None):
|
28
|
+
def __init__(self,
|
29
|
+
parent_model,
|
30
|
+
uuid = None,
|
31
|
+
set_coord = None,
|
32
|
+
set_crs = None,
|
33
|
+
is_closed = None,
|
34
|
+
title = None,
|
35
|
+
rep_int_root = None,
|
36
|
+
originator = None,
|
37
|
+
extra_metadata = None):
|
40
38
|
"""Initialises a new polyline object.
|
41
39
|
|
42
40
|
arguments:
|
43
41
|
parent_model (model.Model object): the model which the new PolylineRepresentation belongs to
|
44
42
|
uuid (uuid.UUID, optional): the uuid of an existing RESQML PolylineRepresentation from which
|
45
43
|
to initialise the resqpy Polyline
|
46
|
-
set_bool (boolean, optional): DEPRECATED: synonym for is_closed argument
|
47
44
|
set_coord (numpy float array, optional): an ordered set of xyz values used to define a new polyline;
|
48
45
|
last dimension of array must have extent 3; ignored if uuid is not None
|
49
46
|
set_crs (uuid.UUID, optional): the uuid of a crs to be used when initialising from coordinates;
|
@@ -65,10 +62,6 @@ class Polyline(rql_c._BasePolyline):
|
|
65
62
|
"""
|
66
63
|
|
67
64
|
self.model = parent_model
|
68
|
-
if set_bool is not None:
|
69
|
-
warnings.warn('DEPRECATED: use is_closed argument instead of set_bool, in Polyline initialisation')
|
70
|
-
if is_closed is None:
|
71
|
-
is_closed = set_bool
|
72
65
|
self.isclosed = is_closed
|
73
66
|
self.nodepatch = None
|
74
67
|
self.crs_uuid = set_crs
|
@@ -466,22 +459,20 @@ class Polyline(rql_c._BasePolyline):
|
|
466
459
|
if cache and self.centre is not None:
|
467
460
|
return self.centre
|
468
461
|
assert mode in ['weighted', 'sampled']
|
469
|
-
if mode
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
seg_count
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
sum += (p1 + p2) * vu.naive_length(p2 - p1)
|
484
|
-
centre = sum / (2.0 * self.full_length(in_xy = in_xy))
|
462
|
+
if mode != 'weighted': # ignore any other mode, ie. sampled
|
463
|
+
warnings.warn('DEPRECATED: weighted mode is only mode now supported for Polyline.balanced_centre()')
|
464
|
+
sum = np.zeros(3)
|
465
|
+
seg_count = len(self.coordinates) - 1
|
466
|
+
if self.isclosed:
|
467
|
+
seg_count += 1
|
468
|
+
d = 2 if in_xy else 3
|
469
|
+
p1 = np.zeros(3)
|
470
|
+
p2 = np.zeros(3)
|
471
|
+
for seg_index in range(seg_count):
|
472
|
+
successor = (seg_index + 1) % len(self.coordinates)
|
473
|
+
p1[:d], p2[:d] = self.coordinates[seg_index, :d], self.coordinates[successor, :d]
|
474
|
+
sum += (p1 + p2) * vu.naive_length(p2 - p1)
|
475
|
+
centre = sum / (2.0 * self.full_length(in_xy = in_xy))
|
485
476
|
if cache:
|
486
477
|
self.centre = centre
|
487
478
|
return centre
|
@@ -1340,7 +1340,8 @@ class Model():
|
|
1340
1340
|
an hdf5 file name is cached once determined for a given ext uuid; to clear the cache,
|
1341
1341
|
call the h5_clear_filename_cache() method
|
1342
1342
|
"""
|
1343
|
-
|
1343
|
+
if isinstance(override, bool):
|
1344
|
+
warnings.warn('DEPRECATED: boolean override argument to Model.h5_file_name(); use string instead')
|
1344
1345
|
return m_h._h5_file_name(self, uuid = uuid, override = override, file_must_exist = file_must_exist)
|
1345
1346
|
|
1346
1347
|
def h5_access(self, uuid = None, mode = 'r', override = 'default', file_path = None):
|
@@ -1366,7 +1367,8 @@ class Model():
|
|
1366
1367
|
an exception will be raised if the hdf5 file cannot be opened; note that sometimes another
|
1367
1368
|
piece of code accessing the file might cause a 'resource unavailable' exception
|
1368
1369
|
"""
|
1369
|
-
|
1370
|
+
if isinstance(override, bool):
|
1371
|
+
warnings.warn('DEPRECATED: boolean override argument to Model.h5_access(); use string instead')
|
1370
1372
|
return m_h._h5_access(self, uuid = uuid, mode = mode, override = override, file_path = file_path)
|
1371
1373
|
|
1372
1374
|
def h5_release(self):
|
@@ -213,7 +213,7 @@ def find_faces_to_represent_surface_regular_wrapper(index: int,
|
|
213
213
|
surface = rqs.Surface(model, crs_uuid = grid.crs.uuid, title = surf_title)
|
214
214
|
flange_bool = surface.set_from_point_set(pset,
|
215
215
|
convexity_parameter = 2.0,
|
216
|
-
reorient =
|
216
|
+
reorient = reorient,
|
217
217
|
extend_with_flange = extend_fault_representation,
|
218
218
|
flange_inner_ring = flange_inner_ring,
|
219
219
|
saucer_parameter = saucer_parameter,
|
@@ -25,7 +25,7 @@ import resqpy.olio.vector_utilities as vec
|
|
25
25
|
|
26
26
|
def _dt_scipy(points: np.ndarray) -> Tuple[np.ndarray, np.ndarray]:
|
27
27
|
"""Calculates the Delaunay triangulation for an array of points and the convex hull indices.
|
28
|
-
|
28
|
+
|
29
29
|
arguments:
|
30
30
|
points (np.ndarray): coordinates of the points to triangulate; array has shape
|
31
31
|
(npoints, ndim)
|
@@ -871,6 +871,7 @@ def surrounding_xy_ring(p,
|
|
871
871
|
numpy float array of shape (N, 3) being xyz points in surrounding ring(s); z is set constant to
|
872
872
|
mean value of z in p (optionally adjussted based on saucer_angle);
|
873
873
|
N is count if inner_ring is False, 3 * count if True
|
874
|
+
radius used for ring of additional points
|
874
875
|
"""
|
875
876
|
|
876
877
|
def make_ring(count, centre, radius, saucer_angle):
|
@@ -898,8 +899,8 @@ def surrounding_xy_ring(p,
|
|
898
899
|
inner_radius = p_radius * 1.1
|
899
900
|
assert radius > inner_radius
|
900
901
|
in_ring = make_ring(2 * count, centre, inner_radius, saucer_angle)
|
901
|
-
return np.concatenate((in_ring, ring), axis = 0)
|
902
|
-
return ring
|
902
|
+
return np.concatenate((in_ring, ring), axis = 0), radius
|
903
|
+
return ring, radius
|
903
904
|
|
904
905
|
|
905
906
|
def edges(t):
|
@@ -77,26 +77,6 @@ def tetra_cell_volume(cp, centre = None, off_hand = False):
|
|
77
77
|
return v / 6.0
|
78
78
|
|
79
79
|
|
80
|
-
def tetra_volumes_slow(cp, centres = None, off_hand = False):
|
81
|
-
"""Returns volume array for all hexahedral cells assuming bilinear faces, using loop over cells."""
|
82
|
-
|
83
|
-
# NB: deprecated, superceded by much faster function below
|
84
|
-
# todo: handle NaNs
|
85
|
-
# Pagoda style corner point data
|
86
|
-
assert cp.ndim == 7
|
87
|
-
|
88
|
-
flat = cp.reshape(-1, 2, 2, 2, 3)
|
89
|
-
cells = flat.shape[0]
|
90
|
-
if centres is None:
|
91
|
-
centres = np.mean(flat, axis = (1, 2, 3))
|
92
|
-
else:
|
93
|
-
centres = centres.reshape((-1, 3))
|
94
|
-
volumes = np.zeros(cells)
|
95
|
-
for cell in range(cells):
|
96
|
-
volumes[cell] = tetra_cell_volume(flat[cell], centre = centres[cell], off_hand = off_hand)
|
97
|
-
return volumes.reshape(cp.shape[0:3])
|
98
|
-
|
99
|
-
|
100
80
|
def tetra_volumes(cp, centres = None, off_hand = False):
|
101
81
|
"""Returns volume array for all hexahedral cells assuming bilinear faces, using numpy operations.
|
102
82
|
|
@@ -8,7 +8,8 @@ __all__ = [
|
|
8
8
|
'reformat_column_edges_from_resqml_format', 'same_property_kind', 'selective_version_of_collection',
|
9
9
|
'supported_local_property_kind_list', 'supported_property_kind_list', 'supported_facet_type_list',
|
10
10
|
'expected_facet_type_dict', 'create_transmisibility_multiplier_property_kind',
|
11
|
-
'property_kind_and_facet_from_keyword', 'guess_uom', 'property_parts', 'property_part', 'make_aps_key'
|
11
|
+
'property_kind_and_facet_from_keyword', 'guess_uom', 'property_parts', 'property_part', 'make_aps_key',
|
12
|
+
'establish_zone_property_kind'
|
12
13
|
]
|
13
14
|
|
14
15
|
from .property_common import property_collection_for_keyword, \
|
@@ -27,7 +28,7 @@ from .property_common import property_collection_for_keyword, \
|
|
27
28
|
guess_uom, \
|
28
29
|
property_parts, \
|
29
30
|
property_part
|
30
|
-
from .property_kind import PropertyKind, create_transmisibility_multiplier_property_kind
|
31
|
+
from .property_kind import PropertyKind, create_transmisibility_multiplier_property_kind, establish_zone_property_kind
|
31
32
|
from .string_lookup import StringLookup
|
32
33
|
from .property_collection import PropertyCollection
|
33
34
|
from .attribute_property_set import AttributePropertySet, ApsProperty, make_aps_key
|
@@ -511,8 +511,8 @@ class _GridFromCp:
|
|
511
511
|
assert len(where_defined) == 3 and len(where_defined[0]) > 0, 'no extant cell geometries'
|
512
512
|
sample_kji0 = (where_defined[0][0], where_defined[1][0], where_defined[2][0])
|
513
513
|
sample_cp = self.__cp_array[sample_kji0]
|
514
|
-
self.__cell_ijk_lefthanded =
|
515
|
-
|
514
|
+
self.__cell_ijk_lefthanded = \
|
515
|
+
(vec.clockwise(sample_cp[0, 0, 0], sample_cp[0, 1, 0], sample_cp[0, 0, 1]) >= 0.0)
|
516
516
|
if not self.grid.k_direction_is_down:
|
517
517
|
self.__cell_ijk_lefthanded = not self.__cell_ijk_lefthanded
|
518
518
|
if self.__crs.is_right_handed_xyz():
|