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 setcurdir(path: str)

設定されていない場合 CURDIR を設定する。

バージョン 1.39.0 で非推奨: 変数 CURDIR は使い方が曖昧です。

static setrootdir(path: str)

まだ設定されていない場合は GENVID_SDK_FOLDERGENVID_SDK_FOLDER を設定します。

static setbasescript(path: str)

CURDIRpath を設定し、 GENVID_SDK_FOLDER にその親(まだ設定されていない場合)を設定します。

別のパスに GENVID_SDK_FOLDER を設定するには、先に setrootdir を呼び出す必要があります。

static setdefault(name: str, value: str)

まだ設定されていない場合、name という環境変数を value に設定し、その値を返す。

static delenv(name: str)
classmethod merge_dict(source: dict, destination: dict) dict

2 つの辞書をマージする。

destination は、 source の要素を入れ替えて変更します。 sourcedict が値として含まれている場合、 merge はその値で再帰検索を行います (destinationdict でない場合はエラーになる可能性があります)。

パラメータ
  • 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 を渡し、 checkshell のデフォルト値を True に設定する subprocess.run() のラッパー。

バージョン 1.15.0 で変更: スタティックメソッドではなく、メソッド。

pyrun(*args, **kwargs)

現在の python バージョンを使用して python スクリプトを実行する。

以下のコマンドとほぼ同じです。

run("python", *args, **kwargs)

存在する場合のみ、ファイルのリンクを解除。

バージョン 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 秒間ファイルの削除を再試行するデフォルトのハンドラーが与えられます。

static remove_readonly(func, path, excinfo)

Windows の読み取り専用ファイルの削除を助ける rmtree() のヘルパー。

install_file(src: Union[str, Path], dst: Union[str, Path], mode=420, uid=-1, gid=-1, backup=False)

ファイル srcdst にコピーして権限を変更する。

パラメータ
  • 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 を使用します。

例外
戻り値

インストールされている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)

optionscommand を実行する。

このメソッドはオーバーライドする必要があります。

パラメータ
  • 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

genvid.toolbox.BaseTool の実装