core-lens 0.1.dev151__tar.gz → 0.1.dev153__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.
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/PKG-INFO +1 -1
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/_version.py +2 -2
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/base/entity.py +16 -1
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/base/result.py +1 -1
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/utils/polars_utils.py +1 -1
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/.github/ISSUE_TEMPLATE/blank-proposal.yaml +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/.github/ISSUE_TEMPLATE/bug-report.yaml +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/.github/ISSUE_TEMPLATE/feature-request.yaml +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/.github/pull_request_template.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/.github/workflows/ci.yml +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/.github/workflows/gh-pages.yml +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/.github/workflows/pre-release.yml +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/.github/workflows/release.yml +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/.gitignore +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/.gitmessage +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/.pre-commit-config.yaml +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/.python-version +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/CONTRIBUTING.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/LICENSE +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/README.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/SKILLS.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/benchmarks/README.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/benchmarks/bench_aoi.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/benchmarks/bench_export.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/benchmarks/bench_polars_utils.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/benchmarks/bench_result.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/benchmarks/bench_schema.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/benchmarks/bench_season.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/benchmarks/bench_spatial.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/benchmarks/bench_view.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/benchmarks/run_all.sh +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/docs/Makefile +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/docs/make.bat +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/docs/source/concepts.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/docs/source/conf.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/docs/source/export.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/docs/source/index.rst +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/docs/source/intro.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/docs/source/logging.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/docs/source/plots.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/docs/source/plugins.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/docs/source/queries.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/docs/source/quickstart.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/docs/source/stats.md +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/examples/demo_mws.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/examples/demo_tehsil.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/hooks/mypy.sh +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/hooks/no-parquet-outside-fixtures.sh +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/hooks/pytest.sh +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/pyproject.toml +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/__init__.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/__main__.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/aoi.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/base/__init__.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/base/namespaces/__init__.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/base/namespaces/plot.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/base/namespaces/stats.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/base/view.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/entities/__init__.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/entities/mws.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/entities/tehsil.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/entities/waterbody.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/export/__init__.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/export/formats.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/py.typed +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/schema/__init__.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/schema/detection.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/schema/profile.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/utils/__init__.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/utils/paths.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/utils/season.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/src/core_lens/utils/spatial.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/fixtures/generate_fixtures.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/conftest.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_aoi.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_entities.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_entity.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_export.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_main.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_plot.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_polars_utils.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_profile.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_result.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_schema_detection.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_schema_profile.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_season.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_season_config.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_spatial.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_stats.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/tests/unit/test_view.py +0 -0
- {core_lens-0.1.dev151 → core_lens-0.1.dev153}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: core-lens
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.dev153
|
|
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.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 1, '
|
|
21
|
+
__version__ = version = '0.1.dev153'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 'dev153')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -474,7 +474,22 @@ class BaseEntity(ABC):
|
|
|
474
474
|
if attr_kwargs:
|
|
475
475
|
filter_expr = pl.lit(True)
|
|
476
476
|
for col, val in attr_kwargs.items():
|
|
477
|
-
|
|
477
|
+
dtype = schema[col]
|
|
478
|
+
is_list_col = isinstance(dtype, pl.List) or dtype == pl.List
|
|
479
|
+
is_val_list = isinstance(val, (list, tuple, set))
|
|
480
|
+
|
|
481
|
+
if is_list_col:
|
|
482
|
+
if is_val_list:
|
|
483
|
+
filter_expr = filter_expr & (
|
|
484
|
+
pl.col(col).list.set_intersection(list(val)).list.len() > 0
|
|
485
|
+
)
|
|
486
|
+
else:
|
|
487
|
+
filter_expr = filter_expr & pl.col(col).list.contains(val)
|
|
488
|
+
else:
|
|
489
|
+
if is_val_list:
|
|
490
|
+
filter_expr = filter_expr & pl.col(col).is_in(list(val))
|
|
491
|
+
else:
|
|
492
|
+
filter_expr = filter_expr & (pl.col(col) == val)
|
|
478
493
|
lf = lf.filter(filter_expr)
|
|
479
494
|
|
|
480
495
|
if not entity_kwargs:
|
|
@@ -174,7 +174,7 @@ class Result:
|
|
|
174
174
|
geo_lf = self.entity.geometry_lazy
|
|
175
175
|
if len(key_cols) == 1 and keys_df.height < 50000:
|
|
176
176
|
key = key_cols[0]
|
|
177
|
-
geo_lf = geo_lf.filter(pl.col(key).is_in(keys_df[key]))
|
|
177
|
+
geo_lf = geo_lf.filter(pl.col(key).is_in(keys_df[key].to_list()))
|
|
178
178
|
else:
|
|
179
179
|
geo_lf = geo_lf.join(keys_df.lazy(), on=key_cols, how="semi")
|
|
180
180
|
|
|
@@ -146,7 +146,7 @@ def scan_with_key_filter(
|
|
|
146
146
|
# predicate pushdown in the Parquet reader, avoiding a full table scan.
|
|
147
147
|
# The literal tree RAM issue only occurs with hundreds of thousands of keys.
|
|
148
148
|
key = key_cols[0]
|
|
149
|
-
lf = lf.filter(pl.col(key).is_in(kv_df[key]))
|
|
149
|
+
lf = lf.filter(pl.col(key).is_in(kv_df[key].to_list()))
|
|
150
150
|
else:
|
|
151
151
|
# Fallback to semi-join for massive key arrays (e.g. state-wide scopes)
|
|
152
152
|
lf = lf.join(kv_df.lazy(), on=key_cols, how="semi")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|