genvid.toolbox.BaseTool
- class genvid.toolbox.BaseTool(logname=None, command_option_name='command', **kwargs)
ベースクラス:
object
すべてのツールのベース class。
この class は、他のすべてのツールを設定し、基本的な機能を提供します。特に、
main()
とget_parser()
のメソッドの処理を行います。詳細はadd_commands()
、add_command()
、run_command()
を参照してください。インスタンス化する前は、この class のほとんどの属性は適切に初期化されていないことに注意してください。
- NAME
このツールのロガー名。子 class (children) で再定義する必要があります。
- DESCRIPTION
ヘルプパーサーで使用されるツールの説明。子 class (children) で再定義する必要があります。
- ENVIRONMENT_VARIABLES = {}
すべてのツールで使用される環境変数。
setdefault()
が呼び出されるたびにリストが更新されます。env()
、print_env()
によって使用されます。
- MODE_0600 = 384
ユーザー RW ファイルの権限。
- MODE_0644 = 420
ユーザー RW、グループ、読み込みファイルの権限。
- MODE_0700 = 448
ユーザー RWX ファイルの権限。
- MODE_0755 = 493
ユーザー RWX、グループ、RX ファイルの権限。
- static setrootdir(path: str)
まだ設定されていない場合は
GENVID_SDK_FOLDER
とGENVID_SDK_FOLDER
を設定します。
- static setbasescript(path: str)
CURDIR
に path を設定し、GENVID_SDK_FOLDER
にその親(まだ設定されていない場合)を設定します。別のパスに
GENVID_SDK_FOLDER
を設定するには、先に setrootdir を呼び出す必要があります。
- classmethod merge_dict(source: dict, destination: dict) dict
2 つの辞書をマージする。
destination
は、source
の要素を入れ替えて変更します。source
にdict
が値として含まれている場合、 merge はその値で再帰検索を行います (destination
がdict
でない場合はエラーになる可能性があります)。- パラメータ:
source -- ソースの辞書。
destination -- デスティネーションの辞書。
- 例外:
ValueError -- 元のキーが辞書であり、指定先にすでに辞書ではない値が含まれている場合。
- 戻り値:
destination
バージョン 1.29.0 で追加.
- run(*args, check=True, **kwargs)
args のすべての引数を渡し、 check のデフォルト値を True に設定する
subprocess.run()
のラッパー。便宜上、すべての引数は、文字列に変換されます (
str
を使用)。バージョン 1.15.0 で変更: スタティックメソッドではなく、メソッド。
- shrun(cmdline: str, shell=True, check=True, **kwargs)
直接 cmdline を渡し、 check 、 shell のデフォルト値を True に設定する
subprocess.run()
のラッパー。バージョン 1.15.0 で変更: スタティックメソッドではなく、メソッド。
- pyrun(*args, **kwargs)
現在の python バージョンを使用して python スクリプトを実行する。
以下のコマンドとほぼ同じです。
run("python", *args, **kwargs)
- static safe_unlink(filename: Union[str, Path])
存在する場合のみ、ファイルのリンクを解除。
バージョン 1.12.0 で変更:
pathlib.Path
も引数として可能になりました。
- static rmtree(directory: ~pathlib.Path, ignore_errors: bool = False, onerror=<staticmethod(<function BaseTool._rmtree_onerror>)>)
shutil.rmtree()
と同等だが、Windows のシムリンクを認識する。バージョン 1.20.1 で変更:
onerror 処理メソッドには、例外を発生させる前に 5 秒間隔で 60 秒間ファイルの削除を再試行するデフォルトのハンドラーが与えられます。
- install_file(src: Union[str, Path], dst: Union[str, Path], mode=420, uid=-1, gid=-1, backup=False)
ファイル src を dst にコピーして権限を変更する。
- パラメータ:
src -- コピーするファイル。
dst -- コピー先。
mode -- コピー先の権限。
uid -- コピー先のユーザー ID。 -1 の場合、プロセスのユーザー ID を使用する。
gid -- GID コピー先の GID。 -1 の場合、uid を使用する。
backup -- ファイル名の末尾に
~
を追加して、ファイルをバックアップする。
バージョン 1.16.0 で変更: 非静的メソッドにして backup の引数を追加する。
- install_tmp_file(dest: Union[str, Path], data: bytes, **kwargs)
一時ファイルにデータを書き込み、dst にコピーする。
インストールは、
install_file()
を使用して行われます。- パラメータ:
dest -- コンテンツの保存先。
data -- ファイルに書き込むための書き込みデータ。
バージョン 1.16.0 で変更: 非静的メソッド
- install_json(dest: Union[str, Path], config, **kwargs)
config を JSON ファイルとしてダンプし、指定の場所にコピーする。
- パラメータ:
dest -- コンテンツの保存先。
data -- JSON としてファイルに書き込むための書き込みデータ。
バージョン 1.16.0 で変更: 非静的メソッド
- static env()
使用されている環境変数とその値のリストを返します。
返される変数のリストは、
ENVIRONMENT_VARIABLES
から入手します。
- static print_env()
使用されている環境変数とその値のリストを出力する。
返される変数のリストは、
ENVIRONMENT_VARIABLES
から入手します。
- logger
ツールのロガー。
- PLATFORM
現在のプラットフォームの名前。
現在、linux または windows が使用できます。
- HOME
ユーザーのホームディレクトリ名を含む
HOME
のミラー。環境変数または
os.path.expanduser()
から取得。
- PYTHON_EXECUTABLE
デフォルトで現在の python 実行ファイルを含む
PYTHON_EXECUTABLE
のミラー。環境から、または、環境が設定されていない場合は
sys.executable
から取得。
- GENVID_BASTION_URL
bastion-api URL を表す
GENVID_BASTION_URL
のミラー。
- CURDIR
現在のスクリプトディレクトリパス (正しく設定されている場合)、または現在の作業ディレクトリ (デフォルト) を含む
CURDIR
のミラー。警告: この変数の信頼性は高くありません。できれば使用しないでください。
バージョン 1.39.0 で非推奨: Variableは使い方が曖昧です。
- GENVID_TOOLBOX_VERSION
現在インストールされているツールボックスバージョンを含む
GENVID_TOOLBOX_VERSION
のミラー。警告: この変数はオーバーライドしないでください。
- GENVID_VERBOSE_EXCEPTIONS
GENVID_VERBOSE_EXCEPTIONS
のミラー。値が
1
の場合、完全な例外トレースが表示されます。それ以外の場合、1 行に凝縮されます。
- AZURE_STORAGE_ACCOUNT
AZURE_STORAGE_ACCOUNT
のミラー。アクセスする Azure ストレージアカウント名です。正確な名前は、Azure ポータル を確認してください。
- AZURE_RESOURCE_GROUP
AZURE_RESOURCE_GROUP
のミラー。アクセスする Azure リソースグループ名です。
- GENVID_SDK_FOLDER
SDKのインストールフォルダーである
GENVID_SDK_FOLDER
のミラーです。SDKが存在しない場合は空です。
バージョン 1.39.0 で追加.
- GENVID_SDK_VERSION
GENVID_SDK_VERSION
のミラーです。GENVID_SDK_FOLDER
が存在しない場合は空です。バージョン 1.39.0 で追加.
- GENVID_TOOLBOX_FOLDER
Genvid Toolbox のインストールフォルダーである
GENVID_TOOLBOX_FOLDER
のミラーです。バージョン 1.39.0 で追加.
- ROOTDIR
ROOTDIR
のミラーです。バージョン 1.39.0 で非推奨: 代わりに
GENVID_SDK_FOLDER
を使用してください。
- BINDIR
プロジェクトのバイナリが格納されるフォルダを含む
BINDIR
のミラー。バージョン 1.40.0 で非推奨: 代わりに
GENVID_SDK_FOLDER/bin
またはGENVID_TOOLBOX_FOLDER/bin
を使用します。
- ARTIFACTS_DIR
この MILE SDK のイメージの保存場所。
バージョン 1.20.0 で変更:
DockerTool
から変数を移動します。バージョン 1.39.0 で非推奨: コードは必要に応じて
GENVID_SDK_FOLDER/images
またはGENVID_TOOLBOX_FOLDER/images
を使用するようになりました。
- COMMAND_OPTION_NAME
コマンドラインでコマンド引数に使用される名前。
詳細は
add_command()
を参照してください。
- GENVID_TOOLBOX_LOGLEVEL
ツールボックスの
logger
レベルを設定するGENVID_TOOLBOX_LOGLEVEL
のミラー。
- GENVID_TOOLBOX_LOGFORMAT
ツールボックスの
logger
を設定するGENVID_TOOLBOX_LOGFORMAT
のミラー。
- GENVID_CLUSTER_ID
ツールボックスに使用するクラスタ ID を示す
GENVID_CLUSTER_ID
のミラー。
- commands
各コマンドのパーサーの辞書。
詳細は
add_command()
を参照してください。
- subparsers
すべてのコマンドに使用する argparse モジュールから入手したサブパーサーオブジェクト。
詳細は
add_commands()
を参照してください。
- parser
このツールの現在のパーサー。
詳細は
add_commands()
を参照してください。
- get_sdk_version(folder: Optional[Union[Path, str]] = None)
インストールされている SDK のバージョンを返します。
- パラメータ:
folder -- インストールされたSDKのフォルダ。Noneの場合、
GENVID_SDK_FOLDER
を使用します。- 例外:
FileNotFoundError --
FOLDER_GUARD_FILENAME
がforud
内に見つからない場合に発生します。RuntimeError -- ガードファイルが有効なバージョンを含んでいない場合に発生します。
- 戻り値:
インストールされているSDKのバージョン。
- which(exe, path=None)
exe で実行される実行ファイルのフルパスを返す。
もし path が含まれていれば、それがチェックに使用されます。そうでない場合は、通常のパスを調べる前に、以下の順番でフォルダのチェックを行う。
- Raises:
ファイルが存在しない場合、
ExecutableNotInPathError
。
- run_powershell(*cmds: str, interactive: bool = False, noprofile: bool = False, **kwargs)
powershell スクリプトとして cmds を実行する。
- パラメータ:
cmds -- 実行する powershell コマンドのリスト。
interactive -- コマンドがインタラクティブかどうか。
noprofile -- プロフィールを読み込まない。
kwargs -- この
run()
のパーサーに渡すその他のキーワード引数。
- run_elevated_win32(*args, **kwargs)
Windows の高度の権限を使用してコマンドを実行します。
- run_elevated(*args, **kwargs)
Windows の高度の権限を使用してコマンドを実行します。
- KILL_SIGNAL = 1
デフォルト キル信号。
デフォルト
signal.SIGKILL
(UNIX)、signal.CTRL_BREAK_EVENT
(Windows)。バージョン 1.15.0 で追加.
- send_signal(proc: Union[int, Process], sig: Optional[int] = None)
プロセスにシグナルを送信する。
- パラメータ:
proc -- プロセス。プロセス PID または
psutil.Process
のインスタンス。sig -- 送信するシグナル。デフォルトは
KILL_SIGNAL
。
バージョン 1.15.0 で追加.
- kill_process(proc: Union[int, Process])
プロセスを破棄する。
SIGKILL を送信してプロセスを強制的に破棄したり、TerminateProcess を呼び出す。
- パラメータ:
proc -- プロセス。プロセス PID または
psutil.Process
のインスタンス。
バージョン 1.15.0 で追加.
- kill_process_tree(proc: Union[int, Process], timeout: float = 15.0) List[Process]
最初に SIGTERM/CTRL_BREAK_EVENT を送信し、その後すべての子に SIGKILL/Terminate をプッシュしてプロセスツリーを破棄する。
- パラメータ:
proc -- プロセス。プロセス PID または
psutil.Process
のインスタンス。timeout -- プロセス終了までの待機時間のタイムアウト (秒)。
- 戻り値:
生存しているプロセスのリスト。
バージョン 1.15.0 で追加.
バージョン 1.20.1 で変更:
デフォルトのタイムアウト時間を 15 秒に変更。
子の子は、再帰的に終了するようになりました。
- run_daemon(*args: str, **kwargs)
バックグラウンドで処理を実行する。
- パラメータ:
args -- 実行するコマンド。
stdout -- stdout の出力ファイル。
stderr -- stderr の出力ファイル。
cwd -- 現在の作業ディレクトリ。
env -- 使用する環境。
pidfile -- プロセスの PID を保存する pidfile。
- add_commands()
ツールのコマンドを追加。
このメソッドはオーバーライドする必要があります。
add_command()
を使用して、子クラスが新しいコマンドを追加することができるようにします。既存の全てのコマンドとそのパーサーのリストはcommands
から取得することができます。
- add_command(name: str, description: str, **kwargs)
ツールに新しいコマンドを追加。
コマンドが
commands
のリストに追加されます。- パラメータ:
name -- コマンド名。
description -- コマンドのヘルプ。
kwargs -- ツール
subparsers
のパーサーに渡すその他のキーワード引数。
- 戻り値:
コマンドパーサー。
- Raises:
AssertionError
(名前がすでにコマンドとして存在する場合)。
- add_base_commands()
- run_base_command(command, options)
- get_parser(subparsers=None, name=None, description=None, fromfile_prefix_chars='@', **kwargs)
このツールのパーサーを返します。
- パラメータ:
subparsers -- 使用するカスタムサブパーサー。
name -- ツール名 (デフォルトは
NAME
)。description -- ツールの説明 (デフォルトは
DESCRIPTION
)。fromfile_prefix_chars -- ファイルにプレフィックスをつける文字セットで、追加の引数はここから読み込みます。
kwargs -- この
argparse.ArgumentParser
ファクトリのパーサーに渡すその他のキーワード引数。
- 戻り値:
このツールのパーサー。
バージョン 1.13.0 で変更: fromfile_prefix_chars の新しいデフォルトは '@'です。None を渡すことで、以前の動作 (None) に切り替えます。
- run_command(command, options)
options で command を実行する。
このメソッドはオーバーライドする必要があります。
- パラメータ:
command -- 実行するコマンド名。
options -- 引き渡すオプションを持つ
argparse.Namespace
オブジェクト。
- main(options=None, *, profile=None)
ツールを実行する。
options を指定していない場合、コマンドライン引数より取得。それ以外の場合は、名前空間オブジェクトまたは辞書。
- パラメータ:
profile -- プロフィールが使用されている場合のプロフィールインスタンス。
- get_files(srcdir: Path)
srcdir
配下の全ファイルを取得 (フォルダを除く)。Srcdir.rglob("*") と等価だが、フォルダは除外。
- パラメータ:
srcdir -- 新しいファイルをチェックするフォルダ。
- 戻り値:
Path
オブジェクトの反復子。
- copy_files(srcdir: Path, dstdir: Path, files: List[Union[str, Path]], dryrun=False)
files
の全ファイルをsrcdir
からdstdir
にコピーします。- パラメータ:
srcdir -- オリジナル ファイルの基本フォルダ。
dstdir -- ファイルのコピー先フォルダ。
files -- コピーするファイルのリスト。
dryrun -- True ならコピーせずに結果のみログ出力。
- safe_print(text: str, fileobj=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, errors='backslashreplace')
値を
fileobj
へ安全に出力します。fileobj
にはencoding
メンバーおよびバイトを受け取るwrite
メソッドを持つbuffer
メンバーも必要です。- パラメータ:
text -- 出力するテキスト。
fileobj -- 出力する fileobj。
errors -- エラー処理方法。取り得る値については
str.encode()
を参照してください。
- class basetool.BaseTool