semvec/pypi-packages huggingface dataset:
letsping 0.1.2
The Human-in-the-Loop SDK for AI Agents
License: MIT
Requires Python: >=3.8

# LetsPing Python SDK

[![PyPI version](https://badge.fury.io/py/letsping.svg)](https://badge.fury.io/py/letsping)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python Versions](https://img.shields.io/pypi/pyversions/letsping.svg)](https://pypi.org/project/letsping/)

The official state management infrastructure for Human-in-the-Loop (HITL) AI agents.
LetsPing provides a durable "pause button" for autonomous agents, decoupling the agent's execution logic from the human's response time. It handles state serialization, secure polling, and notification routing (Slack, Email) automatically.

## Installation

```bash
pip install letsping

```

## Configuration

Set your API key as an environment variable (recommended) or pass it directly.

```bash
export LETSPING_API_KEY="lp_live_..."

```

## Usage

### 1. The "Ask" Primitive (Blocking)

Use this when you want to pause a script until a human approves.

```python
from letsping import LetsPing

client = LetsPing()

# Pauses here for up to 24 hours (default)
decision = client.ask(
    service="payments-agent",
    action="transfer_funds",
    payload={
        "amount": 5000,
        "currency": "USD",
        "recipient": "acct_99"
    },
    priority="critical"
)

# Execution resumes only after approval
print(f"Transfer approved by {decision['metadata']['actor_id']}")

```

### 2. Async / Non-Blocking (FastAPI/LangGraph)

For high-concurrency environments or event loops.

```python
import asyncio
from letsping import LetsPing

async def main():
    client = LetsPing()
    
    # Non-blocking wait
    decision = await client.aask(
        service="github-agent",
        action="merge_pr",
        payload={"pr_id": 42},
        timeout=3600 # 1 hour timeout
    )

asyncio.run(main())

```

### 3. LangChain / Agent Integration

LetsPing provides a compliant tool interface that can be injected directly into LLM agent toolkits (LangChain, CrewAI, etc). This allows the LLM to *decide* when to ask for help.

```python
from letsping import LetsPing

client = LetsPing()

tools = [
    # ... your other tools (search, calculator) ...
    
    # Inject the human as a tool
    client.tool(
        service="research-agent",
        action="review_draft",
        priority="high"
    )
]

```

## Error Handling

The SDK uses typed exceptions for control flow.

* `ApprovalRejectedError`: Raised when the human explicitly clicks "Reject".
* `TimeoutError`: Raised when the duration (default 24h) expires without a decision.
* `LetsPingError`: Base class for API or network failures.

## License

MIT
xcube-resampling 0.3.0
A package to resample, reproject, and rectify geospatial datasets.
License: MIT
Requires Python: >=3.10
Keywords: xcube, xarray, dask, reprojection, rectification, affine transformation, parallel processing

# xcube-resampling

[![Build Status](https://github.com/xcube-dev/xcube-resampling/actions/workflows/unit-tests.yml/badge.svg?branch=main)](https://github.com/xcube-dev/xcube-resampling/actions/workflows/unit-tests.yml)
[![codecov](https://codecov.io/gh/xcube-dev/xcube-resampling/graph/badge.svg?token=ktcp1maEgz)](https://codecov.io/gh/xcube-dev/xcube-resampling)
[![PyPI Version](https://img.shields.io/pypi/v/xcube-resampling)](https://pypi.org/project/xcube-resampling/)
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/xcube-resampling/badges/version.svg)](https://anaconda.org/conda-forge/xcube-resampling)
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/xcube-resampling/badges/license.svg)](https://anaconda.org/conda-forge/xcube-resampling)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

**xcube-resampling** provides efficient algorithms for transforming datasets into 
different spatial grids and temporal scales. It is designed for geospatial workflows that need
flexible resampling and reprojection. This library provides up and downsampling for both
spatial and temporal domains.

### ✨ Features
- #### Spatial Resampling
    - **Affine resampling** – simple resampling using affine transformations
    - **Reprojection** – convert datasets between different coordinate reference systems (CRS)
    - **Rectification** – transform irregular grids into regular, well-structured grids

- #### Temporal Resampling
    - **Time-based resampling** – upsample or downsample data along the time dimension

All methods work seamlessly with chunked (lazily loaded) [xarray.Datasets](https://docs.xarray.dev/en/stable/generated/xarray.Dataset.html) and are powered by [Dask](https://www.dask.org/) for scalable, out-of-core computation.

### ⚡ Lightweight & Independent
The package is independent of the core *xcube* framework and has minimal dependencies:
`affine, dask, dask-image, numba, numpy, pyproj, xarray, zarr`.

Find out more in the [xcube-resampling Documentation](https://xcube-dev.github.io/xcube-resampling/).