semvec/pypi-packages huggingface dataset:
seguin-loom-server 0.12
Web server that drives a Séguin dobby loom
Requires Python: >=3.11

# Web server that controls a Séguin dobby loom

This server is intended to allow you to control your loom from any phone, tablet or other device that has wifi and a web browser.

For for usage and installation instructions please see the [documentation](https://r-owen.github.io/base_loom_server/).

**Warning**: this software has not yet been tested on a real loom.
The documentation from Séguin is good, so I think the code is very close.
Meanwhile, trying it cannot hurt your loom, the only risk is that it will do nothing or raise the wrong shafts. I think it more likely that it will work, but may show incorrect status, as I had to make a guess about what one of the less important status bits means.
Initially I suggest running the server with command-line option `-v` (verbose) so you have more information for [filing a ticket](https://github.com/r-owen/seguin_loom_server/issues).

Links:

* seguin_loom_server depends on [base_loom_server](https://r-owen.github.io/base_loom_server/), which does most of the work.
* seguin_loom_server is served on [PyPI](https://pypi.org/project/seguin-loom-server/).
* Source code is on [github](https://r-owen.github.io/seguin_loom_server/).
* Please report issues using base_loom_server's [issue tracker](https://github.com/r-owen/base_loom_server/issues).
* Help with [translations to other languages](https://r-owen.github.io/base_loom_server/translations) is much appreciated.
ipcflow 0.1.0
Add your description here
Requires Python: >=3.10

# IPCflow

**IPCflow** is a lightweight Python package for connecting programs written in different languages through simple, message-based communication.

It lets you **call Python functions directly from another process or language** — for example, from Node.js, Go, or C++ — without using network sockets or external servers allowing requests and responses to flow naturally between environments.

The goal of **IPCflow** is to make cross-language function calls fast, predictable, and easy to integrate into existing systems. It’s designed for developers who want the power of Python inside other runtimes, with minimal setup and zero dependencies.

## Key Ideas

- Simple: no network setup
- Language-agnostic: works with any language
- Lightweight: zero dependencies, fast startup
- Extensible: expose your own Python functions easily

## Example Use Cases

- Calling Python logic from Node.js or Go
- Embedding machine learning models into other runtimes
- Automating workflows or scripts with Python from a larger system
- Building quick integrations between heterogeneous services

---

**IPCflow** is currently in development — documentation and examples coming soon.
texthooker_proxy 0.1.0
Add your description here
Requires Python: >=3.13

# Texthooker proxy
This is a very simple utility tool that listens on websocket connections and forwards them to
renji's [texthooker-ui](https://renji-xd.github.io/texthooker-ui/) website (or any other arbitrary websocket client).

# Installation
You need Python for this.
```
pip install texthooker_proxy
```

# Usage
By default, it attempts to connect to the default `localhost:6677` address.
```bash
texthooker_proxy
```
You can also supply custom parameters:
```bash
texthooker_proxy --host localhost --port 6678
```

# Scripts for websites
The following scripts are used to hook to VNs on the web. For each of them, you must open the browser
console and paste the corresponding script. Usually, the common keybind is `Ctrl + Shift + I`, and then
click on "Console" and you can paste the code.

## Nostalgic Visual Novels on-line
For [tss.asenheim.org](https://tss.asenheim.org/):
```js
// Open WebSocket connection to your proxy server. 
// This address should match the proxy's
const socket = new WebSocket('ws://localhost:6677');

// When the connection is open, mark this client as the data source
socket.onopen = () => {
    console.log('Connected to WebSocket server.');
    socket.send('notrenji');
    sendTextContainerContent(); // Send initial content
};

// All dialogue is in #text_container
function sendTextContainerContent() {
    const textContainer = document.getElementById('text_container');
    if (textContainer && socket.readyState === WebSocket.OPEN) {
        socket.send(textContainer.textContent);
        console.log('Sent:', textContainer.textContent);
    }
}

// Watch for changes
const observer = new MutationObserver(sendTextContainerContent);
const textContainer = document.getElementById('text_container');
if (textContainer) {
    observer.observe(textContainer, {
        childList: true,
        subtree: true,
        characterData: true
    });
}

socket.onmessage = (event) => {
    console.log('Received:', event.data);
};

socket.onerror = (error) => {
    console.error('WebSocket error:', error);
};

socket.onclose = () => {
    console.log('WebSocket connection closed');
};
```
mcp-info 0.1.0
CLI tool to provide information about an MCP server
Requires Python: >=3.11

# mcp-info

CLI tool to list tools and schemas from MCP servers configured in an `mcp.json` file.

## Usage

The tool can be run directly with `uvx` (recommended) without installation:

```bash
uvx mcp-info path/to/mcp.json
```

Options:
- `--output PATH` - Write output to a file (default: stdout)
- `--show-output-schema` - Include output schemas in results
- `-t, --tool-names TOOL1 TOOL2 ...` - Filter to specific tool names

Output is JSON format, grouped by server name.

## Installation

Alternatively, the tool can be installed via pip:

```bash
pip install mcp-info
```
pyrsig 0.11.1
Python interface to RSIG Web API
Requires Python: >=3.6

# pyrsig

[![Docs](https://github.com/barronh/pyrsig/actions/workflows/documentation.yaml/badge.svg)](https://barronh.github.io/pyrsig/)
[![Tests](https://github.com/barronh/pyrsig/actions/workflows/tests.yml/badge.svg)](https://github.com/barronh/pyrsig/actions/workflows/tests.yml)
[![pypi](https://github.com/barronh/pyrsig/actions/workflows/python-publish.yml/badge.svg)](https://pypi.org/project/pyrsig/)


`pyrsig` is a Python interface to the RSIG Web API. RSIG connects you to
petabytes of air quality data from EPA, NASA, NOAA, and many other partners.
`pyrsig` connects RSIG to xarray, pandas, and all your favorite python libraries.


## Install

There are two easy ways to isntall `pyrsig` easily.

From pypi.org (most stable):

```bash
pip install pyrsig
```

From github (latest):

```bash
pip install git+https://github.com/barronh/pyrsig.git
```

## User Guide

Many examples, tutorials, and guides are available at 
https://barronh.github.io/pyrsig. Only a few very basic examples
are shown below.


## Example

## Get DataFrame for AQS ozone

```python
import pyrsig

rsigapi = pyrsig.RsigApi(bdate='2022-03-01')
print([k for k in rsigapi.keys() if 'ozone' in k])
# ['airnow.ozone', 'airnow2.ozone', 'aqs.ozone', 'aqs.ozone_8hour_average', 'aqs.ozone_daily_8hour_maximum', 'pandora.ozone']
df = rsigapi.to_dataframe('aqs.ozone')
print(df.shape, *df.columns)
# (26760, 6) Timestamp(UTC) LONGITUDE(deg) LATITUDE(deg) STATION(-) ozone(ppb) SITE_NAME
```

## Get DataFrame for PurpleAir PM25

```python
import pyrsig

rsigapi = pyrsig.RsigApi(bdate='2022-03-01')
rsigapi.purpleair_kw['api_key'] = '<put your api key here>'
df = rsigapi.to_dataframe('purpleair.pm25_corrected')
```

## Get DataFrame for TropOMI NO2

```python
import pyrsig

rsigapi = pyrsig.RsigApi(bdate='2022-03-01')
df = rsigapi.to_dataframe('tropomi.offl.no2.nitrogendioxide_tropospheric_column')
print(df.shape, *df.columns)
# (303444, 4) Timestamp(UTC) LONGITUDE(deg) LATITUDE(deg) nitrogendioxide_tropospheric_column(molecules/cm2)
```

## Get IOAPI formatted NetCDF TropOMI NO2

```python
import pyrsig

rsigapi = pyrsig.RsigApi(bdate='2022-03-01')
ds = rsigapi.to_ioapi('tropomi.offl.no2.nitrogendioxide_tropospheric_column')
print(ds.data_vars)
# Data variables:
#     TFLAG      (TSTEP, VAR, DATE-TIME) int32 ...
#     LONGITUDE  (TSTEP, LAY, ROW, COL) float32 ...
#     LATITUDE   (TSTEP, LAY, ROW, COL) float32 ...
#     COUNT      (TSTEP, LAY, ROW, COL) int32 ...
#     NO2        (TSTEP, LAY, ROW, COL) float32 ...
```

## Get List of Possible

```python
import pyrsig

rsigapi = pyrsig.RsigApi()
keys = rsigapi.keys()
print(len(keys), keys)
# 80 ('airnow.pm25', ... 'aqs.ozone', ... 'cmaq.equates.conus.aconc.O3', ... 'hms.smoke',
#     'metar.wind', ... 'pandora.ozone', 'purpleair.pm25_corrected', ...
#     'tropomi.offl.no2.nitrogendioxide_tropospheric_column', ...
#     'viirsnoaa.jrraod.AOD550', ...)
keys = rsigapi.keys(offline=False) # slow and likely to many options
print(len(keys))
# 3875
```