Metadata-Version: 2.4
Name: pytilpack
Version: 1.44.1
Summary: Python Utility Pack
Author-email: "aki." <mark@aur.ll.to>
License: MIT
License-File: LICENSE
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: <4.0,>=3.12
Requires-Dist: httpx>=0.28.1
Requires-Dist: typing-extensions>=4.0
Requires-Dist: werkzeug>=3.1.7
Provides-Extra: all
Requires-Dist: anthropic>=0.75.0; extra == 'all'
Requires-Dist: azure-identity>=1.23.0; extra == 'all'
Requires-Dist: babel>=2.18.0; extra == 'all'
Requires-Dist: beautifulsoup4>=4.12; extra == 'all'
Requires-Dist: bleach>=6.2; extra == 'all'
Requires-Dist: cryptography>=46.0.6; extra == 'all'
Requires-Dist: fastapi>=0.111; extra == 'all'
Requires-Dist: flask-login>=0.6; extra == 'all'
Requires-Dist: flask>=3.0; extra == 'all'
Requires-Dist: html5lib; extra == 'all'
Requires-Dist: hypercorn>=0.18.0; extra == 'all'
Requires-Dist: markdown>=3.6; extra == 'all'
Requires-Dist: mcp>=1.0.0; extra == 'all'
Requires-Dist: msal>=1.32.3; extra == 'all'
Requires-Dist: openai>=1.99.6; extra == 'all'
Requires-Dist: pillow; extra == 'all'
Requires-Dist: pycryptodome; extra == 'all'
Requires-Dist: pydantic>=2.12.5; extra == 'all'
Requires-Dist: pytest; extra == 'all'
Requires-Dist: pytest-asyncio; extra == 'all'
Requires-Dist: python-dotenv>=1.2.2; extra == 'all'
Requires-Dist: pyyaml>=6.0; extra == 'all'
Requires-Dist: quart-auth>=0.11.0; extra == 'all'
Requires-Dist: quart>=0.20.0; extra == 'all'
Requires-Dist: sqlalchemy>=2.0; extra == 'all'
Requires-Dist: tabulate[widechars]>=0.9; extra == 'all'
Requires-Dist: tiktoken>=0.6; extra == 'all'
Requires-Dist: tinycss2>=1.4; extra == 'all'
Requires-Dist: tqdm>=4.0; extra == 'all'
Requires-Dist: uvicorn>=0.34.3; extra == 'all'
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.75.0; extra == 'anthropic'
Provides-Extra: babel
Requires-Dist: babel>=2.18.0; extra == 'babel'
Provides-Extra: bleach
Requires-Dist: bleach>=6.2; extra == 'bleach'
Provides-Extra: environ
Requires-Dist: python-dotenv>=1.2.2; extra == 'environ'
Provides-Extra: fastapi
Requires-Dist: fastapi>=0.111; extra == 'fastapi'
Requires-Dist: html5lib; extra == 'fastapi'
Provides-Extra: flask
Requires-Dist: flask-login>=0.6; extra == 'flask'
Requires-Dist: flask>=3.0; extra == 'flask'
Requires-Dist: html5lib; extra == 'flask'
Requires-Dist: pytest; extra == 'flask'
Provides-Extra: htmlrag
Requires-Dist: beautifulsoup4>=4.12; extra == 'htmlrag'
Provides-Extra: markdown
Requires-Dist: bleach; extra == 'markdown'
Requires-Dist: markdown>=3.6; extra == 'markdown'
Requires-Dist: tinycss2; extra == 'markdown'
Provides-Extra: mcp
Requires-Dist: beautifulsoup4>=4.12; extra == 'mcp'
Requires-Dist: mcp>=1.0.0; extra == 'mcp'
Provides-Extra: msal
Requires-Dist: azure-identity>=1.23.0; extra == 'msal'
Requires-Dist: cryptography>=46.0.6; extra == 'msal'
Requires-Dist: msal>=1.32.3; extra == 'msal'
Provides-Extra: openai
Requires-Dist: openai>=1.99.6; extra == 'openai'
Provides-Extra: pycryptodome
Requires-Dist: pycryptodome; extra == 'pycryptodome'
Provides-Extra: pydantic
Requires-Dist: pydantic>=2.12.5; extra == 'pydantic'
Provides-Extra: pytest
Requires-Dist: pytest; extra == 'pytest'
Requires-Dist: pytest-asyncio; extra == 'pytest'
Provides-Extra: pyyaml
Requires-Dist: pyyaml>=6.0; extra == 'pyyaml'
Provides-Extra: quart
Requires-Dist: html5lib; extra == 'quart'
Requires-Dist: hypercorn>=0.18.0; extra == 'quart'
Requires-Dist: pytest; extra == 'quart'
Requires-Dist: quart-auth>=0.11.0; extra == 'quart'
Requires-Dist: quart>=0.20.0; extra == 'quart'
Requires-Dist: uvicorn>=0.34.3; extra == 'quart'
Provides-Extra: sqlalchemy
Requires-Dist: sqlalchemy>=2.0; extra == 'sqlalchemy'
Requires-Dist: tabulate[widechars]>=0.9; extra == 'sqlalchemy'
Provides-Extra: tiktoken
Requires-Dist: openai>=1.99.6; extra == 'tiktoken'
Requires-Dist: pillow; extra == 'tiktoken'
Requires-Dist: tiktoken>=0.6; extra == 'tiktoken'
Provides-Extra: tqdm
Requires-Dist: tqdm>=4.0; extra == 'tqdm'
Provides-Extra: web
Requires-Dist: html5lib>=1.1; extra == 'web'
Description-Content-Type: text/markdown

# pytilpack

[![CI](https://github.com/ak110/pytilpack/actions/workflows/ci.yaml/badge.svg)](https://github.com/ak110/pytilpack/actions/workflows/ci.yaml)
[![PyPI version](https://badge.fury.io/py/pytilpack.svg)](https://badge.fury.io/py/pytilpack)

Pythonのユーティリティ集。

- [ドキュメント](https://ak110.github.io/pytilpack/)
- [llms.txt](https://ak110.github.io/pytilpack/llms.txt)

## インストール

ベースパッケージ（stdlib系ユーティリティ + httpx/werkzeug）:

```bash
pip install pytilpack
```

各モジュールが必要とするライブラリは extras で追加インストールする:

```bash
pip install pytilpack[all]       # 全モジュール
pip install pytilpack[fastapi]   # pytilpack.fastapi 用
pip install pytilpack[flask]     # pytilpack.flask 用
# ...
```

`uvx` で CLI を使う場合、サブコマンドが要求する extras を `--from` で明示する:

```bash
uvx --from 'pytilpack[mcp]' pytilpack mcp
uvx --from 'pytilpack[sqlalchemy]' pytilpack wait-for-db-connection "$SQLALCHEMY_DATABASE_URI"
```

### extras 一覧

| Extra | 対象モジュール | 依存パッケージ |
| ----- | -------------- | -------------- |
| `all` | 全モジュール | (全依存) |
| `anthropic` | `.anthropic` | anthropic |
| `babel` | `.babel` `.i18n` | babel |
| `environ` | `.environ` | python-dotenv |
| `fastapi` | `.fastapi` | fastapi等 |
| `flask` | `.flask` `.flask_login` | flask等 |
| `htmlrag` | `.htmlrag` | beautifulsoup4 |
| `markdown` | `.markdown` | bleach等 |
| `mcp` | CLI: `pytilpack mcp` | mcp等 |
| `msal` | `.msal` | msal等 |
| `openai` | `.openai` | openai |
| `pycryptodome` | `.pycrypto` | pycryptodome |
| `pydantic` | `.pydantic` | pydantic |
| `pytest` | `.pytest` | pytest等 |
| `pyyaml` | `.yaml` | pyyaml |
| `quart` | `.quart` `.quart_auth` | quart等 |
| `sqlalchemy` | `.sqlalchemy` | sqlalchemy等 |
| `tiktoken` | `.tiktoken` | tiktoken等 |
| `tqdm` | `.tqdm` | tqdm |
| `web` | `.web` (check_html) | html5lib |

extras不要のモジュール（ベースパッケージに含まれる）:
`.cache` `.crypto` `.data_url` `.functools`
`.healthcheck` `.http` `.httpx` `.io`
`.json` `.jsonc` `.paginator` `.random`
`.ratelimit` `.secrets` `.sse` `.validator` 等

## 主な使い方

各モジュールを個別に import して利用する。

```python
import pytilpack.xxx
```

`xxx` には対象ライブラリ名（`openai` や `pathlib` など）が入る。

モジュール一覧やAPIリファレンスは[ドキュメント](https://ak110.github.io/pytilpack/)を参照。
一部は CLI もある。詳細は[CLIコマンド](https://ak110.github.io/pytilpack/cli/)を参照。
