Files
MsgCenterPy/msgcenterpy/__init__.py
2025-10-01 15:40:46 +08:00

98 lines
2.5 KiB
Python

"""
MsgCenterPy - Unified Message Conversion System
A multi-format message conversion system supporting seamless conversion
between ROS2, Pydantic, Dataclass, JSON, Dict, YAML and JSON Schema.
"""
__version__ = "0.1.1"
__license__ = "Apache-2.0"
from msgcenterpy.core.envelope import MessageEnvelope, create_envelope
from msgcenterpy.core.field_accessor import FieldAccessor
from msgcenterpy.core.message_center import MessageCenter
# Core imports
from msgcenterpy.core.message_instance import MessageInstance
from msgcenterpy.core.type_converter import StandardType, TypeConverter
from msgcenterpy.core.type_info import ConstraintType, TypeInfo
from msgcenterpy.core.types import ConversionError, MessageType, ValidationError
# Always available instance
from msgcenterpy.instances.json_schema_instance import JSONSchemaMessageInstance
# Optional ROS2 instance (with graceful fallback)
try:
from msgcenterpy.instances.ros2_instance import ROS2MessageInstance
_HAS_ROS2 = True
except ImportError:
_HAS_ROS2 = False
# Convenience function
def get_message_center() -> MessageCenter:
"""Get the MessageCenter singleton instance."""
return MessageCenter.get_instance()
# Main exports
__all__ = [
# Version info
"__version__",
"__license__",
]
def get_version() -> str:
"""Get the current version of MsgCenterPy."""
return __version__
def get_package_info() -> dict:
"""Get package information."""
return {
"name": "msgcenterpy",
"version": __version__,
"description": "Unified message conversion system supporting ROS2, Pydantic, Dataclass, JSON, YAML, Dict, and JSON Schema inter-conversion",
"license": __license__,
"url": "https://github.com/ZGCA-Forge/MsgCenterPy",
"keywords": [
"message",
"conversion",
"ros2",
"pydantic",
"dataclass",
"json",
"yaml",
"mcp",
],
}
def check_dependencies() -> dict:
"""Check which optional dependencies are available."""
dependencies = {
"ros2": False,
"jsonschema": False,
}
# Check ROS2
try:
import rclpy # type: ignore
import rosidl_runtime_py # type: ignore
dependencies["ros2"] = True
except ImportError:
pass
# Check jsonschema
try:
import jsonschema # type: ignore
dependencies["jsonschema"] = True
except ImportError:
pass
return dependencies