stbkit.api¶
api ¶
stbkitの基本機能をまとめたAPI
ST-Bridgeファイルの読み書き、バージョンアップ、他形式への変換を提供します。 バージョンごとのデータモデルはstb_latest、stb_v2_0_2、stb_v2_1_1から利用してください。
読み込みは、ファイルのバージョンをそのまま扱うload・loadsと、 読み込んでから最新版へ変換するload_latest・loads_latestがあります。
IFCへの変換を利用する場合はifcopenshellのインストールが必要です。
StBridgeElement ¶
StBridgeElement()
ST-Bridgeのすべての要素の基底クラス
属性はxxxとxxx_or_noneの2つのプロパティでアクセスできます。
xxxはNoneのときNoneAccessErrorを投げます。
Noneの時はNoneを返してほしい場合はxxx_or_noneを使用します。
ソースコード位置: python/stbkit-core/src/stbkit/core/data_model/common.py
311 312 313 | |
ensure
property
¶
ensure: _EnsureAccessorProtocol
子要素がNoneの場合、生成してからアクセスできるアクセサ。
element.ensure.xxx()の形で呼び出すと、子要素xxxがNoneの場合に インスタンスを新規作成し設定してから返します。 Noneでない場合はそのまま返します。
戻り値:
| 名前 | タイプ | デスクリプション |
|---|---|---|
_EnsureAccessorProtocol |
_EnsureAccessorProtocol
|
子要素生成アクセサ。属性名と戻り値の型は、 |
_EnsureAccessorProtocol
|
バージョンごとの型スタブが与えます。 |
例:
>>> members = stb.ensure.stb_model().ensure.stb_members()
StBridgeRoot ¶
StBridgeRoot()
Bases: StBridgeElement
ST-Bridgeのルート要素ST_BRIDGEの基底クラス。
バージョンごとのStBridgeクラスがこのクラスを継承する。 load,dump等のバージョンを問わず利用する関数の型ヒントではこのクラスを用いる。
ソースコード位置: python/stbkit-core/src/stbkit/core/data_model/common.py
311 312 313 | |
ensure
property
¶
ensure: _EnsureAccessorProtocol
子要素がNoneの場合、生成してからアクセスできるアクセサ。
element.ensure.xxx()の形で呼び出すと、子要素xxxがNoneの場合に インスタンスを新規作成し設定してから返します。 Noneでない場合はそのまま返します。
戻り値:
| 名前 | タイプ | デスクリプション |
|---|---|---|
_EnsureAccessorProtocol |
_EnsureAccessorProtocol
|
子要素生成アクセサ。属性名と戻り値の型は、 |
_EnsureAccessorProtocol
|
バージョンごとの型スタブが与えます。 |
例:
>>> members = stb.ensure.stb_model().ensure.stb_members()
version
property
¶
version: str
ST-Bridgeのバージョン。
戻り値:
| 名前 | タイプ | デスクリプション |
|---|---|---|
str |
str
|
"2.1.0"のようなバージョン文字列。 |
発生:
| タイプ | デスクリプション |
|---|---|
NotImplementedError
|
サブクラスではなく、この基底クラスのまま参照した場合。 |
NoneAccessError ¶
NoneAccessError(*, element: StBridgeElement, attr_name: str)
Bases: StbError, AttributeError
アクセスした属性がNoneである例外
通常プロパティは値がNoneのときにこの例外を投げます。 Noneを許容して取得する場合は_or_noneプロパティを使用します。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
element
|
StBridgeElement
|
アクセスされた要素。 |
必須 |
attr_name
|
str
|
アクセスされた属性名(Pythonでの名前)。 |
必須 |
ソースコード位置: python/stbkit-core/src/stbkit/core/stb_exceptions.py
40 41 42 | |
dump ¶
dump(stb: StBridgeRoot, fp: TextIO, *, app_name: str | None = None, app_version: str | None = None, logger: Logger | None = None, reporter: Reporter | None = None) -> None
ST-Bridgeのデータモデルを、テキストストリームへXMLとして書き出します。
dumpsのファイル書き込み版です。 ファイルへ保存する場合は、utf-8で開いたストリームを渡してください。
注意
- ファイルへ書き出す前に、ST-Bridgeのデータモデルが 仕様に準拠しているか検証します。 スキーマ違反がある場合はSchemaErrorが発生します。
- 出力時にversionフィールドおよびStbCommonのapp_name, app_versionフィールドが、 stbのインスタンスに自動的に設定されます。 app_nameやapp_versionを指定した場合はStbCommonの convert_app_name, convert_app_versionフィールドも自動的に設定されます。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
stb
|
StBridgeRoot
|
出力するST-Bridgeのルート要素 |
必須 |
fp
|
TextIO
|
書き込み先のテキストストリーム |
必須 |
app_name
|
str | None
|
StbCommonのapp_nameに記載するアプリケーション名 |
None
|
app_version
|
str | None
|
StbCommonのapp_versionに記載するバージョン番号 |
None
|
logger
|
Logger | None
|
出力先Logger |
None
|
reporter
|
Reporter | None
|
出力先Reporter |
None
|
発生:
| タイプ | デスクリプション |
|---|---|
SchemaError
|
スキーマ検証に違反した場合、または必須属性がNoneや空文字列の場合。 |
TypeError
|
子要素のリストにStBridgeElement以外の値が含まれる場合。 |
RuntimeError
|
フィールド定義から想定できない属性が含まれる場合。 |
OSError
|
fpへの書き込みに失敗した場合。 |
UnicodeEncodeError
|
fpのエンコーディングで表現できない文字が含まれる場合。 |
ValueError
|
fpのencodingがUTF-8でない場合。 |
例:
>>> import stbkit.api
>>> with open("model.stb", "w", encoding="utf-8") as f:
... stbkit.api.dump(stb, f)
ソースコード位置: python/stbkit-core/src/stbkit/core/stb_io/_internal/xml_io.py
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | |
dumps ¶
dumps(stb: StBridgeRoot, *, app_name: str | None = None, app_version: str | None = None, logger: Logger | None = None, reporter: Reporter | None = None) -> str
ST-BridgeのデータモデルをXML文字列へ出力します。
注意
- 文字列へ書き出す前に、ST-Bridgeのデータモデルが 仕様に準拠しているか検証します。 スキーマ違反がある場合はSchemaErrorが発生します。
- 出力時にversionフィールドおよびStbCommonのapp_name, app_versionフィールドが、 stbのインスタンスに自動的に設定されます。 app_nameやapp_versionを指定した場合はStbCommonの convert_app_name, convert_app_versionフィールドも自動的に設定されます。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
stb
|
StBridgeRoot
|
出力するST-Bridgeのルート要素 |
必須 |
app_name
|
str | None
|
StbCommonのapp_nameに記載するアプリケーション名 |
None
|
app_version
|
str | None
|
StbCommonのapp_versionに記載するバージョン番号 |
None
|
logger
|
Logger | None
|
出力先Logger |
None
|
reporter
|
Reporter | None
|
出力先Reporter |
None
|
戻り値:
| 名前 | タイプ | デスクリプション |
|---|---|---|
str |
str
|
XML宣言を含むST-BridgeのXML文字列。 |
発生:
| タイプ | デスクリプション |
|---|---|
SchemaError
|
スキーマ違反がある場合。 |
TypeError
|
子要素のリストにStBridgeElement以外の値が含まれる場合。 |
RuntimeError
|
フィールド定義から想定できない属性が含まれる場合。 |
例:
>>> import stbkit.api
>>> xml = stbkit.api.dumps(stb)
ソースコード位置: python/stbkit-core/src/stbkit/core/stb_io/_internal/xml_io.py
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | |
load ¶
load(fp: TextSource, *, version: Literal['2.0.0'], encoding: str | None = None, max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridge
load(fp: TextSource, *, version: Literal['2.0.1'], encoding: str | None = None, max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridge
load(fp: TextSource, *, version: Literal['2.0.2'], encoding: str | None = None, max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridge
load(fp: TextSource, *, version: Literal['2.1.0'], encoding: str | None = None, max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridge
load(fp: TextSource, *, version: Literal['2.1.1'], encoding: str | None = None, max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridge
load(fp: TextSource, *, version: None = None, encoding: str | None = None, max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridgeRoot
load(fp: TextSource, *, version: StbVersion | None = None, encoding: str | None = None, max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridgeRoot
ST-Bridgeファイルをデータモデルへ読み込みます。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
fp
|
TextSource
|
読み込むファイルのパス、または開いたテキストストリーム。 |
必須 |
version
|
StbVersion | None
|
読み込むST-Bridgeのバージョン。 Noneの場合は自動で適切に判定します。 指定した場合は、強制的に指定したバージョンで読み込みます。 |
None
|
encoding
|
str | None
|
ファイルのエンコーディング。 Noneの場合は自動判定し、判定できない場合はUTF-8を使用します。 fpがストリームの場合は無視します。 |
None
|
max_size
|
int
|
読み込むサイズの上限。超えた場合は読み込みを中止します。 |
DEFAULT_MAX_XML_SIZE
|
max_depth
|
int
|
要素の階層の上限。超えた場合は読み込みを中止します。 |
DEFAULT_MAX_XML_DEPTH
|
logger
|
Logger | None
|
出力先Logger。 |
None
|
reporter
|
Reporter | None
|
出力先Reporter。 |
None
|
戻り値:
| 名前 | タイプ | デスクリプション |
|---|---|---|
StBridgeRoot |
StBridgeRoot
|
読み込んだST-Bridgeのルート要素。 versionを指定した場合は、そのバージョンのStBridgeを返します。 |
発生:
| タイプ | デスクリプション |
|---|---|
OSError
|
ファイルを開けない場合。 存在しない場合はサブクラスのFileNotFoundErrorを投げます。 |
LookupError
|
encodingに未知のエンコーディング名を指定した場合。 |
UnicodeDecodeError
|
デコードできない場合。 |
UnsafeXmlError
|
DOCTYPE宣言が含まれる場合。 |
XmlLimitExceededError
|
max_sizeまたはmax_depthを超えた場合。 |
SchemaError
|
versionを省略したときにversionが取得できなかった場合。 |
UnsupportedStbVersionError
|
対応していないバージョンの場合。 |
ParseError
|
XMLとして解析できない場合。 |
例:
>>> import stbkit.api
>>> stb = stbkit.api.load("model.stb")
ソースコード位置: python/stbkit-core/src/stbkit/core/stb_io/_internal/xml_io.py
352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 | |
loads ¶
loads(s: str, *, version: Literal['2.0.0'], max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridge
loads(s: str, *, version: Literal['2.0.1'], max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridge
loads(s: str, *, version: Literal['2.0.2'], max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridge
loads(s: str, *, version: Literal['2.1.0'], max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridge
loads(s: str, *, version: Literal['2.1.1'], max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridge
loads(s: str, *, version: None = None, max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridgeRoot
loads(s: str, *, version: StbVersion | None = None, max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridgeRoot
XML文字列をST-Bridgeのデータモデルへ読み込みます。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
s
|
str
|
読み込むST-BridgeのXML文字列。 |
必須 |
version
|
StbVersion | None
|
読み込むST-Bridgeのバージョン。 Noneの場合は自動で適切に判定します。 指定した場合は、強制的に指定したバージョンで読み込みます。 |
None
|
max_size
|
int
|
読み込む文字数の上限。超えた場合は読み込みを中止します。 |
DEFAULT_MAX_XML_SIZE
|
max_depth
|
int
|
要素の階層の上限。超えた場合は読み込みを中止します。 |
DEFAULT_MAX_XML_DEPTH
|
logger
|
Logger | None
|
出力先Logger。 |
None
|
reporter
|
Reporter | None
|
出力先Reporter。 |
None
|
戻り値:
| 名前 | タイプ | デスクリプション |
|---|---|---|
StBridgeRoot |
StBridgeRoot
|
読み込んだST-Bridgeのルート要素。 versionを指定した場合は、そのバージョンのStBridgeを返します。 |
発生:
| タイプ | デスクリプション |
|---|---|
UnsafeXmlError
|
DOCTYPE宣言が含まれる場合。 |
XmlLimitExceededError
|
max_sizeまたはmax_depthを超えた場合。 |
SchemaError
|
versionを省略したときにversionが取得できなかった場合。 |
UnsupportedStbVersionError
|
対応していないバージョンの場合。 |
ParseError
|
XMLとして解析できない場合。 |
例:
>>> import stbkit.api
>>> stb = stbkit.api.loads(xml_text)
ソースコード位置: python/stbkit-core/src/stbkit/core/stb_io/_internal/xml_io.py
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 | |
load_latest ¶
load_latest(fp: TextSource, *, encoding: str | None = None, max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridge
ST-Bridgeファイルを読み込み、最新版のデータモデルへ変換して返します。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
fp
|
TextSource
|
読み込むファイルのパス、または開いたテキストストリーム。 |
必須 |
encoding
|
str | None
|
ファイルのエンコーディング。 Noneの場合は自動判定し、判定できない場合はUTF-8を使用します。 fpがストリームの場合は無視します。 |
None
|
max_size
|
int
|
読み込むサイズの上限。超えた場合は読み込みを中止します。 |
DEFAULT_MAX_XML_SIZE
|
max_depth
|
int
|
要素の階層の上限。超えた場合は読み込みを中止します。 |
DEFAULT_MAX_XML_DEPTH
|
logger
|
Logger | None
|
出力先Logger。 |
None
|
reporter
|
Reporter | None
|
出力先Reporter。 |
None
|
戻り値:
| 名前 | タイプ | デスクリプション |
|---|---|---|
StBridge |
StBridge
|
最新版のST-Bridgeのルート要素。 |
発生:
| タイプ | デスクリプション |
|---|---|
OSError
|
ファイルを開けない場合。 存在しない場合はサブクラスのFileNotFoundErrorを投げます。 |
LookupError
|
encodingに未知のエンコーディング名を指定した場合。 |
UnicodeDecodeError
|
デコードできない場合。 |
UnsafeXmlError
|
DOCTYPE宣言が含まれる場合。 |
XmlLimitExceededError
|
max_sizeまたはmax_depthを超えた場合。 |
SchemaError
|
versionを省略したときにversionが取得できなかった場合。 |
UnsupportedStbVersionError
|
対応していないバージョンの場合。 |
ParseError
|
XMLとして解析できない場合。 |
例:
>>> import stbkit.api
>>> stb = stbkit.api.load_latest("model.stb")
ソースコード位置: python/stbkit/src/stbkit/tools/_internal/stb_io.py
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | |
loads_latest ¶
loads_latest(s: str, *, max_size: int = DEFAULT_MAX_XML_SIZE, max_depth: int = DEFAULT_MAX_XML_DEPTH, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridge
XML文字列をST-Bridgeのデータモデルへ読み込み、最新版のデータモデルへ変換して返します。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
s
|
str
|
読み込むST-BridgeのXML文字列。 |
必須 |
max_size
|
int
|
読み込む文字数の上限。超えた場合は読み込みを中止します。 |
DEFAULT_MAX_XML_SIZE
|
max_depth
|
int
|
要素の階層の上限。超えた場合は読み込みを中止します。 |
DEFAULT_MAX_XML_DEPTH
|
logger
|
Logger | None
|
出力先Logger。 |
None
|
reporter
|
Reporter | None
|
出力先Reporter。 |
None
|
戻り値:
| 名前 | タイプ | デスクリプション |
|---|---|---|
StBridgeRoot |
StBridge
|
最新版のST-Bridgeのルート要素。 |
発生:
| タイプ | デスクリプション |
|---|---|
UnsafeXmlError
|
DOCTYPE宣言が含まれる場合。 |
XmlLimitExceededError
|
max_sizeまたはmax_depthを超えた場合。 |
SchemaError
|
versionを省略したときにversionが取得できなかった場合。 |
UnsupportedStbVersionError
|
対応していないバージョンの場合。 |
ParseError
|
XMLとして解析できない場合。 |
例:
>>> import stbkit.api
>>> stb = stbkit.api.loads_latest(xml_text)
ソースコード位置: python/stbkit/src/stbkit/tools/_internal/stb_io.py
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | |
to_ifc ¶
to_ifc(stb: StBridgeRoot, *, logger: Logger | None = None, reporter: Reporter | None = None) -> file
ST-BridgeをIFCへ変換します。
この関数を利用するためにはifcopenshellが必要です。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
stb
|
StBridgeRoot
|
ST-Bridgeモデル |
必須 |
logger
|
Logger | None
|
出力用のLogger。 |
None
|
reporter
|
Reporter | None
|
出力用のReporter。 |
None
|
戻り値:
| タイプ | デスクリプション |
|---|---|
file
|
ifcopenshell.file: 生成されたIFCモデル |
ソースコード位置: python/stbkit/src/stbkit/tools/converters/__init__.py
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | |
upgrade_to_latest ¶
upgrade_to_latest(stb: StBridgeRoot, *, logger: Logger | None = None, reporter: Reporter | None = None) -> StBridge
ST-Bridgeモデルをstbkitが対応する最新版へ変換します。
既に最新版の場合は、変換せず同じインスタンスをそのまま返します。 変換後のモデルはバリデーションを行い、結果をreporterへ記録します。
変換が実装されていない要素や属性があっても例外にせず、reporterへ記録して変換を続けます。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
stb
|
StBridgeRoot
|
変換元のST-Bridgeのルート要素。 |
必須 |
logger
|
Logger | None
|
出力先Logger |
None
|
reporter
|
Reporter | None
|
出力先Reporter。 |
None
|
戻り値:
| タイプ | デスクリプション |
|---|---|
StBridge
|
stb_latest.StBridge: 最新版のST-Bridgeのルート要素。 |
発生:
| タイプ | デスクリプション |
|---|---|
UnsupportedStbVersionError
|
対応していないバージョンのモデルを渡した場合。 |
TypeError
|
バージョン変換に失敗した場合。 |
例:
>>> import stbkit.api
>>> stb = stbkit.api.upgrade_to_latest(stbkit.api.load("model_v2_0_1.stb"))
ソースコード位置: python/stbkit/src/stbkit/tools/upgrade/_internal/upgrade.py
218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 | |