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.7.1 — Blueprint限定hooks・error handler、request context、body helperを追加。 sessionの保存時点とJSON処理も改善しました。Flask互換性 / テストガイド。CSR/SPA・Vite連携は0.6.0以降で利用できます。 Tokioの安全性警告も修正し、0.7.0の配布を見送って0.7.1として公開します。 変更履歴 / 機能対応表

はじめる · 型付き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
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)を参照してください。

対応範囲

  • 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ではなく、ASGI serverへ渡すASGI applicationでも ありません。組み込みのRust serverで実行します。

既存の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
リアルタイムチャット 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.7.1

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.7.1
File Size Uploaded Provenance
higuma-0.7.1.tar.gz 1.1 MB With provenance Details

Built distributions (wheels)

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

Total release size: 10.9 MB

Release files / higuma-0.7.1.tar.gz

Download URL higuma-0.7.1.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
e80fdcc1f812a0d2ae6eeb464a8128429cef63cbbb5a92023dfe8b30bf176f67
BLAKE2b-256 checksum
How to use checksums
1551dea768b01fef716c82078fc0179d9a7eedd6d5b67102e8b030cfad4da6f1
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.7.1-cp310-abi3-win_amd64.whl

Download URL higuma-0.7.1-cp310-abi3-win_amd64.whl
Size 1.5 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
4f4faebd607dc226fdfbe0b5b46766b33e1cbc2ebc846173c51d533b32223ea9
BLAKE2b-256 checksum
How to use checksums
34baa823bcca0df579af08b05e23b8a4e35f7fe26995142e4181a74fcf5e0db1
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.7.1-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL higuma-0.7.1-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
9c872ccbf512a1ba66a9efe21052ecb322c4fd5bfed1fc97bcea605c4a741eaa
BLAKE2b-256 checksum
How to use checksums
474f2daf6e4da34276021a4c26aac245f84c0a880921eed855d1f951b519a287
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.7.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL higuma-0.7.1-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
d943aa7844baaf124c9b5719059838fc01633544f3171a437af3a507834ab998
BLAKE2b-256 checksum
How to use checksums
4f9a821fdebc4eb2d97646b449c657bb4770c5adfb4851e6e280062c73f1e0d7
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.7.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL higuma-0.7.1-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
5f86ada58077347f2de4cb1c7231e9c6b671b27b115326fb0a76e1e7e71055dc
BLAKE2b-256 checksum
How to use checksums
83883d0a070a5429834c6978b7aa43f4ae3f7a80d4b01677ec077222f8c3d90e
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.7.1-cp310-abi3-macosx_11_0_arm64.whl

Download URL higuma-0.7.1-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
3de8a3b86d7c0a6ad0d0a35544fede8a86db72ecfa72eaa0c9c8bf183e3e177f
BLAKE2b-256 checksum
How to use checksums
6a9fdf514842522d51edb67d8185637afba04cd8c96c932b1134a9eea1f906e1
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.7.1-cp310-abi3-macosx_10_12_x86_64.whl

Download URL higuma-0.7.1-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
9f02af05320655caf371ea00dd2a297b470183ae42948f4d1727a81948c6ce4c
BLAKE2b-256 checksum
How to use checksums
57e5f37582060a64344fe823af39bd5b1ae1ea2d57d143e90df53e6ffc139c89
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.7.1

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.7.1.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