ワークフローカスタムコード記述規範
背景:セキュリティ上の理由から、【python カスタムスキルコード】&&【高度オーケストレーション-コードノード】におけるコード記述の規範を説明します
サポートされる Python パッケージ
1. 組み込み関数と型
dictsortedfiltermapenumerate
2. 標準ライブラリモジュール
データ処理
jsondecimaluuidbase64hashlib
文字列処理
re(正規表現)stringtextwrapdifflib(差分比較)
データ構造とアルゴリズム
copybisect(二分探索)heapq(ヒープキュー)statistics(統計計算)
数学計算
mathoperator(演算子関数)
日付と時間
datetimetimecalendar
その他ツール
random(乱数生成)requests(HTTPリクエスト)
3. 型注釈 (typing モジュール)
typing(モジュール自体)AnyUnionOptionalLiteralFinalClassVarTypeVarGenericProtocolruntime_checkableoverloadcastTYPE_CHECKINGNoReturnListDictSetTupleFrozenSetDequeCounterChainMapOrderedDictDefaultDictMutableMappingMutableSequenceMutableSetMappingSequenceAbstractSetCollectionContainerIterableIteratorReversibleSizedHashableCallableAwaitableCoroutineAsyncIterableAsyncIteratorAsyncGeneratorGeneratorContextManagerAsyncContextManager
文法規範
安全な環境分離などの制限を使用しているため、記述者は関連規範に従ってコードを記述する必要があります。前提:組み込み文法と組み込みライブラリ、および限定された標準ライブラリのみをサポートします。
- math モジュールの使用
import math
def calculate(a, b):
result = math.fsum([a, b])
return result
誤った書き方:
from math import fsum
def calculate(a, b):
result = fsum([a, b])
return result
説明:現在のコードブロックのインポート制限により、import パッケージ時は親パッケージのインポートのみ許可され、from a import b の文法はサポートされていません。
- datetime の使用
正しい書き方:
import typing
from datetime import datetime
def get_weather(location: str, date: typing.Optional[str] = None) -> dict:
# デフォルト日付の処理
if date is None:
formatted_date = datetime.datetime.now().strftime("%Y-%m-%d")
else:
try:
# 一般的な日付フォーマットの解析を試みる
if len(date) == 8 and date.isdigit():
# YYYYMMDD フォーマットの処理
date_obj = datetime.datetime.strptime(date, "%Y%m%d")
else:
# 標準フォーマット YYYY-MM-DD を試みる
date_obj = datetime.datetime.strptime(date, "%Y-%m-%d")
formatted_date = date_obj.strftime("%Y-%m-%d")
except ValueError:
# フォーマット不一致の場合、元の入力を使用(API呼び出し失敗の可能性あり)
formatted_date = date
# ここはモックデータであり、実際のアプリケーションでは天気APIを呼び出す可能性があります
weather_data = {
"location": location,
"date": formatted_date,
"forecast": "sunny",
"temperature": "25°C",
"wind": "light breeze"
}
return weather_data
誤った書き方:
from typing import Optional, List, Dict, Any, Union, Callable
from datetime import datetime
...省略...