resqpy 4.18.0__py3-none-any.whl → 4.18.2__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.
- resqpy/__init__.py +1 -1
 - resqpy/grid_surface/_find_faces.py +11 -7
 - resqpy/multi_processing/wrappers/grid_surface_mp.py +43 -40
 - resqpy/olio/write_hdf5.py +1 -1
 - resqpy/property/_collection_add_part.py +4 -3
 - resqpy/property/_collection_create_xml.py +3 -1
 - resqpy/property/property_collection.py +20 -9
 - {resqpy-4.18.0.dist-info → resqpy-4.18.2.dist-info}/METADATA +1 -1
 - {resqpy-4.18.0.dist-info → resqpy-4.18.2.dist-info}/RECORD +11 -11
 - {resqpy-4.18.0.dist-info → resqpy-4.18.2.dist-info}/LICENSE +0 -0
 - {resqpy-4.18.0.dist-info → resqpy-4.18.2.dist-info}/WHEEL +0 -0
 
    
        resqpy/__init__.py
    CHANGED
    
    
| 
         @@ -865,7 +865,7 @@ def find_faces_to_represent_surface_regular_dense_optimised(grid, 
     | 
|
| 
       865 
865 
     | 
    
         
             
                if progress_fn is not None:
         
     | 
| 
       866 
866 
     | 
    
         
             
                    progress_fn(1.0)
         
     | 
| 
       867 
867 
     | 
    
         | 
| 
       868 
     | 
    
         
            -
                log.debug(f"finishing  
     | 
| 
      
 868 
     | 
    
         
            +
                log.debug(f"finishing find_faces_to_represent_surface_regular_dense_optimised for {name}")
         
     | 
| 
       869 
869 
     | 
    
         | 
| 
       870 
870 
     | 
    
         
             
                # if returning properties, construct dictionary
         
     | 
| 
       871 
871 
     | 
    
         
             
                if return_properties:
         
     | 
| 
         @@ -1537,7 +1537,7 @@ def packed_bisector_from_face_indices(  # type: ignore 
     | 
|
| 
       1537 
1537 
     | 
    
         | 
| 
       1538 
1538 
     | 
    
         
             
                # find the surface boundary (includes a buffer slice where surface does not reach edge of grid), and shrink the I axis
         
     | 
| 
       1539 
1539 
     | 
    
         
             
                box = get_packed_boundary_from_indices(k_faces_kji0, j_faces_kji0, i_faces_kji0, grid_extent_kji)
         
     | 
| 
       1540 
     | 
    
         
            -
                # set k_faces as uint8 packed bool arrays covering box
         
     | 
| 
      
 1540 
     | 
    
         
            +
                # set k_faces, j_faces & i_faces as uint8 packed bool arrays covering box
         
     | 
| 
       1541 
1541 
     | 
    
         
             
                k_faces, j_faces, i_faces = _packed_box_face_arrays_from_indices(k_faces_kji0, j_faces_kji0, i_faces_kji0, box)
         
     | 
| 
       1542 
1542 
     | 
    
         | 
| 
       1543 
1543 
     | 
    
         
             
                box_shape = box[1, :] - box[0, :]
         
     | 
| 
         @@ -1562,9 +1562,10 @@ def packed_bisector_from_face_indices(  # type: ignore 
     | 
|
| 
       1562 
1562 
     | 
    
         
             
                else:
         
     | 
| 
       1563 
1563 
     | 
    
         
             
                    open_i = np.invert(i_faces, dtype = np.uint8)
         
     | 
| 
       1564 
1564 
     | 
    
         | 
| 
       1565 
     | 
    
         
            -
                # close off faces in padding bits
         
     | 
| 
       1566 
     | 
    
         
            -
                 
     | 
| 
       1567 
     | 
    
         
            -
             
     | 
| 
      
 1565 
     | 
    
         
            +
                # close off faces in padding bits, if within box
         
     | 
| 
      
 1566 
     | 
    
         
            +
                if box[1, 2] * 8 > grid_extent_kji[2]:
         
     | 
| 
      
 1567 
     | 
    
         
            +
                    tail = grid_extent_kji[2] % 8  # number of valid bits in padded byte
         
     | 
| 
      
 1568 
     | 
    
         
            +
                    assert tail
         
     | 
| 
       1568 
1569 
     | 
    
         
             
                    m = np.uint8((255 << (8 - tail)) & 255)
         
     | 
| 
       1569 
1570 
     | 
    
         
             
                    open_k[:, :, -1] &= m
         
     | 
| 
       1570 
1571 
     | 
    
         
             
                    open_j[:, :, -1] &= m
         
     | 
| 
         @@ -1581,7 +1582,7 @@ def packed_bisector_from_face_indices(  # type: ignore 
     | 
|
| 
       1581 
1582 
     | 
    
         
             
                array[box[0, 0]:box[1, 0], box[0, 1]:box[1, 1], box[0, 2]:box[1, 2]] = box_array
         
     | 
| 
       1582 
1583 
     | 
    
         | 
| 
       1583 
1584 
     | 
    
         
             
                # set bisector values outside of the bounding box
         
     | 
| 
       1584 
     | 
    
         
            -
                _set_packed_bisector_outside_box(array, box, box_array)
         
     | 
| 
      
 1585 
     | 
    
         
            +
                _set_packed_bisector_outside_box(array, box, box_array, grid_extent_kji[2] % 8)
         
     | 
| 
       1585 
1586 
     | 
    
         | 
| 
       1586 
1587 
     | 
    
         
             
                # check all array elements are not the same
         
     | 
| 
       1587 
1588 
     | 
    
         
             
                true_count = np.sum(bitwise_count(array))  # note: will usually include some padding bits, so not so true!
         
     | 
| 
         @@ -2127,7 +2128,7 @@ def _set_bisector_outside_box(a: np.ndarray, box: np.ndarray, box_array: np.ndar 
     | 
|
| 
       2127 
2128 
     | 
    
         
             
                    a[:, :, :box[0, 2]] = True
         
     | 
| 
       2128 
2129 
     | 
    
         | 
| 
       2129 
2130 
     | 
    
         | 
| 
       2130 
     | 
    
         
            -
            def _set_packed_bisector_outside_box(a: np.ndarray, box: np.ndarray, box_array: np.ndarray):
         
     | 
| 
      
 2131 
     | 
    
         
            +
            def _set_packed_bisector_outside_box(a: np.ndarray, box: np.ndarray, box_array: np.ndarray, tail: int):
         
     | 
| 
       2131 
2132 
     | 
    
         
             
                # set values outside of the bounding box, working with packed arrays
         
     | 
| 
       2132 
2133 
     | 
    
         
             
                if box[1, 0] < a.shape[0] and np.any(box_array[-1, :, :]):
         
     | 
| 
       2133 
2134 
     | 
    
         
             
                    a[box[1, 0]:, :, :] = 255
         
     | 
| 
         @@ -2141,6 +2142,9 @@ def _set_packed_bisector_outside_box(a: np.ndarray, box: np.ndarray, box_array: 
     | 
|
| 
       2141 
2142 
     | 
    
         
             
                    a[:, :, box[1, 2]:] = 255
         
     | 
| 
       2142 
2143 
     | 
    
         
             
                if box[0, 2] != 0:
         
     | 
| 
       2143 
2144 
     | 
    
         
             
                    a[:, :, :box[0, 2]] = 255
         
     | 
| 
      
 2145 
     | 
    
         
            +
                if tail:
         
     | 
| 
      
 2146 
     | 
    
         
            +
                    m = np.uint8((255 << (8 - tail)) & 255)
         
     | 
| 
      
 2147 
     | 
    
         
            +
                    a[:, :, -1] &= m
         
     | 
| 
       2144 
2148 
     | 
    
         | 
| 
       2145 
2149 
     | 
    
         | 
| 
       2146 
2150 
     | 
    
         
             
            def _box_face_arrays_from_indices(  # type: ignore
         
     | 
| 
         @@ -18,32 +18,32 @@ import resqpy.surface as rqs 
     | 
|
| 
       18 
18 
     | 
    
         
             
            import resqpy.olio.uuid as bu
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
            def find_faces_to_represent_surface_regular_wrapper(
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
            def find_faces_to_represent_surface_regular_wrapper(index: int,
         
     | 
| 
      
 22 
     | 
    
         
            +
                                                                parent_tmp_dir: str,
         
     | 
| 
      
 23 
     | 
    
         
            +
                                                                use_index_as_realisation: bool,
         
     | 
| 
      
 24 
     | 
    
         
            +
                                                                grid_epc: str,
         
     | 
| 
      
 25 
     | 
    
         
            +
                                                                grid_uuid: Union[UUID, str],
         
     | 
| 
      
 26 
     | 
    
         
            +
                                                                surface_epc: str,
         
     | 
| 
      
 27 
     | 
    
         
            +
                                                                surface_uuid: Union[UUID, str],
         
     | 
| 
      
 28 
     | 
    
         
            +
                                                                name: str,
         
     | 
| 
      
 29 
     | 
    
         
            +
                                                                title: Optional[str] = None,
         
     | 
| 
      
 30 
     | 
    
         
            +
                                                                agitate: bool = False,
         
     | 
| 
      
 31 
     | 
    
         
            +
                                                                random_agitation: bool = False,
         
     | 
| 
      
 32 
     | 
    
         
            +
                                                                feature_type: str = 'fault',
         
     | 
| 
      
 33 
     | 
    
         
            +
                                                                trimmed: bool = False,
         
     | 
| 
      
 34 
     | 
    
         
            +
                                                                is_curtain = False,
         
     | 
| 
      
 35 
     | 
    
         
            +
                                                                extend_fault_representation: bool = False,
         
     | 
| 
      
 36 
     | 
    
         
            +
                                                                flange_inner_ring = False,
         
     | 
| 
      
 37 
     | 
    
         
            +
                                                                saucer_parameter = None,
         
     | 
| 
      
 38 
     | 
    
         
            +
                                                                retriangulate: bool = False,
         
     | 
| 
      
 39 
     | 
    
         
            +
                                                                related_uuid = None,
         
     | 
| 
      
 40 
     | 
    
         
            +
                                                                progress_fn: Optional[Callable] = None,
         
     | 
| 
      
 41 
     | 
    
         
            +
                                                                extra_metadata = None,
         
     | 
| 
      
 42 
     | 
    
         
            +
                                                                return_properties: Optional[List[str]] = None,
         
     | 
| 
      
 43 
     | 
    
         
            +
                                                                raw_bisector: bool = False,
         
     | 
| 
      
 44 
     | 
    
         
            +
                                                                use_pack: bool = False,
         
     | 
| 
      
 45 
     | 
    
         
            +
                                                                flange_radius = None,
         
     | 
| 
      
 46 
     | 
    
         
            +
                                                                n_threads = 20) -> Tuple[int, bool, str, List[Union[UUID, str]]]:
         
     | 
| 
       47 
47 
     | 
    
         
             
                """Multiprocessing wrapper function of find_faces_to_represent_surface_regular_optimised.
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
49 
     | 
    
         
             
                arguments:
         
     | 
| 
         @@ -92,10 +92,11 @@ def find_faces_to_represent_surface_regular_wrapper( 
     | 
|
| 
       92 
92 
     | 
    
         
             
                       the returned dictionary has the passed strings as keys and numpy arrays as values
         
     | 
| 
       93 
93 
     | 
    
         
             
                    raw_bisector (bool, default False): if True and grid bisector is requested then it is left in a raw
         
     | 
| 
       94 
94 
     | 
    
         
             
                       form without assessing which side is shallower (True values indicate same side as origin cell)
         
     | 
| 
       95 
     | 
    
         
            -
                    use_pack (bool, default False): if True, boolean properties will be stored in numpy 
     | 
| 
       96 
     | 
    
         
            -
                       which will only be readable by resqpy based applications
         
     | 
| 
      
 95 
     | 
    
         
            +
                    use_pack (bool, default False): if True, boolean properties will be generated and stored in numpy
         
     | 
| 
      
 96 
     | 
    
         
            +
                       packed format, which will only be readable by resqpy based applications
         
     | 
| 
       97 
97 
     | 
    
         
             
                    flange_radius (float, optional): the radial distance to use for outer flange extension points; if None,
         
     | 
| 
       98 
98 
     | 
    
         
             
                       a large value will be calculated from the grid size; units are xy units of grid crs
         
     | 
| 
      
 99 
     | 
    
         
            +
                    n_threads (int, default 20): the number of parallel threads to use in numba points in triangles function
         
     | 
| 
       99 
100 
     | 
    
         | 
| 
       100 
101 
     | 
    
         
             
                returns:
         
     | 
| 
       101 
102 
     | 
    
         
             
                    Tuple containing:
         
     | 
| 
         @@ -250,7 +251,9 @@ def find_faces_to_represent_surface_regular_wrapper( 
     | 
|
| 
       250 
251 
     | 
    
         
             
                                                                                 is_curtain,
         
     | 
| 
       251 
252 
     | 
    
         
             
                                                                                 progress_fn,
         
     | 
| 
       252 
253 
     | 
    
         
             
                                                                                 return_properties,
         
     | 
| 
       253 
     | 
    
         
            -
                                                                                 raw_bisector = raw_bisector 
     | 
| 
      
 254 
     | 
    
         
            +
                                                                                 raw_bisector = raw_bisector,
         
     | 
| 
      
 255 
     | 
    
         
            +
                                                                                 n_batches = n_threads,
         
     | 
| 
      
 256 
     | 
    
         
            +
                                                                                 packed_bisectors = use_pack)
         
     | 
| 
       254 
257 
     | 
    
         | 
| 
       255 
258 
     | 
    
         
             
                success = False
         
     | 
| 
       256 
259 
     | 
    
         | 
| 
         @@ -340,17 +343,17 @@ def find_faces_to_represent_surface_regular_wrapper( 
     | 
|
| 
       340 
343 
     | 
    
         
             
                            if grid_pc is None:
         
     | 
| 
       341 
344 
     | 
    
         
             
                                grid_pc = rqp.PropertyCollection()
         
     | 
| 
       342 
345 
     | 
    
         
             
                                grid_pc.set_support(support = grid)
         
     | 
| 
       343 
     | 
    
         
            -
                            grid_pc.add_cached_array_to_imported_list(
         
     | 
| 
       344 
     | 
    
         
            -
             
     | 
| 
       345 
     | 
    
         
            -
             
     | 
| 
       346 
     | 
    
         
            -
             
     | 
| 
       347 
     | 
    
         
            -
             
     | 
| 
       348 
     | 
    
         
            -
             
     | 
| 
       349 
     | 
    
         
            -
             
     | 
| 
       350 
     | 
    
         
            -
             
     | 
| 
       351 
     | 
    
         
            -
             
     | 
| 
       352 
     | 
    
         
            -
             
     | 
| 
       353 
     | 
    
         
            -
             
     | 
| 
      
 346 
     | 
    
         
            +
                            grid_pc.add_cached_array_to_imported_list(array,
         
     | 
| 
      
 347 
     | 
    
         
            +
                                                                      f"from find_faces function for {surface.title}",
         
     | 
| 
      
 348 
     | 
    
         
            +
                                                                      f'{surface.title} {p_name}',
         
     | 
| 
      
 349 
     | 
    
         
            +
                                                                      discrete = True,
         
     | 
| 
      
 350 
     | 
    
         
            +
                                                                      property_kind = "grid bisector",
         
     | 
| 
      
 351 
     | 
    
         
            +
                                                                      facet_type = 'direction',
         
     | 
| 
      
 352 
     | 
    
         
            +
                                                                      facet = 'raw' if raw_bisector else
         
     | 
| 
      
 353 
     | 
    
         
            +
                                                                      ('vertical' if is_curtain else 'sloping'),
         
     | 
| 
      
 354 
     | 
    
         
            +
                                                                      realization = realisation,
         
     | 
| 
      
 355 
     | 
    
         
            +
                                                                      indexable_element = "columns" if is_curtain else "cells",
         
     | 
| 
      
 356 
     | 
    
         
            +
                                                                      pre_packed = use_pack)
         
     | 
| 
       354 
357 
     | 
    
         
             
                        elif p_name == 'grid shadow':
         
     | 
| 
       355 
358 
     | 
    
         
             
                            if grid_pc is None:
         
     | 
| 
       356 
359 
     | 
    
         
             
                                grid_pc = rqp.PropertyCollection()
         
     | 
    
        resqpy/olio/write_hdf5.py
    CHANGED
    
    | 
         @@ -101,7 +101,7 @@ class H5Register(): 
     | 
|
| 
       101 
101 
     | 
    
         
             
                    assert chunks is None or isinstance(chunks, str) or isinstance(chunks, tuple)
         
     | 
| 
       102 
102 
     | 
    
         
             
                    assert compression is None or (isinstance(compression, str) and compression in ['gzip', 'lzf', 'none'])
         
     | 
| 
       103 
103 
     | 
    
         
             
                    if str(dtype) == 'pack':
         
     | 
| 
       104 
     | 
    
         
            -
                        a = np.packbits(a, axis = -1) 
     | 
| 
      
 104 
     | 
    
         
            +
                        a = np.packbits(a, axis = -1)
         
     | 
| 
       105 
105 
     | 
    
         
             
                        dtype = 'uint8'
         
     | 
| 
       106 
106 
     | 
    
         
             
                    elif dtype is not None:
         
     | 
| 
       107 
107 
     | 
    
         
             
                        a = a.astype(dtype, copy = copy)
         
     | 
| 
         @@ -199,7 +199,7 @@ def _process_imported_property(collection, attributes, property_kind_uuid, strin 
     | 
|
| 
       199 
199 
     | 
    
         
             
                                           extra_metadata, expand_const_arrays):
         
     | 
| 
       200 
200 
     | 
    
         
             
                (p_uuid, p_file_name, p_keyword, p_cached_name, p_discrete, p_uom, p_time_index, p_null_value, p_min_value,
         
     | 
| 
       201 
201 
     | 
    
         
             
                 p_max_value, property_kind, facet_type, facet, realization, indexable_element, count, local_property_kind_uuid,
         
     | 
| 
       202 
     | 
    
         
            -
                 const_value, points, p_time_series_uuid, p_string_lookup_uuid) = attributes
         
     | 
| 
      
 202 
     | 
    
         
            +
                 const_value, points, p_time_series_uuid, p_string_lookup_uuid, pre_packed) = attributes
         
     | 
| 
       203 
203 
     | 
    
         | 
| 
       204 
204 
     | 
    
         
             
                log.debug('processing imported property ' + str(p_keyword))
         
     | 
| 
       205 
205 
     | 
    
         
             
                assert not points or not p_discrete
         
     | 
| 
         @@ -214,7 +214,7 @@ def _process_imported_property(collection, attributes, property_kind_uuid, strin 
     | 
|
| 
       214 
214 
     | 
    
         
             
                                                                             p_keyword, p_discrete, string_lookup_uuid, points)
         
     | 
| 
       215 
215 
     | 
    
         | 
| 
       216 
216 
     | 
    
         
             
                p_array = _process_imported_property_get_p_array(collection, p_cached_name)
         
     | 
| 
       217 
     | 
    
         
            -
                p_array_bool = isinstance(const_value, bool) if p_array is None else p_array.dtype in [bool, np.int8]
         
     | 
| 
      
 217 
     | 
    
         
            +
                p_array_bool = isinstance(const_value, bool) if p_array is None else p_array.dtype in [bool, np.int8, np.uint8]
         
     | 
| 
       218 
218 
     | 
    
         | 
| 
       219 
219 
     | 
    
         
             
                add_min_max = pcga._process_imported_property_get_add_min_max(points, property_kind, string_lookup_uuid,
         
     | 
| 
       220 
220 
     | 
    
         
             
                                                                              local_property_kind_uuid, p_array_bool)
         
     | 
| 
         @@ -251,7 +251,8 @@ def _process_imported_property(collection, attributes, property_kind_uuid, strin 
     | 
|
| 
       251 
251 
     | 
    
         
             
                    find_local_property_kinds = find_local_property_kinds,
         
     | 
| 
       252 
252 
     | 
    
         
             
                    extra_metadata = extra_metadata,
         
     | 
| 
       253 
253 
     | 
    
         
             
                    const_value = const_value,
         
     | 
| 
       254 
     | 
    
         
            -
                    expand_const_arrays = expand_const_arrays 
     | 
| 
      
 254 
     | 
    
         
            +
                    expand_const_arrays = expand_const_arrays,
         
     | 
| 
      
 255 
     | 
    
         
            +
                    pre_packed = pre_packed)
         
     | 
| 
       255 
256 
     | 
    
         
             
                if p_node is not None:
         
     | 
| 
       256 
257 
     | 
    
         
             
                    return p_node
         
     | 
| 
       257 
258 
     | 
    
         
             
                else:
         
     | 
| 
         @@ -246,8 +246,10 @@ def _create_xml_facet_node(facet_type, facet, p_node): 
     | 
|
| 
       246 
246 
     | 
    
         
             
                    facet_value_node.text = facet
         
     | 
| 
       247 
247 
     | 
    
         | 
| 
       248 
248 
     | 
    
         | 
| 
       249 
     | 
    
         
            -
            def _check_shape_list(collection, indexable_element, direction, property_array, points, count):
         
     | 
| 
      
 249 
     | 
    
         
            +
            def _check_shape_list(collection, indexable_element, direction, property_array, points, count, pre_packed):
         
     | 
| 
       250 
250 
     | 
    
         
             
                shape_list = collection.supporting_shape(indexable_element = indexable_element, direction = direction)
         
     | 
| 
      
 251 
     | 
    
         
            +
                if pre_packed:
         
     | 
| 
      
 252 
     | 
    
         
            +
                    shape_list[-1] = (shape_list[-1] - 1) // 8 + 1
         
     | 
| 
       251 
253 
     | 
    
         
             
                if shape_list is not None:
         
     | 
| 
       252 
254 
     | 
    
         
             
                    if count > 1:
         
     | 
| 
       253 
255 
     | 
    
         
             
                        shape_list.append(count)
         
     | 
| 
         @@ -88,7 +88,7 @@ class PropertyCollection(): 
     | 
|
| 
       88 
88 
     | 
    
         
             
                    # above is list of (uuid, source, keyword, cached_name, discrete, uom, time_index, null_value,
         
     | 
| 
       89 
89 
     | 
    
         
             
                    #                   min_value, max_value, property_kind, facet_type, facet, realization,
         
     | 
| 
       90 
90 
     | 
    
         
             
                    #                   indexable_element, count, local_property_kind_uuid, const_value, points,
         
     | 
| 
       91 
     | 
    
         
            -
                    #                   time_series_uuid, string_lookup_uuid)
         
     | 
| 
      
 91 
     | 
    
         
            +
                    #                   time_series_uuid, string_lookup_uuid, pre_packed)
         
     | 
| 
       92 
92 
     | 
    
         
             
                    self.guess_warning = False
         
     | 
| 
       93 
93 
     | 
    
         
             
                    if support is not None:
         
     | 
| 
       94 
94 
     | 
    
         
             
                        self.model = support.model
         
     | 
| 
         @@ -404,7 +404,8 @@ class PropertyCollection(): 
     | 
|
| 
       404 
404 
     | 
    
         
             
                      call this method once for each group of differently sized properties; for very large collections
         
     | 
| 
       405 
405 
     | 
    
         
             
                      it might also be necessary to divide the work into smaller groups to reduce memory usage;
         
     | 
| 
       406 
406 
     | 
    
         
             
                      this method does not write to hdf5 nor create xml – use the usual methods for further processing
         
     | 
| 
       407 
     | 
    
         
            -
                      of the imported list
         
     | 
| 
      
 407 
     | 
    
         
            +
                      of the imported list;
         
     | 
| 
      
 408 
     | 
    
         
            +
                      does not currently support packed arrays
         
     | 
| 
       408 
409 
     | 
    
         
             
                    """
         
     | 
| 
       409 
410 
     | 
    
         | 
| 
       410 
411 
     | 
    
         
             
                    source = 'sampled'
         
     | 
| 
         @@ -2219,7 +2220,8 @@ class PropertyCollection(): 
     | 
|
| 
       2219 
2220 
     | 
    
         
             
                                                      const_value = None,
         
     | 
| 
       2220 
2221 
     | 
    
         
             
                                                      points = False,
         
     | 
| 
       2221 
2222 
     | 
    
         
             
                                                      time_series_uuid = None,
         
     | 
| 
       2222 
     | 
    
         
            -
                                                      string_lookup_uuid = None 
     | 
| 
      
 2223 
     | 
    
         
            +
                                                      string_lookup_uuid = None,
         
     | 
| 
      
 2224 
     | 
    
         
            +
                                                      pre_packed = False):
         
     | 
| 
       2223 
2225 
     | 
    
         
             
                    """Caches array and adds to the list of imported properties (but not to the collection dict).
         
     | 
| 
       2224 
2226 
     | 
    
         | 
| 
       2225 
2227 
     | 
    
         
             
                    arguments:
         
     | 
| 
         @@ -2250,6 +2252,7 @@ class PropertyCollection(): 
     | 
|
| 
       2250 
2252 
     | 
    
         
             
                          be provided when writing hdf5 and creating xml for the imported list
         
     | 
| 
       2251 
2253 
     | 
    
         
             
                       string_lookup_uuid (UUID, optional): should be provided for categorical properties, though can alternatively
         
     | 
| 
       2252 
2254 
     | 
    
         
             
                          be specified when creating xml
         
     | 
| 
      
 2255 
     | 
    
         
            +
                       pre_packed (bool, default False): set to True if the property is boolean and the array is already packed
         
     | 
| 
       2253 
2256 
     | 
    
         | 
| 
       2254 
2257 
     | 
    
         
             
                    returns:
         
     | 
| 
       2255 
2258 
     | 
    
         
             
                       uuid of nascent property object
         
     | 
| 
         @@ -2271,6 +2274,7 @@ class PropertyCollection(): 
     | 
|
| 
       2271 
2274 
     | 
    
         
             
                    assert (cached_array is not None and const_value is None) or (cached_array is None and const_value is not None)
         
     | 
| 
       2272 
2275 
     | 
    
         
             
                    assert not points or not discrete
         
     | 
| 
       2273 
2276 
     | 
    
         
             
                    assert count > 0
         
     | 
| 
      
 2277 
     | 
    
         
            +
                    assert (not pre_packed) or ((cached_array is not None) and (cached_array.dtype == np.uint8))
         
     | 
| 
       2274 
2278 
     | 
    
         
             
                    rqp_c.check_and_warn_property_kind(property_kind, 'adding property to imported list')
         
     | 
| 
       2275 
2279 
     | 
    
         | 
| 
       2276 
2280 
     | 
    
         
             
                    if self.imported_list is None:
         
     | 
| 
         @@ -2288,7 +2292,7 @@ class PropertyCollection(): 
     | 
|
| 
       2288 
2292 
     | 
    
         
             
                    self.imported_list.append(
         
     | 
| 
       2289 
2293 
     | 
    
         
             
                        (uuid, source_info, keyword, cached_name, discrete, uom, time_index, null_value, min_value, max_value,
         
     | 
| 
       2290 
2294 
     | 
    
         
             
                         property_kind, facet_type, facet, realization, indexable_element, count, local_property_kind_uuid,
         
     | 
| 
       2291 
     | 
    
         
            -
                         const_value, points, time_series_uuid, string_lookup_uuid))
         
     | 
| 
      
 2295 
     | 
    
         
            +
                         const_value, points, time_series_uuid, string_lookup_uuid, pre_packed))
         
     | 
| 
       2292 
2296 
     | 
    
         
             
                    return uuid
         
     | 
| 
       2293 
2297 
     | 
    
         | 
| 
       2294 
2298 
     | 
    
         
             
                def add_similar_to_imported_list(self,
         
     | 
| 
         @@ -2311,6 +2315,7 @@ class PropertyCollection(): 
     | 
|
| 
       2311 
2315 
     | 
    
         
             
                                                 points = None,
         
     | 
| 
       2312 
2316 
     | 
    
         
             
                                                 time_series_uuid = None,
         
     | 
| 
       2313 
2317 
     | 
    
         
             
                                                 string_lookup_uuid = None,
         
     | 
| 
      
 2318 
     | 
    
         
            +
                                                 pre_packed = False,
         
     | 
| 
       2314 
2319 
     | 
    
         
             
                                                 similar_model = None,
         
     | 
| 
       2315 
2320 
     | 
    
         
             
                                                 title = None):
         
     | 
| 
       2316 
2321 
     | 
    
         
             
                    """Caches array and adds to the list of imported properties using default metadata from a similar property.
         
     | 
| 
         @@ -2342,6 +2347,7 @@ class PropertyCollection(): 
     | 
|
| 
       2342 
2347 
     | 
    
         
             
                          be provided when writing hdf5 and creating xml for the imported list
         
     | 
| 
       2343 
2348 
     | 
    
         
             
                       string_lookup_uuid (UUID, optional): should be provided for categorical properties, though can alternatively
         
     | 
| 
       2344 
2349 
     | 
    
         
             
                          be specified when creating xml
         
     | 
| 
      
 2350 
     | 
    
         
            +
                       pre_packed (bool, default False): set to True if the property is boolean and the cached array is packed
         
     | 
| 
       2345 
2351 
     | 
    
         
             
                       similar_model (Model, optional): the model where the similar property resides, if not the same as this
         
     | 
| 
       2346 
2352 
     | 
    
         
             
                          property collection
         
     | 
| 
       2347 
2353 
     | 
    
         
             
                       title (str, optional): synonym for keyword argument
         
     | 
| 
         @@ -2398,6 +2404,7 @@ class PropertyCollection(): 
     | 
|
| 
       2398 
2404 
     | 
    
         
             
                    args['string_lookup_uuid'] = get_arg(time_series_uuid, similar.string_lookup_uuid())
         
     | 
| 
       2399 
2405 
     | 
    
         
             
                    em = similar.extra_metadata if hasattr(similar, 'extra_metadata') else {}
         
     | 
| 
       2400 
2406 
     | 
    
         
             
                    args['source_info'] = get_arg(source_info, em.get('source'))
         
     | 
| 
      
 2407 
     | 
    
         
            +
                    args['pre_packed'] = pre_packed
         
     | 
| 
       2401 
2408 
     | 
    
         | 
| 
       2402 
2409 
     | 
    
         
             
                    return self.add_cached_array_to_imported_list(cached_array, **args)
         
     | 
| 
       2403 
2410 
     | 
    
         | 
| 
         @@ -2445,7 +2452,8 @@ class PropertyCollection(): 
     | 
|
| 
       2445 
2452 
     | 
    
         
             
                          as 32 bit; if None, the system default is to write as 32 bit; if True, 32 bit is used; if
         
     | 
| 
       2446 
2453 
     | 
    
         
             
                          False, 64 bit data is written; ignored if dtype is not None
         
     | 
| 
       2447 
2454 
     | 
    
         
             
                       use_pack (bool, default False): if True, bool arrays will be packed along their last axis; this
         
     | 
| 
       2448 
     | 
    
         
            -
                          will generally result in hdf5 data that is not readable by non-resqpy applications
         
     | 
| 
      
 2455 
     | 
    
         
            +
                          will generally result in hdf5 data that is not readable by non-resqpy applications; leave
         
     | 
| 
      
 2456 
     | 
    
         
            +
                          as False for already packed arrays
         
     | 
| 
       2449 
2457 
     | 
    
         
             
                       chunks (str, optional): if not None, one of 'auto', 'all', or 'slice', controlling hdf5 chunks
         
     | 
| 
       2450 
2458 
     | 
    
         
             
                       compression (str, optional): if not None, one of 'gzip' or 'lzf' being the hdf5 compression
         
     | 
| 
       2451 
2459 
     | 
    
         
             
                          algorithm to be used; gzip gives better compression ratio but is slower
         
     | 
| 
         @@ -2473,8 +2481,8 @@ class PropertyCollection(): 
     | 
|
| 
       2473 
2481 
     | 
    
         
             
                            uuid = entry[0]
         
     | 
| 
       2474 
2482 
     | 
    
         
             
                            cached_name = entry[3]
         
     | 
| 
       2475 
2483 
     | 
    
         
             
                        tail = 'points_patch0' if entry[18] else 'values_patch0'
         
     | 
| 
       2476 
     | 
    
         
            -
                        if use_pack and (str(dtype) 
     | 
| 
       2477 
     | 
    
         
            -
                                         (dtype is None and str(self.__dict__[cached_name].dtype) 
     | 
| 
      
 2484 
     | 
    
         
            +
                        if use_pack and ('bool' in str(dtype) or
         
     | 
| 
      
 2485 
     | 
    
         
            +
                                         (dtype is None and 'bool' in str(self.__dict__[cached_name].dtype))):
         
     | 
| 
       2478 
2486 
     | 
    
         
             
                            dtype = 'pack'
         
     | 
| 
       2479 
2487 
     | 
    
         
             
                        h5_reg.register_dataset(uuid, tail, self.__dict__[cached_name], dtype = dtype)
         
     | 
| 
       2480 
2488 
     | 
    
         
             
                    h5_reg.write(file = file_name, mode = mode, use_int32 = use_int32)
         
     | 
| 
         @@ -2601,7 +2609,8 @@ class PropertyCollection(): 
     | 
|
| 
       2601 
2609 
     | 
    
         
             
                               points = False,
         
     | 
| 
       2602 
2610 
     | 
    
         
             
                               extra_metadata = {},
         
     | 
| 
       2603 
2611 
     | 
    
         
             
                               const_value = None,
         
     | 
| 
       2604 
     | 
    
         
            -
                               expand_const_arrays = False 
     | 
| 
      
 2612 
     | 
    
         
            +
                               expand_const_arrays = False,
         
     | 
| 
      
 2613 
     | 
    
         
            +
                               pre_packed = False):
         
     | 
| 
       2605 
2614 
     | 
    
         
             
                    """Create a property xml node for a single property related to a given supporting representation node.
         
     | 
| 
       2606 
2615 
     | 
    
         | 
| 
       2607 
2616 
     | 
    
         
             
                    arguments:
         
     | 
| 
         @@ -2661,6 +2670,8 @@ class PropertyCollection(): 
     | 
|
| 
       2661 
2670 
     | 
    
         
             
                       const_value (float, int or bool, optional): if present, create xml for a constant array filled with this value
         
     | 
| 
       2662 
2671 
     | 
    
         
             
                       expand_const_arrays (boolean, default False): if True, the hdf5 write must also have been called with the
         
     | 
| 
       2663 
2672 
     | 
    
         
             
                          same argument and the xml will treat a constant array as a normal array
         
     | 
| 
      
 2673 
     | 
    
         
            +
                       pre_packed (boolean, default False): if True, the property is a boolean property and the array has already
         
     | 
| 
      
 2674 
     | 
    
         
            +
                          been packed into bits
         
     | 
| 
       2664 
2675 
     | 
    
         | 
| 
       2665 
2676 
     | 
    
         
             
                    returns:
         
     | 
| 
       2666 
2677 
     | 
    
         
             
                       the newly created property xml node
         
     | 
| 
         @@ -2688,7 +2699,7 @@ class PropertyCollection(): 
     | 
|
| 
       2688 
2699 
     | 
    
         
             
                    direction = None if facet_type is None or facet_type != 'direction' else facet
         
     | 
| 
       2689 
2700 
     | 
    
         | 
| 
       2690 
2701 
     | 
    
         
             
                    if self.support is not None:
         
     | 
| 
       2691 
     | 
    
         
            -
                        pcxml._check_shape_list(self, indexable_element, direction, property_array, points, count)
         
     | 
| 
      
 2702 
     | 
    
         
            +
                        pcxml._check_shape_list(self, indexable_element, direction, property_array, points, count, pre_packed)
         
     | 
| 
       2692 
2703 
     | 
    
         | 
| 
       2693 
2704 
     | 
    
         
             
                    # todo: assertions:
         
     | 
| 
       2694 
2705 
     | 
    
         
             
                    #    numpy data type matches discrete flag (and assumptions about precision)
         
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            resqpy/__init__.py,sha256= 
     | 
| 
      
 1 
     | 
    
         
            +
            resqpy/__init__.py,sha256=x8ZNx5VINljpsdVs90zE08SbRx4LaxTtLTEVOc697cM,556
         
     | 
| 
       2 
2 
     | 
    
         
             
            resqpy/crs.py,sha256=R7DfcTP5xGv5pu9Y8RHA2WVM9DjBCSVMoHcz4RmQ7Yw,27646
         
     | 
| 
       3 
3 
     | 
    
         
             
            resqpy/derived_model/__init__.py,sha256=NFvMSOKI3cxmH7lAbddV43JjoUj-r2G7ExEfOqinD1I,1982
         
     | 
| 
       4 
4 
     | 
    
         
             
            resqpy/derived_model/_add_edges_per_column_property_array.py,sha256=cpW3gwp6MSYIrtvFmCjoJXcyUsgGuCDbgmwlJCJebUs,6410
         
     | 
| 
         @@ -48,7 +48,7 @@ resqpy/grid/_write_nexus_corp.py,sha256=yEVfiObsedEAXX6UG6ZTf56kZnQVkd3lLqE2NpL- 
     | 
|
| 
       48 
48 
     | 
    
         
             
            resqpy/grid/_xyz.py,sha256=RLQWOdM_DRoCj4JypwB5gUJ78HTdk5JnZHSeAzuU634,13087
         
     | 
| 
       49 
49 
     | 
    
         
             
            resqpy/grid_surface/__init__.py,sha256=IlPwm6G7P_Vg_w7JHqSs-d_oxk2QmFtWGTk_vvr1qm8,2911
         
     | 
| 
       50 
50 
     | 
    
         
             
            resqpy/grid_surface/_blocked_well_populate.py,sha256=Lme1AR-nLWOUlNnmHMVThk6jEg_lAZxWWtL82Yksppw,35867
         
     | 
| 
       51 
     | 
    
         
            -
            resqpy/grid_surface/_find_faces.py,sha256= 
     | 
| 
      
 51 
     | 
    
         
            +
            resqpy/grid_surface/_find_faces.py,sha256=iqXVt0VsiRjJ4rddrbNiBT2YzfWwhfRmOolhyFfWN0Y,105197
         
     | 
| 
       52 
52 
     | 
    
         
             
            resqpy/grid_surface/_grid_skin.py,sha256=D0cjHkcuT5KCKb-8EZfXgh0GgJj3kzOBS2wVNXg4bfY,26056
         
     | 
| 
       53 
53 
     | 
    
         
             
            resqpy/grid_surface/_grid_surface.py,sha256=l2NJo7Kiucolbb_TlLPC7NGdksg_JahkihfsrJVq99w,14379
         
     | 
| 
       54 
54 
     | 
    
         
             
            resqpy/grid_surface/_trajectory_intersects.py,sha256=Och9cZYU9Y7ofovhPzsLyIblRUl2xj9_5nHH3fMZp-A,22498
         
     | 
| 
         @@ -69,7 +69,7 @@ resqpy/multi_processing/__init__.py,sha256=ZRudHfN9aaZjxvat7t8BZr6mwMi9baiCNjczw 
     | 
|
| 
       69 
69 
     | 
    
         
             
            resqpy/multi_processing/_multiprocessing.py,sha256=bnCKfSC1tWwvZmZ7BZqCyje0C93m6q7HZPxNpx8xoxA,7301
         
     | 
| 
       70 
70 
     | 
    
         
             
            resqpy/multi_processing/wrappers/__init__.py,sha256=7vjuTWdHnp3rN9Ud8ljpDnt1NbBAyhA08lv-sQ9Kf3o,72
         
     | 
| 
       71 
71 
     | 
    
         
             
            resqpy/multi_processing/wrappers/blocked_well_mp.py,sha256=_2fEsSmJVQCnbQIjTHqmnNEugfhN1KvX-o4ZbvtChdI,5952
         
     | 
| 
       72 
     | 
    
         
            -
            resqpy/multi_processing/wrappers/grid_surface_mp.py,sha256= 
     | 
| 
      
 72 
     | 
    
         
            +
            resqpy/multi_processing/wrappers/grid_surface_mp.py,sha256=rnq5i34MRnwFFTzjcs_TzL4Y_dVn68Eg6Jh9nvSNx8Y,25245
         
     | 
| 
       73 
73 
     | 
    
         
             
            resqpy/multi_processing/wrappers/mesh_mp.py,sha256=0VYoqtgBFfrlyYB6kkjbdrRQ5FKe6t5pHJO3wD9b8Fc,5793
         
     | 
| 
       74 
74 
     | 
    
         
             
            resqpy/olio/__init__.py,sha256=j2breqKYVufhw5k8qS2uZwB3tUKT7FhdZ23ninS75YA,84
         
     | 
| 
       75 
75 
     | 
    
         
             
            resqpy/olio/ab_toolbox.py,sha256=bZlAhOJVS0HvIYBW0Lg68re17N8eltoQhIUh0xuUyVc,2147
         
     | 
| 
         @@ -102,7 +102,7 @@ resqpy/olio/vector_utilities.py,sha256=B354cr9-nqqPcb3SAx1jD9Uk51sjkV95xToAiF3-W 
     | 
|
| 
       102 
102 
     | 
    
         
             
            resqpy/olio/volume.py,sha256=F1pMnDoJ4ricy4dfdLuLuK1xkVgJckL9V06tUeyK6Wc,6185
         
     | 
| 
       103 
103 
     | 
    
         
             
            resqpy/olio/wellspec_keywords.py,sha256=ad3B727golWYiko54OZOw7vG21IvpNxCMCyLv8jSkcI,26533
         
     | 
| 
       104 
104 
     | 
    
         
             
            resqpy/olio/write_data.py,sha256=bIX7ilMkXWCMz_zQh-Gqk56sNzng4W5l4BahW2EV7Kw,5142
         
     | 
| 
       105 
     | 
    
         
            -
            resqpy/olio/write_hdf5.py,sha256= 
     | 
| 
      
 105 
     | 
    
         
            +
            resqpy/olio/write_hdf5.py,sha256=iUIYPWlbJsSSq9UXXiXAW_S6TeK-N2M7QvlJJE43EK8,19015
         
     | 
| 
       106 
106 
     | 
    
         
             
            resqpy/olio/xml_et.py,sha256=aPjxr2XWvYcwlnckL_UiZmd5EGEoIfy_JxeOKOk3vwQ,25322
         
     | 
| 
       107 
107 
     | 
    
         
             
            resqpy/olio/xml_namespaces.py,sha256=PiQi2W7gRLxhMSEs26ahT4MlagYqsjMWJlNpIiZupoA,1824
         
     | 
| 
       108 
108 
     | 
    
         
             
            resqpy/olio/zmap_reader.py,sha256=YuhZjde_DZszVFsUKfu0XieKGg7ONXtJWskRV9Pw7VE,5709
         
     | 
| 
         @@ -128,14 +128,14 @@ resqpy/organize/tectonic_boundary_feature.py,sha256=mMSsIW8YJ6qpeOe-6gRFaQbK39-W 
     | 
|
| 
       128 
128 
     | 
    
         
             
            resqpy/organize/wellbore_feature.py,sha256=E2gFwgPZGr8nkhRHAIR0wTZ8uwcze7y2WBIV7AXeW2A,1843
         
     | 
| 
       129 
129 
     | 
    
         
             
            resqpy/organize/wellbore_interpretation.py,sha256=jRAHq90tR2dCQSXsZicujXhSVHOEPoGjFgh5S87SMAI,6973
         
     | 
| 
       130 
130 
     | 
    
         
             
            resqpy/property/__init__.py,sha256=KegXDizklsMB-EnGFrzhCSszrXAHXEIoStdC5XmyifQ,2294
         
     | 
| 
       131 
     | 
    
         
            -
            resqpy/property/_collection_add_part.py,sha256= 
     | 
| 
       132 
     | 
    
         
            -
            resqpy/property/_collection_create_xml.py,sha256= 
     | 
| 
      
 131 
     | 
    
         
            +
            resqpy/property/_collection_add_part.py,sha256=uM64TWqJ0aBUwP1u1OJNTUhKLGlmOQj14fGPLG-2pRs,17156
         
     | 
| 
      
 132 
     | 
    
         
            +
            resqpy/property/_collection_create_xml.py,sha256=p9GASodhg4vQqDDvCOHScto_Qtz_nDADGtvZY92Dcu8,13001
         
     | 
| 
       133 
133 
     | 
    
         
             
            resqpy/property/_collection_get_attributes.py,sha256=MlontPfGo00lxt0SpB49YG9PRsi5oXPqduDgCSOSmzs,32441
         
     | 
| 
       134 
134 
     | 
    
         
             
            resqpy/property/_collection_support.py,sha256=77_DG-0pzhMWdG_mNDiGfihXD7Pp-CvDSGCV8ZlDjj4,5889
         
     | 
| 
       135 
135 
     | 
    
         
             
            resqpy/property/_property.py,sha256=JcG7h6k4cJ4l3WC_VCsvoqHM3FBxrnUuxbIK2Ono1M0,24426
         
     | 
| 
       136 
136 
     | 
    
         
             
            resqpy/property/attribute_property_set.py,sha256=gATFe-vI00GrgaJNMHSKbM0xmlxIsO5DT1qRSU9snYI,12295
         
     | 
| 
       137 
137 
     | 
    
         
             
            resqpy/property/grid_property_collection.py,sha256=37dVQSBSTpX22UfBcpPvwGjd8H3O2MepKpWXYc4yJvM,66858
         
     | 
| 
       138 
     | 
    
         
            -
            resqpy/property/property_collection.py,sha256= 
     | 
| 
      
 138 
     | 
    
         
            +
            resqpy/property/property_collection.py,sha256=RqFzbN60P_Q973R9UsxXo2gBnwv-9NSuNPpo38fQgxY,152986
         
     | 
| 
       139 
139 
     | 
    
         
             
            resqpy/property/property_common.py,sha256=wf429weNtgf6J4gCNNoRwj64elQvUPI_ZWzg4qI7l6c,35993
         
     | 
| 
       140 
140 
     | 
    
         
             
            resqpy/property/property_kind.py,sha256=6SK0La09eisHPYOSgdx69K_Ordrq0x2tz4IAyurVyY8,5557
         
     | 
| 
       141 
141 
     | 
    
         
             
            resqpy/property/string_lookup.py,sha256=eH-lbLRbb8JKtO91FTtyuYseRGwPkmsghcXbKUTvVgI,7737
         
     | 
| 
         @@ -194,7 +194,7 @@ resqpy/well/_wellbore_marker_frame.py,sha256=xvYH2_2Ie3a18LReFymbUrZboOx7Rhv5DOD 
     | 
|
| 
       194 
194 
     | 
    
         
             
            resqpy/well/blocked_well_frame.py,sha256=Rx8jwkCjchseDZaTttPkA1-f6l7W6vRGrxWtDHlEPx8,22560
         
     | 
| 
       195 
195 
     | 
    
         
             
            resqpy/well/well_object_funcs.py,sha256=tWufc8wahihzMEO-Ou1dncIttrf4bNo1qmLgh3I2pOM,24717
         
     | 
| 
       196 
196 
     | 
    
         
             
            resqpy/well/well_utils.py,sha256=zwpYjT85nXAwWBhYB1Pygu2SgouZ-44k6hEOnpoMfBI,5969
         
     | 
| 
       197 
     | 
    
         
            -
            resqpy-4.18. 
     | 
| 
       198 
     | 
    
         
            -
            resqpy-4.18. 
     | 
| 
       199 
     | 
    
         
            -
            resqpy-4.18. 
     | 
| 
       200 
     | 
    
         
            -
            resqpy-4.18. 
     | 
| 
      
 197 
     | 
    
         
            +
            resqpy-4.18.2.dist-info/LICENSE,sha256=2duHPIkKQyESMdQ4hKjL8CYEsYRHXaYxt0YQkzsUYE4,1059
         
     | 
| 
      
 198 
     | 
    
         
            +
            resqpy-4.18.2.dist-info/METADATA,sha256=0pU9qfLEhFddkYoUstNROtZbXcxt2m4kg0l19rt7deI,4028
         
     | 
| 
      
 199 
     | 
    
         
            +
            resqpy-4.18.2.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
         
     | 
| 
      
 200 
     | 
    
         
            +
            resqpy-4.18.2.dist-info/RECORD,,
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     |