core-lens 0.1.dev140__tar.gz → 0.1.dev141__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 (91) hide show
  1. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/PKG-INFO +1 -1
  2. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/_version.py +2 -2
  3. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/aoi.py +13 -2
  4. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/base/view.py +19 -4
  5. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/.github/ISSUE_TEMPLATE/blank-proposal.yaml +0 -0
  6. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/.github/ISSUE_TEMPLATE/bug-report.yaml +0 -0
  7. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/.github/ISSUE_TEMPLATE/feature-request.yaml +0 -0
  8. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/.github/pull_request_template.md +0 -0
  9. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/.github/workflows/ci.yml +0 -0
  10. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/.github/workflows/gh-pages.yml +0 -0
  11. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/.github/workflows/pre-release.yml +0 -0
  12. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/.github/workflows/release.yml +0 -0
  13. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/.gitignore +0 -0
  14. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/.gitmessage +0 -0
  15. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/.pre-commit-config.yaml +0 -0
  16. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/.python-version +0 -0
  17. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/CONTRIBUTING.md +0 -0
  18. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/LICENSE +0 -0
  19. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/README.md +0 -0
  20. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/SKILLS.md +0 -0
  21. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/benchmarks/README.md +0 -0
  22. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/benchmarks/bench_aoi.py +0 -0
  23. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/benchmarks/bench_export.py +0 -0
  24. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/benchmarks/bench_polars_utils.py +0 -0
  25. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/benchmarks/bench_result.py +0 -0
  26. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/benchmarks/bench_schema.py +0 -0
  27. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/benchmarks/bench_season.py +0 -0
  28. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/benchmarks/bench_spatial.py +0 -0
  29. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/benchmarks/bench_view.py +0 -0
  30. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/benchmarks/run_all.sh +0 -0
  31. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/docs/Makefile +0 -0
  32. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/docs/make.bat +0 -0
  33. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/docs/source/concepts.md +0 -0
  34. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/docs/source/conf.py +0 -0
  35. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/docs/source/export.md +0 -0
  36. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/docs/source/index.rst +0 -0
  37. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/docs/source/intro.md +0 -0
  38. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/docs/source/logging.md +0 -0
  39. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/docs/source/plots.md +0 -0
  40. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/docs/source/plugins.md +0 -0
  41. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/docs/source/queries.md +0 -0
  42. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/docs/source/quickstart.md +0 -0
  43. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/docs/source/stats.md +0 -0
  44. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/examples/demo_mws.py +0 -0
  45. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/examples/demo_tehsil.py +0 -0
  46. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/hooks/mypy.sh +0 -0
  47. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/hooks/no-parquet-outside-fixtures.sh +0 -0
  48. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/hooks/pytest.sh +0 -0
  49. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/pyproject.toml +0 -0
  50. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/__init__.py +0 -0
  51. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/__main__.py +0 -0
  52. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/base/__init__.py +0 -0
  53. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/base/entity.py +0 -0
  54. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/base/namespaces/__init__.py +0 -0
  55. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/base/namespaces/plot.py +0 -0
  56. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/base/namespaces/stats.py +0 -0
  57. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/base/result.py +0 -0
  58. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/entities/__init__.py +0 -0
  59. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/entities/mws.py +0 -0
  60. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/entities/tehsil.py +0 -0
  61. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/entities/waterbody.py +0 -0
  62. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/export/__init__.py +0 -0
  63. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/export/formats.py +0 -0
  64. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/py.typed +0 -0
  65. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/schema/__init__.py +0 -0
  66. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/schema/detection.py +0 -0
  67. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/schema/profile.py +0 -0
  68. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/utils/__init__.py +0 -0
  69. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/utils/paths.py +0 -0
  70. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/utils/polars_utils.py +0 -0
  71. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/utils/season.py +0 -0
  72. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/src/core_lens/utils/spatial.py +0 -0
  73. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/fixtures/generate_fixtures.py +0 -0
  74. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/conftest.py +0 -0
  75. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_aoi.py +0 -0
  76. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_entities.py +0 -0
  77. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_entity.py +0 -0
  78. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_export.py +0 -0
  79. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_main.py +0 -0
  80. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_plot.py +0 -0
  81. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_polars_utils.py +0 -0
  82. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_profile.py +0 -0
  83. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_result.py +0 -0
  84. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_schema_detection.py +0 -0
  85. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_schema_profile.py +0 -0
  86. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_season.py +0 -0
  87. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_season_config.py +0 -0
  88. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_spatial.py +0 -0
  89. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_stats.py +0 -0
  90. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/tests/unit/test_view.py +0 -0
  91. {core_lens-0.1.dev140 → core_lens-0.1.dev141}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: core-lens
3
- Version: 0.1.dev140
3
+ Version: 0.1.dev141
4
4
  Summary: Query, analyse, and visualise CoreStack's microwatershed and Earth science data through a clean, composable Python API.
5
5
  Project-URL: Homepage, https://github.com/ApoorvaKashyap/core-lens
6
6
  Project-URL: Issues, https://github.com/ApoorvaKashyap/core-lens/issues
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.1.dev140'
22
- __version_tuple__ = version_tuple = (0, 1, 'dev140')
21
+ __version__ = version = '0.1.dev141'
22
+ __version_tuple__ = version_tuple = (0, 1, 'dev141')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -219,12 +219,23 @@ def _cached_resolve_boundary(
219
219
 
220
220
  lf = pl.scan_parquet(static_path, storage_options=storage_options or None)
221
221
  filter_expr = pl.lit(True)
222
+ schema_types = lf.collect_schema()
222
223
  for col, val in entity_kwargs.items():
223
224
  if col in schema.key_cols or col in schema.extra_static_cols:
225
+ is_list_col = isinstance(schema_types.get(col), pl.List)
224
226
  if isinstance(val, list):
225
- lf = lf.filter(pl.col(col).is_in(val))
227
+ if is_list_col:
228
+ filter_expr = (
229
+ filter_expr
230
+ & pl.col(col).list.eval(pl.element().is_in(val)).list.any()
231
+ )
232
+ else:
233
+ filter_expr = filter_expr & pl.col(col).is_in(val)
226
234
  else:
227
- filter_expr = filter_expr & (pl.col(col) == val)
235
+ if is_list_col:
236
+ filter_expr = filter_expr & pl.col(col).list.contains(val)
237
+ else:
238
+ filter_expr = filter_expr & (pl.col(col) == val)
228
239
 
229
240
  df = lf.filter(filter_expr).select(candidate.key_cols + [geom_col]).collect()
230
241
 
@@ -99,16 +99,31 @@ class View:
99
99
  """
100
100
  static = self.entity._resolve(self.entity.static_path)
101
101
 
102
- filter_expr = pl.lit(True)
103
- for col, val in kwargs.items():
104
- filter_expr = filter_expr & (pl.col(col) == val)
105
-
106
102
  lf = scan_with_key_filter(
107
103
  path=static,
108
104
  key_cols=self.entity.key_cols,
109
105
  key_values=self.keys,
110
106
  storage_options=self._storage_options or None,
111
107
  )
108
+ schema_types = lf.collect_schema()
109
+
110
+ filter_expr = pl.lit(True)
111
+ for col, val in kwargs.items():
112
+ is_list_col = isinstance(schema_types.get(col), pl.List)
113
+ if isinstance(val, list):
114
+ if is_list_col:
115
+ filter_expr = (
116
+ filter_expr
117
+ & pl.col(col).list.eval(pl.element().is_in(val)).list.any()
118
+ )
119
+ else:
120
+ filter_expr = filter_expr & pl.col(col).is_in(val)
121
+ else:
122
+ if is_list_col:
123
+ filter_expr = filter_expr & pl.col(col).list.contains(val)
124
+ else:
125
+ filter_expr = filter_expr & (pl.col(col) == val)
126
+
112
127
  keys = lf.filter(filter_expr).select(self.entity.key_cols).collect()
113
128
 
114
129
  return View(
File without changes
File without changes
File without changes
File without changes