semvec/pypi-packages huggingface dataset:
kengerkit 0.2.1
Kenger Service Python SDK
Requires Python: >=3.7

# KengerKit

Kenger Service Python SDK，用于与 kenger-service 进行交互。

## 安装

```bash
pip install kengerkit
```

或从源码安装：

```bash
git clone https://github.com/xiaoyu-ai/kengerkit.git
cd kengerkit
pip install -e .
```

## 快速开始

```python
from kengerkit import KengerClient

# 初始化客户端
client = KengerClient(
    base_url="https://your-kenger-service.com",
    token="your_api_token"
)

# 获取配置
value = client.config.get("my_key")
print(value)

# 设置配置
client.config.set("new_key", "new_value", value_type="str", description="描述")

# 更新配置（通过 key）
client.config.update_by_key("new_key", value="updated_value")

# 设置或更新（存在则更新，不存在则新增）
client.config.set_or_update("some_key", "some_value")

# 删除配置
client.config.delete_by_key("new_key")
```

## 配置管理

### 获取配置

```python
# 获取配置值
value = client.config.get("my_key")

# 获取配置详情（包含 id, key, value, value_type, description 等）
detail = client.config.get_detail("my_key")
```

### 设置配置

```python
# 支持的 value_type: str, int, float, bool, json
client.config.set("key", "value", value_type="str", description="描述")

# JSON 类型
client.config.set("json_key", {"foo": "bar"}, value_type="json")
```

### 更新配置

```python
# 通过 ID 更新
client.config.update(config_id=1, value="new_value")

# 通过 key 更新
client.config.update_by_key("my_key", value="new_value")

# 设置或更新（推荐）
client.config.set_or_update("key", "value")
```

### 删除配置

```python
# 通过 ID 删除
client.config.delete(config_id=1)

# 通过 key 删除
client.config.delete_by_key("my_key")
```

### 列表和搜索

```python
# 分页获取列表
result = client.config.list(page=1, page_size=10)
# result = {"items": [...], "total": 100, "page": 1, "page_size": 10}

# 模糊搜索
result = client.config.search("keyword", page=1, page_size=10)
```

## 邮件发送

```python
# 初始化时设置 email_token
client = KengerClient(
    base_url="https://your-service.com",
    token="api_token",
    email_token="email_token"
)

# 发送邮件
client.email.send(
    to="recipient@example.com",
    title="邮件主题",
    content="<h1>HTML 内容</h1>",
    is_html=True
)

# 或在发送时传入 token
client.email.send(
    to="recipient@example.com",
    title="邮件主题",
    content="纯文本内容",
    is_html=False,
    token="email_token"
)

# 带附件
client.email.send(
    to="recipient@example.com",
    title="邮件主题",
    content="请查收附件",
    attachments=[{"path": "/path/to/file.pdf", "name": "文件.pdf"}]
)
```

## 异常处理

```python
from kengerkit import (
    KengerClient,
    KengerKitError,
    AuthenticationError,
    ValidationError,
    NotFoundError,
    ServerError,
)

client = KengerClient(base_url, token)

try:
    client.config.set("key", "value")
except AuthenticationError:
    print("认证失败，请检查 token")
except ValidationError as e:
    print(f"参数错误: {e.message}")
except ServerError as e:
    print(f"服务端错误: {e.message}")
except KengerKitError as e:
    print(f"其他错误: {e.message}")
```

## License

MIT
klab-pytest-toolkit-prompt 1.0.0
Pytest prompt fixtures for the Klab Pytest Toolkit
Requires Python: <4,>=3.11

# Klab Pytest Toolkit - Prompt

Custom pytest fixtures for interactive user prompts during test execution using tkinter UI dialogs.
The goal is to allow testers to interact with the test process, providing confirmations or displaying important information.

At the moment the package provides the following fixtures:

- `ui_prompt_factory`: Factory for creating multiple prompt instance. With the factory you can create the prompt fixture.

## Installation

```bash
pip install klab-pytest-toolkit-prompt
```

## Usage

### UI Prompt

**Create the fixture**

The factory class `PromptFactory` can be used to create multiple prompt instances.
This is already provided as a pytest fixture `prompt_factory`.

```python

@pytest.fixture
def ui_prompt(prompt_factory) -> PromptInterface:
    """Fixture to provide a UI prompt interface for user interaction during tests."""
    return prompt_factory.create_prompt(prompt_type=PromptFactory.PromptType.UI_PROMPT)
```

**Functions**

The following functions are available on the `PromptInterface` instance:

**Show Information Dialog**

```python
def test_with_info(ui_prompt):
    """Display information to the user."""
    ui_prompt.show_info("Test is about to perform a critical operation")
    
    # Continue with test
    perform_operation()
```

**Get User Confirmation**

```python
def test_with_confirmation(ui_prompt):
    """Get user confirmation before proceeding."""
    if ui_prompt.confirm_action("Continue with destructive test?"):
        # User clicked Yes
        perform_destructive_operation()
    else:
        # User clicked No
        pytest.skip("User cancelled the test")
```

**With Timeout (Auto-close)**

```python
def test_with_timeout(ui_prompt):
    """Show dialog that auto-closes after timeout."""
    # Dialog closes automatically after 5 seconds
    ui_prompt.show_info("This will auto-close in 5 seconds", timeout=5)
    
    # Confirmation dialog with timeout (returns False if timeout expires)
    result = ui_prompt.confirm_action(
        "Click within 10 seconds",
        timeout=10
    )
```

## Examples

See the `tests` directory for example test cases demonstrating the usage of the prompt fixtures.

## License

MIT
klab-pytest-toolkit-decorators 1.0.0
Pytest decorators for the Klab Pytest Toolkit
Requires Python: <4,>=3.11

# Klab Pytest Toolkit - Decorators

Custom pytest decorators for marking and annotating tests.

At the moment the package provides the following decorator:

- `@requirement(id: str)`: Marks a test with a requirement ID for traceability. The ID is added to the junit xml output.

## Installation

```bash
pip install klab_pytest_toolkit_decorators
```

## Usage

### Requirement Decorator

Mark tests with requirement IDs for traceability:

```python
from klab_pytest_toolkit_decorators import requirement

@requirement("REQ-001")
def test_something():
    assert True

@requirement("REQ-002")
async def test_async_something():
    assert True
```

The decorator works with both synchronous and asynchronous test functions. The requirement IDs are added to the junit xml output.

## License

MIT
humblenode-agent 0.1.0
HumbleNode agent (FastAPI + Typer)
Requires Python: >=3.12

## humblenode-agent

PyPI 배포명: **`humblenode-agent`**  
파이썬 import 패키지명: **`agent`**  
설치 후 실행 커맨드: **`agent`**

### 설치

```bash
pip install humblenode-agent
```

### 실행

```bash
agent --host 0.0.0.0 --port 8250
```

### 개발(로컬)

```bash
pip install -e .
agent --reload
```

### 배포(PyPI) - uv로 빌드/업로드

사전 준비:

- PyPI 계정 생성 및 **API Token** 발급
- `uv` 설치 (둘 중 하나)

```bash
pip install -U uv
```

또는

```bash
pipx install uv
```

빌드(산출물: `dist/`에 wheel/sdist 생성):

```bash
uv build
```

TestPyPI에 먼저 업로드(권장):

```bash
uv publish --repository testpypi
```

실제 PyPI 업로드:

```bash
uv publish
```

인증(권장 방식):

- Username: `__token__`
- Password: PyPI에서 발급받은 토큰(예: `pypi-...`)

팁(자동화/CI):

- `uv publish` 실행 시 입력이 필요 없게 하려면, 일반적으로 `~/.pypirc` 또는 `TWINE_USERNAME`/`TWINE_PASSWORD` 환경변수를 사용합니다.
pixiv-down 0.1.8
Pixiv illusts downloader.
Requires Python: >=3.11

# Pixiv Downloader

A command line pixiv illust downloader.


## Install

```shell
pip install pixiv-down
```


## Usage

```shell
usage: pixd [-h]
            [-b MIN_BOOKMARKS] [-c MAX_PAGE_COUNT] [-n ILLUST_NUM]
            [-k] [-p PATH] [-r RESOLUTION]
            [-s START] [-e END]
            [-l {debug,info,warn,error}]
            {iid,aid,tag,rcmd,related,ranking} ...
```


### Download illusts in diffrent ways

- `iid`

    download illusts by illust id list.

    e.g., `pixd iid 92578547 93005923 87052390 91681788`

- `aid`

    download illusts by artist id list.

    e.g., `pixd aid 671593 8062849 10475690 14496985`

- `tag`

    download illusts by tag name.

    e.g., `pixd tag 甘雨 刻晴 八重樱`

- `rcmd`

    download illusts from recomments.

    e.g., `pixd rcmd`

- `related`

    download related illusts of the specified illust id.

    e.g., `pixd related 70937229 87749466`

- `ranking`

    download daily ranking of the specified day.

    e.g., `pixd ranking 2021-01-01 2021-02-01,2021-03-31`

### Optional Arguments

- `-h, --help`

    show this help message and exit

- `-b MIN_BOOKMARKS`

    the min bookmarks of illust (default: 3000)

- `-c MAX_PAGE_COUNT`

    the max page count of illust (default: 10)

- `-q MIN_QUALITY`

    the min quality of illust, the quality eauals the num of bookmarks
    per 100 views (default: None)

- `-l {1,2,3}`

    the max sex level of illust (default: 2)

- `-n ILLUST_NUM`

    total number of illusts to download (default: 300)

- `-p PATH`

    the storage path of illusts (default: ./)

- `-r RESOLUTION`

    the resolution of illusts: `s` / `m` / `l` / `o`,

    i.e., square / middle / large / origin, can set multiple

- `-k`

    keep the json result to files

- `--show SHOW_JSON`

    print the json result on stdout

- `-s START`

    the start date of illust for tag searching (default: `2016-01-01`)

- `-e END`

    the end date of illust for tag searching (default: today)

- `--only_new`

    only download the newest illusts from ranking

- `--without_illust`

    don't download illusts when download ranking

- `-l {debug,info,warn,error}`

    the log level (default: `warn`)
Shomoy 0.1.0
A time capsule for your terminal
Requires Python: >=3.13

<div align="center">

# Shomoy <br>

### A time capsule for your terminal.
</div>

## Installation
Installing the program is very easy. Simply clone the repository or download main.py.

There you have it!

## Building
This program is dependant on [Rich](https://github.com/Textualize/rich?tab=readme-ov-file), [Cryptography](https://github.com/pyca/cryptography), [TinyDB](https://github.com/msiemens/tinydb). To build the program, you need to use Pyinstaller or a compiler of your choice:
```
pip install pyinstaller
```

To compile using Pyinstaller, run this:

```bash
$ pyinstaller --onefile main.py
```

Finally, Your build will be located in: `Shomoy\dist\`

<br>

## Running

Once the build is complete, you can simply open the file or run it through your terminal in the build directory and type:

```bash
$ .\main.exe (Change the main.exe to your build file)
```
Or if you want to use the main.py instead:
```
$ python main.py
```


<br>

## Contribution
Contributing to Tale is simple. You have to fork the repository and clone it. Make your changes. After you are done, just push the changes to your fork and make a pull request. 

I hope that you will be making some amazing changes!

<br>

## License

Licensed under the [MIT License](./LICENSE).