본문으로 건너뛰기

열려 있는 Client로 Report 열기

용도

client.open_report(...)는 저장된 Report를 이 Client의 세션으로 열어 편집 handle을 반환합니다. 한 연결 안에서는 요청이 순서대로 하나씩(one-in-flight) 처리되고, supervisor는 여러 연결을 connection pool로 동시에 서비스합니다. Report를 같은 Client 세션에 바인딩해 다루려면, 자체 세션을 만드는 px.Report.open(...) 대신 이 메서드를 사용합니다.

문법

python
client.open_report(report_key: str, *, revision: str | None = None) -> Report

예제

python
with px.Client(workspace="engineering", project="bridge") as client:
    report = client.open_report("girder_report")
    report.section("appendix", title="Appendix")
    report.save()

매개변수

  • report_key — 열 Report의 semantic key.
  • revision — 열 exact revision. 생략하면 현재 head를 따릅니다.

반환

이 Client에 바인딩된 Report handle을 반환합니다.

규칙

  • 없는 Report와 revision은 이름 있는 거부를 받습니다.
  • 반환된 handle의 저장·페이지플랜·내보내기·미리보기는 전부 이 Client로 말합니다.
  • 이 Report는 Client를 빌려 씁니다. report.close()는 Client를 닫지 않으며, Client는 그것을 연 쪽에서 닫습니다.
  • report.close()with 블록 종료는 이 handle을 끝냅니다. 이후 저장을 시도하면 이름 있는 거부를 받으므로, 계속 편집하려면 Report를 다시 엽니다.

Run이 반영한 저장본 열기

계산 성공과 Report 반영 완료는 별개입니다. 반영된 정확한 리비전은 Run에서 확인합니다.

python
from pipelinexlab import px

with px.Client(workspace="engineering", project="bridge") as client:
    run = client.get_run("section_run")
    if run.projection.state == "applied":
        with client.open_report("section_report", revision=run.projection.report_revision_ref) as report:
            document = report.document()

이후에 최신 저장본이 추가되어도 revision을 지정한 호출은 해당 Run의 반영본을 엽니다. 다른 Project 소유의 Run을 현재 Project의 결과로 취급하지 않습니다.