semvec/pypi-packages huggingface dataset:
meteopoint 0.4.0
A simple CLI tool for weather and air quality data
Requires Python: >=3.7

# MeteoPoint 🌤️

A simple CLI tool for weather and environmental data, featuring air quality monitoring with WHO guideline comparisons.

## Quick Start

```bash
# Install globally
pip install meteopoint

# Set your OpenWeather API key
export OPENWEATHER_API_KEY=your_api_key_here
export GOOGLE_MAPS_API_KEY=your_api_key_here
export GOOGLE_MAPS_SIGNING_SECRET=your_signing_secret_here

# Start using it!
meteopoint paris
meteopoint nyc
```

## Features

- 🌡️ Comprehensive weather data with beautiful display
- 💨 Air quality monitoring with WHO guideline comparisons
- 🏭 Top 5 most significant pollutants with health impact assessment
- 🌍 Enhanced accuracy with dual API support (OpenWeather + Google Maps)
- 🔄 2-day weather forecast with precipitation probability
- 🌅 Sunrise and sunset times
- 📍 Built-in city aliases (nyc, sf, etc.)

## API Keys

1. **OpenWeather API Key (Required)**
   - Sign up at [OpenWeather](https://openweathermap.org/api)
   - Free tier is sufficient
   - Set the API key as an environment variable named `OPENWEATHER_API_KEY`

2. **Google Maps API Key (Optional)**
   - Sign up at [Google Cloud Console](https://console.cloud.google.com/)
   - Enables enhanced air quality data
   - Free tier has generous limits
   - Set the API key as an environment variable named `GOOGLE_MAPS_API_KEY`
   - Set the signing secret as an environment variable named `GOOGLE_MAPS_SIGNING_SECRET`

## Examples

```bash
# Basic usage
meteopoint paris

# Use Fahrenheit
meteopoint paris --fahrenheit

# Get minimal output
meteopoint paris --format minimal

# Get JSON output
meteopoint paris --format json

# Save a city alias
meteopoint save "New York" --alias nyc

# Set default city
meteopoint config --default-city paris

# Enable shell completion
meteopoint install-completion
```

## City Aliases

Common city aliases are built-in:
- nyc → New York
- sf → San Francisco
- la → Los Angeles
- lon → London
- paris → Paris
- And many more!

## Requirements

- Python 3.7+
- Free OpenWeather API key (required)
- Free Google Maps API key (optional, enhances air quality data)

## Output Format

The tool provides rich output including:
- Current temperature and "feels like"
- Humidity and pressure
- Wind speed and direction
- Air quality index with interpretation
- Color-coded pollutant levels with WHO guideline comparisons
- Health recommendations based on air quality
- 2-day forecast with precipitation probability
rng-jax 0.0.4
JAX random number generation as a NumPy generator
Requires Python: >=3.9

# `rng-jax` — NumPy random number generator API for JAX

**This is a proof of concept only.**

Wraps JAX's stateless random number generation in a class implementing the
[`numpy.random.Generator`](generator) interface.

## Example

```py
>>> import rng_jax
>>> rng = rng_jax.Generator(42)  # same arguments as jax.random.key()
>>> rng.standard_normal(3)
Array([-0.5675502 ,  0.28439185, -0.9320608 ], dtype=float32)
>>> rng.standard_normal(3)
Array([ 0.67903334, -1.220606  ,  0.94670606], dtype=float32)
```

## Rationale

The [Array API](array_api) makes it possible to write array-agnostic Python
libraries. The `rng-jax` package makes it easy to extend this to random number
generation in NumPy and JAX. End users only need to provide a `rng` object, as
usual, which can either be a NumPy one or a `rng_jax.Generator` instance
wrapping JAX's stateless random number generation.

## How it works

The `rng_jax.Generator` class works in the obvious way: it keeps track of the
JAX `key` and calls `jax.random.split()` before every random operation.

## JIT and native JAX code

The problem with a stateful RNG is that it cannot be passed into a compiled JAX
function. In practice, this is not usually an issue, since the goal of this
package is to work in tandem with the Array API: array-agnostic code is not
usually compiled at low level. Conversely, native JAX code usually expects a
`key`, anyway, not a `rng_jax.Generator` instance.

To interface with a native JAX function expecting a `key`, use the `.split()`
method to obtain a new random key and advance the internal state of the
generator:

```py
>>> import jax
>>> rng = rng_jax.Generator(42)
>>> key = rng.split()
>>> jax.random.normal(key, 3)
Array([-0.5675502 ,  0.28439185, -0.9320608 ], dtype=float32)
>>> key = rng.split()
>>> jax.random.normal(key, 3)
Array([ 0.67903334, -1.220606  ,  0.94670606], dtype=float32)
```

Using the `rng_jax.Generator` class fully _within_ a compiled JAX function
works without issue.

[array-api]: https://data-apis.org/array-api/latest/
[generator]: https://numpy.org/doc/stable/reference/random/generator.html
spymarine 0.7.0
Communicate with Simarine devices using asyncio and Python
Requires Python: >=3.11

# spymarine

A library for spying on Simarine devices and their sensor values using asyncio and Python

Based on the fantastic reverse engineering work of https://github.com/htool/pico2signalk

Only tested with Simarine Pico rev2 and firmware 1.17

## Library Installation

```sh
pip install spymarine
```

## Getting Started

Make sure your Simarine device is configured to use AP or STA Wifi mode. It's not possible
to connect via a local network while in REMOTE mode.

Run the following code on the same network that the Simarine device is connected to:

```python
import asyncio
import spymarine

async def main():
    # Print all devices and their latest sensor values every second
    async with spymarine.DeviceReader() as reader:
        while True:
            await reader.read_sensors()
            print(reader.devices)
            await asyncio.sleep(1)

if __name__ == "__main__":
    asyncio.run(main())
```

## Troubleshooting

#### Q: `DeviceReader` is stuck while establishing a connection when using STA Wifi mode

- Update the Pico's firmware

## Known Issues

- Non-ASCII characters in device names will not be represented correctly and replaced with a
  placeholder. A non-standard encoding seems to be used.

## Reporting issues

- Run `tools/make-debug-report.py`
- Create a new issue on GitHub and attach the debug.log

## Author

Christopher Strack