class Activity(HasTraits): """ Activity (tool) information """ @classmethod def from_provenance(cls, activity: _ActivityProvenance): """ construct Activity metadata from existing ActivityProvenance object""" return Activity( name=activity["activity_name"], type_="software", id_=activity["activity_uuid"], start_time=activity["start"]["time_utc"], software_name="ctapipe", software_version=activity["system"]["ctapipe_version"], ) name = Unicode() type_ = Unicode("software") id_ = Unicode() start_time = AstroTime() software_name = Unicode("unknown") software_version = Unicode("unknown") # pylint: disable=no-self-use @default("start_time") def default_time(self): """ default time is now """ return Time.now().iso
class Product(HasTraits): """Data product information""" description = Unicode("unknown") creation_time = AstroTime() id_ = Unicode(help="leave unspecified to automatically generate a UUID") data_category = Enum(["S", "A", "B", "C", "Other"], "Other") data_level = Enum( ["R0", "R1", "DL0", "DL1", "DL2", "DL3", "DL4", "DL5", "DL6", "Other"], "Other") data_association = Enum(["Subarray", "Telescope", "Target", "Other"], "Other") data_model_name = Unicode("unknown") data_model_version = Unicode("unknown") data_model_url = Unicode("unknown") format = Unicode() # pylint: disable=no-self-use @default("creation_time") def default_time(self): """ return current time by default """ return Time.now().iso @default("id_") def default_product_id(self): """ default id is a UUID """ return str(uuid.uuid4())
class NoNone(Component): time = AstroTime(default_value="2012-01-01T20:00", allow_none=False)
class AllowNone(Component): time = AstroTime(default_value=None, allow_none=True)
class SomeComponentWithTimeTrait(Component): time = AstroTime()