tkparams.py ライブラリ ドキュメント
ライブラリの機能や目的
tkparams.py ライブラリは、Pythonアプリケーションの設定パラメータを効率的に管理するための tkParams クラスを提供します。このモジュールは、以下の主要な機能と目的を持っています。
パラメータの永続化: INIファイル形式でのパラメータの読み込みと保存をサポートし、アプリケーション設定の永続化を実現します。
コマンドライン引数の管理: アプリケーション起動時のコマンドライン引数をパラメータとして取り扱い、設定に反映させることができます。
パラメータの説明機能: 各パラメータに対して説明(docstringのようなもの)を付与し、パラメータの意図や使用方法を明確にできます。
柔軟なパラメータアクセス: 辞書ライクなアクセス、キーによる値の取得・設定、型に応じた値の変換(文字列、整数、浮動小数点数、ブール値)をサポートします。
表示機能: 現在のパラメータとその値を、オプションで説明と共に整形して表示する機能を提供します。
複合型パラメータのサポート: リスト、タプル、辞書などの複合型パラメータもINIファイルで管理できます。
このライブラリは、アプリケーションの設定を外部ファイルで管理し、動的に読み書きするニーズに応えることで、柔軟でメンテナンス性の高いアプリケーション開発を支援することを目的としています。
importする方法
tkparams.py ライブラリは、Pythonの標準的な import 文を使用して他のプログラムからインポートできます。
from tkparams import tkParams
必要な非標準ライブラリとインストール方法
tkparams.py は、tklib という非標準ライブラリに依存しています。具体的には、以下のモジュールを使用しています。
tklib.tkobjecttklib.tkutilstklib.tkinifiletklib.tkre
tklib ライブラリは、通常 pip コマンドを使用してインストールできます。
pip install tklib
もし上記のコマンドでインストールできない場合、tklib は特定のプロジェクトの内部ライブラリであるか、公開されていない可能性があります。その場合は、tklib のソースコードを入手し、Pythonのパスが通っている場所に配置する必要があります。
importできる変数と関数
tkparams.py からimportできる主要なクラスとそのメソッド、およびモジュールレベルの関数は以下の通りです。
クラス
class tkParams(tkObject)
アプリケーションの設定パラメータを管理するクラスです。tklib.tkobject.tkObject を継承しています。
__init__(self, parameter_file=None, app=None, **args)tkParamsクラスの新しいインスタンスを初期化します。parameter_fileが指定された場合、そのINIファイルパスが内部的に保持されます。appオブジェクトは、主にログ出力などのアプリケーション固有の機能と連携するために使用されます。**argsで渡されたキーワード引数は、初期パラメータとして設定されます。引数:
parameter_file(str, optional): パラメータを読み書きするINIファイルのパス。デフォルトはNone。app(object, optional): 関連付けられるアプリケーションオブジェクト。デフォルトはNone。args(dict): 初期設定として追加する任意のキーワード引数(パラメータ)。
戻り値: なし
__del__(self)オブジェクトが破棄される際に呼び出されるデストラクタです。現在、特別な処理は行いません。
引数: なし
戻り値: なし
__str__(self)オブジェクトの文字列表現を返します。
引数: なし
戻り値:
str- このオブジェクトのクラスパスを示す文字列。
dict(self)このオブジェクトの属性を辞書として返します。これは
self.__dict__と同じです。引数: なし
戻り値:
dict- オブジェクトの__dict__属性。
copy(self)現在のパラメータの新しいコピーを作成し、
tkParamsオブジェクトとして返します。すべてのパラメータとその値を新しい
tkParamsインスタンスにコピーします。引数: なし
戻り値:
tkParams- 現在のパラメータを持つ新しいtkParamsオブジェクト。
get_param_dict(self)このオブジェクトのパラメータ辞書を取得します。これは
self.__dict__と同じです。引数: なし
戻り値:
dict- オブジェクトの__dict__属性。
get_path(self, path: str = None) -> str現在のパラメータファイルのパスを取得または設定します。
pathが指定された場合、内部のパラメータファイルパスを更新し、その新しいパスを返します。pathがNoneの場合、現在の内部パスを返します。引数:
path(str, optional): 設定するパラメータファイルのパス。Noneの場合、現在のパスが返されます。デフォルトはNone。
戻り値:
str- 現在の(または更新された)パラメータファイルのパス。
keys(self)現在のパラメータ辞書のキーのリストを返します。
引数: なし
戻り値:
dict_keys- パラメータ辞書のすべてのキーを含むdict_keysオブジェクト。
get(self, key: str, defval=None)指定されたキーのパラメータ値を取得します。
キーが存在しない場合、指定されたデフォルト値を返します。
引数:
key(str): 取得するパラメータのキー。defval(any, optional): キーが見つからなかった場合に返すデフォルト値。デフォルトはNone。
戻り値:
any- 指定されたキーのパラメータ値、またはデフォルト値。
set(self, key: str, val, explanation: str = None)指定されたキーのパラメータ値を設定します。
オプションで、そのパラメータの説明を設定することもできます。
引数:
key(str): 設定するパラメータのキー。val(any): 設定するパラメータの値。explanation(str, optional): パラメータの説明。デフォルトはNone。
戻り値:
any- 設定された値。
set_attr(self, key: str, val, explanation: str = None)指定されたキーのパラメータ値を設定します。これは
setメソッドのエイリアスです。オプションで、そのパラメータの説明を設定することもできます。
引数:
key(str): 設定するパラメータのキー。val(any): 設定するパラメータの値。explanation(str, optional): パラメータの説明。デフォルトはNone。
戻り値:
any- 設定された値。
get_explanation(self, key: str) -> str指定されたキーのパラメータの説明を取得します。
説明が見つからず、関連するアプリケーションオブジェクト (
self._app) が存在する場合は、アプリケーションオブジェクトの翻訳機能(p()メソッド)を通じて説明を処理します。引数:
key(str): 説明を取得するパラメータのキー。
戻り値:
strorNone- パラメータの説明、または説明が存在しない場合はNone。
get_print_func(self, app, use_warning: bool) -> callable指定された条件に基づいて適切な出力関数を返します。
appオブジェクトとuse_warningフラグに応じて、app.print_warning、app.print、または標準のprint関数を返します。引数:
app(objectorNone): アプリケーションオブジェクト。存在しない場合は標準出力が使用されます。use_warning(bool):Trueの場合、app.print_warningを優先的に使用します。
戻り値:
callable- 出力に使用する関数。
printinf(self, app=None, use_warning: bool = False)現在のすべてのパラメータとその値を、オプションで説明と共に標準出力または指定されたアプリケーションの出力関数を使用して表示します。
引数:
app(object, optional): 出力に使用するアプリケーションオブジェクト。Noneの場合、内部の_appを使用します。デフォルトはNone。use_warning(bool, optional):Trueの場合、警告出力関数(app.print_warning)を使用します。デフォルトはFalse。
戻り値: なし
print_parameters(self, heading: str = "", sort_by_keys: bool = True, exclude_keys: list = [], app=None, use_warning: bool = False)現在のパラメータとその値を整形して出力します。
特定のキーを除外したり、キーでソートしたり、見出しを付けたりすることができます。
アンダースコア (
_) で始まるキーや値がNoneのキーはデフォルトで出力されません。引数:
heading(str, optional): 出力の冒頭に表示する見出し文字列。デフォルトは空文字列。sort_by_keys(bool, optional):Trueの場合、キーをアルファベット順(大文字小文字を区別しない)でソートして表示します。デフォルトはTrue。exclude_keys(listofstr, optional): 出力から除外するキーのリスト。デフォルトは空リスト。app(object, optional): 出力に使用するアプリケーションオブジェクト。Noneの場合、内部の_appを使用します。デフォルトはNone。use_warning(bool, optional):Trueの場合、警告出力関数(app.print_warning)を使用します。デフォルトはFalse。
戻り値: なし
print_parameters_warning(self, heading: str = "", sort_by_keys: bool = True, app=None)現在のパラメータとその値を警告として出力します。
appオブジェクトのprint_warningメソッドを使用します。アンダースコア (
_) で始まるキーや値がNoneのキーはデフォルトで出力されません。引数:
heading(str, optional): 出力の冒頭に表示する見出し文字列。デフォルトは空文字列。sort_by_keys(bool, optional):Trueの場合、キーをアルファベット順(大文字小文字を区別しない)でソートして表示します。デフォルトはTrue。app(object, optional): 出力に使用するアプリケーションオブジェクト。Noneの場合、内部の_appを使用します。デフォルトはNone。
戻り値: なし
get_string(self, path: str = None, section: str = None, key: str = None, def_val: str = None, is_print: bool = False)INIファイルから文字列型のパラメータ値を読み込みます。
指定されたパス、セクション、キーに基づいて値を読み込みます。
引数:
path(str, optional): INIファイルのパス。Noneの場合、現在の内部パスを使用します。デフォルトはNone。section(str, optional): パラメータが属するセクション名。デフォルトはNone。key(str, optional): 取得するパラメータのキー。デフォルトはNone。def_val(str, optional): キーが見つからなかった場合に返すデフォルト値。デフォルトはNone。is_print(bool, optional): 処理中にメッセージを出力するかどうか。デフォルトはFalse。
戻り値:
strorNone- 指定されたキーの文字列値、またはデフォルト値、またはNone。注意: コード中の
IsPrintは未定義のグローバル変数であり、エラーを引き起こす可能性があります。
write_string(self, path: str = None, section: str = None, key: str = None, value=None, outfile=None, is_print: bool = False)INIファイルに文字列型のパラメータ値を書き込みます。
指定されたパス、セクション、キー、値に基づいてファイルを更新します。
引数:
path(str, optional): INIファイルのパス。Noneの場合、現在の内部パスを使用します。デフォルトはNone。section(str, optional): パラメータが属するセクション名。デフォルトはNone。key(str, optional): 書き込むパラメータのキー。デフォルトはNone。value(any, optional): 書き込むパラメータの値。str()で文字列に変換されます。デフォルトはNone。outfile(any, optional): 出力ファイルオブジェクト(使用されていない可能性が高い)。デフォルトはNone。is_print(bool, optional): 処理中にメッセージを出力するかどうか。デフォルトはFalse。
戻り値:
boolorNone- 書き込みが成功した場合はTrue、失敗した場合はFalse。tkIniFileのインスタンス化に失敗した場合はNone。注意: 内部で
write_string(self, ...)となっている部分は、ini.write_string(...)の間違いである可能性が高いですが、現状のコードをそのまま説明しています。また、IsPrintは未定義のグローバル変数であり、エラーを引き起こす可能性があります。
read_parameters(self, path: str = None, section: str = None, AddSection: bool = False, ignore_keys: list = [], terminator: str = None, IsPrint: bool = True, follow_vartype: bool = True, read_inifile: bool = False)INIファイルからすべてのパラメータを読み込み、現在のオブジェクトに適用します。
読み込んだ値は、既存のパラメータの型に基づいて型変換されます。リスト、タプル、辞書などの複合型もサポートします。
引数:
path(str, optional): INIファイルのパス。Noneの場合、現在の内部パスを使用します。デフォルトはNone。section(str, optional): 読み込むセクション名。Noneの場合、すべてのセクションを読み込みます。デフォルトはNone。AddSection(bool, optional): 読み込んだセクションをパラメータとして追加するかどうか。デフォルトはFalse。ignore_keys(listofstr, optional): 読み込み時に無視するキーのリスト。デフォルトは空リスト。terminator(str, optional): 値の終端を示す文字。これ以降の文字列は無視されます。デフォルトはNone。IsPrint(bool, optional): 処理中にメッセージを出力するかどうか。デフォルトはTrue。follow_vartype(bool, optional):Trueの場合、既存のパラメータの型に合わせて読み込んだ値を変換します。Falseの場合、pconvを使用して変換します。デフォルトはTrue。read_inifile(bool, optional):Trueの場合、INIファイル自体に関する情報を読み込みます。デフォルトはFalse。
戻り値:
dictorNone- 読み込まれたパラメータを含む辞書、またはINIファイルが存在しない場合はNone。
save_parameters_by_keys(self, prmfile: str, heading: str = None, section: str = None, keys: list = None, exclude_keys: list = [], save_commandline: bool = False)指定されたキーのパラメータのみをINIファイルに保存します。
このメソッドは、
save_parametersメソッドから特定のキーセットを保存するために呼び出されるヘルパーメソッドです。引数:
prmfile(str): パラメータを保存するINIファイルのパス。heading(str, optional): ファイル内のセクションの前に挿入される見出し(使用されていない可能性が高い)。デフォルトはNone。section(str, optional): パラメータを保存するセクション名。デフォルトはNone。keys(listofstr, optional): 保存するパラメータのキーのリスト。Noneの場合、params.keys()が使用されます。デフォルトはNone。exclude_keys(listofstr, optional): 保存から除外するキーのリスト。デフォルトは空リスト。save_commandline(bool, optional): コマンドライン引数を保存するかどうか。デフォルトはFalse。
戻り値: なし(実際には
tkIniFile.write_stringの結果が使用されますが、このメソッド自体は何も返しません)。注意: 内部で
keys = list(params.keys())となっている部分は、paramsがこのスコープで未定義であり、エラーを引き起こす可能性があります。おそらくself.keys()を意図していると考えられますが、現状のコードをそのまま説明しています。
save_parameters(self, path: str = None, section: str = 'Preferences', keys: list = None, exclude_keys: list = [], otherparams: dict = None, sort_by_keys: bool = True, other_section: str = 'OtherParameters', update_commandline: bool = True, save_commandline: bool = False, save_inifile: bool = False, IsPrint: bool = True)現在のすべてのパラメータをINIファイルに保存します。
パラメータはセクションにまとめられ、キーと値のペアとして保存されます。リストや辞書のような複合型のパラメータも適切に保存されます。
引数:
path(str, optional): INIファイルのパス。Noneの場合、現在の内部パスを使用します。デフォルトはNone。section(str, optional): 主要なパラメータを保存するセクション名。デフォルトは'Preferences'。keys(listofstr, optional): 保存するパラメータのキーのリスト。Noneの場合、すべてのパラメータが保存されます。デフォルトはNone。exclude_keys(listofstr, optional): 保存から除外するキーのリスト。デフォルトは空リスト。otherparams(dict, optional): 別のセクションに保存する追加のパラメータ辞書。デフォルトはNone。sort_by_keys(bool, optional):Trueの場合、キーをアルファベット順(大文字小文字を区別しない)でソートして保存します。デフォルトはTrue。other_section(str, optional):otherparamsを保存するセクション名。デフォルトは'OtherParameters'。update_commandline(bool, optional):Trueの場合、現在のコマンドライン引数をcommandlineパラメータとして更新します。デフォルトはTrue。save_commandline(bool, optional):Trueの場合、commandlineパラメータも保存します。デフォルトはFalse。save_inifile(bool, optional):Trueの場合、inifileパラメータも保存します。デフォルトはFalse。IsPrint(bool, optional): 処理中にメッセージを出力するかどうか。デフォルトはTrue。
戻り値:
bool- 保存が成功した場合はTrue、失敗した場合はFalse。
関数
def main()
このモジュールがスクリプトとして直接実行されたときに呼び出されるメイン関数です。
動作: このモジュールがライブラリとして使用されることを意図しているため、直接実行された場合はその旨のメッセージを標準出力に表示します。
引数: なし
戻り値: なし
main scriptとして実行したときの動作
tkparams.py ファイルがPythonインタープリタによって直接実行された場合、ファイルの末尾にある if __name__ == "__main__": ブロックが実行されます。このブロック内では main() 関数が呼び出されます。
main() 関数は、このモジュールがライブラリとして設計されており、直接実行されることを想定していない旨のメッセージを標準出力に出力します。
出力されるメッセージは以下の通りです。
This is library, not runnable
これは、ユーザーが誤ってライブラリファイルを直接実行してしまった場合に、その目的を伝えるための一般的なプラクティスです。