core-lens 0.1.dev160__tar.gz → 0.1.dev161__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.dev160 → core_lens-0.1.dev161}/PKG-INFO +1 -1
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/_version.py +2 -2
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/base/namespaces/plot.py +27 -11
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/.github/ISSUE_TEMPLATE/blank-proposal.yaml +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/.github/ISSUE_TEMPLATE/bug-report.yaml +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/.github/ISSUE_TEMPLATE/feature-request.yaml +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/.github/pull_request_template.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/.github/workflows/ci.yml +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/.github/workflows/gh-pages.yml +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/.github/workflows/pre-release.yml +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/.github/workflows/release.yml +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/.gitignore +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/.gitmessage +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/.pre-commit-config.yaml +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/.python-version +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/CONTRIBUTING.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/LICENSE +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/README.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/SKILLS.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/benchmarks/README.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/benchmarks/bench_aoi.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/benchmarks/bench_export.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/benchmarks/bench_polars_utils.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/benchmarks/bench_result.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/benchmarks/bench_schema.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/benchmarks/bench_season.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/benchmarks/bench_spatial.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/benchmarks/bench_view.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/benchmarks/run_all.sh +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/docs/Makefile +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/docs/make.bat +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/docs/source/concepts.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/docs/source/conf.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/docs/source/export.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/docs/source/index.rst +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/docs/source/intro.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/docs/source/logging.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/docs/source/plots.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/docs/source/plugins.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/docs/source/queries.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/docs/source/quickstart.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/docs/source/stats.md +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/examples/demo_mws.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/examples/demo_tehsil.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/hooks/mypy.sh +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/hooks/no-parquet-outside-fixtures.sh +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/hooks/pytest.sh +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/pyproject.toml +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/__init__.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/__main__.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/aoi.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/base/__init__.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/base/entity.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/base/namespaces/__init__.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/base/namespaces/stats.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/base/result.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/base/view.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/entities/__init__.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/entities/mws.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/entities/tehsil.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/entities/waterbody.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/export/__init__.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/export/formats.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/py.typed +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/schema/__init__.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/schema/detection.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/schema/profile.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/utils/__init__.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/utils/paths.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/utils/polars_utils.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/utils/season.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/src/core_lens/utils/spatial.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/fixtures/generate_fixtures.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/conftest.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_aoi.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_entities.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_entity.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_export.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_main.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_plot.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_polars_utils.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_profile.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_result.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_schema_detection.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_schema_profile.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_season.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_season_config.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_spatial.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_stats.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/tests/unit/test_view.py +0 -0
- {core_lens-0.1.dev160 → core_lens-0.1.dev161}/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.dev161
|
|
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.dev161'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 'dev161')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -561,11 +561,19 @@ class PlotNamespace:
|
|
|
561
561
|
color=color,
|
|
562
562
|
size=5,
|
|
563
563
|
)
|
|
564
|
-
elif key_col in
|
|
565
|
-
|
|
566
|
-
|
|
564
|
+
elif key_col in df.columns:
|
|
565
|
+
entities = df.get_column(key_col).unique().to_list()
|
|
566
|
+
for i, entity in enumerate(entities):
|
|
567
|
+
entity_df = df.filter(pl.col(key_col) == entity)
|
|
568
|
+
source_data = {}
|
|
569
|
+
for c in hover_cols:
|
|
570
|
+
if c in entity_df.columns:
|
|
571
|
+
lst = entity_df.get_column(c).to_list()
|
|
572
|
+
if entity_df.schema[c].is_numeric():
|
|
573
|
+
lst = [float("nan") if v is None else v for v in lst]
|
|
574
|
+
source_data[c] = lst
|
|
575
|
+
source = ColumnDataSource(source_data) # type: ignore[arg-type]
|
|
567
576
|
color = _color_for(i)
|
|
568
|
-
source = _src(row)
|
|
569
577
|
fig.line(
|
|
570
578
|
x=x,
|
|
571
579
|
y=y_col,
|
|
@@ -676,8 +684,6 @@ class PlotNamespace:
|
|
|
676
684
|
entities = unique_entities.limit(top_n).to_list()
|
|
677
685
|
df = df.join(pl.DataFrame({key_col: entities}), on=key_col, how="inner")
|
|
678
686
|
|
|
679
|
-
df_pd = df.to_pandas()
|
|
680
|
-
|
|
681
687
|
def _make_scatter(y_col: str) -> "BokehFigure":
|
|
682
688
|
from bokeh.models import ColumnDataSource
|
|
683
689
|
|
|
@@ -689,11 +695,21 @@ class PlotNamespace:
|
|
|
689
695
|
tools="pan,wheel_zoom,box_zoom,reset,save,hover",
|
|
690
696
|
tooltips=[(c, f"@{{{c}}}") for c in hover_cols],
|
|
691
697
|
)
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
698
|
+
|
|
699
|
+
entities = df.get_column(key_col).unique().to_list()
|
|
700
|
+
for i, entity in enumerate(entities):
|
|
701
|
+
row = df.filter(pl.col(key_col) == entity)
|
|
702
|
+
|
|
703
|
+
# Replace None with NaN for numeric columns to prevent Bokeh JS rendering crashes
|
|
704
|
+
source_data = {}
|
|
705
|
+
for c in hover_cols:
|
|
706
|
+
if c in row.columns:
|
|
707
|
+
lst = row.get_column(c).to_list()
|
|
708
|
+
if row.schema[c].is_numeric():
|
|
709
|
+
lst = [float("nan") if v is None else v for v in lst]
|
|
710
|
+
source_data[c] = lst
|
|
711
|
+
|
|
712
|
+
source = ColumnDataSource(source_data) # type: ignore[arg-type]
|
|
697
713
|
fig.scatter(
|
|
698
714
|
x=x,
|
|
699
715
|
y=y_col,
|
|
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
|
|
File without changes
|
|
File without changes
|