Path:
strictdoc/backend/reqif/reqif_import.py
Lines:
70
Non-empty lines:
62
Non-empty lines covered with requirements:
62 / 62 (100.0%)
Functions:
3
Functions covered by requirements:
3 / 3 (100.0%)
1
"""2
@relation(SDOC-SRS-72, scope=file)3
"""4
5
import os.path
6
from typing import List
7
8
from reqif.parser import ReqIFParser, ReqIFZParser
9
from reqif.reqif_bundle import ReqIFBundle, ReqIFZBundle
10
11
from strictdoc.backend.reqif.p01_sdoc.reqif_to_sdoc_converter import (
12
P01_ReqIFToSDocConverter,
13
)14
from strictdoc.backend.reqif.sdoc_reqif_fields import ReqIFProfile
15
from strictdoc.backend.sdoc.models.document import SDocDocument
16
from strictdoc.commands.import_reqif_config import ImportReqIFCommandConfig
17
from strictdoc.core.project_config import ProjectConfig
18
19
20
class ReqIFImport:
21
@staticmethod22
def import_from_file(
23
import_config: ImportReqIFCommandConfig, project_config: ProjectConfig
24
) -> List[SDocDocument]:
25
converter = ReqIFImport.select_reqif_profile(import_config)
26
27
assert os.path.isfile(import_config.input_path), (
28
import_config.input_path
29
)30
31
documents: List[SDocDocument]
32
if import_config.input_path.endswith(".reqifz"):
33
reqifz_bundle: ReqIFZBundle = ReqIFZParser.parse(
34
import_config.input_path
35
)36
assert len(reqifz_bundle.reqif_bundles) > 0
37
documents = converter.convert_reqif_bundle(
38
next(iter(reqifz_bundle.reqif_bundles.values())),
39
enable_mid=import_config.reqif_enable_mid
40
or project_config.reqif_enable_mid,
41
import_markup=import_config.reqif_import_markup
42
if import_config.reqif_import_markup is not None
43
else project_config.reqif_import_markup,
44
)45
else:
46
reqif_bundle: ReqIFBundle = ReqIFParser.parse(
47
import_config.input_path
48
)49
documents = converter.convert_reqif_bundle(
50
reqif_bundle,
51
enable_mid=import_config.reqif_enable_mid
52
or project_config.reqif_enable_mid,
53
import_markup=import_config.reqif_import_markup
54
if import_config.reqif_import_markup is not None
55
else project_config.reqif_import_markup,
56
)57
return documents
58
59
@staticmethod60
def select_reqif_profile(
61
import_config: ImportReqIFCommandConfig,
62
) -> P01_ReqIFToSDocConverter:
63
if (
64
import_config.profile is None
65
or import_config.profile == ReqIFProfile.P01_SDOC
66
):67
return P01_ReqIFToSDocConverter()
68
raise NotImplementedError(
69
f"Unsupported profile: {import_config.profile}"
70
)