Skip to main content

MDTPlatform을 python 언어를 통해 활용할 수 있는 라이브러리를 제공한다.

Project description

mdtpy

MDT(Manufacturing Digital Twin) 플랫폼을 위한 Python 클라이언트 라이브러리. Asset Administration Shell(AAS) 표준을 기반으로 MDT Instance Manager 및 개별 FA³ST 인스턴스에 HTTP REST로 접근하는 API를 제공한다.

내부적으로 basyx-python-sdk를 사용해 AAS 모델(Property, SubmodelElementCollection, SubmodelElementList, File, Range, MultiLanguageProperty, Operation, TimeSeries 등)을 다룬다.

요구 사항

  • Python 3.10 이상
  • uv (의존성/빌드 관리)

설치

uv sync                  # 런타임 의존성
make install-dev         # 개발 의존성(pytest)까지 함께 설치

소스 레이아웃은 src/mdtpy/이며, src/가 Python path에 등록되어 있다 (.vscode/settings.json).

빠른 시작

import mdtpy

# 1. MDT Instance Manager에 접속
manager = mdtpy.connect("http://localhost:12985/instance-manager")

# 2. 인스턴스 가져오기 / 시작
instance = manager.instances['my_twin']
if not instance.is_running():
    instance.start()

# 3. 파라미터 읽기/쓰기
param = instance.parameters['Status']
print(param.read_value())
param.update_value('Running')

# 4. Operation 호출
op = instance.operations['Inspect']
result = op.invoke(Image=instance.parameters['UpperImage'])
op.output_arguments.update_value(result)

# 5. 시계열 데이터
ts = instance.timeseries['WelderAmpereLog'].timeseries()
df = ts.segments['Latest'].records_as_pandas()

상세 사용법은 doc/programming_guide.md 참조.

주요 모듈

모듈 역할
mdtpy.instance connect(), MDTInstanceManager, MDTInstance, 컬렉션, 폴러
mdtpy.reference ElementReference 추상화 (DefaultElementReference, LazyElementReference)
mdtpy.parameter MDTParameter, MDTParameterCollection
mdtpy.submodel SubmodelService, SubmodelServiceCollection, SubmodelElementCollection
mdtpy.operation OperationSubmodelService, Argument, ArgumentList
mdtpy.timeseries TimeSeriesService (pandas 통합)
mdtpy.value SME ↔ Python 값 ↔ 서버 wire JSON 변환
mdtpy.descriptor 불변 dataclass 디스크립터, semantic_id 기반 분류
mdtpy.aas_misc AAS wire 포맷 dataclass (Endpoint, OperationVariable 등)
mdtpy.fa3st 개별 FA³ST 인스턴스용 HTTP 헬퍼 (call_get/call_put/...)
mdtpy.http_client Instance Manager용 응답 파서, 공통 예외 변환
mdtpy.exceptions MDTException 계층
mdtpy.utils ISO 8601 / timedelta / SME→Python 변환 헬퍼
mdtpy.airflow Apache Airflow DAG 통합 (선택, 자동 import되지 않음)
mdtpy.basyx.serde basyx-python-sdk 직렬화 래퍼

개발

테스트 실행

make test              # 전체 pytest suite
make test-cov          # 커버리지 보고서 포함

또는 직접 실행:

uv run --env-file .env pytest tests/test_instance.py
uv run --env-file .env pytest tests/test_instance.py::TestMDTInstanceCollection -v

참고: ROS2(/opt/ros/humble/...)를 source한 셸에서는 시스템 launch_pytest 플러그인이 자동 로드되어 yaml 누락으로 충돌한다. Makefile.envPYTEST_DISABLE_PLUGIN_AUTOLOAD=1을 주입하여 이를 우회한다. ROS가 source되지 않은 셸이라면 uv run pytest만으로도 충분하다.

tests/ 폴더의 단위 테스트는 외부 서버 의존 없이 mock으로 동작한다 (300+ tests). src/samples/sample_*.py 스크립트들은 실서버 대상 사용 예제 / 스모크 테스트이므로 별도 환경에서 실행한다 (예: python src/samples/sample_reference.py).

코드 스타일

  • 코드 주석/docstring: 한국어 (평서문 "~한다")
  • 로깅/예외 메시지: 영어
  • import 순서: __future__typing → 표준 → 서드파티 → 로컬
  • 타입 힌트: built-in 우선 (list/dict/tuple), Optional[X] 권장
  • 들여쓰기: 4-space
  • 라인 길이: 100자 (신규 코드)

자세한 규칙과 아키텍처는 CLAUDE.md 참조.

빌드

uv build               # sdist + wheel을 dist/에 생성

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mdtpy-0.2.3.tar.gz (71.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mdtpy-0.2.3-py3-none-any.whl (46.1 kB view details)

Uploaded Python 3

File details

Details for the file mdtpy-0.2.3.tar.gz.

File metadata

  • Download URL: mdtpy-0.2.3.tar.gz
  • Upload date:
  • Size: 71.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for mdtpy-0.2.3.tar.gz
Algorithm Hash digest
SHA256 e78ad609ab2fd411dab95fd19c4dd82da0db2cb949714aead9d73216e25636cc
MD5 7fa0af87b897c37828115a82ba8ca65a
BLAKE2b-256 70a8acc32bfbf1038e3157708c425467d7a96ed3a1fc632880000babe1f2fee0

See more details on using hashes here.

File details

Details for the file mdtpy-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: mdtpy-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 46.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for mdtpy-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 14e913d03670e922f652691f67400ad8426d7d4d7060a117744f7c17bba80204
MD5 364bfd2e5428494bbca20333d76461df
BLAKE2b-256 2ad427c4ec4bfb1f8b5f2a6d47345c269450b18553df52a26d88054c658e322d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page