Metadata-Version: 2.4
Name: core-lens
Version: 0.1.dev108
Summary: Query, analyse, and visualise CoreStack's microwatershed and Earth science data through a clean, composable Python API.
Project-URL: Homepage, https://github.com/ApoorvaKashyap/core-lens
Project-URL: Issues, https://github.com/ApoorvaKashyap/core-lens/issues
Author: Apoorva Kashyap
License-Expression: GPL-3.0-or-later
License-File: LICENSE
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: GIS
Classifier: Topic :: Scientific/Engineering :: Hydrology
Requires-Python: >=3.13
Requires-Dist: core-lens[core]
Requires-Dist: core-lens[spatial]
Provides-Extra: core
Requires-Dist: polars<2,>=1.39.0; extra == 'core'
Requires-Dist: pyarrow<25,>=23.0.0; extra == 'core'
Requires-Dist: pydantic<3,>=2.13.3; extra == 'core'
Provides-Extra: full
Requires-Dist: bokeh<4,>=3.6.0; extra == 'full'
Requires-Dist: duckdb<2,>=1.5.3; extra == 'full'
Requires-Dist: geoarrow-rust-core>=0.3.0; extra == 'full'
Requires-Dist: geopandas<2,>=1.1.3; extra == 'full'
Requires-Dist: lonboard<1,>=0.16.0; extra == 'full'
Requires-Dist: matplotlib<4,>=3.10.9; extra == 'full'
Requires-Dist: polars<2,>=1.39.0; extra == 'full'
Requires-Dist: pyarrow<25,>=23.0.0; extra == 'full'
Requires-Dist: pydantic<3,>=2.13.3; extra == 'full'
Requires-Dist: pyproj<4,>=3.7.2; extra == 'full'
Requires-Dist: scipy<2,>=1.17.1; extra == 'full'
Requires-Dist: shapely<3,>=2.1.2; extra == 'full'
Requires-Dist: statsmodels<1,>=0.14.6; extra == 'full'
Provides-Extra: full-gpu
Requires-Dist: bokeh<4,>=3.6.0; extra == 'full-gpu'
Requires-Dist: cudf-cu13==26.6.*; extra == 'full-gpu'
Requires-Dist: cudf-polars-cu13==26.6.*; extra == 'full-gpu'
Requires-Dist: duckdb<2,>=1.5.3; extra == 'full-gpu'
Requires-Dist: geoarrow-rust-core>=0.3.0; extra == 'full-gpu'
Requires-Dist: geopandas<2,>=1.1.3; extra == 'full-gpu'
Requires-Dist: lonboard<1,>=0.16.0; extra == 'full-gpu'
Requires-Dist: matplotlib<4,>=3.10.9; extra == 'full-gpu'
Requires-Dist: polars<2,>=1.39.0; extra == 'full-gpu'
Requires-Dist: pyarrow<25,>=23.0.0; extra == 'full-gpu'
Requires-Dist: pydantic<3,>=2.13.3; extra == 'full-gpu'
Requires-Dist: pyproj<4,>=3.7.2; extra == 'full-gpu'
Requires-Dist: scipy<2,>=1.17.1; extra == 'full-gpu'
Requires-Dist: shapely<3,>=2.1.2; extra == 'full-gpu'
Requires-Dist: statsmodels<1,>=0.14.6; extra == 'full-gpu'
Provides-Extra: gpu
Requires-Dist: cudf-cu13==26.6.*; extra == 'gpu'
Requires-Dist: cudf-polars-cu13==26.6.*; extra == 'gpu'
Requires-Dist: polars<2,>=1.39.0; extra == 'gpu'
Requires-Dist: pyarrow<25,>=23.0.0; extra == 'gpu'
Requires-Dist: pydantic<3,>=2.13.3; extra == 'gpu'
Provides-Extra: spatial
Requires-Dist: duckdb<2,>=1.5.3; extra == 'spatial'
Requires-Dist: geopandas<2,>=1.1.3; extra == 'spatial'
Requires-Dist: polars<2,>=1.39.0; extra == 'spatial'
Requires-Dist: pyarrow<25,>=23.0.0; extra == 'spatial'
Requires-Dist: pydantic<3,>=2.13.3; extra == 'spatial'
Requires-Dist: pyproj<4,>=3.7.2; extra == 'spatial'
Requires-Dist: shapely<3,>=2.1.2; extra == 'spatial'
Provides-Extra: stats
Requires-Dist: polars<2,>=1.39.0; extra == 'stats'
Requires-Dist: pyarrow<25,>=23.0.0; extra == 'stats'
Requires-Dist: pydantic<3,>=2.13.3; extra == 'stats'
Requires-Dist: scipy<2,>=1.17.1; extra == 'stats'
Requires-Dist: statsmodels<1,>=0.14.6; extra == 'stats'
Provides-Extra: viz
Requires-Dist: bokeh<4,>=3.6.0; extra == 'viz'
Requires-Dist: geoarrow-rust-core>=0.3.0; extra == 'viz'
Requires-Dist: lonboard<1,>=0.16.0; extra == 'viz'
Requires-Dist: matplotlib<4,>=3.10.9; extra == 'viz'
Requires-Dist: polars<2,>=1.39.0; extra == 'viz'
Requires-Dist: pyarrow<25,>=23.0.0; extra == 'viz'
Requires-Dist: pydantic<3,>=2.13.3; extra == 'viz'
Description-Content-Type: text/markdown

# CoreLens

![GitHub last commit](https://img.shields.io/github/last-commit/ApoorvaKashyap/core-lens)
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/ApoorvaKashyap/core-lens/ci.yml)
![GitHub repo size](https://img.shields.io/github/repo-size/ApoorvaKashyap/core-lens)

A Python library for querying, analysing, and visualising geospatial Earth science data built on CoreStack.

CoreLens provides a unified interface over microwatersheds, administrative boundaries, and pluggable domain entities — with lazy Parquet I/O (powered by Polars), seasonal time-series support, and spatial statistical analysis.

## Quickstart

```bash
pip install core-lens
```

```python
from core_lens import AoI
from core_lens.entities import MWSEntity, TehsilEntity

# Register entities
AoI.register(MWSEntity)
AoI.register(TehsilEntity)

# Create an AoI scoped to a specific Tehsil
aoi = AoI(data_root="/path/to/data", tehsil="Pangi")

# Access entities scoped to this AoI
mws_view = aoi.mws

# Materialise and plot
static_result = mws_view.static
aoi.plot(overlay=static_result)
```

## Documentation

Full documentation is available in the `docs/` directory. It includes:

- **Core Concepts**: Understanding AoI, Views, and Results.
- **Example Queries**: Time filtering, aggregations, spatial joins, and statistics.
- **Plugin System**: How to add custom entities.

To build the docs locally:

```bash
cd docs
make html
```
