semvec/pypi-packages huggingface dataset:
capthalline 0.2.0
ultrafast captcha
Requires Python: >=3.11.0
Keywords: captcha, rust, fast

# Capthalline 

```python
from pathlib import Path

from capthalline import CaptchaGenerator

emojis = Path("./emojis")
generator = CaptchaGenerator(emojis, "png")
res = generator.generate(5, 10)

print(f"Correct Emoji: {res.correct_emoji}")
print(f"Emojis on Image: {res.image_emojis}")
print(f"Emoji Options: {res.keyboard_emojis}")

Path("captcha.png").write_bytes(res.image)
```
vermillio-music-sdk 0.0.6
A SDK for interacting with Vermillio's Music API.
Requires Python: >=3.9

# Vermillio Music SDK

Python SDK for interacting with Vermillio's Music API. This package currently provides the AI Detection pipeline client and models.

## Install

```bash
pip install vermillio-sdk[music]
```

## Configuration

The client loads credentials from environment variables by default:
- `VERMILLIO_SDK_CLIENT_ID`
- `VERMILLIO_SDK_CLIENT_SECRET`

For alternative methods, see `vermillio.sdk.core.config`.

## Quickstart

```python
from vermillio.sdk.music.ai_detect import (
    VermillioMusicAIDetect,
    AIDetectExternalSource,
)

client = VermillioMusicAIDetect()

sources = [
    AIDetectExternalSource(path="https://example.com/track.wav"),
]

# Run and wait for results
results = client.run_results(sources)

for result in results or []:
    for segment in result.detections:
        print(segment.start, segment.end, segment.label, segment.confidence)
```
vermillio-guardrails-sdk 0.0.6
A SDK for interacting with Vermillio Guardrails API
Requires Python: >=3.9

# Vermillio Guardrails SDK

Python client for the Vermillio Guardrails API. It provides a pipeline client plus typed models for sources, results, and IP profile matches.

## Install

```bash
pip install vermillio-sdk[guardrails]
```

## Configuration

The client loads credentials from environment variables by default:
- `VERMILLIO_SDK_CLIENT_ID`
- `VERMILLIO_SDK_CLIENT_SECRET`

For alternative methods, see `vermillio.sdk.core.config`.

## Quickstart

```python
from vermillio.sdk.guardrails import VermillioGuardrails, GuardrailsExternalSource

client = VermillioGuardrails()

sources = [
    GuardrailsExternalSource(
        prompt="Write a song about a flying hero from Krypton.",
    )
]

results = client.run_results(sources)
if results:
    first = results[0]
    print(first.summary)
```

The client reads configuration from `VermillioConfig` if provided, otherwise it falls back to environment-based configuration defined by `vermillio-core-sdk`.
vermillio-sdk 0.0.6
SDKs for interacting with Vermillio's various APIs.
Requires Python: >=3.9

# Vermillio SDK

Entrypoint for Vermillio's various SDK's for interacting with Vermillio API's.

## Guardrails SDK

### Installing

```bash
pip install vermillio-sdk[guardrails]
uv add vermillio-sdk[guardrails]
```


### Getting Started

```python
from vermillio.sdk.guardrails import VermillioGuardrails, GuardrailsExternalSource

client = VermillioGuardrails()

sources = [
    GuardrailsExternalSource(
        prompt="Write a song about a flying hero from Krypton.",
    )
]

results = client.run_results(sources)
if results:
    first = results[0]
    print(first.summary)
```

## Music SDK

### Installing

```bash
pip install vermillio-sdk[music]
uv add vermillio-sdk[music]
```

### Getting Started

```python
from vermillio.sdk.music import VermillioMusicAIDetect, AIDetectExternalSource

ai_detect = VermillioMusicAIDetect()
result = next(iter(ai_detect.run_results([
    AIDetectExternalSource(path="https://example.com/track.wav"),
] or [])), None)

if result and result.status == 'Succeeded':
    for detection in result.results.detections:
        confidence = f"({detection.confidence:0.2f})" if detection.confidence else "--"
        print(f"[{detection.query_segment.start:0.2f}-{detection.query_segment.end:0.2f}] {segment.label} {confidence}")
```
vermillio-core-sdk 0.0.6
Vermillio Core SDK components.
Requires Python: >=3.9

# Vermillio Core SDK

Core python components (clients and models) for interacting with Vermillio API's. Other packages are built on top of this.

## Install

```bash
pip install vermillio-sdk[core]
```

## Configuration

The client loads credentials from environment variables by default:
- `VERMILLIO_SDK_CLIENT_ID`
- `VERMILLIO_SDK_CLIENT_SECRET`

For alternative methods, see `vermillio.sdk.core.config`.
ciscoaplookup 0.13.6
The Cisco Wireless LAN Compliance Lookup library

# Introduction 
Tiny python library to determine actual available Cisco AP models, and their full name, specific to the regulatory 
domain of the country you provide.
## How it works..
This module reads a spreadsheet from cisco.com, which is what is contains the data being used on:
https://www.cisco.com/c/dam/assets/prod/wireless/wireless-compliance-tool/index.html

This page is basically javascript, reading data from the spreadsheet, and then offering it in an interactive web form.
This is all nice and fine, but if you need software to pick the APs to order for Uzbekistan or some place, this library 
allows you to do just that, if you know the base model and country.

### full coverage...
So Cisco's list doesn't actually cover all countries, so to find the regulatory domain for countries
not in Cisco's tool, we also use Junipers list to find the regulatory domains for undocumented countries.
This is semi-valid, since the domains are vendor-agnostic - only cisco does not have any models for -W or World, but 
this way it's at least indicated that a country is not matched by Cisco.

Junipers list is here: 

https://www.juniper.net/documentation/en_US/release-independent/junos/topics/reference/specifications/access-point-ax411-country-channel-support.html


# Usage
ENV or .env file controls the following:
* WLCL_CISCO_XLS_URL(optional): The url from which to download the Cisco spreadsheet from
  * Allows local copy if airgapped, or url changes etc?
* WLCL_SQLITE_URI(optional): override default database location: wlcl.db next to the package.
* WLCL_REFRESH_DAYS(optional): how often to check the url for updates
  * hash of parsed xls is stored, so re-parsing is only if changes are made.

```
>>> from ciscoaplookup import CiscoAPLookup
>>> print(CiscoAPLookup.models_for("AIR-CAP1532E", "UA"))  # Ukraine
[AIR-CAP1532E-E-K9]
# now lets try with a model not supported for Ukraine..
>>> print(CiscoAPLookup.models_for("AIR-CAP1552H", "UA"))  # Ukraine
ValueError: Found AIR-CAP1552H for UA - but no active regulatory domains?
>>> print(CiscoAPLookup.models())
["AIR-AP1800I", "AIR-CAP1532I", "AIR-AP1852", "AIR-BLE-USB", "AIR-AP1562D", "AIR-AP3802E", "AIR-OEAP1810", 
"AIR-AP1815W", "AIR-CAP702W", "AIR-AP2802I", "AIR-AP2602", "AIR-CAP1552S", "AIR-AP1572EC", "AIR-AP3602", "AIR-AP1832", 
"AIR-AP1815T", "AIR-AP1572IC", "AIR-AP1815I", "AIR-CAP702I", "AIR-AP702I", "AIR-RM3010L", "AIR-SAP702I", "AIR-CAP2702", 
"C9115AXI", "AIR-AP1542D", "AIR-AP1602", "AIR-CAP3702", "AIR-CAP1552H", "AIR-AP3802P", "AIR-CAP1532E", "AIR-AP3702", 
"AIR-AP1542I", "AIR-AP1562I", "AIR-AP1562E", "AIR-AP1810W", "AIR-AP702W", "C9117AXI", "AIR-AP2702", "AIR-AP3802I", 
"AIR-CAP1552WU", "AIR-AP4800", "AIR-AP1815M", "AIR-AP1532", "IW3702-2E-UXK9", "IW3702-4E-X-K9", "AIR-CAP3702P", 
"IW3702-4E-UXK9", "AIR-AP1572EAC", "AIR-AP1800S", "IW3702-2E-X-K9", "AIR-AP2802E", "AIR-CAP1702"]

```


# Test and Build
```
python -m unittest -v test.TestCiscoAPLookup
python setup.py sdist bdist_wheel
```
    
# Contribute
Go nuts..

# Future
Figure out how to deal with ROW and Wifi6E