Report를 새 revision으로 저장하기
용도
report.save()는 report = px.Report(...)로 만든 Report 객체의 메서드입니다. Python에서 작성한 section, block, Connected Flow와 연결을 검증하고 새 .pxreport revision으로 저장합니다.
Report Workbench에서 보이는 것
Report Workbench의 Save와 같은 저장 경계입니다. 저장이 완료되면 새 revision이 Save history에 나타나고 Workbench, Python SDK와 AI가 같은 ReportDocument를 이어서 편집합니다.
문법
report.save() -> ReportRef예제
from pipelinexlab import px
client = px.Client(workspace="engineering", project="bridge_project")
report = px.Report("girder_report", title="Girder review")
basis = report.section("design_basis", title="Design basis")
basis.value("span", 12.0, unit="m")
report_ref = report.save()매개변수
report.save()는 별도 매개변수를 받지 않습니다. 새 Report는 Project를 추측하지 않도록 정확히 하나의 명시적 live px.Client가 먼저 있어야 하며 생성 시점의 빈 base를 사용합니다. Client가 없거나 둘 이상 열려 있으면 몇 개가 열려 있는지 함께 이름 있는 거부를 받습니다. 둘 이상이면 쓰지 않는 session을 닫거나 client.open_report(...)으로 열어 session을 지정합니다. 저장된 Report는 px.Report.open(...)이 만든 전용 Client session과 그 session이 고정한 base revision·generation을 precondition으로 사용합니다. report.close() 뒤에는 저장할 수 없습니다.
반환
ReportRef를 반환합니다. ref.revision_ref가 supervisor가 저장한 exact Report revisionRef 문자열이고, ref.report_key·ref.workspace·ref.project와 to_dict()를 함께 제공합니다.
규칙
- 저장 전에 section·value 등의 key, 값 type·unit, Table row key와 Flow input/result 연결을 검증합니다.
- 새 Report의 첫 저장은
report_search가 head 부재와 함께 돌려준firstSaveTarget만 사용하고, generation 0에서report_plan_change→report_apply_change를 실행합니다. - Apply 응답을 잃은 retry는 같은 commandId와 Plan을 다시 쓰고, 성공 뒤 새로 작성한 다음 save는 새 commandId를 씁니다.
- 같은 작성 과정에서 새
px.Flow객체를 연결했다면 Flow를 먼저 검증해.pxflowrevision을 만들고, Report connection이 그 revision을 가리키게 한 뒤.pxreport를 저장합니다. - Flow 검증이나 저장이 실패하면 Report revision도 만들지 않습니다.
- 저장 결과는
ReportDocument의 새.pxreportrevision입니다. - 저장 뒤 현재 Report의 기준은
.pxreportrevision이며 Python source는 작성 자동화로 유지됩니다. - Workbench 또는 AI가 먼저 새 revision을 저장했다면, Python에서 다시 저장할 때 그 사이의 변경과 충돌하는지 확인해 기존 변경을 보호합니다. 충돌한 save는 revision을 만들지 않습니다.
- 저장은 Flow 계산을 시작하지 않습니다.