Skip to content

feat: FT210 contextlib — contextmanager / suppress / ExitStack / nullcontext#585

Merged
hideyukiMORI merged 1 commit into
mainfrom
feat/584-ft210-contextlib
May 22, 2026
Merged

feat: FT210 contextlib — contextmanager / suppress / ExitStack / nullcontext#585
hideyukiMORI merged 1 commit into
mainfrom
feat/584-ft210-contextlib

Conversation

@hideyukiMORI
Copy link
Copy Markdown
Owner

概要

  • contextlib モジュールをフィールドトライアル FT210 として実装
  • @contextmanager / suppress / redirect_stdout / ExitStack / nullcontext を HTTP API で実証
  • セキュリティ診断(210 % 3 = 0)実施 → 条件付き合格 → 同 PR 内修正で合格

摩擦点

  • F-1: __exit__ が常に False を返す場合、戻り値型は -> bool ではなく -> None が正しい(mypy exit-return エラー)
  • F-2: list[str] フィールドはリスト長だけでなく各要素の文字列長にも max_length が必要。セキュリティ診断で発見し _BoundedStr = Annotated[str, Field(max_length=MAX_TEXT_LENGTH)] で修正

セキュリティ診断

カテゴリ 結果
OWASP API Top 10 合格(リソース消費: F-2 で修正済み)
インジェクション 合格
入力バリデーション 合格(F-2 修正後)
情報漏洩 合格
Python/FastAPI 固有 合格

総合: 条件付き合格 → 同 PR 内修正で 合格

チェックリスト

  • pytest 18 passed
  • mypy --strict 0 errors
  • ruff check 0 errors
  • ruff format --check 4 files OK
  • セキュリティ診断完了
  • FT レポート作成
  • INDEX.md・current.md 更新
  • バージョン v1.8.86 → v1.8.87

Closes #584

🤖 Generated with Claude Code

…context (#584)

摩擦点:
- F-1: __exit__ が常に False を返す場合は -> None が正しい(mypy exit-return)
- F-2: list[str] フィールドに per-item length 制約が必要(セキュリティ診断で発見)
  → _BoundedStr = Annotated[str, Field(max_length=MAX_TEXT_LENGTH)] で修正

セキュリティ診断: 条件付き合格 → 同 PR 内修正で合格
バージョン: v1.8.86 → v1.8.87

Closes #584

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@hideyukiMORI hideyukiMORI merged commit addc357 into main May 22, 2026
@hideyukiMORI hideyukiMORI deleted the feat/584-ft210-contextlib branch May 22, 2026 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

FT210: contextlib — contextmanager / suppress / ExitStack / nullcontext

1 participant