Source code for sim2l.definition.metadata

# @package    sim2l library
# @copyright  Copyright (c) 2005-2026 Purdue University.
# @license    http://opensource.org/licenses/MIT MIT

"""Simulation metadata handling"""

from typing import List, Optional
from datetime import datetime


[docs] class SimulationMetadata: """Metadata for a simulation"""
[docs] def __init__( self, name: str, version: str, description: str = "", author: str = "", tags: Optional[List[str]] = None, dependencies: Optional[List[str]] = None, created_at: Optional[datetime] = None, ): """Initialize metadata Args: name: Simulation name version: Semantic version description: Description author: Author name tags: List of tags dependencies: List of package dependencies created_at: Creation timestamp """ self.name = name self.version = version self.description = description self.author = author self.tags = tags or [] self.dependencies = dependencies or [] self.created_at = created_at or datetime.now()
[docs] def to_dict(self) -> dict: """Convert to dictionary""" return { "name": self.name, "version": self.version, "description": self.description, "author": self.author, "tags": self.tags, "dependencies": self.dependencies, "created_at": self.created_at.isoformat() if self.created_at else None, }
[docs] @classmethod def from_dict(cls, data: dict) -> 'SimulationMetadata': """Create from dictionary""" created_at = data.get('created_at') if created_at and isinstance(created_at, str): created_at = datetime.fromisoformat(created_at) return cls( name=data['name'], version=data['version'], description=data.get('description', ''), author=data.get('author', ''), tags=data.get('tags', []), dependencies=data.get('dependencies', []), created_at=created_at, )