diff --git a/src/spdx/document_utils.py b/src/spdx/document_utils.py index 10947a719..74a49faf9 100644 --- a/src/spdx/document_utils.py +++ b/src/spdx/document_utils.py @@ -9,8 +9,12 @@ # See the License for the specific language governing permissions and # limitations under the License. from typing import List +from typing import Union from spdx.model.document import Document +from spdx.model.snippet import Snippet +from spdx.model.package import Package +from spdx.model.file import File def get_contained_spdx_element_ids(document: Document) -> List[str]: @@ -18,3 +22,12 @@ def get_contained_spdx_element_ids(document: Document) -> List[str]: element_ids.extend([package.spdx_id for package in document.packages]) element_ids.extend([snippet.spdx_id for snippet in document.snippets]) return element_ids + + +def get_element_from_spdx_id(document: Document, spdx_id: str) -> Union[Package, File, Snippet, None]: + elements = [file_ for file_ in document.files] + elements.extend([package_ for package_ in document.packages]) + elements.extend([snippet_ for snippet_ in document.snippets]) + for element in elements: + if element.spdx_id == spdx_id: + return element