polytope-python 2.1.7__tar.gz → 2.1.9__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.
Files changed (288) hide show
  1. polytope_python-2.1.9/.github/workflows/ci.yml +32 -0
  2. {polytope_python-2.1.7 → polytope_python-2.1.9}/.github/workflows/downstream-ci.yml +1 -1
  3. {polytope_python-2.1.7/polytope_python.egg-info → polytope_python-2.1.9}/PKG-INFO +4 -3
  4. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/_version.py +1 -1
  5. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/backends/fdb.py +11 -3
  6. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/healpix_nested.py +2 -2
  7. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/lambert_conformal.py +2 -2
  8. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/local_regular.py +7 -2
  9. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/octahedral.py +2 -2
  10. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/engine/optimised_point_in_polygon_slicer.py +2 -2
  11. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/engine/optimised_quadtree_slicer.py +3 -2
  12. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/engine/point_in_polygon_slicer.py +2 -2
  13. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/engine/quadtree_slicer.py +17 -4
  14. {polytope_python-2.1.7 → polytope_python-2.1.9/polytope_python.egg-info}/PKG-INFO +4 -3
  15. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_python.egg-info/SOURCES.txt +1 -0
  16. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_python.egg-info/requires.txt +3 -2
  17. {polytope_python-2.1.7 → polytope_python-2.1.9}/pyproject.toml +3 -2
  18. {polytope_python-2.1.7 → polytope_python-2.1.9}/.github/ci-config.yml +0 -0
  19. {polytope_python-2.1.7 → polytope_python-2.1.9}/.github/ci-hpc-config.yml +0 -0
  20. {polytope_python-2.1.7 → polytope_python-2.1.9}/.github/workflows/cd.yml +0 -0
  21. {polytope_python-2.1.7 → polytope_python-2.1.9}/.github/workflows/label-public-pr.yml +0 -0
  22. {polytope_python-2.1.7 → polytope_python-2.1.9}/.github/workflows/test-pypi.yml +0 -0
  23. {polytope_python-2.1.7 → polytope_python-2.1.9}/.gitignore +0 -0
  24. {polytope_python-2.1.7 → polytope_python-2.1.9}/.pre-commit-config.yaml +0 -0
  25. {polytope_python-2.1.7 → polytope_python-2.1.9}/.readthedocs.yaml +0 -0
  26. {polytope_python-2.1.7 → polytope_python-2.1.9}/ACKNOWLEDGEMENTS.rst +0 -0
  27. {polytope_python-2.1.7 → polytope_python-2.1.9}/CONTRIBUTING.rst +0 -0
  28. {polytope_python-2.1.7 → polytope_python-2.1.9}/LICENSE +0 -0
  29. {polytope_python-2.1.7 → polytope_python-2.1.9}/Makefile +0 -0
  30. {polytope_python-2.1.7 → polytope_python-2.1.9}/README.md +0 -0
  31. {polytope_python-2.1.7 → polytope_python-2.1.9}/codecov.yml +0 -0
  32. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/Developer_Guide/API.md +0 -0
  33. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/Developer_Guide/Axis_types.md +0 -0
  34. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/Developer_Guide/Datacube.md +0 -0
  35. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/Developer_Guide/Overview.md +0 -0
  36. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/Developer_Guide/Slicer.md +0 -0
  37. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/Developer_Guide/images/Polytope_APIs_3.png +0 -0
  38. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/Developer_Guide/images/polytope_components_5.png +0 -0
  39. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/Developer_Guide/images/slicing_process.png +0 -0
  40. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/Developer_Guide/shapes.md +0 -0
  41. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/Overview/Overview.md +0 -0
  42. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/Overview/Polytope_at_ECMWF.md +0 -0
  43. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/Overview/images_overview/ecmwf_datacube.png +0 -0
  44. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/Overview/images_overview/ecmwf_polytope.png +0 -0
  45. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/User_Guide/Building_Features.md +0 -0
  46. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/User_Guide/Example.md +0 -0
  47. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/User_Guide/Getting_started.md +0 -0
  48. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/User_Guide/Overview.md +0 -0
  49. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Algorithm/User_Guide/images_users/shipping_route.png +0 -0
  50. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Client/Overview.md +0 -0
  51. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Server/Design.md +0 -0
  52. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Server/Overview.md +0 -0
  53. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Data_Portfolio.md +0 -0
  54. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Design_doc.md +0 -0
  55. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/OpenData/od_boundingbox_example.ipynb +0 -0
  56. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/OpenData/od_circle_example.ipynb +0 -0
  57. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/OpenData/od_country_example.ipynb +0 -0
  58. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/OpenData/od_polygon_example.ipynb +0 -0
  59. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/OpenData/od_position_example.ipynb +0 -0
  60. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/OpenData/od_timeseries_example.ipynb +0 -0
  61. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/OpenData/od_trajectory_example.ipynb +0 -0
  62. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/OpenData/od_vertical_profile_example.ipynb +0 -0
  63. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/boundingbox_example.ipynb +0 -0
  64. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/circle_example.ipynb +0 -0
  65. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/climate_dt_example.ipynb +0 -0
  66. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/country_example.ipynb +0 -0
  67. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/examples.md +0 -0
  68. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/extremes_dt_example.ipynb +0 -0
  69. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/on-demand_dt_example.ipynb +0 -0
  70. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/opendata_example.ipynb +0 -0
  71. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/operational_example.ipynb +0 -0
  72. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/polygon_example.ipynb +0 -0
  73. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/position_example.ipynb +0 -0
  74. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/timeseries_example.ipynb +0 -0
  75. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/trajectory_example.ipynb +0 -0
  76. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Examples/vertical_profile_example.ipynb +0 -0
  77. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Features/boundingbox.md +0 -0
  78. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Features/circle.md +0 -0
  79. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Features/feature.md +0 -0
  80. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Features/polygon.md +0 -0
  81. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Features/position.md +0 -0
  82. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Features/timeseries.md +0 -0
  83. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Features/trajectory.md +0 -0
  84. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Features/vertical_profile.md +0 -0
  85. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Full_fields.md +0 -0
  86. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Installation.md +0 -0
  87. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Overview.md +0 -0
  88. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/Service/Quick_Start.md +0 -0
  89. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/extra.css +0 -0
  90. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/images/flight_path.png +0 -0
  91. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/images/greece.png +0 -0
  92. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/images/logo.gif +0 -0
  93. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/images/polytope_feature.png +0 -0
  94. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/images/polytope_logo_new_animated_AdobeExpress_3.gif +0 -0
  95. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/images/timeseries.png +0 -0
  96. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/images/timeseries_example.png +0 -0
  97. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/images/timeseries_qs.png +0 -0
  98. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/index.md +0 -0
  99. {polytope_python-2.1.7 → polytope_python-2.1.9}/docs/requirements.txt +0 -0
  100. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/3D_shipping_route.py +0 -0
  101. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/3D_shipping_route_wave_model.py +0 -0
  102. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/4D_flight_path.py +0 -0
  103. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/country_slicing.py +0 -0
  104. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/cyclic_route_around_earth.py +0 -0
  105. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/EMODnet_HA_WindFarms_pg_20220324.shp +0 -0
  106. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/EMODnet_HA_WindFarms_pg_20220324.shx +0 -0
  107. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/Shipping-Lanes-v1.shp +0 -0
  108. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/Shipping-Lanes-v1.shx +0 -0
  109. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/World_Countries__Generalized_.shp +0 -0
  110. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/World_Countries__Generalized_.shx +0 -0
  111. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/earth_image.jpg +0 -0
  112. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/map_earth_4k.jpg +0 -0
  113. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/mars_req_9km_wind.req +0 -0
  114. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/mars_req_levels.req +0 -0
  115. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/mars_req_timeseries.req +0 -0
  116. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/output4.grib +0 -0
  117. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/output4.req +0 -0
  118. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/output8.grib +0 -0
  119. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/output8.req +0 -0
  120. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/temp_model_levels.grib +0 -0
  121. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/timeseries_t2m.grib +0 -0
  122. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/data/winds.grib +0 -0
  123. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/healpix_grid_box_example.py +0 -0
  124. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/octahedral_grid_box_example.py +0 -0
  125. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/octahedral_grid_country_example.py +0 -0
  126. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/plotting_country_data.py +0 -0
  127. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/read_me_example.py +0 -0
  128. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/requirements_examples.txt +0 -0
  129. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/slicing_all_ecmwf_countries.py +0 -0
  130. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/timeseries_example.py +0 -0
  131. {polytope_python-2.1.7 → polytope_python-2.1.9}/examples/wind_farms.py +0 -0
  132. {polytope_python-2.1.7 → polytope_python-2.1.9}/mkdocs.yml +0 -0
  133. {polytope_python-2.1.7 → polytope_python-2.1.9}/performance/fdb_performance.py +0 -0
  134. {polytope_python-2.1.7 → polytope_python-2.1.9}/performance/fdb_performance_3D.py +0 -0
  135. {polytope_python-2.1.7 → polytope_python-2.1.9}/performance/fdb_scalability_plot.py +0 -0
  136. {polytope_python-2.1.7 → polytope_python-2.1.9}/performance/fdb_slice_many_numbers_timeseries.py +0 -0
  137. {polytope_python-2.1.7 → polytope_python-2.1.9}/performance/performance_many_num_steps.py +0 -0
  138. {polytope_python-2.1.7 → polytope_python-2.1.9}/performance/plotting_scalability.py +0 -0
  139. {polytope_python-2.1.7 → polytope_python-2.1.9}/performance/scalability_test.py +0 -0
  140. {polytope_python-2.1.7 → polytope_python-2.1.9}/performance/scalability_test_2.py +0 -0
  141. {polytope_python-2.1.7 → polytope_python-2.1.9}/performance_unstructured/octahedral_vs_unstructured_slicing.py +0 -0
  142. {polytope_python-2.1.7 → polytope_python-2.1.9}/performance_unstructured/plot_structured_vs_unstructured_slicing.py +0 -0
  143. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/__init__.py +0 -0
  144. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/__init__.py +0 -0
  145. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/backends/__init__.py +0 -0
  146. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/backends/catalogue_helper.py +0 -0
  147. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/backends/datacube.py +0 -0
  148. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/backends/mock.py +0 -0
  149. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/backends/xarray.py +0 -0
  150. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/datacube_axis.py +0 -0
  151. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/index_tree.proto +0 -0
  152. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/index_tree_pb2.py +0 -0
  153. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/quadtree/quad_tree.py +0 -0
  154. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/quadtree/quadtree_additional_operations.py +0 -0
  155. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/switching_grid_helper.py +0 -0
  156. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/tensor_index_tree.py +0 -0
  157. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/__init__.py +0 -0
  158. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_cyclic/__init__.py +0 -0
  159. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_cyclic/datacube_cyclic.py +0 -0
  160. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/__init__.py +0 -0
  161. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/datacube_mappers.py +0 -0
  162. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/__init__.py +0 -0
  163. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/healpix.py +0 -0
  164. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular.py +0 -0
  165. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/__init__.py +0 -0
  166. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/icon.py +0 -0
  167. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/irregular_mapper_types/unstructured.py +0 -0
  168. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_gaussian.py +0 -0
  169. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/reduced_ll.py +0 -0
  170. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_mappers/mapper_types/regular.py +0 -0
  171. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_merger/__init__.py +0 -0
  172. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_merger/datacube_merger.py +0 -0
  173. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_reverse/__init__.py +0 -0
  174. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_reverse/datacube_reverse.py +0 -0
  175. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_transformations.py +0 -0
  176. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_type_change/__init__.py +0 -0
  177. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/transformations/datacube_type_change/datacube_type_change.py +0 -0
  178. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/datacube/tree_encoding.py +0 -0
  179. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/engine/__init__.py +0 -0
  180. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/engine/engine.py +0 -0
  181. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/engine/hullslicer.py +0 -0
  182. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/engine/slicing_tools.py +0 -0
  183. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/options.py +0 -0
  184. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/polytope.py +0 -0
  185. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/shapes.py +0 -0
  186. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/utility/__init__.py +0 -0
  187. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/utility/combinatorics.py +0 -0
  188. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/utility/engine_tools.py +0 -0
  189. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/utility/exceptions.py +0 -0
  190. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/utility/geometry.py +0 -0
  191. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/utility/list_tools.py +0 -0
  192. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_feature/utility/profiling.py +0 -0
  193. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_python.egg-info/dependency_links.txt +0 -0
  194. {polytope_python-2.1.7 → polytope_python-2.1.9}/polytope_python.egg-info/top_level.txt +0 -0
  195. {polytope_python-2.1.7 → polytope_python-2.1.9}/rust/Cargo.toml +0 -0
  196. {polytope_python-2.1.7 → polytope_python-2.1.9}/rust/src/distance.rs +0 -0
  197. {polytope_python-2.1.7 → polytope_python-2.1.9}/rust/src/healpix_nested.rs +0 -0
  198. {polytope_python-2.1.7 → polytope_python-2.1.9}/rust/src/lambert_conformal.rs +0 -0
  199. {polytope_python-2.1.7 → polytope_python-2.1.9}/rust/src/lib.rs +0 -0
  200. {polytope_python-2.1.7 → polytope_python-2.1.9}/rust/src/list_tools.rs +0 -0
  201. {polytope_python-2.1.7 → polytope_python-2.1.9}/rust/src/octahedral.rs +0 -0
  202. {polytope_python-2.1.7 → polytope_python-2.1.9}/rust/src/point_in_polygon.rs +0 -0
  203. {polytope_python-2.1.7 → polytope_python-2.1.9}/rust/src/quadtree_mod.rs +0 -0
  204. {polytope_python-2.1.7 → polytope_python-2.1.9}/rust/src/slicing_tools.rs +0 -0
  205. {polytope_python-2.1.7 → polytope_python-2.1.9}/setup.cfg +0 -0
  206. {polytope_python-2.1.7 → polytope_python-2.1.9}/setup.py +0 -0
  207. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/conftest.py +0 -0
  208. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/fdb_data/schema +0 -0
  209. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/helper_functions.py +0 -0
  210. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/profiled_quadtree.profile +0 -0
  211. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/quadtree_slicer_profiler.py +0 -0
  212. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_axis_mappers.py +0 -0
  213. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_bad_request_error.py +0 -0
  214. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_combinatorics.py +0 -0
  215. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_cyclic_axis_over_negative_vals.py +0 -0
  216. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_cyclic_axis_slicer_not_0.py +0 -0
  217. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_cyclic_axis_slicing.py +0 -0
  218. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_cyclic_nearest.py +0 -0
  219. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_cyclic_simple.py +0 -0
  220. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_cyclic_snapping.py +0 -0
  221. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_datacube_axes_init.py +0 -0
  222. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_datacube_mock.py +0 -0
  223. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_datacube_xarray.py +0 -0
  224. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_date_time_unmerged.py +0 -0
  225. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_ecmwf_oper_data_fdb.py +0 -0
  226. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_engine_slicer.py +0 -0
  227. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_fdb_datacube.py +0 -0
  228. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_fdb_unmap_tree.py +0 -0
  229. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_float_type.py +0 -0
  230. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_healpix_mapper.py +0 -0
  231. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_healpix_nested_grid.py +0 -0
  232. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_hull_slicer.py +0 -0
  233. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_hullslicer_engine.py +0 -0
  234. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_icon_grid_unstructured.py +0 -0
  235. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_icon_grid_unstructured_fdb.py +0 -0
  236. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_incomplete_tree_fdb.py +0 -0
  237. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_lambert_lam_grid_unstructured_fdb.py +0 -0
  238. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_lambert_lam_grid_unstructured_fdb_optimised_quadtree.py +0 -0
  239. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_local_grid_cyclic.py +0 -0
  240. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_local_regular_grid.py +0 -0
  241. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_local_swiss_grid.py +0 -0
  242. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_mappers.py +0 -0
  243. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_merge_cyclic_octahedral.py +0 -0
  244. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_merge_octahedral_one_axis.py +0 -0
  245. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_merge_transformation.py +0 -0
  246. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_multiple_param_fdb.py +0 -0
  247. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_octahedral_grid.py +0 -0
  248. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_orca_irregular_grid.py +0 -0
  249. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_orca_irregular_grid_optimised_point_in_polygon.py +0 -0
  250. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_orca_irregular_grid_point_in_polygon.py +0 -0
  251. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_override_md5_hash_options.py +0 -0
  252. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_point_nearest.py +0 -0
  253. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_point_shape.py +0 -0
  254. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_point_union.py +0 -0
  255. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_polytope_extract.py +0 -0
  256. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_polytope_extract_fdb.py +0 -0
  257. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_profiling_requesttree.py +0 -0
  258. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_quad_tree.py +0 -0
  259. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_quadtree_edge_cases.py +0 -0
  260. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_quadtree_indices.py +0 -0
  261. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_quadtree_optimisation.py +0 -0
  262. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_reduced_ll_grid.py +0 -0
  263. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_regular_grid.py +0 -0
  264. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_regular_reduced_grid.py +0 -0
  265. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_request_tree.py +0 -0
  266. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_request_trees_after_slicing.py +0 -0
  267. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_reverse_transformation.py +0 -0
  268. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_shapes.py +0 -0
  269. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_shapes_volume.py +0 -0
  270. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_slice_date_range_fdb.py +0 -0
  271. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_slice_date_range_fdb_v2.py +0 -0
  272. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_slice_fdb_box.py +0 -0
  273. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_slicer_engine.py +0 -0
  274. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_slicer_era5.py +0 -0
  275. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_slicer_xarray.py +0 -0
  276. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_slicing_unsliceable_axis.py +0 -0
  277. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_slicing_xarray_3D.py +0 -0
  278. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_slicing_xarray_4D.py +0 -0
  279. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_snapping.py +0 -0
  280. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_snapping_real_data.py +0 -0
  281. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_tree_protobuf.py +0 -0
  282. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_tree_protobuf_encoding.py +0 -0
  283. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_tree_protobuf_encoding_fdb.py +0 -0
  284. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_type_change_transformation.py +0 -0
  285. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_union_gj.py +0 -0
  286. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_union_point_box.py +0 -0
  287. {polytope_python-2.1.7 → polytope_python-2.1.9}/tests/test_wave_spectra_data.py +0 -0
  288. {polytope_python-2.1.7 → polytope_python-2.1.9}/tox.ini +0 -0
@@ -0,0 +1,32 @@
1
+ name: ci
2
+
3
+ on:
4
+ push:
5
+ branches: [ "main", "develop" ]
6
+ pull_request:
7
+ branches: [ "main", "develop" ]
8
+
9
+ jobs:
10
+ python-qa:
11
+ name: python-qa
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - name: Checkout Repository
15
+ uses: actions/checkout@v4
16
+ with:
17
+ repository: ${{ inputs.repository }}
18
+ ref: ${{ inputs.ref }}
19
+ - name: Setup Python
20
+ uses: actions/setup-python@v4
21
+ with:
22
+ python-version: 3.x
23
+ - name: Install Python Dependencies
24
+ run: |
25
+ python -m pip install --upgrade pip
26
+ python -m pip install black flake8 isort
27
+ - name: Check isort
28
+ run: isort --check --diff . --profile black
29
+ - name: Check black
30
+ run: black --check --diff .
31
+ - name: Check flake8
32
+ run: flake8 .
@@ -28,7 +28,7 @@ jobs:
28
28
  with:
29
29
  polytope: ecmwf/polytope@${{ github.event.pull_request.head.sha || github.sha }}
30
30
  # codecov_upload: true
31
- python_qa: true
31
+ python_qa: false
32
32
  secrets: inherit
33
33
 
34
34
  downstream-ci-hpc:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: polytope-python
3
- Version: 2.1.7
3
+ Version: 2.1.9
4
4
  Summary: Polytope datacube feature extraction library
5
5
  Author-email: "European Centre for Medium-Range Weather Forecasts (ECMWF)" <software.support@ecmwf.int>
6
6
  Maintainer-email: James Hawkes <James.Hawkes@ecmwf.int>, Mathilde Leuridan <Mathilde.Leuridan@ecmwf.int>
@@ -31,6 +31,7 @@ Requires-Dist: tripy
31
31
  Requires-Dist: xarray
32
32
  Requires-Dist: conflator
33
33
  Requires-Dist: protobuf
34
+ Requires-Dist: shapely
34
35
  Provides-Extra: tests
35
36
  Requires-Dist: pytest; extra == "tests"
36
37
  Requires-Dist: pytest-cov; extra == "tests"
@@ -40,14 +41,14 @@ Requires-Dist: h5netcdf; extra == "tests"
40
41
  Requires-Dist: h5py; extra == "tests"
41
42
  Requires-Dist: earthkit-data; extra == "tests"
42
43
  Requires-Dist: matplotlib; extra == "tests"
43
- Requires-Dist: pyfdb; extra == "tests"
44
+ Requires-Dist: pyfdb<=0.1.3; extra == "tests"
44
45
  Provides-Extra: unstructured
45
46
  Requires-Dist: eckit; extra == "unstructured"
46
47
  Provides-Extra: catalogue
47
48
  Requires-Dist: qubed; extra == "catalogue"
48
49
  Provides-Extra: switching-grids
49
50
  Requires-Dist: eccodes; extra == "switching-grids"
50
- Requires-Dist: pyfdb; extra == "switching-grids"
51
+ Requires-Dist: pyfdb<=0.1.3; extra == "switching-grids"
51
52
  Dynamic: license-file
52
53
 
53
54
 
@@ -1,2 +1,2 @@
1
1
  # Do not change! Do not track in version control!
2
- __version__ = "2.1.7"
2
+ __version__ = "2.1.9"
@@ -113,11 +113,19 @@ class FDBDatacube(Datacube):
113
113
  # special param with direction and frequency
114
114
  if len(polytope.points[idx]) > 1:
115
115
  raise ValueError(
116
- "Param 251 is part of a special branching of the datacube. Please request it separately." # noqa: E501
116
+ "Param 140251 is part of a special branching of the datacube. Please request it separately." # noqa: E501
117
+ )
118
+ if ax == "stream":
119
+ upper, lower, idx = polytope.extents(ax)
120
+ if "clmn" not in polytope.points[idx]:
121
+ self.fdb_coordinates.pop("year", None)
122
+ self.fdb_coordinates.pop("month", None)
123
+ else:
124
+ if len(polytope.points[idx]) > 1:
125
+ raise ValueError(
126
+ "Stream clmn is part of a special branching of the datacube. Please request it separately." # noqa: E501
117
127
  )
118
128
  self.fdb_coordinates.pop("quantile", None)
119
- self.fdb_coordinates.pop("year", None)
120
- self.fdb_coordinates.pop("month", None)
121
129
 
122
130
  # NOTE: verify that we also remove the axis object for axes we've removed here
123
131
  axes_to_remove = set(self.complete_axes) - set(self.fdb_coordinates.keys())
@@ -13,8 +13,8 @@ try:
13
13
  )
14
14
 
15
15
  use_rust = True
16
- except (ModuleNotFoundError, ImportError):
17
- print("Failed to load Rust extension, falling back to Python implementation.")
16
+ except (ModuleNotFoundError, ImportError) as e:
17
+ print(f"Failed to load Rust extension with error: {e}, falling back to Python implementation.")
18
18
 
19
19
 
20
20
  class NestedHealpixGridMapper(DatacubeMapper):
@@ -7,8 +7,8 @@ try:
7
7
  from polytope_feature.polytope_rs import get_latlons_oblate, get_latlons_sphere
8
8
 
9
9
  use_rust = True
10
- except (ModuleNotFoundError, ImportError):
11
- print("Failed to load Rust extension, falling back to Python implementation.")
10
+ except (ModuleNotFoundError, ImportError) as e:
11
+ print(f"Failed to load Rust extension with error: {e}, falling back to Python implementation.")
12
12
 
13
13
 
14
14
  class LambertConformalGridMapper(DatacubeMapper):
@@ -114,8 +114,7 @@ class LocalRegularGridMapper(DatacubeMapper):
114
114
  descending = self._axis_reversed[self._mapped_axes[0]]
115
115
  if descending:
116
116
  # right descending order for searchsorted
117
- first_idx = np.searchsorted(first_array[::-1], first_val[0])
118
- first_idx = len(first_array) - 1 - first_idx
117
+ first_idx = np.searchsorted(-first_array, -first_val[0])
119
118
  else:
120
119
  first_idx = np.searchsorted(first_array, first_val[0])
121
120
  if first_idx > 0 and first_idx < len(first_array):
@@ -124,6 +123,12 @@ class LocalRegularGridMapper(DatacubeMapper):
124
123
  if abs(first_val[0] - left_val) < abs(first_val[0] - right_val):
125
124
  first_idx -= 1
126
125
  second_idxs = np.searchsorted(second_array, second_vals)
126
+ for i, second_idx in enumerate(second_idxs):
127
+ if second_idx > 0 and second_idx < len(second_array):
128
+ left_val = second_array[second_idx - 1]
129
+ right_val = second_array[second_idx]
130
+ if abs(second_vals[i] - left_val) < abs(second_vals[i] - right_val):
131
+ second_idxs[i] -= 1
127
132
 
128
133
  # map to grid idx
129
134
  final_idxs = first_idx * (self.second_resolution + 1) + second_idxs
@@ -12,8 +12,8 @@ try:
12
12
  )
13
13
 
14
14
  use_rust = True
15
- except (ModuleNotFoundError, ImportError):
16
- print("Failed to load Rust extension, falling back to Python implementation.")
15
+ except (ModuleNotFoundError, ImportError) as e:
16
+ print(f"Failed to load Rust extension with error: {e}, falling back to Python implementation.")
17
17
 
18
18
 
19
19
  class OctahedralGridMapper(DatacubeMapper):
@@ -9,8 +9,8 @@ try:
9
9
  from polytope_feature.polytope_rs import extract_point_in_poly_bbox
10
10
 
11
11
  use_rust = True
12
- except (ModuleNotFoundError, ImportError):
13
- print("Failed to load Rust extension, falling back to Python implementation.")
12
+ except (ModuleNotFoundError, ImportError) as e:
13
+ print(f"Failed to load Rust extension with error: {e}, falling back to Python implementation.")
14
14
 
15
15
  from shapely.geometry import Point
16
16
  from shapely.geometry.polygon import Polygon
@@ -10,8 +10,9 @@ try:
10
10
  from polytope_feature.polytope_rs import QuadTree
11
11
 
12
12
  use_rust = True
13
- except (ModuleNotFoundError, ImportError):
14
- print("Failed to load Rust extension, falling back to Python implementation.")
13
+
14
+ except (ModuleNotFoundError, ImportError) as e:
15
+ print(f"Failed to load Rust extension with error: {e}, falling back to Python implementation.")
15
16
  from ..datacube.quadtree.quad_tree import QuadTree
16
17
 
17
18
 
@@ -9,8 +9,8 @@ try:
9
9
  from polytope_feature.polytope_rs import extract_point_in_poly
10
10
 
11
11
  use_rust = True
12
- except (ModuleNotFoundError, ImportError):
13
- print("Failed to load Rust extension, falling back to Python implementation.")
12
+ except (ModuleNotFoundError, ImportError) as e:
13
+ print(f"Failed to load Rust extension with error: {e}, falling back to Python implementation.")
14
14
 
15
15
  from shapely.geometry import Point
16
16
  from shapely.geometry.polygon import Polygon
@@ -7,8 +7,8 @@ try:
7
7
  from polytope_feature.polytope_rs import QuadTree
8
8
 
9
9
  use_rust = True
10
- except (ModuleNotFoundError, ImportError):
11
- print("Failed to load Rust extension, falling back to Python implementation.")
10
+ except (ModuleNotFoundError, ImportError) as e:
11
+ print(f"Failed to load Rust extension with error: {e}, falling back to Python implementation.")
12
12
  from ..datacube.quadtree.quad_tree import QuadTree
13
13
 
14
14
 
@@ -19,6 +19,7 @@ class QuadTreeSlicer(Engine):
19
19
  # TODO: maybe we create the quadtree as soon as we have an unstructured slicer type and return it
20
20
  # to the slicer somehow?
21
21
  quad_tree = QuadTree()
22
+ # NOTE: the points here are assumed to be lat/lon implicitly
22
23
  points = [tuple(point) for point in points]
23
24
  quad_tree.build_point_tree(points)
24
25
  self.points = points
@@ -27,17 +28,29 @@ class QuadTreeSlicer(Engine):
27
28
  def extract_single(self, datacube, polytope):
28
29
  # extract a single polygon
29
30
  # if need to find nearest points, then take alternative slicing method using quadtree to find nearest point
31
+ axes = polytope.axes()
32
+ assert len(axes) == 2
33
+ assert "latitude" in axes and "longitude" in axes
34
+ revert_axes = not (list(axes) == ["latitude", "longitude"])
30
35
  if use_rust:
31
36
  if len(datacube.nearest_search) == 0:
32
- polytope_points = [tuple(point) for point in polytope.points]
37
+ if revert_axes:
38
+ polytope_points = [tuple(reversed(point)) for point in polytope.points]
39
+ else:
40
+ polytope_points = [tuple(point) for point in polytope.points]
33
41
  polygon_points = self.quad_tree.query_polygon(self.points, 0, polytope_points)
34
42
  else:
35
43
  k = datacube.nearest_search[tuple(polytope.axes())][1]
36
- nn_points = [tuple(pt) for pt in datacube.nearest_search[tuple(polytope.axes())][0]]
44
+ if revert_axes:
45
+ nn_points = [tuple(reversed(pt)) for pt in datacube.nearest_search[tuple(polytope.axes())][0]]
46
+ else:
47
+ nn_points = [tuple(pt) for pt in datacube.nearest_search[tuple(polytope.axes())][0]]
37
48
  polygon_points = []
38
49
  for nn_pt in nn_points:
39
50
  polygon_points.extend(self.quad_tree.k_nearest_neighbor(nn_pt, k, self.points))
40
51
  else:
52
+ if revert_axes:
53
+ polytope.points = [tuple(reversed(point)) for point in polytope.points]
41
54
  polygon_points = self.quad_tree.query_polygon(polytope)
42
55
  return polygon_points
43
56
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: polytope-python
3
- Version: 2.1.7
3
+ Version: 2.1.9
4
4
  Summary: Polytope datacube feature extraction library
5
5
  Author-email: "European Centre for Medium-Range Weather Forecasts (ECMWF)" <software.support@ecmwf.int>
6
6
  Maintainer-email: James Hawkes <James.Hawkes@ecmwf.int>, Mathilde Leuridan <Mathilde.Leuridan@ecmwf.int>
@@ -31,6 +31,7 @@ Requires-Dist: tripy
31
31
  Requires-Dist: xarray
32
32
  Requires-Dist: conflator
33
33
  Requires-Dist: protobuf
34
+ Requires-Dist: shapely
34
35
  Provides-Extra: tests
35
36
  Requires-Dist: pytest; extra == "tests"
36
37
  Requires-Dist: pytest-cov; extra == "tests"
@@ -40,14 +41,14 @@ Requires-Dist: h5netcdf; extra == "tests"
40
41
  Requires-Dist: h5py; extra == "tests"
41
42
  Requires-Dist: earthkit-data; extra == "tests"
42
43
  Requires-Dist: matplotlib; extra == "tests"
43
- Requires-Dist: pyfdb; extra == "tests"
44
+ Requires-Dist: pyfdb<=0.1.3; extra == "tests"
44
45
  Provides-Extra: unstructured
45
46
  Requires-Dist: eckit; extra == "unstructured"
46
47
  Provides-Extra: catalogue
47
48
  Requires-Dist: qubed; extra == "catalogue"
48
49
  Provides-Extra: switching-grids
49
50
  Requires-Dist: eccodes; extra == "switching-grids"
50
- Requires-Dist: pyfdb; extra == "switching-grids"
51
+ Requires-Dist: pyfdb<=0.1.3; extra == "switching-grids"
51
52
  Dynamic: license-file
52
53
 
53
54
 
@@ -14,6 +14,7 @@ tox.ini
14
14
  .github/ci-config.yml
15
15
  .github/ci-hpc-config.yml
16
16
  .github/workflows/cd.yml
17
+ .github/workflows/ci.yml
17
18
  .github/workflows/downstream-ci.yml
18
19
  .github/workflows/label-public-pr.yml
19
20
  .github/workflows/test-pypi.yml
@@ -6,13 +6,14 @@ tripy
6
6
  xarray
7
7
  conflator
8
8
  protobuf
9
+ shapely
9
10
 
10
11
  [catalogue]
11
12
  qubed
12
13
 
13
14
  [switching_grids]
14
15
  eccodes
15
- pyfdb
16
+ pyfdb<=0.1.3
16
17
 
17
18
  [tests]
18
19
  pytest
@@ -23,7 +24,7 @@ h5netcdf
23
24
  h5py
24
25
  earthkit-data
25
26
  matplotlib
26
- pyfdb
27
+ pyfdb<=0.1.3
27
28
 
28
29
  [unstructured]
29
30
  eckit
@@ -39,6 +39,7 @@ dependencies = [
39
39
  "xarray",
40
40
  "conflator",
41
41
  "protobuf",
42
+ "shapely",
42
43
  ]
43
44
 
44
45
  [project.optional-dependencies]
@@ -51,7 +52,7 @@ tests = [
51
52
  "h5py",
52
53
  "earthkit-data",
53
54
  "matplotlib",
54
- "pyfdb"
55
+ "pyfdb<=0.1.3",
55
56
  ]
56
57
 
57
58
  unstructured = [
@@ -64,7 +65,7 @@ catalogue = [
64
65
 
65
66
  switching_grids = [
66
67
  "eccodes",
67
- "pyfdb"
68
+ "pyfdb<=0.1.3"
68
69
  ]
69
70
 
70
71
  [project.urls]
File without changes