Python の olca-ipc で、外部のデータを元にフローとプロセスの名前や説明を自動で書き換え、client.put で保存しています。
ところが名前や説明の変更がデータベースの変更として検出されず、LCA Collaboration Server にコミット・push できません。変更ありと扱わせるにはどうすればよいのでしょうか。
1 件の回答
データセットの変更は、バージョン番号で検出されます。 そこで、書き換えるときにバージョンも上げるのが一つの方法です。バージョンはエディタで MAJOR.MINOR.PATCH の形で見えます。
次の例は、フローを取得して名前を "test" に変え、バージョンの末尾を1つ上げて保存します。一部を LLM で生成し、テストしたうえで示されたコードです。バージョンが 00.00.000 の形でなければ ValueError で止まります。例はフロー(s.Flow)が対象です。FLOW_ID と名前 "test" は例の値なので、実行するときは自分のデータに合わせて置き換えてください。
import re
import olca_schema as s
from olca_ipc import Client
FLOW_ID = "a680e0c7-c362-4494-9618-7768cf274fb6"
def increment_version(version: str) -> str:
match = re.match(r"(\d{2})\.(\d{2})\.(\d{3})", version)
if not match:
raise ValueError("Invalid version format. Expected format: 00.00.000")
major, minor, revision = map(int, match.groups())
# Increment revision
revision += 1
if revision > 999:
revision = 0
minor += 1 # Increment minor if revision overflows
if minor > 99:
minor = 0
major += 1 # Increment major if minor overflows
return f"{major:02}.{minor:02}.{revision:03}"
client = Client()
process = client.get(s.Flow, FLOW_ID)
process.name = "test"
process.version = increment_version(process.version)
client.put(process)
print(client.get(s.Flow, FLOW_ID))参考にしたスレッド
