1# SPDX-FileCopyrightText: 2023 spdx contributors
2#
3# SPDX-License-Identifier: Apache-2.0
4from abc import abstractmethod
5from dataclasses import field
6from datetime import datetime
7
8from beartype.typing import List, Optional
9
10from spdx_tools.common.typing.dataclass_with_properties import dataclass_with_properties
11from spdx_tools.spdx3.model import Element
12
13
14@dataclass_with_properties
15class Artifact(Element):
16 originated_by: List[str] = field(default_factory=list) # SPDXID of the Agent/Tool
17 supplied_by: List[str] = field(default_factory=list) # SPDXID of the Agent/Tool
18 built_time: Optional[datetime] = None
19 release_time: Optional[datetime] = None
20 valid_until_time: Optional[datetime] = None
21 standard: List[str] = field(default_factory=list)
22
23 @abstractmethod
24 def __init__(self):
25 pass