diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 452bbb7..7febf4c 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -15,9 +15,9 @@ assignees: [] ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() # 再現コード... ``` diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 6597729..c1956fe 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -19,9 +19,9 @@ assignees: [] ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() # こんな感じで使いたい... ``` diff --git a/CHANGELOG.md b/CHANGELOG.md index 8271ee0..44dc7bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,7 +58,7 @@ Released: 2026-03-02 ### Added - 初回リリース -- Genflux 評価・レポート・設定 API 用の公式 Python SDK(`GenFlux`, `ConfigClient`, `ReportsClient` 等) +- GENFLUX 評価・レポート・設定 API 用の公式 Python SDK(`Genflux`, `ConfigClient`, `ReportsClient` 等) - Pydantic v2 ベースの型付きレスポンス、httpx による HTTP クライアント - 開発・品質: pre-commit(ruff, pyright), pip-audit, gitleaks, ライセンスコンプライアンスチェック diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9059b33..688b009 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ -# Contributing to Genflux Python SDK +# Contributing to GENFLUX Python SDK -Genflux Python SDK へのコントリビューションを歓迎します! +GENFLUX Python SDK へのコントリビューションを歓迎します! バグ報告・機能要望・ドキュメント改善・コードの改善、いずれも大歓迎です。 --- diff --git a/README.md b/README.md index c05680c..e364e7b 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ - Genflux + GENFLUX

- Genflux Python SDK
- Genflux Platform 公式 Python SDK。RAG システムの回答品質スコアリング、セキュリティテスト、ポリシーチェックを Python から実行できます。 + GENFLUX Python SDK
+ GENFLUX Platform 公式 Python SDK。RAG システムの回答品質スコアリング、セキュリティテスト、ポリシーチェックを Python から実行できます。

[![Version](https://img.shields.io/badge/version-0.1.2-blue.svg)](https://github.com/elith-co-jp/genflux-python-sdk/releases/tag/v0.1.2) @@ -25,21 +25,21 @@ - [クイックスタート](./docs/QUICKSTART.md) — Config 不要で今すぐ試せるサンプル - [ワークフロー](./docs/WORKFLOW.md) — バッチ評価、CI/CD 統合、エラーハンドリング -## Why Genflux +## Why GENFLUX RAG システムを本番運用する際、「回答品質が十分か」「安全性に問題はないか」を継続的に検証する仕組みが不可欠です。 -Genflux は **RAG の品質・安全性を数値で可視化** するプラットフォームです。この SDK を使って Python から直接評価を実行できます。 +GENFLUX は **RAG の品質・安全性を数値で可視化** するプラットフォームです。この SDK を使って Python から直接評価を実行できます。 - **8 種類の評価メトリック** — Faithfulness、Hallucination、Toxicity など、RAG に必要な品質指標をワンライナーで計測 - **CI/CD 統合** — テストパイプラインに組み込み、品質劣化を自動検知([ワークフロー例](./docs/WORKFLOW.md#cicd統合)) -- **セキュリティテスト** — Genflux Platform 上で Red Teaming による攻撃シミュレーションを実行し、脆弱性を事前に検出 -- **ポリシーチェック** — Genflux Platform 上で AI 事業者ガイドライン準拠を自動検証 +- **セキュリティテスト** — GENFLUX Platform 上で Red Teaming による攻撃シミュレーションを実行し、脆弱性を事前に検出 +- **ポリシーチェック** — GENFLUX Platform 上で AI 事業者ガイドライン準拠を自動検証 ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() result = client.evaluation().faithfulness( question="What is RAG?", answer="RAG is Retrieval-Augmented Generation.", @@ -138,14 +138,14 @@ if result.score < 0.8: ```mermaid graph TB - User["Your Code"] --> GF["Genflux Client"] + User["Your Code"] --> GF["GENFLUX Client"] GF --> CC["client.configs
ConfigClient"] GF --> JC["client.jobs
JobsClient"] GF --> RC["client.reports
ReportsClient"] GF --> EC["client.evaluation()
EvaluationClient"] - CC --> API["Genflux Backend API"] + CC --> API["GENFLUX Backend API"] JC --> API RC --> API EC --> API @@ -160,7 +160,7 @@ graph TB | クライアント | アクセス方法 | 説明 | |---|---|---| -| `GenFlux` | `GenFlux()` | メインクライアント(認証・サブクライアント管理) | +| `Genflux` | `Genflux()` | メインクライアント(認証・サブクライアント管理) | | `EvaluationClient` | `client.evaluation()` | 8 種類のメトリックによる評価実行 | | `ConfigClient` | `client.configs` | RAG API 設定の CRUD | | `JobsClient` | `client.jobs` | 非同期ジョブの作成・監視・キャンセル | @@ -175,9 +175,9 @@ pip install genflux ## クイックスタート ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() # 環境変数 GENFLUX_API_KEY を使用 +client = Genflux() # 環境変数 GENFLUX_API_KEY を使用 evaluator = client.evaluation() result = evaluator.faithfulness( @@ -193,7 +193,7 @@ print(result.reason) # "The answer is based on the provided context." API Key は明示的に渡すこともできます。 ```python -client = GenFlux(api_key="pk_xxx") +client = Genflux(api_key="pk_xxx") ``` ## 評価メトリック @@ -265,7 +265,7 @@ except JobFailedError as e: | `GENFLUX_ENVIRONMENT` | `"local"` / `"dev"` / `"prod"` | `"prod"` | | `GENFLUX_API_BASE_URL` | ベース URL の上書き(最優先) | — | -API Key は [Genflux Platform](https://www.platform.genflux.jp/) から発行してください。 +API Key は [GENFLUX Platform](https://www.platform.genflux.jp/) から発行してください。 ## サポート diff --git a/docs/API_REFERENCE.md b/docs/API_REFERENCE.md index 24e025c..d0973dd 100644 --- a/docs/API_REFERENCE.md +++ b/docs/API_REFERENCE.md @@ -2,9 +2,9 @@ -# Genflux Python SDK - API Reference +# GENFLUX Python SDK - API Reference -Genflux Python SDK の完全な API リファレンスです。 +GENFLUX Python SDK の完全な API リファレンスです。 このドキュメントはソースコードの docstring・型ヒントから**自動生成**されています。 > ⚠️ **このファイルは自動生成物です。直接編集しないでください。** @@ -17,7 +17,7 @@ Genflux Python SDK の完全な API リファレンスです。 - [1. 概要](#1-概要) - [2. クライアント](#2-クライアント) - - [2.1 GenFlux](#21-genflux) + - [2.1 Genflux](#21-genflux) - [2.2 ConfigClient](#22-configclient) - [2.3 JobsClient](#23-jobsclient) - [2.4 ReportsClient](#24-reportsclient) @@ -30,9 +30,9 @@ Genflux Python SDK の完全な API リファレンスです。 ## 1. 概要 ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() # GENFLUX_API_KEY 環境変数を使用 +client = Genflux() # GENFLUX_API_KEY 環境変数を使用 evaluator = client.evaluation() result = evaluator.faithfulness( @@ -47,14 +47,14 @@ print(f"Score: {result.score}") # 0.0 ~ 1.0 ```mermaid graph TB - User["Your Code"] --> GF["Genflux Client"] + User["Your Code"] --> GF["GENFLUX Client"] GF --> CC["client.configs
ConfigClient"] GF --> JC["client.jobs
JobsClient"] GF --> RC["client.reports
ReportsClient"] GF --> EC["client.evaluation()
EvaluationClient"] - CC --> API["Genflux Backend API"] + CC --> API["GENFLUX Backend API"] JC --> API RC --> API EC --> API @@ -71,7 +71,7 @@ graph TB | クライアント | アクセス方法 | 説明 | |---|---|---| -| [`GenFlux`](#genflux-1) | `GenFlux()` | メインクライアント(認証・サブクライアント管理) | +| [`Genflux`](#genflux-1) | `Genflux()` | メインクライアント(認証・サブクライアント管理) | | [`EvaluationClient`](#evaluationclient) | `client.evaluation()` | 8 種類のメトリックによる評価実行 | | [`ConfigClient`](#configclient) | `client.configs` | RAG API 設定の CRUD | | [`JobsClient`](#jobsclient) | `client.jobs` | 非同期ジョブの作成・監視・キャンセル | @@ -94,9 +94,9 @@ graph TB ## 2. クライアント -### 2.1 `GenFlux` +### 2.1 `Genflux` -GenFlux APIクライアント。 +Genflux APIクライアント。 #### 属性 @@ -112,23 +112,23 @@ GenFlux APIクライアント。 | パラメータ | 型 | 必須 | 説明 | |---|---|---|---| | `api_key` | `str \| None` | No | API key for authentication. If not provided, uses GENFLUX_API_KEY env var. | -| `base_url` | `str \| None` | No | Base URL for the GenFlux API. If not provided, uses GENFLUX_API_BASE_URL env var or constructs from environment setting. | +| `base_url` | `str \| None` | No | Base URL for the Genflux API. If not provided, uses GENFLUX_API_BASE_URL env var or constructs from environment setting. | | `environment` | `str \| None` | No | Environment name ("local", "dev", or "prod"). Uses GENFLUX_ENVIRONMENT env var if not provided. Defaults to "prod". | | `timeout` | `float` | No | Request timeout in seconds (default: 60.0) | #### 使用例 ```python -from genflux import GenFlux +from genflux import Genflux # Production (default) -client = GenFlux(api_key="pk_xxx") +client = Genflux(api_key="pk_xxx") # Development -client = GenFlux(api_key="pk_xxx", environment="dev") +client = Genflux(api_key="pk_xxx", environment="dev") # Local development -client = GenFlux(api_key="dev_test_key", environment="local") +client = Genflux(api_key="dev_test_key", environment="local") ``` #### メソッド @@ -149,7 +149,7 @@ client = GenFlux(api_key="dev_test_key", environment="local") ```python # With explicit config -client = GenFlux(api_key="pk_xxx") +client = Genflux(api_key="pk_xxx") evaluator = client.evaluation(config_id="config_123") result = evaluator.faithfulness( question="What is Python?", @@ -524,8 +524,8 @@ IDでレポートを取得します。 **例:** ```python -from genflux import GenFlux -client = GenFlux(api_key="genflux_xxx") +from genflux import Genflux +client = Genflux(api_key="genflux_xxx") # Get summary report report = client.reports.get( @@ -688,7 +688,7 @@ result = evaluator.contextual_relevancy( **例:** ```python -client = GenFlux(api_key="pk_xxx") +client = Genflux(api_key="pk_xxx") evaluator = client.evaluation(config_id="config_123") result = evaluator.evaluate( @@ -1159,22 +1159,22 @@ RedTeamサマリ ## 4. 例外 -すべての例外は `GenFluxError` を基底クラスとしています。 +すべての例外は `GenfluxError` を基底クラスとしています。 ### 4.1 例外一覧 | 例外 | 継承元 | HTTP ステータス | 説明 | |---|---|---|---| -| `GenFluxError` | `Exception` | — | 基底例外クラス | -| `APIError` | `GenFluxError` | — | API リクエスト失敗(基底) | +| `GenfluxError` | `Exception` | — | 基底例外クラス | +| `APIError` | `GenfluxError` | — | API リクエスト失敗(基底) | | `AuthenticationError` | `APIError` | 401 | API Key が無効または未設定 | | `NotFoundError` | `APIError` | 404 | リソースが見つからない | | `ValidationError` | `APIError` | 400, 422 | リクエストパラメータが不正 | | `RateLimitError` | `APIError` | 429 | レート制限超過 | -| `TimeoutError` | `GenFluxError` | — | ジョブのタイムアウト | -| `JobFailedError` | `GenFluxError` | — | ジョブ実行の失敗 | -| `ConfigNotFoundError` | `GenFluxError` | — | 指定した Config が存在しない | -| `ResourceNotFoundError` | `GenFluxError` | — | リソースが見つからない | +| `TimeoutError` | `GenfluxError` | — | ジョブのタイムアウト | +| `JobFailedError` | `GenfluxError` | — | ジョブ実行の失敗 | +| `ConfigNotFoundError` | `GenfluxError` | — | 指定した Config が存在しない | +| `ResourceNotFoundError` | `GenfluxError` | — | リソースが見つからない | > **Note:** `APIError` 系は HTTP レスポンスに起因する例外です。`status_code` 属性でステータスコードを取得できます。 > `TimeoutError` / `JobFailedError` はジョブ実行に起因する例外で、HTTP ステータスコードはありません。 @@ -1182,7 +1182,7 @@ RedTeamサマリ ### 4.2 例外ハンドリング ```python -from genflux import GenFlux +from genflux import Genflux from genflux.exceptions import ( AuthenticationError, RateLimitError, @@ -1190,7 +1190,7 @@ from genflux.exceptions import ( JobFailedError, ) -client = GenFlux() +client = Genflux() evaluator = client.evaluation() try: @@ -1275,10 +1275,10 @@ job.wait()用のプログレスコールバックを作成します。 **例:** ```python -from genflux import GenFlux +from genflux import Genflux from genflux.progress import create_progress_callback -client = GenFlux(api_key="pk_xxx") +client = Genflux(api_key="pk_xxx") job = client.jobs.create(...) # With progress bar @@ -1298,4 +1298,4 @@ result = client.jobs.wait(job.id, callback=callback) *Auto-generated at 2026-03-23 07:15 UTC by `scripts/generate_api_reference.py`* - + diff --git a/docs/BACKEND_API_REFERENCE.md b/docs/BACKEND_API_REFERENCE.md index c7c0797..8ccda29 100644 --- a/docs/BACKEND_API_REFERENCE.md +++ b/docs/BACKEND_API_REFERENCE.md @@ -1,6 +1,6 @@ -# GenFlux Backend API Reference - External API +# GENFLUX Backend API Reference - External API -> **📘 Note**: このドキュメントは、GenFlux Python SDK が内部で使用する REST API の仕様です。 +> **📘 Note**: このドキュメントは、GENFLUX Python SDK が内部で使用する REST API の仕様です。 > SDK の使い方については、[Python SDK API Reference](./API_REFERENCE.md) を参照してください。 ## 📚 関連ドキュメント @@ -14,7 +14,7 @@ **Version**: 1.0.0 -GenFlux Platform Backend API +GENFLUX Platform Backend API ## API Surfaces diff --git a/docs/DEVELOPER_API_REFERENCE.md b/docs/DEVELOPER_API_REFERENCE.md index c768a42..92268ee 100644 --- a/docs/DEVELOPER_API_REFERENCE.md +++ b/docs/DEVELOPER_API_REFERENCE.md @@ -2,7 +2,7 @@ -# Genflux Python SDK - Developer API Reference +# GENFLUX Python SDK - Developer API Reference 開発者向けの詳細な API リファレンスです。 内部クラス・プライベートメソッドも含みます。 @@ -26,9 +26,9 @@ --- ## クライアント -### `GenFlux` +### `Genflux` -GenFlux APIクライアント。 +Genflux APIクライアント。 #### 属性 @@ -44,23 +44,23 @@ GenFlux APIクライアント。 | パラメータ | 型 | 必須 | 説明 | |---|---|---|---| | `api_key` | `str \| None` | No | API key for authentication. If not provided, uses GENFLUX_API_KEY env var. | -| `base_url` | `str \| None` | No | Base URL for the GenFlux API. If not provided, uses GENFLUX_API_BASE_URL env var or constructs from environment setting. | +| `base_url` | `str \| None` | No | Base URL for the Genflux API. If not provided, uses GENFLUX_API_BASE_URL env var or constructs from environment setting. | | `environment` | `str \| None` | No | Environment name ("local", "dev", or "prod"). Uses GENFLUX_ENVIRONMENT env var if not provided. Defaults to "prod". | | `timeout` | `float` | No | Request timeout in seconds (default: 60.0) | #### 使用例 ```python -from genflux import GenFlux +from genflux import Genflux # Production (default) -client = GenFlux(api_key="pk_xxx") +client = Genflux(api_key="pk_xxx") # Development -client = GenFlux(api_key="pk_xxx", environment="dev") +client = Genflux(api_key="pk_xxx", environment="dev") # Local development -client = GenFlux(api_key="dev_test_key", environment="local") +client = Genflux(api_key="dev_test_key", environment="local") ``` #### メソッド @@ -181,7 +181,7 @@ APIにPUTリクエストを送信します。 ```python # With explicit config -client = GenFlux(api_key="pk_xxx") +client = Genflux(api_key="pk_xxx") evaluator = client.evaluation(config_id="config_123") result = evaluator.faithfulness( question="What is Python?", @@ -200,7 +200,7 @@ result = evaluator.faithfulness( ### `BaseClient` -GenFlux API用の基底HTTPクライアント。 +Genflux API用の基底HTTPクライアント。 #### メソッド @@ -841,8 +841,8 @@ IDでレポートを取得します。 **例:** ```python -from genflux import GenFlux -client = GenFlux(api_key="genflux_xxx") +from genflux import Genflux +client = Genflux(api_key="genflux_xxx") # Get summary report report = client.reports.get( @@ -1045,7 +1045,7 @@ result = evaluator.contextual_relevancy( **例:** ```python -client = GenFlux(api_key="pk_xxx") +client = Genflux(api_key="pk_xxx") evaluator = client.evaluation(config_id="config_123") result = evaluator.evaluate( @@ -1516,15 +1516,15 @@ RedTeamサマリ ## 例外 -### `GenFluxError` +### `GenfluxError` *継承:* `Exception` -GenFlux SDKの基底例外クラス。 +GENFLUX SDKの基底例外クラス。 ### `APIError` -*継承:* `GenFluxError` +*継承:* `GenfluxError` APIリクエストが失敗しました。 @@ -1548,13 +1548,13 @@ APIリクエストが失敗しました。 ### `TimeoutError` -*継承:* `GenFluxError` +*継承:* `GenfluxError` 操作がタイムアウトしました。 ### `JobFailedError` -*継承:* `GenFluxError` +*継承:* `GenfluxError` ジョブの実行に失敗しました。 @@ -1566,13 +1566,13 @@ APIリクエストが失敗しました。 ### `ConfigNotFoundError` -*継承:* `GenFluxError` +*継承:* `GenfluxError` 設定が見つかりません。 ### `ResourceNotFoundError` -*継承:* `GenFluxError` +*継承:* `GenfluxError` 汎用リソースが見つからないエラー。 @@ -1639,4 +1639,4 @@ job.wait()用のプログレスコールバックを作成します。 *Auto-generated at 2026-03-23 07:15 UTC by `scripts/generate_api_reference.py`* - + diff --git a/docs/EXAMPLES.md b/docs/EXAMPLES.md index 9133b8b..0cecdf4 100644 --- a/docs/EXAMPLES.md +++ b/docs/EXAMPLES.md @@ -1,4 +1,4 @@ -# Genflux Python SDK - サンプルコード集 +# GENFLUX Python SDK - サンプルコード集 実際のユースケースごとのサンプルコードを紹介します。 @@ -22,9 +22,9 @@ ### Faithfulness 評価 ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() # 既存のConfigを使用 configs = client.configs.list() @@ -57,9 +57,9 @@ else: ### 同じデータで複数のメトリックを評価 ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() evaluator = client.evaluation(config_id="xxx") question = "AIとは何ですか?" @@ -103,9 +103,9 @@ print(f"\n平均スコア: {avg_score:.2f}") ### 複数のテストケースを順次評価 ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() evaluator = client.evaluation(config_id="xxx") # テストケース @@ -167,9 +167,9 @@ print(f"\n合格率: {passed_count}/{total_count} ({passed_count/total_count*100 ### Config の完全なライフサイクル ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() # 1. Config作成 print("1. Config作成中...") @@ -229,9 +229,9 @@ print(" ✅ Config削除完了") ```python import time -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() # Job作成(低レベルAPI) print("Job作成中...") @@ -289,7 +289,7 @@ if final_job.results: ```python import time -from genflux import GenFlux +from genflux import Genflux from genflux.exceptions import ( AuthenticationError, NotFoundError, @@ -300,7 +300,7 @@ from genflux.exceptions import ( APIError ) -client = GenFlux() +client = Genflux() def evaluate_with_retry(evaluator, max_retries=3): """リトライ機能付き評価""" @@ -398,14 +398,14 @@ CI/CD用評価スクリプト """ import sys -from genflux import GenFlux +from genflux import Genflux # 閾値設定 FAITHFULNESS_THRESHOLD = 0.7 RELEVANCY_THRESHOLD = 0.7 def main(): - client = GenFlux() + client = Genflux() # Configを取得 configs = client.configs.list() @@ -486,9 +486,9 @@ if __name__ == "__main__": ### プログレスバーのカスタマイズ ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() evaluator = client.evaluation(config_id="xxx") # 1. プログレスバー非表示 @@ -548,7 +548,7 @@ result = evaluator.faithfulness( ## まとめ -これらのサンプルコードを参考に、Genflux Python SDKを活用してください。 +これらのサンプルコードを参考に、GENFLUX Python SDKを活用してください。 さらに詳しい情報は以下を参照: - [README.md](../README.md) - 基本的な使い方 @@ -556,5 +556,5 @@ result = evaluator.faithfulness( --- -**Genflux Python SDK - サンプルコード集** +**GENFLUX Python SDK - サンプルコード集** diff --git a/docs/LOCAL_SETUP.md b/docs/LOCAL_SETUP.md index c8c99cb..ca0f8f2 100644 --- a/docs/LOCAL_SETUP.md +++ b/docs/LOCAL_SETUP.md @@ -1,6 +1,6 @@ -# Genflux Python SDK(ローカル環境) +# GENFLUX Python SDK(ローカル環境) -Genflux Platform の公式Python SDKです。RAG(Retrieval-Augmented Generation)システムの評価、セキュリティテスト、ポリシーチェックを簡単に実行することができます。 +GENFLUX Platform の公式Python SDKです。RAG(Retrieval-Augmented Generation)システムの評価、セキュリティテスト、ポリシーチェックを簡単に実行することができます。 [![Python Version](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/downloads/) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) @@ -46,7 +46,7 @@ git clone ### 2. バックエンドサーバーの起動 -Genflux Platform Backend を起動します。 +GENFLUX Platform Backend を起動します。 ```bash # バックエンドディレクトリに移動 @@ -123,7 +123,7 @@ uv pip install -e . #### 本番環境(Production) ```bash -# API Key(Genflux Platform の管理画面から取得) +# API Key(GENFLUX Platform の管理画面から取得) export GENFLUX_API_KEY="genflux_your_api_key_here" # 環境指定(省略可: デフォルトは "prod") @@ -161,7 +161,7 @@ export GENFLUX_ENVIRONMENT="local" - `prod`: 本番環境(デフォルト) **注意**: -- `GENFLUX_API_KEY`: Genflux Platform の管理画面から取得してください +- `GENFLUX_API_KEY`: GENFLUX Platform の管理画面から取得してください - `GENFLUX_ENVIRONMENT`: 省略した場合、**本番環境(prod)がデフォルト**です - `GENFLUX_API_BASE_URL`: カスタムURLが必要な特殊な環境でのみ使用 @@ -174,16 +174,16 @@ export GENFLUX_ENVIRONMENT="local" ### 最初の評価を実行 ```python -from genflux import GenFlux +from genflux import Genflux # 本番環境(デフォルト) -client = GenFlux() # 環境変数 GENFLUX_API_KEY が必要 +client = Genflux() # 環境変数 GENFLUX_API_KEY が必要 # 開発環境 -client = GenFlux(environment="dev") +client = Genflux(environment="dev") # ローカル環境 -client = GenFlux(environment="local") +client = Genflux(environment="local") # 評価を実行(デフォルトのConfigを使用) evaluator = client.evaluation() @@ -343,4 +343,4 @@ MIT License - 詳細は [LICENSE](LICENSE) ファイルを参照してくださ --- -**Genflux - RAG Evaluation Made Simple** +**GENFLUX - RAG Evaluation Made Simple** diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md index 249a726..8d9d00f 100644 --- a/docs/QUICKSTART.md +++ b/docs/QUICKSTART.md @@ -1,6 +1,6 @@ -# Genflux Python SDK - クイックスタート +# GENFLUX Python SDK - クイックスタート -最も簡単な方法で Genflux SDK を使い始めましょう。このガイドでは、Config 作成から評価実行まで、最小限のコードで試せます。 +最も簡単な方法で GENFLUX SDK を使い始めましょう。このガイドでは、Config 作成から評価実行まで、最小限のコードで試せます。 --- @@ -17,7 +17,7 @@ ## 前提条件 - Python 3.11 以上 -- Genflux Platform で発行した API Key(環境変数 `GENFLUX_API_KEY` に設定) +- GENFLUX Platform で発行した API Key(環境変数 `GENFLUX_API_KEY` に設定) --- @@ -26,10 +26,10 @@ 最もシンプルな方法で評価を実行してみましょう。 ```python -from genflux import GenFlux +from genflux import Genflux # クライアント初期化(環境変数から自動取得) -client = GenFlux() +client = Genflux() # 評価を実行(デフォルトのConfigを使用) evaluator = client.evaluation() # config_idを指定しない場合、デフォルトを使用 @@ -62,10 +62,10 @@ Reason: The answer is based on the provided context. 特定のRAG APIを評価したい場合は、Configを作成して指定できます。 ```python -from genflux import GenFlux +from genflux import Genflux from genflux.models.config import ConfigCreate -client = GenFlux() +client = Genflux() # Config を作成 config = client.configs.create( @@ -100,9 +100,9 @@ print(f"Score: {result.score}") 複数の質問を一度に評価してみましょう。 ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() evaluator = client.evaluation() # デフォルトのConfigを使用 # テストケース @@ -157,9 +157,9 @@ print("完了!") 同じデータで複数のメトリックを評価してみましょう。 ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() evaluator = client.evaluation() # デフォルトのConfigを使用 # 評価データ diff --git a/docs/WORKFLOW.md b/docs/WORKFLOW.md index 612e2ac..77e5bf4 100644 --- a/docs/WORKFLOW.md +++ b/docs/WORKFLOW.md @@ -1,4 +1,4 @@ -# Genflux Python SDK - 本格的なワークフロー +# GENFLUX Python SDK - 本格的なワークフロー 実践的なユースケースに基づいた、本格的なワークフロー例を紹介します。 @@ -25,10 +25,10 @@ ### 基本的なバッチ評価 ```python -from genflux import GenFlux +from genflux import Genflux # クライアント初期化 -client = GenFlux() +client = Genflux() # Config取得 configs = client.configs.list() @@ -152,9 +152,9 @@ if failed_tests: 同じデータで複数のメトリックを評価し、総合的に判定します。 ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() configs = client.configs.list() config_id = str(configs.configs[0].id) @@ -250,11 +250,11 @@ AI事業者ガイドラインへの準拠をチェックします。`execution_t ポリシー用 Config を用意し、`config_id` を指定して実行します。 ```python -from genflux import GenFlux +from genflux import Genflux from genflux.models.config import ConfigCreate from genflux.progress import ProgressBar -client = GenFlux() +client = Genflux() # Config の取得または作成 POLICY_CONFIG_NAME="My RAG API (PolicyCheck)" @@ -315,10 +315,10 @@ if details.details and details.details.recommendations: `config_id` を指定せず、アカウントのデフォルト Config で実行します。 ```python -from genflux import GenFlux +from genflux import Genflux from genflux.progress import ProgressBar -client = GenFlux() +client = Genflux() # Job 作成と完了待ち(デフォルト config 使用) job = client.jobs.create(execution_type="policy_check") @@ -353,11 +353,11 @@ if details.details and details.details.recommendations: 評価対象 API 用の Config を用意し、`config_id` を指定して実行します。 ```python -from genflux import GenFlux +from genflux import Genflux from genflux.models.config import ConfigCreate from genflux.progress import ProgressBar -client = GenFlux() +client = Genflux() # Config の取得または作成(RedTeam 評価対象 API 用) REDTEAM_CONFIG_NAME = "MY RAG API (RedTeam)" @@ -427,10 +427,10 @@ if details.details and details.details.recommendations: `config_id` を指定せず、アカウントのデフォルト Config で実行します。 ```python -from genflux import GenFlux +from genflux import Genflux from genflux.progress import ProgressBar -client = GenFlux() +client = Genflux() # Job 作成と完了待ち(デフォルト config 使用) execution_type = "redteam_static" # または "redteam_dynamic" @@ -470,7 +470,7 @@ if details.details and details.details.recommendations: ```python import time -from genflux import GenFlux +from genflux import Genflux from genflux.exceptions import ( AuthenticationError, NotFoundError, @@ -481,7 +481,7 @@ from genflux.exceptions import ( APIError ) -client = GenFlux() +client = Genflux() def evaluate_with_retry( evaluator, @@ -583,9 +583,9 @@ Job の作成、監視、キャンセルの例です。 ```python import time -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() # Job作成(低レベルAPI) print("Job作成中...") @@ -658,14 +658,14 @@ CI/CD用評価スクリプト """ import sys -from genflux import GenFlux +from genflux import Genflux # 閾値設定 FAITHFULNESS_THRESHOLD = 0.7 RELEVANCY_THRESHOLD = 0.7 def main(): - client = GenFlux() + client = Genflux() # Configを取得 configs = client.configs.list() @@ -785,10 +785,10 @@ jobs: 進捗表示をカスタマイズする例です。 ```python -from genflux import GenFlux +from genflux import Genflux import datetime -client = GenFlux() +client = Genflux() configs = client.configs.list() config_id = str(configs.configs[0].id) evaluator = client.evaluation(config_id) @@ -848,9 +848,9 @@ result = evaluator.faithfulness( 評価結果のレポートを取得して分析する例です。 ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() +client = Genflux() # 最近のJobを取得 jobs = client.jobs.list( diff --git a/example.py b/example.py index 0720b6b..7964bc4 100644 --- a/example.py +++ b/example.py @@ -1,7 +1,7 @@ -"""GenFlux SDK の動作確認サンプル.""" +"""GENFLUX SDK の動作確認サンプル.""" import genflux -from genflux import GenFlux +from genflux import Genflux def main() -> None: @@ -9,12 +9,12 @@ def main() -> None: # モジュール関数を試す print("=== genflux モジュール ===") print(genflux.hello()) # type: ignore[attr-defined] - print(genflux.hello("GenFlux")) # type: ignore[attr-defined] + print(genflux.hello("GENFLUX")) # type: ignore[attr-defined] print(f"Version: {genflux.version()}") # type: ignore[attr-defined] # クライアントを試す - print("\n=== GenFlux Client ===") - client = GenFlux() + print("\n=== GENFLUX Client ===") + client = Genflux() # ping result = client.ping() # type: ignore[attr-defined] diff --git a/examples/config_example.py b/examples/config_example.py index b0fd4c2..1a06598 100644 --- a/examples/config_example.py +++ b/examples/config_example.py @@ -1,6 +1,6 @@ """Example: How to use ConfigClient. -This example demonstrates how to manage evaluation configs using the GenFlux SDK. +This example demonstrates how to manage evaluation configs using the GENFLUX SDK. """ import os @@ -23,7 +23,7 @@ def main(): client = ConfigClient(api_key=api_key) print("="* 70) - print("GenFlux ConfigClient Example") + print("GENFLUX ConfigClient Example") print("=" * 70) # 1. Create a new config @@ -31,7 +31,7 @@ def main(): config = client.create( ConfigCreate( # type: ignore[call-arg] name="My First Config", - description="Example configuration for GenFlux", + description="Example configuration for GENFLUX", api_endpoint="https://api.openai.com/v1/chat/completions", auth_type="bearer_token", auth_token="your_openai_api_key_here", diff --git a/examples/quickstart.py b/examples/quickstart.py index 68d6941..3518e19 100644 --- a/examples/quickstart.py +++ b/examples/quickstart.py @@ -1,4 +1,4 @@ -"""QuickStart: GenFlux SDK の最小限の使用例 +"""QuickStart: GENFLUX SDK の最小限の使用例 このファイルをコピーして、自分のプロジェクトで使用できます。 """ @@ -13,14 +13,14 @@ def main(): - """GenFlux SDK クイックスタート""" + """GENFLUX SDK クイックスタート""" # Step 1: API Keyを設定 api_key = os.getenv("GENFLUX_API_KEY", "your_api_key_here") # Step 2: クライアントを初期化 client = ConfigClient(api_key=api_key) - print("🚀 GenFlux SDK QuickStart") + print("🚀 GENFLUX SDK QuickStart") print("=" * 50) # Step 3: Configを作成 diff --git a/examples/simple_demo.py b/examples/simple_demo.py index add769b..4b6fdbf 100644 --- a/examples/simple_demo.py +++ b/examples/simple_demo.py @@ -1,4 +1,4 @@ -"""GenFlux SDK - Simple Demo +"""GENFLUX SDK - Simple Demo 環境変数の設定: # 本番環境 @@ -14,15 +14,15 @@ export GENFLUX_ENVIRONMENT="local" """ -from genflux import GenFlux +from genflux import Genflux # 初期化 (環境変数から自動取得、デフォルトは本番環境) -client = GenFlux() +client = Genflux() # または、明示的に環境を指定 -# client = GenFlux(environment="prod") # 本番環境 -# client = GenFlux(environment="dev") # 開発環境 -# client = GenFlux(environment="local") # ローカル開発 +# client = Genflux(environment="prod") # 本番環境 +# client = Genflux(environment="dev") # 開発環境 +# client = Genflux(environment="local") # ローカル開発 # Config取得 configs_response = client.configs.list() diff --git a/llms-full.txt b/llms-full.txt index 7d32a4f..6e942cb 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -1,14 +1,14 @@ -# Genflux Python SDK — Full Context for LLMs +# GENFLUX Python SDK — Full Context for LLMs -> Genflux Python SDK は RAG(Retrieval-Augmented Generation)システムの**評価・セキュリティテスト・ポリシーチェック**を Python から実行するための公式クライアントライブラリです。このファイルには LLM がコードを生成・修正するために必要な全 API 情報が含まれています。 +> GENFLUX Python SDK は RAG(Retrieval-Augmented Generation)システムの**評価・セキュリティテスト・ポリシーチェック**を Python から実行するための公式クライアントライブラリです。このファイルには LLM がコードを生成・修正するために必要な全 API 情報が含まれています。 ## Quick Start ```python -from genflux import GenFlux +from genflux import Genflux # Initialize (GENFLUX_API_KEY env var or explicit) -client = GenFlux(api_key="pk_xxx") +client = Genflux(api_key="pk_xxx") # Simple evaluation evaluator = client.evaluation(config_id="cfg_123") # config_id optional @@ -40,7 +40,7 @@ report = client.reports.get(report_id=jobs[0].id, view="details") ## Architecture ``` -GenFlux(api_key) +Genflux(api_key) ├── .evaluation(config_id) → EvaluationClient │ ├── .faithfulness(q, a, contexts) → MetricResult │ ├── .answer_relevancy(q, a) → MetricResult @@ -79,20 +79,20 @@ Priority: `GENFLUX_API_BASE_URL` > `GENFLUX_ENVIRONMENT` > default (`"prod"`). Everything exported from `genflux/__init__.py`: ```python -# Clients: GenFlux, ConfigClient, EvaluationClient, JobsClient, ReportsClient +# Clients: Genflux, ConfigClient, EvaluationClient, JobsClient, ReportsClient # Models: Config, ConfigCreate, ConfigUpdate, ConfigListResponse, Job, JobProgress, MetricResult, Report, ReportSummary, ReportDetails, EvaluationSummary, RedTeamSummary, PolicySummary, CategoryBreakdown, FailedCase, Violation -# Errors: GenFluxError, APIError, AuthenticationError, NotFoundError, ValidationError, TimeoutError, JobFailedError, RateLimitError, ConfigNotFoundError, ResourceNotFoundError +# Errors: GenfluxError, APIError, AuthenticationError, NotFoundError, ValidationError, TimeoutError, JobFailedError, RateLimitError, ConfigNotFoundError, ResourceNotFoundError # Utils: ProgressBar, create_progress_callback ``` -## Genflux Client +## GENFLUX Client ```python @dataclass -class GenFlux(api_key: str | None = None, base_url: str | None = None, environment: str | None = None, timeout: float = 60.0) -> None +class Genflux(api_key: str | None = None, base_url: str | None = None, environment: str | None = None, timeout: float = 60.0) -> None ``` -GenFlux APIクライアント。 +GENFLUX APIクライアント。 **Constructor Parameters:** @@ -414,7 +414,7 @@ RedTeamサマリ ``` Exception -└── GenFluxError (base) +└── GenfluxError (base) ├── APIError (status_code, message, details) │ ├── AuthenticationError (401) │ ├── NotFoundError (404) @@ -428,7 +428,7 @@ Exception All exceptions: -- `GenFluxError`: GenFlux SDKの基底例外クラス。 +- `GenfluxError`: GENFLUX SDKの基底例外クラス。 - `APIError`: APIリクエストが失敗しました。 - `AuthenticationError`: 認証に失敗しました(401)。 - `NotFoundError`: リソースが見つかりません(404)。 @@ -458,7 +458,7 @@ All exceptions: genflux-python-sdk/ ├── src/genflux/ # SDK source │ ├── __init__.py # Public API (__all__) -│ ├── client.py # Genflux main client +│ ├── client.py # GENFLUX main client │ ├── evaluation.py # EvaluationClient │ ├── jobs.py # JobsClient │ ├── progress.py # Progress display utilities diff --git a/llms.txt b/llms.txt index 49062df..b9d77e0 100644 --- a/llms.txt +++ b/llms.txt @@ -1,13 +1,13 @@ -# Genflux Python SDK +# GENFLUX Python SDK -> Genflux Python SDK は RAG(Retrieval-Augmented Generation)システムの**評価・セキュリティテスト・ポリシーチェック**を Python から実行するための公式クライアントライブラリです。同期的な API の裏で非同期 Job をポーリングし、結果を返すアーキテクチャを採用しています。 +> GENFLUX Python SDK は RAG(Retrieval-Augmented Generation)システムの**評価・セキュリティテスト・ポリシーチェック**を Python から実行するための公式クライアントライブラリです。同期的な API の裏で非同期 Job をポーリングし、結果を返すアーキテクチャを採用しています。 ## Quick Start ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux(api_key="pk_xxx") # or set GENFLUX_API_KEY env var +client = Genflux(api_key="pk_xxx") # or set GENFLUX_API_KEY env var evaluator = client.evaluation(config_id="cfg_123") # config_id is optional result = evaluator.faithfulness( question="What is Python?", @@ -22,7 +22,7 @@ print(result.score, result.reason) The core execution flow is: ``` -GenFlux(api_key) → .evaluation(config_id) → EvaluationClient +Genflux(api_key) → .evaluation(config_id) → EvaluationClient → EvaluationClient.faithfulness(q, a, contexts) → JobsClient.create() → Backend API (Job Queue) → JobsClient.wait() → Poll until completed @@ -73,7 +73,7 @@ Priority: `GENFLUX_API_BASE_URL` > `GENFLUX_ENVIRONMENT` > default (`"prod"`). ``` src/genflux/ ├── __init__.py # Public API (__all__) — single source of truth -├── client.py # Genflux main client (entry point) +├── client.py # GENFLUX main client (entry point) ├── evaluation.py # EvaluationClient (12 metric methods) ├── jobs.py # JobsClient (create / wait / cancel jobs) ├── progress.py # ProgressBar / create_progress_callback @@ -86,7 +86,7 @@ src/genflux/ │ ├── job.py # Job / JobProgress / MetricResult │ └── report.py # Report / ReportSummary / ReportDetails └── exceptions/ - └── api.py # GenFluxError hierarchy + └── api.py # GenfluxError hierarchy ``` ## Coding Conventions @@ -133,6 +133,6 @@ make llms-check # Verify llms.txt is up-to-date ## Optional -- [Backend API Reference](docs/BACKEND_API_REFERENCE.md): REST API endpoints of the Genflux Platform backend +- [Backend API Reference](docs/BACKEND_API_REFERENCE.md): REST API endpoints of the GENFLUX Platform backend - [Test Evaluation Sheet](docs/TEST_EVALUATION_SHEET.md): Test cases and evaluation criteria - [Local Setup](docs/LOCAL_SETUP.md): Local development environment setup with Docker diff --git a/pyproject.toml b/pyproject.toml index 861efa9..debb07e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "hatchling.build" [project] name = "genflux" version = "0.1.2" -description = "Python SDK for Genflux API - RAG Evaluation Platform" +description = "Python SDK for GENFLUX API - RAG Evaluation Platform" readme = "README.md" license = "MIT" license-files = ["LICENSE"] @@ -15,7 +15,7 @@ dependencies = [ "pydantic>=2.0.0", "tqdm>=4.66.0", ] -authors = [{ name = "Genflux Team", email = "genflux-support@elith.jp" }] +authors = [{ name = "GENFLUX Team", email = "genflux-support@elith.jp" }] keywords = ["rag", "evaluation", "llm", "ai-safety", "redteam", "policy-check", "genflux"] classifiers = [ "Programming Language :: Python :: 3", diff --git a/scripts/generate_api_reference.py b/scripts/generate_api_reference.py index 08ae035..077d86d 100644 --- a/scripts/generate_api_reference.py +++ b/scripts/generate_api_reference.py @@ -619,7 +619,7 @@ def _md_class(info: ClassInfo, *, heading_level: int = 2, num_prefix: str = "") def _generate_external_reference() -> str: """External(SDKユーザー向け)API Reference を生成する.""" # SDK モジュールのインポート - from genflux.client import GenFlux + from genflux.client import Genflux from genflux.clients.config import ConfigClient from genflux.clients.reports import ReportsClient from genflux.evaluation import EvaluationClient @@ -627,7 +627,7 @@ def _generate_external_reference() -> str: APIError, AuthenticationError, ConfigNotFoundError, - GenFluxError, + GenfluxError, JobFailedError, NotFoundError, RateLimitError, @@ -670,9 +670,9 @@ def _generate_external_reference() -> str: -# Genflux Python SDK - API Reference +# GENFLUX Python SDK - API Reference -Genflux Python SDK の完全な API リファレンスです。 +GENFLUX Python SDK の完全な API リファレンスです。 このドキュメントはソースコードの docstring・型ヒントから**自動生成**されています。 > ⚠️ **このファイルは自動生成物です。直接編集しないでください。** @@ -685,7 +685,7 @@ def _generate_external_reference() -> str: - [1. 概要](#1-概要) - [2. クライアント](#2-クライアント) - - [2.1 GenFlux](#21-genflux) + - [2.1 Genflux](#21-genflux) - [2.2 ConfigClient](#22-configclient) - [2.3 JobsClient](#23-jobsclient) - [2.4 ReportsClient](#24-reportsclient) @@ -703,7 +703,7 @@ def _generate_external_reference() -> str: sections.append("## 2. クライアント") sections.append("") - genflux_info = _extract_class_info(GenFlux, include_inherited=False) + genflux_info = _extract_class_info(Genflux, include_inherited=False) sections.append(_md_class(genflux_info, heading_level=3, num_prefix="2.1")) config_client_info = _extract_class_info(ConfigClient, include_inherited=False) @@ -791,7 +791,7 @@ def _generate_external_reference() -> str: def _generate_developer_reference() -> str: """Developer(開発者向け)API Reference を生成する.""" - from genflux.client import GenFlux + from genflux.client import Genflux from genflux.clients.base import BaseClient from genflux.clients.config import ConfigClient from genflux.clients.reports import ReportsClient @@ -800,7 +800,7 @@ def _generate_developer_reference() -> str: APIError, AuthenticationError, ConfigNotFoundError, - GenFluxError, + GenfluxError, JobFailedError, NotFoundError, RateLimitError, @@ -843,7 +843,7 @@ def _generate_developer_reference() -> str: -# Genflux Python SDK - Developer API Reference +# GENFLUX Python SDK - Developer API Reference 開発者向けの詳細な API リファレンスです。 内部クラス・プライベートメソッドも含みます。 @@ -854,7 +854,7 @@ def _generate_developer_reference() -> str: ## 📋 目次 -- [Genflux クライアント](#genflux-1) +- [GENFLUX クライアント](#genflux-1) - [BaseClient(内部)](#baseclient) - [ConfigClient](#configclient) - [JobsClient](#jobsclient) @@ -866,11 +866,11 @@ def _generate_developer_reference() -> str: ---""") - # Genflux (include private) + # GENFLUX (include private) sections.append("## クライアント") sections.append("") - genflux_info = _extract_class_info(GenFlux, include_private=True) + genflux_info = _extract_class_info(Genflux, include_private=True) sections.append(_md_class(genflux_info, heading_level=3)) # BaseClient (internal) @@ -919,7 +919,7 @@ def _generate_developer_reference() -> str: sections.append("") exception_classes = [ - GenFluxError, APIError, AuthenticationError, NotFoundError, + GenfluxError, APIError, AuthenticationError, NotFoundError, ValidationError, TimeoutError, JobFailedError, RateLimitError, ConfigNotFoundError, ResourceNotFoundError, ] @@ -969,9 +969,9 @@ def _generate_developer_reference() -> str: ## 1. 概要 ```python -from genflux import GenFlux +from genflux import Genflux -client = GenFlux() # GENFLUX_API_KEY 環境変数を使用 +client = Genflux() # GENFLUX_API_KEY 環境変数を使用 evaluator = client.evaluation() result = evaluator.faithfulness( @@ -986,14 +986,14 @@ def _generate_developer_reference() -> str: ```mermaid graph TB - User["Your Code"] --> GF["Genflux Client"] + User["Your Code"] --> GF["GENFLUX Client"] GF --> CC["client.configs
ConfigClient"] GF --> JC["client.jobs
JobsClient"] GF --> RC["client.reports
ReportsClient"] GF --> EC["client.evaluation()
EvaluationClient"] - CC --> API["Genflux Backend API"] + CC --> API["GENFLUX Backend API"] JC --> API RC --> API EC --> API @@ -1010,7 +1010,7 @@ def _generate_developer_reference() -> str: | クライアント | アクセス方法 | 説明 | |---|---|---| -| [`GenFlux`](#genflux-1) | `GenFlux()` | メインクライアント(認証・サブクライアント管理) | +| [`Genflux`](#genflux-1) | `Genflux()` | メインクライアント(認証・サブクライアント管理) | | [`EvaluationClient`](#evaluationclient) | `client.evaluation()` | 8 種類のメトリックによる評価実行 | | [`ConfigClient`](#configclient) | `client.configs` | RAG API 設定の CRUD | | [`JobsClient`](#jobsclient) | `client.jobs` | 非同期ジョブの作成・監視・キャンセル | @@ -1035,22 +1035,22 @@ def _generate_developer_reference() -> str: _EXCEPTIONS_SECTION = """\ ## 4. 例外 -すべての例外は `GenFluxError` を基底クラスとしています。 +すべての例外は `GenfluxError` を基底クラスとしています。 ### 4.1 例外一覧 | 例外 | 継承元 | HTTP ステータス | 説明 | |---|---|---|---| -| `GenFluxError` | `Exception` | — | 基底例外クラス | -| `APIError` | `GenFluxError` | — | API リクエスト失敗(基底) | +| `GenfluxError` | `Exception` | — | 基底例外クラス | +| `APIError` | `GenfluxError` | — | API リクエスト失敗(基底) | | `AuthenticationError` | `APIError` | 401 | API Key が無効または未設定 | | `NotFoundError` | `APIError` | 404 | リソースが見つからない | | `ValidationError` | `APIError` | 400, 422 | リクエストパラメータが不正 | | `RateLimitError` | `APIError` | 429 | レート制限超過 | -| `TimeoutError` | `GenFluxError` | — | ジョブのタイムアウト | -| `JobFailedError` | `GenFluxError` | — | ジョブ実行の失敗 | -| `ConfigNotFoundError` | `GenFluxError` | — | 指定した Config が存在しない | -| `ResourceNotFoundError` | `GenFluxError` | — | リソースが見つからない | +| `TimeoutError` | `GenfluxError` | — | ジョブのタイムアウト | +| `JobFailedError` | `GenfluxError` | — | ジョブ実行の失敗 | +| `ConfigNotFoundError` | `GenfluxError` | — | 指定した Config が存在しない | +| `ResourceNotFoundError` | `GenfluxError` | — | リソースが見つからない | > **Note:** `APIError` 系は HTTP レスポンスに起因する例外です。`status_code` 属性でステータスコードを取得できます。 > `TimeoutError` / `JobFailedError` はジョブ実行に起因する例外で、HTTP ステータスコードはありません。 @@ -1058,7 +1058,7 @@ def _generate_developer_reference() -> str: ### 4.2 例外ハンドリング ```python -from genflux import GenFlux +from genflux import Genflux from genflux.exceptions import ( AuthenticationError, RateLimitError, @@ -1066,7 +1066,7 @@ def _generate_developer_reference() -> str: JobFailedError, ) -client = GenFlux() +client = Genflux() evaluator = client.evaluation() try: @@ -1123,7 +1123,7 @@ def _load_openai_client() -> Any: def _extract_source_summary() -> str: """ソースコードから関数シグネチャ・docstring を抽出し、ground truth を作成する.""" - from genflux.client import GenFlux + from genflux.client import Genflux from genflux.clients.config import ConfigClient from genflux.clients.reports import ReportsClient from genflux.evaluation import EvaluationClient @@ -1134,7 +1134,7 @@ def _extract_source_summary() -> str: summary_parts: list[str] = [] classes = [ - GenFlux, ConfigClient, JobsClient, ReportsClient, EvaluationClient, + Genflux, ConfigClient, JobsClient, ReportsClient, EvaluationClient, Config, ConfigCreate, ConfigUpdate, Job, JobProgress, MetricResult, ] @@ -1266,7 +1266,7 @@ def _pass1_enrich(client: Any, raw_md: str, source_summary: str) -> str: - 型名、パラメータ名、クラス名は絶対に変更しない - 存在しない機能やパラメータを追加しない(ソースにないものは書かない) - 新しい見出し(## や ### )を追加しない。既存の見出し構造をそのまま維持する -- 見出しの通し番号は大分類(## 2. クライアント)とクラス(### 2.1 GenFlux)の2階層まで。メソッドの見出し(####)には番号を付けない +- 見出しの通し番号は大分類(## 2. クライアント)とクラス(### 2.1 Genflux)の2階層まで。メソッドの見出し(####)には番号を付けない - 出力は改善後の Markdown セクションをそのまま返すこと(説明や前置きは不要)""" sections = _split_md_sections(raw_md) @@ -1490,7 +1490,7 @@ def _enrich_with_llm(raw_md: str, *, mode: str = "external", use_cache: bool = T def main() -> int: """メインエントリーポイント.""" parser = argparse.ArgumentParser( - description="Genflux SDK API Reference 自動生成", + description="GENFLUX SDK API Reference 自動生成", ) parser.add_argument( "--mode", diff --git a/scripts/generate_llms_txt.py b/scripts/generate_llms_txt.py index 4a9d922..bf87e63 100644 --- a/scripts/generate_llms_txt.py +++ b/scripts/generate_llms_txt.py @@ -175,7 +175,7 @@ class SDKInfo: def _collect_sdk_info() -> SDKInfo: """SDK の全情報を収集する.""" import genflux as gf - from genflux.client import GenFlux + from genflux.client import Genflux from genflux.clients.config import ConfigClient from genflux.clients.reports import ReportsClient from genflux.evaluation import EvaluationClient @@ -183,7 +183,7 @@ def _collect_sdk_info() -> SDKInfo: APIError, AuthenticationError, ConfigNotFoundError, - GenFluxError, + GenfluxError, JobFailedError, NotFoundError, RateLimitError, @@ -209,7 +209,7 @@ def _collect_sdk_info() -> SDKInfo: # --- Public API --- public_api = list(gf.__all__) - # --- Genflux Client --- + # --- GENFLUX Client --- def _client_methods(cls: type) -> list[tuple[str, str, str]]: methods = [] for name, obj in _get_public_methods(cls): @@ -222,8 +222,8 @@ def _client_methods(cls: type) -> list[tuple[str, str, str]]: methods.append((name, sig, summary)) return methods - genflux_summary = _get_first_line(inspect.getdoc(GenFlux)) - genflux_init_sig = _get_signature_str(GenFlux, "GenFlux") + genflux_summary = _get_first_line(inspect.getdoc(Genflux)) + genflux_init_sig = _get_signature_str(Genflux, "Genflux") # --- Evaluation metrics --- eval_cls_methods = _client_methods(EvaluationClient) @@ -248,7 +248,7 @@ def _client_methods(cls: type) -> list[tuple[str, str, str]]: # --- Exceptions --- exception_classes: list[type] = [ - GenFluxError, APIError, AuthenticationError, NotFoundError, + GenfluxError, APIError, AuthenticationError, NotFoundError, ValidationError, TimeoutError, JobFailedError, RateLimitError, ConfigNotFoundError, ResourceNotFoundError, ] @@ -262,7 +262,7 @@ def _client_methods(cls: type) -> list[tuple[str, str, str]]: public_api=public_api, genflux_summary=genflux_summary, genflux_init_sig=genflux_init_sig, - genflux_methods=_client_methods(GenFlux), + genflux_methods=_client_methods(Genflux), eval_methods=eval_cls_methods, config_methods=_client_methods(ConfigClient), jobs_methods=_client_methods(JobsClient), @@ -334,12 +334,12 @@ def _generate_llms_txt(info: SDKInfo) -> str: lines: list[str] = [] # ── H1 (required) ── - lines.append("# Genflux Python SDK") + lines.append("# GENFLUX Python SDK") lines.append("") # ── Blockquote (summary) ── lines.append( - "> Genflux Python SDK は RAG(Retrieval-Augmented Generation)システムの" + "> GENFLUX Python SDK は RAG(Retrieval-Augmented Generation)システムの" "**評価・セキュリティテスト・ポリシーチェック**を Python から実行するための" "公式クライアントライブラリです。" "同期的な API の裏で非同期 Job をポーリングし、結果を返すアーキテクチャを採用しています。" @@ -350,9 +350,9 @@ def _generate_llms_txt(info: SDKInfo) -> str: lines.append("## Quick Start") lines.append("") lines.append("```python") - lines.append("from genflux import GenFlux") + lines.append("from genflux import Genflux") lines.append("") - lines.append("client = GenFlux(api_key=\"pk_xxx\") # or set GENFLUX_API_KEY env var") + lines.append("client = Genflux(api_key=\"pk_xxx\") # or set GENFLUX_API_KEY env var") lines.append("evaluator = client.evaluation(config_id=\"cfg_123\") # config_id is optional") lines.append("result = evaluator.faithfulness(") lines.append(" question=\"What is Python?\",") @@ -369,7 +369,7 @@ def _generate_llms_txt(info: SDKInfo) -> str: lines.append("The core execution flow is:") lines.append("") lines.append("```") - lines.append("GenFlux(api_key) → .evaluation(config_id) → EvaluationClient") + lines.append("Genflux(api_key) → .evaluation(config_id) → EvaluationClient") lines.append(" → EvaluationClient.faithfulness(q, a, contexts)") lines.append(" → JobsClient.create() → Backend API (Job Queue)") lines.append(" → JobsClient.wait() → Poll until completed") @@ -440,7 +440,7 @@ def _generate_llms_txt(info: SDKInfo) -> str: lines.append("```") lines.append("src/genflux/") lines.append("├── __init__.py # Public API (__all__) — single source of truth") - lines.append("├── client.py # Genflux main client (entry point)") + lines.append("├── client.py # GENFLUX main client (entry point)") lines.append("├── evaluation.py # EvaluationClient (12 metric methods)") lines.append("├── jobs.py # JobsClient (create / wait / cancel jobs)") lines.append("├── progress.py # ProgressBar / create_progress_callback") @@ -453,7 +453,7 @@ def _generate_llms_txt(info: SDKInfo) -> str: lines.append("│ ├── job.py # Job / JobProgress / MetricResult") lines.append("│ └── report.py # Report / ReportSummary / ReportDetails") lines.append("└── exceptions/") - lines.append(" └── api.py # GenFluxError hierarchy") + lines.append(" └── api.py # GenfluxError hierarchy") lines.append("```") lines.append("") @@ -527,7 +527,7 @@ def _generate_llms_txt(info: SDKInfo) -> str: lines.append("") lines.append( "- [Backend API Reference](docs/BACKEND_API_REFERENCE.md):" - " REST API endpoints of the Genflux Platform backend" + " REST API endpoints of the GENFLUX Platform backend" ) lines.append( "- [Test Evaluation Sheet](docs/TEST_EVALUATION_SHEET.md):" @@ -551,12 +551,12 @@ def _generate_llms_full_txt(info: SDKInfo) -> str: lines: list[str] = [] # ── H1 ── - lines.append("# Genflux Python SDK — Full Context for LLMs") + lines.append("# GENFLUX Python SDK — Full Context for LLMs") lines.append("") # ── Blockquote ── lines.append( - "> Genflux Python SDK は RAG(Retrieval-Augmented Generation)システムの" + "> GENFLUX Python SDK は RAG(Retrieval-Augmented Generation)システムの" "**評価・セキュリティテスト・ポリシーチェック**を Python から実行するための" "公式クライアントライブラリです。" "このファイルには LLM がコードを生成・修正するために必要な全 API 情報が含まれています。" @@ -567,10 +567,10 @@ def _generate_llms_full_txt(info: SDKInfo) -> str: lines.append("## Quick Start") lines.append("") lines.append("```python") - lines.append("from genflux import GenFlux") + lines.append("from genflux import Genflux") lines.append("") lines.append("# Initialize (GENFLUX_API_KEY env var or explicit)") - lines.append("client = GenFlux(api_key=\"pk_xxx\")") + lines.append("client = Genflux(api_key=\"pk_xxx\")") lines.append("") lines.append("# Simple evaluation") lines.append("evaluator = client.evaluation(config_id=\"cfg_123\") # config_id optional") @@ -604,7 +604,7 @@ def _generate_llms_full_txt(info: SDKInfo) -> str: lines.append("## Architecture") lines.append("") lines.append("```") - lines.append("GenFlux(api_key)") + lines.append("Genflux(api_key)") lines.append("├── .evaluation(config_id) → EvaluationClient") lines.append("│ ├── .faithfulness(q, a, contexts) → MetricResult") lines.append("│ ├── .answer_relevancy(q, a) → MetricResult") @@ -653,7 +653,7 @@ def _generate_llms_full_txt(info: SDKInfo) -> str: lines.append("") lines.append("```python") # Group them - clients = [n for n in info.public_api if n.endswith("Client") or n == "GenFlux"] + clients = [n for n in info.public_api if n.endswith("Client") or n == "Genflux"] _util_names = ("ProgressBar", "create_progress_callback") models = [ n for n in info.public_api @@ -671,8 +671,8 @@ def _generate_llms_full_txt(info: SDKInfo) -> str: lines.append("```") lines.append("") - # ── Genflux Client ── - lines.append("## Genflux Client") + # ── GENFLUX Client ── + lines.append("## GENFLUX Client") lines.append("") lines.append("```python") lines.append("@dataclass") @@ -791,7 +791,7 @@ def _generate_llms_full_txt(info: SDKInfo) -> str: lines.append("") lines.append("```") lines.append("Exception") - lines.append("└── GenFluxError (base)") + lines.append("└── GenfluxError (base)") lines.append(" ├── APIError (status_code, message, details)") lines.append(" │ ├── AuthenticationError (401)") lines.append(" │ ├── NotFoundError (404)") @@ -841,7 +841,7 @@ def _generate_llms_full_txt(info: SDKInfo) -> str: lines.append("genflux-python-sdk/") lines.append("├── src/genflux/ # SDK source") lines.append("│ ├── __init__.py # Public API (__all__)") - lines.append("│ ├── client.py # Genflux main client") + lines.append("│ ├── client.py # GENFLUX main client") lines.append("│ ├── evaluation.py # EvaluationClient") lines.append("│ ├── jobs.py # JobsClient") lines.append("│ ├── progress.py # Progress display utilities") @@ -931,7 +931,7 @@ def _check_diff(path: Path, new_content: str) -> bool: def main() -> int: """メインエントリーポイント.""" parser = argparse.ArgumentParser( - description="Generate llms.txt and llms-full.txt for the Genflux Python SDK", + description="Generate llms.txt and llms-full.txt for the GENFLUX Python SDK", ) parser.add_argument( "--check", diff --git a/src/genflux/__init__.py b/src/genflux/__init__.py index 381b42a..9475ac6 100644 --- a/src/genflux/__init__.py +++ b/src/genflux/__init__.py @@ -1,10 +1,10 @@ -"""GenFlux Python SDK. +"""GENFLUX Python SDK. -A Python SDK for interacting with the GenFlux API. +A Python SDK for interacting with the GENFLUX API. """ # Main client -from genflux.client import GenFlux +from genflux.client import Genflux # Specialized clients from genflux.clients.config import ConfigClient @@ -16,7 +16,7 @@ APIError, AuthenticationError, ConfigNotFoundError, - GenFluxError, + GenfluxError, JobFailedError, NotFoundError, RateLimitError, @@ -52,7 +52,7 @@ __all__ = [ # Main Client - "GenFlux", + "Genflux", # Specialized Clients "ConfigClient", "EvaluationClient", @@ -79,7 +79,7 @@ "ProgressBar", "create_progress_callback", # Exceptions - "GenFluxError", + "GenfluxError", "APIError", "AuthenticationError", "NotFoundError", diff --git a/src/genflux/client.py b/src/genflux/client.py index 343f903..ad3211c 100644 --- a/src/genflux/client.py +++ b/src/genflux/client.py @@ -1,4 +1,4 @@ -"""GenFlux Client module.""" +"""GENFLUX Client module.""" import os from dataclasses import dataclass, field @@ -16,28 +16,28 @@ @dataclass -class GenFlux: - """GenFlux APIクライアント。 +class Genflux: + """GENFLUX APIクライアント。 Args: api_key: API key for authentication. If not provided, uses GENFLUX_API_KEY env var. - base_url: Base URL for the GenFlux API. If not provided, uses GENFLUX_API_BASE_URL env var + base_url: Base URL for the GENFLUX API. If not provided, uses GENFLUX_API_BASE_URL env var or constructs from environment setting. environment: Environment name ("local", "dev", or "prod"). Uses GENFLUX_ENVIRONMENT env var if not provided. Defaults to "prod". timeout (float): Request timeout in seconds (default: 60.0) Example: - >>> from genflux import GenFlux + >>> from genflux import Genflux >>> >>> # Production (default) - >>> client = GenFlux(api_key="pk_xxx") + >>> client = Genflux(api_key="pk_xxx") >>> >>> # Development - >>> client = GenFlux(api_key="pk_xxx", environment="dev") + >>> client = Genflux(api_key="pk_xxx", environment="dev") >>> >>> # Local development - >>> client = GenFlux(api_key="dev_test_key", environment="local") + >>> client = Genflux(api_key="dev_test_key", environment="local") """ api_key: str | None = field(default=None, repr=False) @@ -80,7 +80,7 @@ def __post_init__(self) -> None: # New ConfigClient uses BaseClient (independent HTTP client) self.configs = ConfigClient(api_key=self.api_key, base_url=self.base_url, timeout=int(self.timeout)) self.reports = ReportsClient(api_key=self.api_key, base_url=self.base_url, timeout=int(self.timeout)) - # Old-style clients use GenFlux instance + # Old-style clients use Genflux instance self.jobs = JobsClient(self) def evaluation(self, config_id: str | None = None) -> EvaluationClient: @@ -94,7 +94,7 @@ def evaluation(self, config_id: str | None = None) -> EvaluationClient: Example: >>> # With explicit config - >>> client = GenFlux(api_key="pk_xxx") + >>> client = Genflux(api_key="pk_xxx") >>> evaluator = client.evaluation(config_id="config_123") >>> result = evaluator.faithfulness( ... question="What is Python?", diff --git a/src/genflux/clients/__init__.py b/src/genflux/clients/__init__.py index a67fec1..7b3e20f 100644 --- a/src/genflux/clients/__init__.py +++ b/src/genflux/clients/__init__.py @@ -1,4 +1,4 @@ -"""API clients for GenFlux SDK.""" +"""API clients for GENFLUX SDK.""" from genflux.clients.config import ConfigClient diff --git a/src/genflux/clients/base.py b/src/genflux/clients/base.py index ef50b39..dec88f6 100644 --- a/src/genflux/clients/base.py +++ b/src/genflux/clients/base.py @@ -1,4 +1,4 @@ -"""Base HTTP client for GenFlux API.""" +"""Base HTTP client for GENFLUX API.""" import os from typing import Any @@ -18,7 +18,7 @@ class BaseClient: - """GenFlux API用の基底HTTPクライアント。""" + """GENFLUX API用の基底HTTPクライアント。""" def __init__( self, diff --git a/src/genflux/clients/config.py b/src/genflux/clients/config.py index 64be138..56a2a29 100644 --- a/src/genflux/clients/config.py +++ b/src/genflux/clients/config.py @@ -1,4 +1,4 @@ -"""Config management client for GenFlux SDK.""" +"""Config management client for GENFLUX SDK.""" from uuid import UUID diff --git a/src/genflux/clients/reports.py b/src/genflux/clients/reports.py index bedfeaf..d46c5cf 100644 --- a/src/genflux/clients/reports.py +++ b/src/genflux/clients/reports.py @@ -1,4 +1,4 @@ -"""Reports client for GenFlux SDK.""" +"""Reports client for GENFLUX SDK.""" from typing import Literal from uuid import UUID @@ -32,8 +32,8 @@ def get( # type: ignore[override] ValidationError: If report not ready (job not completed) Example: - >>> from genflux import GenFlux - >>> client = GenFlux(api_key="genflux_xxx") + >>> from genflux import Genflux + >>> client = Genflux(api_key="genflux_xxx") >>> >>> # Get summary report >>> report = client.reports.get( diff --git a/src/genflux/constants.py b/src/genflux/constants.py index b52e1be..3a1a95e 100644 --- a/src/genflux/constants.py +++ b/src/genflux/constants.py @@ -1,6 +1,6 @@ -"""Shared constants for GenFlux SDK.""" +"""Shared constants for GENFLUX SDK.""" -# Environment-specific API base URLs (used by GenFlux and BaseClient) +# Environment-specific API base URLs (used by Genflux and BaseClient) ENV_URLS = { "local": "http://localhost:9000/api/v1/external", "dev": "https://api.dev.platform.genflux.jp/api/v1/external", diff --git a/src/genflux/evaluation.py b/src/genflux/evaluation.py index f00d9de..0cbaeea 100644 --- a/src/genflux/evaluation.py +++ b/src/genflux/evaluation.py @@ -1,4 +1,4 @@ -"""Evaluation Client for GenFlux SDK.""" +"""Evaluation Client for GENFLUX SDK.""" import logging from typing import Callable @@ -70,7 +70,7 @@ def evaluate( ValidationError: If request validation fails Example: - >>> client = GenFlux(api_key="pk_xxx") + >>> client = Genflux(api_key="pk_xxx") >>> evaluator = client.evaluation(config_id="config_123") >>> >>> result = evaluator.evaluate( diff --git a/src/genflux/exceptions/__init__.py b/src/genflux/exceptions/__init__.py index 39c234d..4c3adc8 100644 --- a/src/genflux/exceptions/__init__.py +++ b/src/genflux/exceptions/__init__.py @@ -1,10 +1,10 @@ -"""Custom exceptions for GenFlux SDK.""" +"""Custom exceptions for GENFLUX SDK.""" from genflux.exceptions.api import ( APIError, AuthenticationError, ConfigNotFoundError, - GenFluxError, + GenfluxError, JobFailedError, NotFoundError, RateLimitError, @@ -14,7 +14,7 @@ ) __all__ = [ - "GenFluxError", + "GenfluxError", "APIError", "AuthenticationError", "NotFoundError", diff --git a/src/genflux/exceptions/api.py b/src/genflux/exceptions/api.py index dc9be14..f5d97b0 100644 --- a/src/genflux/exceptions/api.py +++ b/src/genflux/exceptions/api.py @@ -1,4 +1,4 @@ -"""Custom exceptions for GenFlux SDK.""" +"""Custom exceptions for GENFLUX SDK.""" def _extract_resource_from_url_path( @@ -72,13 +72,13 @@ def _parse_not_found_from_response( return resource, resource_id, message -class GenFluxError(Exception): - """GenFlux SDKの基底例外クラス。""" +class GenfluxError(Exception): + """GENFLUX SDKの基底例外クラス。""" pass -class APIError(GenFluxError): +class APIError(GenfluxError): """APIリクエストが失敗しました。""" def __init__(self, status_code: int, message: str, details: dict | None = None): @@ -144,7 +144,7 @@ def __init__(self, message: str, details: dict | None = None): super().__init__(422, message, details) -class TimeoutError(GenFluxError): +class TimeoutError(GenfluxError): """操作がタイムアウトしました。""" def __init__( @@ -182,7 +182,7 @@ def __init__( super().__init__(msg) -class JobFailedError(GenFluxError): +class JobFailedError(GenfluxError): """ジョブの実行に失敗しました。""" def __init__( @@ -224,7 +224,7 @@ def __init__( self.retry_after = retry_after -class ConfigNotFoundError(GenFluxError): +class ConfigNotFoundError(GenfluxError): """設定が見つかりません。""" def __init__(self, config_id: str | None = None): @@ -242,7 +242,7 @@ def __init__(self, config_id: str | None = None): ) -class ResourceNotFoundError(GenFluxError): +class ResourceNotFoundError(GenfluxError): """汎用リソースが見つからないエラー。""" def __init__(self, resource_type: str, resource_id: str): diff --git a/src/genflux/jobs.py b/src/genflux/jobs.py index afbea10..808df22 100644 --- a/src/genflux/jobs.py +++ b/src/genflux/jobs.py @@ -1,4 +1,4 @@ -"""Jobs Client for GenFlux SDK.""" +"""Jobs Client for GENFLUX SDK.""" import logging import time @@ -22,7 +22,7 @@ }) if TYPE_CHECKING: - from genflux import GenFlux + from genflux import Genflux logger = logging.getLogger(__name__) @@ -30,11 +30,11 @@ class JobsClient: """ジョブ(実行)管理用クライアント。""" - def __init__(self, client: "GenFlux"): + def __init__(self, client: "Genflux"): """Initialize JobsClient. Args: - client: Parent GenFlux client + client: Parent Genflux client """ self._client = client diff --git a/src/genflux/models/__init__.py b/src/genflux/models/__init__.py index d7a5999..ed4e79d 100644 --- a/src/genflux/models/__init__.py +++ b/src/genflux/models/__init__.py @@ -1,4 +1,4 @@ -"""Data models for GenFlux SDK.""" +"""Data models for GENFLUX SDK.""" from genflux.models.config import ( Config, diff --git a/src/genflux/models/config.py b/src/genflux/models/config.py index 3c68698..ce5b1d3 100644 --- a/src/genflux/models/config.py +++ b/src/genflux/models/config.py @@ -1,4 +1,4 @@ -"""Config data models for GenFlux SDK.""" +"""Config data models for GENFLUX SDK.""" from datetime import datetime from typing import Any diff --git a/src/genflux/models/job.py b/src/genflux/models/job.py index 8a3e8c4..11d922c 100644 --- a/src/genflux/models/job.py +++ b/src/genflux/models/job.py @@ -1,4 +1,4 @@ -"""Job-related data models for GenFlux SDK.""" +"""Job-related data models for GENFLUX SDK.""" from dataclasses import dataclass from datetime import datetime diff --git a/src/genflux/models/report.py b/src/genflux/models/report.py index d3ec350..01eb6f1 100644 --- a/src/genflux/models/report.py +++ b/src/genflux/models/report.py @@ -1,4 +1,4 @@ -"""Report models for GenFlux SDK.""" +"""Report models for GENFLUX SDK.""" from datetime import datetime from typing import Literal diff --git a/src/genflux/progress.py b/src/genflux/progress.py index 39630dc..1df12a0 100644 --- a/src/genflux/progress.py +++ b/src/genflux/progress.py @@ -1,4 +1,4 @@ -"""Progress display utilities for GenFlux SDK.""" +"""Progress display utilities for GENFLUX SDK.""" import sys from collections.abc import Callable @@ -93,10 +93,10 @@ def create_progress_callback(enable: bool = True) -> Callable[[Job], None]: Callback function for job.wait() Example: - >>> from genflux import GenFlux + >>> from genflux import Genflux >>> from genflux.progress import create_progress_callback >>> - >>> client = GenFlux(api_key="pk_xxx") + >>> client = Genflux(api_key="pk_xxx") >>> job = client.jobs.create(...) >>> >>> # With progress bar diff --git a/test_quickstart.py b/test_quickstart.py index 25ee88e..fd6f17e 100644 --- a/test_quickstart.py +++ b/test_quickstart.py @@ -12,7 +12,7 @@ def main(): """メイン処理.""" try: - from genflux import GenFlux + from genflux import Genflux print("="*70) print(" QUICKSTART動作確認テスト") @@ -20,7 +20,7 @@ def main(): # クライアント初期化 print("\n1. クライアント初期化...") - client = GenFlux(base_url="http://localhost:9000/api/v1/external") + client = Genflux(base_url="http://localhost:9000/api/v1/external") print(" ✅ クライアント初期化成功") # Config一覧取得 diff --git a/test_setup.py b/test_setup.py index 1947039..accab13 100644 --- a/test_setup.py +++ b/test_setup.py @@ -108,11 +108,11 @@ def check_sdk_basic_usage(): print_section("SDK 基本動作確認") try: - from genflux import GenFlux + from genflux import Genflux # クライアント初期化 - client = GenFlux(base_url="http://localhost:9000/api/v1/external") - print("✅ GenFlux クライアントを初期化しました") + client = Genflux(base_url="http://localhost:9000/api/v1/external") + print("✅ GENFLUX クライアントを初期化しました") # Config 一覧取得を試行 try: @@ -143,7 +143,7 @@ def check_sdk_basic_usage(): def main(): """メイン処理""" print("\n" + "="*70) - print(" GenFlux SDK セットアップ確認") + print(" GENFLUX SDK セットアップ確認") print("="*70) results = [] diff --git a/tests/test_quick_evaluation.py b/tests/test_quick_evaluation.py index 5fa301b..6a10f7e 100644 --- a/tests/test_quick_evaluation.py +++ b/tests/test_quick_evaluation.py @@ -4,7 +4,7 @@ import sys import time -from genflux import GenFlux +from genflux import Genflux # Set environment - 環境変数から取得、なければデフォルト値 if "GENFLUX_API_KEY" not in os.environ: @@ -19,9 +19,9 @@ def test_quick_evaluation(): print("=" * 60) # Initialize client - print("\n📡 Initializing GenFlux client...") + print("\n📡 Initializing GENFLUX client...") print(f" Base URL: {BASE_URL}") - client = GenFlux(base_url=BASE_URL) + client = Genflux(base_url=BASE_URL) print("✅ Client initialized") # Use existing config (first one from list) diff --git a/tests/test_sdk_simple.py b/tests/test_sdk_simple.py index 2a75465..decb077 100644 --- a/tests/test_sdk_simple.py +++ b/tests/test_sdk_simple.py @@ -7,7 +7,7 @@ import os import sys -from genflux import GenFlux +from genflux import Genflux def test_api_health(): @@ -31,8 +31,8 @@ def test_external_api_endpoints(): # APIキーを環境変数から取得 api_key = os.getenv("GENFLUX_API_KEY", "dev_test_key_12345") - # GenFluxクライアントを使用してAPIエンドポイントをテスト - client = GenFlux(api_key=api_key, base_url="http://localhost:9000/api/v1/external") + # GENFLUXクライアントを使用してAPIエンドポイントをテスト + client = Genflux(api_key=api_key, base_url="http://localhost:9000/api/v1/external") # GET /configs print("\n1️⃣ Testing GET /configs...") @@ -61,7 +61,7 @@ def test_sdk_client(): print("🧪 Test 3: SDK Client Initialization") print("=" * 60) - client = GenFlux( + client = Genflux( api_key="test_key", base_url="http://localhost:9000/api/v1/external", ) @@ -78,7 +78,7 @@ def test_sdk_client(): def main(): """メインテスト実行""" print("\n" + "=" * 60) - print("🚀 GenFlux SDK 簡易テスト") + print("🚀 GENFLUX SDK 簡易テスト") print("=" * 60) print() diff --git a/uv.lock b/uv.lock index 42f4c4b..3c934d0 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 2 +revision = 3 requires-python = ">=3.11" [[package]] @@ -94,35 +94,25 @@ sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8 wheels = [ { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, - { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, - { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, - { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, - { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, - { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, - { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, - { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, - { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, - { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, - { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, @@ -231,33 +221,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b", size = 4275637, upload-time = "2026-02-10T19:17:10.53Z" }, { url = "https://files.pythonhosted.org/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b", size = 4424742, upload-time = "2026-02-10T19:17:12.388Z" }, { url = "https://files.pythonhosted.org/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263", size = 4277528, upload-time = "2026-02-10T19:17:13.853Z" }, - { url = "https://files.pythonhosted.org/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d", size = 4947993, upload-time = "2026-02-10T19:17:15.618Z" }, { url = "https://files.pythonhosted.org/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed", size = 4456855, upload-time = "2026-02-10T19:17:17.221Z" }, { url = "https://files.pythonhosted.org/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2", size = 3984635, upload-time = "2026-02-10T19:17:18.792Z" }, { url = "https://files.pythonhosted.org/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2", size = 4277038, upload-time = "2026-02-10T19:17:20.256Z" }, - { url = "https://files.pythonhosted.org/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0", size = 4912181, upload-time = "2026-02-10T19:17:21.825Z" }, { url = "https://files.pythonhosted.org/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731", size = 4456482, upload-time = "2026-02-10T19:17:25.133Z" }, { url = "https://files.pythonhosted.org/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82", size = 4405497, upload-time = "2026-02-10T19:17:26.66Z" }, { url = "https://files.pythonhosted.org/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1", size = 4667819, upload-time = "2026-02-10T19:17:28.569Z" }, { url = "https://files.pythonhosted.org/packages/67/c8/581a6702e14f0898a0848105cbefd20c058099e2c2d22ef4e476dfec75d7/cryptography-46.0.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678", size = 4265728, upload-time = "2026-02-10T19:17:35.569Z" }, { url = "https://files.pythonhosted.org/packages/dd/4a/ba1a65ce8fc65435e5a849558379896c957870dd64fecea97b1ad5f46a37/cryptography-46.0.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87", size = 4408287, upload-time = "2026-02-10T19:17:36.938Z" }, { url = "https://files.pythonhosted.org/packages/f8/67/8ffdbf7b65ed1ac224d1c2df3943553766914a8ca718747ee3871da6107e/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee", size = 4270291, upload-time = "2026-02-10T19:17:38.748Z" }, - { url = "https://files.pythonhosted.org/packages/f8/e5/f52377ee93bc2f2bba55a41a886fd208c15276ffbd2569f2ddc89d50e2c5/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981", size = 4927539, upload-time = "2026-02-10T19:17:40.241Z" }, { url = "https://files.pythonhosted.org/packages/3b/02/cfe39181b02419bbbbcf3abdd16c1c5c8541f03ca8bda240debc467d5a12/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9", size = 4442199, upload-time = "2026-02-10T19:17:41.789Z" }, { url = "https://files.pythonhosted.org/packages/c0/96/2fcaeb4873e536cf71421a388a6c11b5bc846e986b2b069c79363dc1648e/cryptography-46.0.5-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648", size = 3960131, upload-time = "2026-02-10T19:17:43.379Z" }, { url = "https://files.pythonhosted.org/packages/d8/d2/b27631f401ddd644e94c5cf33c9a4069f72011821cf3dc7309546b0642a0/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4", size = 4270072, upload-time = "2026-02-10T19:17:45.481Z" }, - { url = "https://files.pythonhosted.org/packages/f4/a7/60d32b0370dae0b4ebe55ffa10e8599a2a59935b5ece1b9f06edb73abdeb/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0", size = 4892170, upload-time = "2026-02-10T19:17:46.997Z" }, { url = "https://files.pythonhosted.org/packages/d2/b9/cf73ddf8ef1164330eb0b199a589103c363afa0cf794218c24d524a58eab/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663", size = 4441741, upload-time = "2026-02-10T19:17:48.661Z" }, { url = "https://files.pythonhosted.org/packages/5f/eb/eee00b28c84c726fe8fa0158c65afe312d9c3b78d9d01daf700f1f6e37ff/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826", size = 4396728, upload-time = "2026-02-10T19:17:50.058Z" }, { url = "https://files.pythonhosted.org/packages/65/f4/6bc1a9ed5aef7145045114b75b77c2a8261b4d38717bd8dea111a63c3442/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d", size = 4652001, upload-time = "2026-02-10T19:17:51.54Z" }, { url = "https://files.pythonhosted.org/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18", size = 4275349, upload-time = "2026-02-10T19:17:58.419Z" }, { url = "https://files.pythonhosted.org/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235", size = 4420667, upload-time = "2026-02-10T19:18:00.619Z" }, { url = "https://files.pythonhosted.org/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a", size = 4276980, upload-time = "2026-02-10T19:18:02.379Z" }, - { url = "https://files.pythonhosted.org/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76", size = 4939143, upload-time = "2026-02-10T19:18:03.964Z" }, { url = "https://files.pythonhosted.org/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614", size = 4453674, upload-time = "2026-02-10T19:18:05.588Z" }, { url = "https://files.pythonhosted.org/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229", size = 3978801, upload-time = "2026-02-10T19:18:07.167Z" }, { url = "https://files.pythonhosted.org/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1", size = 4276755, upload-time = "2026-02-10T19:18:09.813Z" }, - { url = "https://files.pythonhosted.org/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d", size = 4901539, upload-time = "2026-02-10T19:18:11.263Z" }, { url = "https://files.pythonhosted.org/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c", size = 4452794, upload-time = "2026-02-10T19:18:12.914Z" }, { url = "https://files.pythonhosted.org/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4", size = 4404160, upload-time = "2026-02-10T19:18:14.375Z" }, { url = "https://files.pythonhosted.org/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9", size = 4667123, upload-time = "2026-02-10T19:18:15.886Z" },