パッケージマネージャーAPI

モジュール: typhoon.api.package_manager

パッケージマネージャーAPIには、Typhoonパッケージの操作、プログラムによる新規パッケージのインストール、既存パッケージのアンインストール/再インストールを行うための関数/メソッドのセットが含まれています。これは、テスト用スクリプトの作成や反復タスクの自動化に最もよく使用されますが、これらのユースケースに限定されるものではありません。

次の例は、パッケージ マネージャー API を使用する方法を示しています。

この例では、ディスクからパッケージをインストールし、インストールされているすべてのパッケージを一覧表示し、最後にそれらをアンインストールする方法を示します。

import os
sys.path.insert(0, os.path.split(os.path.abspath(os.path.join(os.path.realpath(__file__), '..','..', '..','..')))[0])
#
# Demonstrates the use of install, get_installed and uninstall functions
#
from typhoon.api.package_manager import package_manager as pkm

# First install a package
directory, __ = os.path.split(os.path.realpath(__file__))
package_path = os.path.join(directory, "package", "my_package.tpkg")
pkm.install_package(filename=package_path)

# Get all installed packages, and print them
all_packages = pkm.get_installed_packages()
print(f"All installed packages: {all_packages}")

# Cleanup
for package in all_packages:
    pkm.uninstall_package(package_name=package.package_name)

スクリプト出力:

インストールされているすべてのパッケージ: [Package('Example Package', '1.0.1')]

APIリファレンス

クラス PackageManagerAPI ( * args , ** kwargs )

クラスは、ユーザー パッケージを操作するためのメソッドを提供します。

create_example ( titlemodel_filepanel_fileoutput_pathtags = Nonedescription = ''image_file = ''app_note_file = ''tests = Nonetest_resources = Noneresources = None )

指定されたパラメータで例を作成し、output_pathに保存します。

パラメータ:
  • タイトル– タイトルの例

  • model_file – モデルファイルへのパス

  • panel_file – パネルファイルへのパス

  • output_path – 例を保存するパス

  • tags – 文字列タグのリスト

  • 説明– 説明の例

  • image_file – 画像ファイルへのパス

  • app_note_file – アプリケーションノートドキュメントへのパス

  • テスト– テストを表すファイルのリスト

  • test_resources – テストで使用されるリソースを表すファイルのリスト

  • リソース– リソースを表すファイルのリスト

昇給

PkmApiException

例:

#
# Demonstrates the use of get_installed_packages function
#
from typhoon.api.package_manager import package_manager as pkm
import os
import shutil

directory, __ = os.path.split(os.path.realpath(__file__))
root_folder = os.path.join(directory, "example_data")

title = "Example 3ph rectifier"
model_file = os.path.join(root_folder, "rectifier.tse")
panel_file = os.path.join(root_folder, "rectifier.cus")
output_path = os.path.join(root_folder, "output")
tags = ["rectifier", "example"]
description = "This example demonstrates a three-phase diode rectifier connected to the grid."
image_file = os.path.join(root_folder, "rectifier.svg")
app_note_file = os.path.join(root_folder, "rectifier.html")
tests = [os.path.join(root_folder, "example_tests")]
test_resources = []
resources = [os.path.join(root_folder, "data.json")]

try:
    example_path = pkm.create_example(
        title=title, model_file=model_file, panel_file=panel_file,
        output_path=output_path, tags=tags, description=description,
        image_file=image_file, app_note_file=app_note_file, tests=tests,
        test_resources=test_resources, resources=resources)
    print(f"1) Example successfully created at: "
          f"{os.path.relpath(example_path, root_folder)}")

except Exception as e:
    print(f"Exception occurred: {e}")
finally:
    print("2) Removing created example")
    if os.path.exists(output_path):
        shutil.rmtree(output_path)

出力

1) 例が次の場所に正常に作成されました: output\example 3ph rectifier 2) 作成された例を削除しています
create_package ( package_nameversionoutput_pathauthor = ''website = ''description = ''minimal_sw_version = ''library_paths = Noneresource_paths = Noneexample_paths = Noneadditional_files_paths = Nonepython_packages_paths = Nonedocumentation_paths = Nonedocumentation_landing_page = ''release_notes_path = ''icon_path = '' )

指定されたパラメータでパッケージを作成し、output_pathに保存します。

パラメータ:
  • package_name – パッケージ名

  • バージョン– パッケージのバージョン

  • output_path – パッケージを保存するパス。ディレクトリパスを指定した場合、パッケージ名は「package_name - version.tpkg」になります。ファイルパスを指定した場合、拡張子は.tpkgである必要があります。

  • author – パッケージの作成者

  • ウェブサイト– パッケージ作成者のウェブサイト

  • 説明– パッケージの説明

  • minimal_sw_version – パッケージがサポートされているソフトウェアの最小バージョン

  • library_paths – ライブラリを表すパスのリスト(ディレクトリ/ファイル)

  • resource_paths – ライブラリリソース(ディレクトリ/ファイル)を表すパスのリスト

  • example_paths – サンプルディレクトリを表すパスのリスト

  • additional_files_paths – 追加ファイル(ディレクトリ/ファイル)を表すパスのリスト

  • python_packages_paths – Python パッケージを表すパスのリスト(ディレクトリ/ファイル)

  • documentation_paths – パッケージのドキュメントを表すパスのリスト(ディレクトリ/ファイル)

  • documentation_landing_page – ドキュメントのランディングページ(documentation_pathsに含める必要があります)

  • release_notes_path – リリースノートファイルへのパス (html、pdf など)

  • icon_path – パッケージアイコンファイルへのパス(svg、png、jpg、bmpなど)

昇給

PkmApiException

例:

#
# Demonstrates the use of get_installed_packages function
#
from typhoon.api.package_manager import package_manager as pkm
import os
import shutil

directory, __ = os.path.split(os.path.realpath(__file__))
root_folder = os.path.join(directory, "package_data")

package_name = "An example package"
version = "1.0.5"
author = "Typhoon HIL"
author_website = "typhoon-hil.com"
description = "An example package demonstrating API functionality."
library_paths = [os.path.join(root_folder, "libs")]
resource_paths = []
example_paths = [os.path.join(root_folder, "examples")]
additional_files_paths = [os.path.join(root_folder, "additional.txt")]
documentation_paths = [
    os.path.join(root_folder, "documentation")
]
documentation_landing_page = os.path.join(root_folder, "documentation",
                                          "index.html")
release_notes_path = os.path.join(root_folder, "release_notes.html")

icon_path = os.path.join(root_folder, "icon.svg")

python_packages_paths = []

output_path = os.path.join(root_folder, "output")

try:
    package_path = pkm.create_package(
        package_name=package_name, version=version, output_path=output_path,
        author=author, website=author_website, description=description,
        library_paths=library_paths, resource_paths=resource_paths,
        example_paths=example_paths,
        additional_files_paths=additional_files_paths,
        python_packages_paths=python_packages_paths,
        documentation_paths=documentation_paths,
        documentation_landing_page=documentation_landing_page,
        release_notes_path=release_notes_path,
        icon_path=icon_path)

    print(f"1) Package successfully created at: "
          f"{os.path.relpath(package_path, root_folder)}")

    print("2) Installing created package")
    pkm.install_package(filename=package_path)
    print("3) Successfully installed package")

    # Get all installed packages, and print them
    all_packages = pkm.get_installed_packages()
    print(f"4) All installed packages: {all_packages}")

    # Cleanup
    print("5) Uninstalling packages")
    for package in all_packages:
        pkm.uninstall_package(package_name=package.package_name)

except Exception as e:
    print(f"Exception occurred: {e}")
finally:
    print("6) Removing created package")
    if os.path.exists(output_path):
        shutil.rmtree(output_path)

出力

1) パッケージが次の場所に正常に作成されました: output\an example package.tpkg 2) 作成されたパッケージをインストールしています 3) パッケージが正常にインストールされました 4) すべてのパッケージがインストールされています: [Package('An example package', '1.0.5')] 5) パッケージをアンインストールしています 6) 作成されたパッケージを削除しています
download_package ( output_path , package_name , version = 'latest' )

パッケージ マーケットプレイスで利用可能なパッケージに対して反復可能なものを返します。

パラメータ:
  • output_path ( str ) – ダウンロードしたパッケージの出力ディレクトリ/ファイルパス。ファイルを指定する場合、拡張子は.tpkgである必要があります。拡張子が.tpkgでない場合は、[package_name]-[version].tpkgという形式になります。

  • package_name ( str ) – ダウンロードするパッケージの名前。

  • version ( str ) – パッケージのバージョン。文字列「latest」は

  • パッケージ。最新バージョン

戻り値:

ダウンロードしたパッケージの文字列ファイルパス

昇給

PkmApiException

例:

#
# Demonstrates the use of download_package function
#
from typhoon.api.package_manager import package_manager as pkm

# Get all installed packages
all_packages = pkm.get_installed_packages()
print(f"All installed packages: {all_packages}")

# First download a package
directory, __ = os.path.split(os.path.realpath(__file__))
packages_directory = os.path.join(directory, "package")
opendss_path = pkm.download_package(output_path=packages_directory, package_name="OpenDSS")

# Then install a package
pkm.install_package(filename=opendss_path)

# Get all installed packages
all_packages = pkm.get_installed_packages()
print(f"All installed packages: {all_packages}")

# Cleanup
for package in all_packages:
    pkm.uninstall_package(package_name=package.package_name)

出力

インストールされているすべてのパッケージ: [] インストールされているすべてのパッケージ: [Package('OpenDSS', '0.5.0')]
get_available_packages (最新バージョン= True )

パッケージ マーケットプレイスで利用可能なパッケージに対して反復可能なものを返します。

パラメータ:
  • Latest_version ( bool ) – trueの場合、最新バージョンのみを返します。

  • それ以外の場合パッケージ

  • バージョンそれぞれオブジェクトを返す

  • ご利用いただけます。パッケージの

戻り値:

利用可能なパッケージ (パッケージ) を反復処理します。

例:

#
# Demonstrates the use of get_available_packages function
#
from typhoon.api.package_manager import package_manager as pkm

# Get all available packages (only latest versions)
all_packages = pkm.get_available_packages()
print(f"All available packages (only latest versions): {all_packages}")

# Get all available packages (all versions)
all_packages = pkm.get_available_packages(latest_version=False)
print(f"All available packages (all versions): {all_packages}")

出力

利用可能なすべてのパッケージ(最新バージョンのみ): [Package('AIT HIL Controller', '1.0.1'), Package('Danfoss MyDrive HIL', '4.0.0'), Package('EV charging twin', '0.3.0'), Package('EVSE generic with OCPP in SCADA', '0.0.1'), Package('Energetic Macroscopic Representation', '0.1.0'), Package('HIL Academy Course - Digital Control of Grid-Tied Converters', '1.0.6'), Package('IEEE 34 node islanding with Artificial Neural Network', '0.2.0'), Package('Machine Electrical Parameter Estimator', '1.0.0'), Package('OpenDSS', '0.5.0'), Package('OpenDSS and Typhoon HIL co-simulation', '0.2.0'),パッケージ('住宅エネルギー', '0.1.1'), パッケージ('TI C2000 ツールボックス', '0.1.6'), パッケージ('TMS320F2808 サンプルモデル', '0.1.0'), パッケージ('Woodward easYgen 3500XT HIL互換', '1.0.2'), パッケージ('Xyce', '0.4.0')] 利用可能なすべてのパッケージ(すべてのバージョン): [パッケージ('AIT HILコントローラ', '1.0.1'), パッケージ('Danfoss MyDrive HIL', '4.0.0'), パッケージ('EV充電ツイン', '0.3.0'), パッケージ('SCADAのOCPPを備えたEVSEジェネリック', '0.0.1'), パッケージ('エネルギーマクロスコピック表現', '0.1.0'), パッケージ('HILアカデミーコース - デジタル制御グリッドタイドコンバータ', '1.0.6'), パッケージ('IEEE 34ノードアイランド化と人工ニューラルネットワーク', '0.2.0'), パッケージ('機械電気パラメータ推定器', '1.0.0'), パッケージ('OpenDSS', '0.5.0'), パッケージ('OpenDSSとTyphoon HILの協調シミュレーション', '0.2.0'), パッケージ('住宅エネルギー', '0.1.1'), パッケージ('TI C2000ツールボックス', '0.1.5'), パッケージ('TI C2000ツールボックス', '0.1.6'), パッケージ('TMS320F2808サンプルモデル', '0.1.0'), パッケージ('Woodward easYgen 3500XT HIL互換', '1.0.2'), パッケージ('Xyce', '0.4.0')]
get_installed_packages ( )

インストールされたパッケージに対して反復可能なものを返します。

戻り値:

インストールされたパッケージ (パッケージ) を反復処理します。

例:

#
# Demonstrates the use of the get_installed_packages function
#
from typhoon.api.package_manager import package_manager as pkm

# First install a package
directory, __ = os.path.split(os.path.realpath(__file__))
package_path = os.path.join(directory, "package", "my_package.tpkg")
pkm.install_package(filename=package_path)

# Get all installed packages
all_packages = pkm.get_installed_packages()
print(f"All installed packages: {all_packages}")

# Cleanup
all_packages = pkm.get_installed_packages()
for package in all_packages:
    pkm.uninstall_package(package_name=package.package_name)

出力

インストールされているすべてのパッケージ: [Package('Example Package', '1.0.1')]
get_modified_packages ( )

インストールされたパッケージの整合性をチェックします。変更されたパッケージに対して反復可能なオブジェクトを返します。

戻り値:

変更されたパッケージ (パッケージ) に対して反復可能。

例:

#
# Demonstrates the use of get_modified_packages function
#
from typhoon.api.package_manager import package_manager as pkm
from typhoon.env_api import env_api
import shutil

# First install a package
directory, __ = os.path.split(os.path.realpath(__file__))
package_path = os.path.join(directory, "package", "my_package.tpkg")
pkm.install_package(filename=package_path)

# Validate no packages are modified prior to modification
print(f"Modified packages before modification: {pkm.get_modified_packages()}")

# Modify installed package
package_examples_path = env_api.get_pkm_examples_path()
shutil.rmtree(os.path.join(package_examples_path, "Example Package", "models", "Complex system"))

# Find modified packages after modification
print(f"Modified packages after modification: {pkm.get_modified_packages()}")

# Cleanup
all_packages = pkm.get_installed_packages()
for package in all_packages:
    pkm.uninstall_package(package_name=package.package_name)

出力

変更前の変更済みパッケージ: [] 変更後の変更済みパッケージ: [Package('Example Package', '1.0.1')]
install_package (ファイル名)

パラメータで指定されたファイル名にあるパッケージをインストールします。

パラメータ:

ファイル名– パッケージが配置されているファイル名。

昇給

PkmApiException

例:

#
# Demonstrates the use of install_package function
#
from typhoon.api.package_manager import package_manager as pkm

# Get all installed packages
all_packages = pkm.get_installed_packages()
print(f"All installed packages: {all_packages}")

# First install a package
directory, __ = os.path.split(os.path.realpath(__file__))
package_path = os.path.join(directory, "package", "my_package.tpkg")
pkm.install_package(filename=package_path)

# Get all installed packages
all_packages = pkm.get_installed_packages()
print(f"All installed packages: {all_packages}")

# Cleanup
for package in all_packages:
    pkm.uninstall_package(package_name=package.package_name)

出力

インストールされているすべてのパッケージ: [] インストールされているすべてのパッケージ: [Package('Example Package', '1.0.1')]
reinstall_package (パッケージ名)

パラメータ package_name で指定された名前でパッケージを再インストールします。

パラメータ:

package_name – 再インストールするパッケージの名前。

昇給

PkmApiException

例:

#
# Demonstrates the use of the reinstall_package function
#
from typhoon.api.package_manager import package_manager as pkm
from typhoon.env_api import env_api
import shutil

# First install a package
directory, __ = os.path.split(os.path.realpath(__file__))
package_path = os.path.join(directory, "package", "my_package.tpkg")
pkm.install_package(filename=package_path)

# Validate no packages are modified prior to modification
print(f"Modified packages before modification: {pkm.get_modified_packages()}")

# Modify installed package
package_examples_path = env_api.get_pkm_examples_path()
shutil.rmtree(os.path.join(package_examples_path, "Example Package", "models", "Complex system"))

# Find modified packages after modification
print(f"Modified packages after modification: {pkm.get_modified_packages()}")

# Reinstall package
for package in pkm.get_modified_packages():
    pkm.reinstall_package(package_name=package.package_name)

# Find modified packages after reinstall
print(f"Modified packages after reinstall: {pkm.get_modified_packages()}")

# Cleanup
all_packages = pkm.get_installed_packages()
for package in all_packages:
    pkm.uninstall_package(package_name=package.package_name)

出力

変更前に変更されたパッケージ: [] 変更後に変更されたパッケージ: [Package('Example Package', '1.0.1')] 再インストール後に変更されたパッケージ: []
uninstall_package (パッケージ名)

パラメータ package_name で指定された名前でパッケージをアンインストールします。

パラメータ:

package_name – アンインストールするパッケージの名前。

昇給

PkmApiException

例:

#
# Demonstrates the use of uninstall_package function
#
from typhoon.api.package_manager import package_manager as pkm

# First install a package
directory, __ = os.path.split(os.path.realpath(__file__))
package_path = os.path.join(directory, "package", "my_package.tpkg")
pkm.install_package(filename=package_path)

# Get all installed packages
all_packages = pkm.get_installed_packages()
print(f"All installed packages: {all_packages}")

# Cleanup
for package in all_packages:
    pkm.uninstall_package(package_name=package.package_name)

# Get all installed packages
all_packages = pkm.get_installed_packages()
print(f"All installed packages after uninstall: {all_packages}")

出力

インストールされているすべてのパッケージ: [Package('Example Package', '1.0.1')] アンインストール後にインストールされているすべてのパッケージ: []
validate_package (ファイル名)

パラメータで指定されたファイル名にあるパッケージを検証します。

パラメータ:

ファイル名– パッケージが配置されているファイル名。

昇給

PkmApiException

例:

# #validate_package関数の使用方法を示します typhoon.api.package_manager package_managerpkmとしてインポートする typhoon.api.package_manager.exception import PkmApiException #まずパッケージディレクトリインストールします __ = os.path.split ( os.path.realpath ( __ file__ ) ) package_path = os.path.join ( directory , " package " , " my_package.tpkg " ) try : pkm.validate_package ( filename = package_path ) print ( "パッケージ有効です" ) except PkmApiException as exc : print ( exc )

出力

パッケージは有効です