Skip to main content

higuma — 日本のヒグマをモチーフにしたロゴ

higuma

Pythonで書き、Rustで配信する。
A Flask-inspired Python web framework with a Rust HTTP core.

CI Dependency security checks PyPI version Supported Python versions MIT license

日本語ドキュメント · English documentation · API reference · Examples · Releases


higumaは、書き慣れたPythonのdecorator APIに、axum / Tokioを使ったRustの実行基盤を 組み合わせたWebフレームワークです。JSON API、HTML SSR、リアルタイム通信を、 Python側の必須runtime dependencyなしで構築できます。 名前は日本のヒグマに由来します。

0.8.0 — ASGI/WSGIの公開入口を追加しました。組み込みRust serverも引き続き選べます。 ASGIのHTTP・lifespan・WebSocket、WSGIのHTTPに対応します。 対応範囲と制約 / テストガイド 変更履歴 / 機能対応表

はじめる · 型付きAPI · 機能 · フロントエンド · 対応範囲 · 運用 · 貢献する

Quick start

CPython 3.10以降でインストールできます。

python -m pip install -U higuma

app.pyを作成します。

from higuma import Higuma, request

app = Higuma(__name__)


@app.get("/")
def index():
    return {"message": "Hello from higuma"}


@app.post("/echo")
def echo():
    return {"received": request.json}


if __name__ == "__main__":
    app.run()

起動後、http://127.0.0.1:8000 を開きます。

python app.py

CLIからも起動できます。

higuma run app:app --host 127.0.0.1 --port 8000
higuma routes app:app
higuma run app:app --processes 4 --max-connections 1024

GETの応答を確認したら、Getting startedで request、template、CLIの使い方へ進めます。

型付きAPI

型付きAPIでは、標準のAnnotatedとdataclassだけで入力元、制約、dependency、出力を宣言できます。

from dataclasses import dataclass
from typing import Annotated

from higuma import Body, Depends, Higuma, QueryParam

app = Higuma(__name__)


@dataclass
class Item:
    name: str
    price: float


def page_size(limit: Annotated[int, QueryParam(ge=1, le=100)] = 20):
    return limit


@app.post("/items", response_model=Item, status_code=201)
def create_item(
    item: Annotated[Item, Body()],
    limit: Annotated[int, Depends(page_size)],
):
    return item

入力はruntimeで検証・変換され、不正時は構造化された422になります。schemaは同じ宣言から OpenAPI 3.1へ反映されます。

型付きルートの実行例はexamples/modern_typed_api.py、 宣言と制約の詳細はAPIリファレンスを参照してください。

主な機能

分野 機能
HTTP typed input、dependency injection、path converter、自動HEAD/OPTIONS、async handler
Response response model、HTML、JSON、cookie、Range file、sync/async streaming、background task
Realtime SSE、text/binary/JSON WebSocket、Origin検証、認証preflight、bounded queue
SSR MiniJinja、compiled template cache、context processor
構成 Blueprint、class-based view、lifespan、WSGI/ASGI mount、startup/shutdown hook
Flask風API(0.7.0以降) scoped Blueprint hooks/errors/templates、request context、after_this_request、request teardown
API設計 OpenAPI 3.1、Swagger UI、dataclass/TypedDict/enum/UUID/date schema
Data dependency-free SQLite ORM、transaction、pagination、typed field
Auth signed cookie session、login/role/permission、OAuth 2.0 + PKCE
Security scrypt password、signed token、CSRF、CORS、rate limit、trusted host/proxy
Operations test client、CLI、multi-process supervisor、worker restart limit
Server interfaces(0.8.0以降) app.asgi_app、app.wsgi_app、同じASGI loopでのasync lifespan / handler
Frontend(0.6.0以降) SPA history fallback、複数static root、Vite manifest、cache / MIME制御

完全な一覧と注意点は機能ガイドおよび APIリファレンスを参照してください。

Validationについて: Annotated[..., Body()]等のmarkerとresponse_modelはruntime検証を 有効にします。従来のrequest_body=やreturn annotation単独はschema metadataです。

CSR/SPAとフロントエンド

以下の機能にはhiguma 0.6.0以降が必要です。0.5.0から利用する場合は更新してください。

from higuma import Higuma

app = Higuma(__name__, static_folder=None)


@app.get("/api/status")
def status():
    return {"status": "ok"}


# 先にフロントエンドをビルドし、index.htmlを含む公開用フォルダを用意します。
app.mount_spa("/app", "frontend/dist")
  • CSR — 深いURLの再読み込みに対応し、APIや見つからないassetをHTMLに置き換えません。
  • 静的配信 — mount_static()で公開先を分離し、HTMLの再検証とassetのcacheを設定できます。
  • Vite + Python HTML — ViteManifestでhash付きJS・CSSとmodulepreloadを解決します。

React / Vue等のビルド、HMR、Node SSRの実行環境はフロントエンド側で用意します。 設置パス、cookie認証、CORS、デプロイの注意は フロントエンドガイド(English)を参照してください。

ASGI/WSGIで実行する

既存ASGI基盤にはasgi_app = app.asgi_app、WSGI基盤にはwsgi_app = app.wsgi_appを公開します。 例えばASGIでは、アプリmoduleにasgi_appを定義したうえで:

python -m pip install "higuma[asgi]"
uvicorn app:asgi_app --lifespan on --ws websockets-sansio

ASGIでも同期APIとの互換処理に専用workerを使用します。WSGIには標準WebSocket/lifespanがありません。 外部server利用時の性能や接続数、proxy trust、resourceの扱いは サーバーインターフェースガイドを確認してください。 Python必須runtime依存0は維持し、ASGI server関連は任意extraです。

対応範囲

  • Python: CPython 3.10以降(CIでは3.10〜3.14を検証)
  • OS: Windows x86-64、Linux x86-64 / ARM64、macOS x86-64 / Apple Silicon
  • Linux: manylinux wheelとmusllinux x86-64 wheelを配布
  • Database: 組み込みORMはSQLiteのみ
  • Protocol: 組み込みHTTP serverとWebSocket。TLSはreverse proxyで終端

wheelがないplatformではsource distributionからRust buildが必要です。公開済みの配布物は PyPIで確認できます。

互換性と設計上の境界

higumaはFlaskのdrop-in replacementではありません。組み込みRust serverに加え、 0.8.0からapp.asgi_app/app.wsgi_appを外部サーバーへ渡せます。

既存のWSGI / ASGI applicationはHTTPのroute配下へmountできますが、mount先の WebSocket、ASGI lifespan、無期限streamingを提供するものではありません。 組み込みのbackground taskとrate limitはprocess-localです。耐久性のあるjobや 分散状態には外部基盤を使用してください。

詳細はFlask互換性 / English compatibility guideと 機能対応表にまとめています。

Examples

examples/には、最小アプリだけでなく次の実行例があります。

  • routing、async handler、型付き入力、dependency injection、class-based view
  • response、cookie、file、multipart upload、streaming、SSE、background task
  • Blueprint、lifespan、WebSocket、WSGI/ASGI mount、OpenAPI
  • SQLite ORM、session authentication、role/permission、OAuth
  • security middleware、signed token、in-process testing
  • multi-process supervisor
やりたいこと 実行例
型付きAPI・入力検証 modern_typed_api.py
session・context・flash flask_compat.py
Blueprint hooks・CSRF・session保存 flask_lifecycle.py
既存Flaskアプリを接続 flask_mount.py
組み込み・ASGI・WSGIで同じアプリを実行 server_modes.py
リアルタイムチャット websocket_chat.py
streaming・SSE streaming_sse.py
SQLiteとtransaction orm_blog.py
認証・CSRF・proxy設定 security_hardened.py
CSR / Vite連携(0.6.0以降) csr_app.py / vite_ssr.py

必要な環境変数と実行コマンドはExamplesガイドに まとめています。

本番運用

higumaは活発に開発中です。本番採用前に、対象アプリケーションで負荷試験、障害試験、 security reviewを実施してください。

  • debug=Falseのまま運用する
  • Caddy、nginx、Cloudflare等でTLSを終端しHTTPSを強制する
  • 32バイト以上の推測不能なsecretをsecret managerから読み込む
  • TrustedHostMiddlewareと、正確なCORS / WebSocket Originを設定する
  • ProxyHeadersMiddlewareでは直接接続するproxyだけを信頼する
  • upload size、保存先、拡張子をアプリケーション側でも制限する
  • SQLite fileを定期backupし、multi-process時のwrite負荷を測定する
  • network timeout、request buffering、connection limitはreverse proxyでも設定する

詳しくはデプロイガイドと Security Policyを参照してください。

開発とコントリビューション

不具合報告、回帰テスト、ドキュメント改善、互換性の検証を歓迎します。 開発環境の準備にはRust toolchainも必要です。

python -m pip install -e ".[dev,docs]"
python -m pytest
python -m ruff check python tests examples
python -m ruff format --check python tests examples
cargo fmt --all -- --check
cargo clippy --locked --all-targets --all-features -- -D warnings
cargo test --locked --all-features
mkdocs build --strict

変更前にCONTRIBUTING.mdと、coding agent向けの SKILL.mdを確認してください。

CIではPython / OSのmatrix test、Rustのtest / lint、docs build、配布wheelのsmoke testを 実行します。依存関係の監査は専用workflowで 実施します。バッジは各workflowへのリンクであり、脆弱性が存在しないことの保証ではありません。

不具合はIssue trackerへ、 脆弱性は公開IssueではなくSecurity Policyの窓口へ報告してください。

ライセンス

MIT License

Metadata

Release files for higuma 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for higuma 0.8.0
File Size Uploaded Provenance
higuma-0.8.0.tar.gz 1.1 MB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for higuma 0.8.0
File
higuma-0.8.0-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
higuma-0.8.0-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details
higuma-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details
higuma-0.8.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
higuma-0.8.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
higuma-0.8.0-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 11.0 MB

Release files / higuma-0.8.0.tar.gz

Download URL higuma-0.8.0.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
b195d1fd4ad45892fc82e74fd2bf7d65f6d0c8c86f267c9bdc0a702fb951962c
BLAKE2b-256 checksum
How to use checksums
de663b5f4df44632e593fdefbe5422ba9c770ed58482bc03f3b721fc2baa467e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / higuma-0.8.0-cp310-abi3-win_amd64.whl

Download URL higuma-0.8.0-cp310-abi3-win_amd64.whl
Size 1.6 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
5a1b0855cf9af7ac831264a1a83ebdbe8efd7851ed718fa70b0b1301ab5d07ba
BLAKE2b-256 checksum
How to use checksums
bb6fba66ee2580ef9653c078a8d6452ac9fb84879af89304eb365fcbc5612c9f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / higuma-0.8.0-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL higuma-0.8.0-cp310-abi3-musllinux_1_2_x86_64.whl
Size 1.9 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
c27833b04150eb331e8c36f367a87e1227797f73df2bd6160bf4a2c4ffb2d385
BLAKE2b-256 checksum
How to use checksums
2723467e944b754403f806afc5b6473370c03122da555b137d76271829efb54f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / higuma-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL higuma-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.7 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
c4c213232fdbc4b13ae30d1846dac9fcf64062888264984f4efc1766f81fab00
BLAKE2b-256 checksum
How to use checksums
4dc5e9a3561d4d09ce84eb77f624570b514851241bae8dec550c1eb14a635c40
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / higuma-0.8.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL higuma-0.8.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.6 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
3bb4923f1b0f38c7c0b2859ca7fcfb39641faa6739cf5735739f2bb29f88ca48
BLAKE2b-256 checksum
How to use checksums
1c21a7b68c883e2f0191a1052083bbfa309210bb59b9f0977c1468dc0d7fda24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / higuma-0.8.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL higuma-0.8.0-cp310-abi3-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9fa53dd455e1681d01730648d3445bd722c8cf7e1fb80c856a30f8fb429b184a
BLAKE2b-256 checksum
How to use checksums
eed9869ccb4d4c88eb1a3fc880179267461602b23e37e3ca516445e2d6a2d55c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / higuma-0.8.0-cp310-abi3-macosx_10_12_x86_64.whl

Download URL higuma-0.8.0-cp310-abi3-macosx_10_12_x86_64.whl
Size 1.6 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
f2a1af36d6e6511dc1028b09e12a5b6fc3e77ed56f57323d1b4f15e6e7b801f6
BLAKE2b-256 checksum
How to use checksums
73794c30bacf7ece48095143a1e5f234c35f5ce923ef27c73ac3cbb237177e93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Security for higuma 0.8.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 7 files in this release have been uploaded with provenance metadata.

Select from 7 files

Attestation for higuma-0.8.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page