semvec/pypi-packages huggingface dataset:
featuer-schema 0.1.1
A lightweight package to extract, document, and validate feature schemas from pandas DataFrames for ML workflows.
Requires Python: >=3.7

# feature_schema

`feature_schema` is a lightweight Python package that automatically extracts and documents **feature metadata** from a pandas DataFrame.  
It’s designed for **machine learning workflows** where you need to understand, validate, or dynamically generate user inputs for model features.  

---

## Features

- Extract feature name
- Auto-detect feature types (`int`, `float`, `string`, `bool`, `datetime`)  
- Numeric metadata: min, max, range  
- Categorical metadata: unique values & counts  
- Nullability check: detect if features contain missing values  
- Human-readable docs (`__str__`) for quick schema inspection  
- Exportable schema to dict / DataFrame for further use  

---

## Installation

```bash
pip install feature_schema
```

## Usage

### 1. Create the Schema for a DataFrame

```python
import pandas as pd
from feature_schema import FeatureSchema

# Sample dataset
df = pd.DataFrame({
    "age": [25, 30, 40, 22],
    "salary": [50000.0, 60000.5, 80000.2, 45000.0],
    "city": ["NY", "SF", "LA", "NY"]
})

# Create Feature schema object
fs = FeatureSchema(df)

# Print schema (human readable)
print(fs.to_dict())

```
### Output:
```json
[
    {'column_name': 'age', 'dtype': 'int64', 'type': 'int', 'nullable': np.False_, 'min': 22.0, 'max': 40.0, 'unique_values': 4}, {'column_name': 'salary', 'dtype': 'float64', 'type': 'float', 'nullable': np.False_, 'min': 45000.0, 'max': 80000.2, 'unique_values': 4}, {'column_name': 'city', 'dtype': 'object', 'type': 'string', 'nullable': np.False_, 'unique_values': 3, 'unique_list': ['NY', 'SF', 'LA']}
]
```

### 2. Export Schema as Dictionary / DataFrame

```python
# As dictionary
schema_dict = fs.to_dict()
print(schema_dict)

# As DataFrame
schema_df = fs.to_dataframe()
print(schema_df)
```

## Why Use feature_schema?
- No more hardcoding feature names, types, and ranges
- Auto-generate Streamlit forms or FastAPI validation schemas
- Save schema along with ML models for reproducibility
- Helps teams document datasets automatically
- Helps to validate input
iaqualink 0.6.0
Asynchronous library for Jandy iAqualink
Requires Python: >=3.12
Keywords: iaqualink

# Asynchronous library for Jandy iAqualink

Usage (using apython):

```python
>>> async with AqualinkClient('xxx@example.com', 'password') as c:
...     s = await c.get_systems()
...     print(s)
...     d = await list(s.values())[0].get_devices()
...     print(d)
...
{'XXX': AqualinkPoolSystem(name='Pool' serial='XXX' data={'id': 1234, 'serial_number': 'XXX', 'created_at': '2017-09-23T01:00:08.000Z', 'updated_at': '2017-09-23T01:00:08.000Z', 'name': 'Pool', 'device_type': 'iaqua', 'owner_id': None, 'updating': False, 'firmware_version': None, 'target_firmware_version': None, 'update_firmware_start_at': None, 'last_activity_at': None})}
{'spa_temp': AqualinkSensor(name='spa_temp' data={'name': 'spa_temp', 'state': '100'}), 'pool_temp': AqualinkSensor(name='pool_temp' data={'name': 'pool_temp', 'state': ''}), 'air_temp': AqualinkSensor(name='air_temp' data={'name': 'air_temp', 'state': '76'}), 'spa_set_point': AqualinkThermostat(name='spa_set_point' data={'name': 'spa_set_point', 'state': '102'}), 'pool_set_point': AqualinkThermostat(name='pool_set_point' data={'name': 'pool_set_point', 'state': '84'}), 'cover_pool': AqualinkSensor(name='cover_pool' data={'name': 'cover_pool', 'state': ''}), 'freeze_protection': AqualinkBinarySensor(name='freeze_protection' data={'name': 'freeze_protection', 'state': '0'}), 'spa_pump': AqualinkPump(name='spa_pump' data={'name': 'spa_pump', 'state': '1'}), 'pool_pump': AqualinkPump(name='pool_pump' data={'name': 'pool_pump', 'state': '1'}), 'spa_heater': AqualinkHeater(name='spa_heater' data={'name': 'spa_heater', 'state': '0'}), 'pool_heater': AqualinkHeater(name='pool_heater' data={'name': 'pool_heater', 'state': '0'}), 'solar_heater': AqualinkHeater(name='solar_heater' data={'name': 'solar_heater', 'state': '1'}), 'spa_salinity': AqualinkSensor(name='spa_salinity' data={'name': 'spa_salinity', 'state': ''}), 'pool_salinity': AqualinkSensor(name='pool_salinity' data={'name': 'pool_salinity', 'state': ''}), 'orp': AqualinkSensor(name='orp' data={'name': 'orp', 'state': ''}), 'ph': AqualinkSensor(name='ph' data={'name': 'ph', 'state': ''}), 'aux_1': AqualinkAuxToggle(name='aux_1' data={'aux': '1', 'name': 'aux_1', 'state': '0', 'label': 'CLEANER', 'icon': 'aux_1_0.png', 'type': '0', 'subtype': '0'}), 'aux_2': AqualinkLightToggle(name='aux_2' data={'aux': '2', 'name': 'aux_2', 'state': '0', 'label': 'SPA LIGHT', 'icon': 'aux_1_0.png', 'type': '0', 'subtype': '0'}), 'aux_3': AqualinkLightToggle(name='aux_3' data={'aux': '3', 'name': 'aux_3', 'state': '0', 'label': 'POOL LIGHT', 'icon': 'aux_1_0.png', 'type': '0', 'subtype': '0'}), 'aux_4': AqualinkAuxToggle(name='aux_4' data={'aux': '4', 'name': 'aux_4', 'state': '0', 'label': 'AIR BLOWER', 'icon': 'aux_1_0.png', 'type': '0', 'subtype': '0'}), 'aux_5': AqualinkAuxToggle(name='aux_5' data={'aux': '5', 'name': 'aux_5', 'state': '0', 'label': 'SHEER DSCNT', 'icon': 'aux_1_0.png', 'type': '0', 'subtype': '0'})}
```
asyncioList 1.0
An asynchronous list implementation with concurrency control
Requires Python: >=3.7
Keywords: asyncio, list, concurrency

# 重生之asyncioList：异步列表的救赎

前世的我，在异步编程的泥潭里反复挣扎——多协程操作列表时的race condition（竞态条件）像幽灵一样挥之不去，手动加锁时的繁琐代码让逻辑支离破碎，想在异步迭代里遍历列表却总被中途修改的元素搞得晕头转向……直到某次线上事故因为列表并发操作崩溃，我才痛悟：异步环境下的列表操作，真的需要一个简单却靠谱的解决方案。

重生归来，带着对异步编程痛点的深刻理解，我写下了`asyncioList`——一个简单到几乎不用学，却能解决异步列表操作所有麻烦的工具。


## 它为什么值得你用？

`asyncioList`没什么惊天动地的黑科技，却把异步列表该有的样子做到了极致：

- **简单得像在用普通列表**：`append`、`pop`、`get`、`index`……所有方法都和原生列表一一对应，只是加了`await`关键字，上手零成本。
- **天生抗并发**：内置`asyncio.Lock`，不管多少协程同时操作，都能保证数据安全，不用再自己手动加锁解锁。
- **异步场景全适配**：支持异步迭代（`async for`）、等待列表变化（`wait_for_change`）、上下文管理器批量操作，完美融入你的异步代码流。
- **轻得像一阵风**：只依赖Python标准库，安装即用，不会给你的项目增加任何额外负担。


## 快速上手：重生后的第一次操作

### 安装

```bash
# 从源码安装
pip install git+https://github.com/303-SeeOther/asyncioList.git
# 或者从pypi安装
pip install asyncioList
```

### 基础用法（~~1分钟就能学会~~你已经会了）

```python
import asyncio
from asyncioList.AsyncioList import AsyncioList

async def main():
    # 创建列表（和普通列表一样简单）
    my_list = AsyncioList([1, 2, 3])
    
    # 加个元素（加个await就好）
    await my_list.append(4)
    print(await my_list.get(3))  # 输出：4
    
    # 删个元素
    await my_list.pop(0)
    print(await my_list.length())  # 输出：3
    
    # 查个索引
    print(await my_list.index(3))  # 输出：1

asyncio.run(main())
```


## 进阶玩法：那些前世没享过的便利

### 异步迭代，遍历不慌

```python
async def iterate_example():
    fruits = AsyncioList(['apple', 'banana', 'cherry'])
    async for fruit in fruits:  # 直接用async for遍历
        print(fruit)
```

### 等待列表变化，实时响应

```python
async def watch_example():
    my_list = AsyncioList()
    
    # 一个协程修改列表
    async def add_items():
        await asyncio.sleep(1)
        await my_list.append("重生了！")
    
    # 另一个协程等待变化
    async def watcher():
        await my_list.wait_for_change()  # 等列表变了再继续
        print(await my_list.get(0))  # 输出：重生了！
    
    await asyncio.gather(add_items(), watcher())
```

### 上下文管理器，批量操作更高效

```python
async def context_example():
    async with AsyncioList([1, 2, 3]) as ctx_list:
        # 批量操作直接改内部列表，省掉多次加锁开销
        ctx_list._items.extend([4, 5, 6])
        ctx_list._items.reverse()
    print(await ctx_list.slice(0, 6))  # 输出：[6, 5, 4, 3, 2, 1]
```


## 结尾(凑字数用的)

`asyncioList`真的很简单，只是个小工具，但是在异步编程中操作列表时，总会遇到一些问题，比如race condition（竞态条件）、死锁等。这些问题都可以通过`asyncioList`来避免，避免了手动加锁解锁的繁琐代码，同时也避免了race condition的问题。
发到pypi上~~只是方便自己拉~~，是为了帮助大家节省一点时间，少掉几根头发。
如果你的异步代码里也需要操作列表，欢迎使用`asyncioList`。

↑↑以上内容均由豆包生成
livekit-plugins-ten 1.0.0
Agent Framework Plugin for TEN
Requires Python: >=3.9.0
Keywords: audio, livekit, realtime, video, webrtc

# Silero VAD plugin for LiveKit Agents

Support for VAD-based turn detection.

See [https://docs.livekit.io/agents/build/turns/vad/](https://docs.livekit.io/agents/build/turns/vad/) for more information.

## Installation

```bash
pip install livekit-plugins-ten
```

This plugin contains model files that would need to be downloaded prior to use.
logger-console 0.1.2
A logger implementation for Python
Requires Python: >=3.8

# logger-console

A lightweight and flexible logging utility for Python projects.  
`logger-console` provides a simple way to configure and use logging across applications, with support for console and file handlers, log rotation, and custom formatting.

---

## 🚀 Features

- Easy-to-use logger with minimal configuration
- Console and file logging out of the box
- Log rotation support
- Customizable log levels and formats
- Designed for reuse in any Python project

---

## 📦 Installation

```bash
pip install logger-console