Coverage for yaptide/converter/converter/fluka/cards/card.py: 95%
22 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-07-01 12:55 +0000
« prev ^ index » next coverage.py v7.4.4, created at 2024-07-01 12:55 +0000
1from dataclasses import dataclass, field
4@dataclass(frozen=False)
5class Card:
6 """Class representing one line (card) in Fluka input."""
8 codewd: str = ""
9 what: list[str] = field(default_factory=list)
10 sdum: str = ""
12 def __post_init__(self):
13 """Post init function, always called by automatically generated __init__."""
14 if len(self.what) > 6:
15 raise ValueError("'what' list can have at most 6 elements.")
16 self.what += [""] * (6 - len(self.what))
18 def __str__(self) -> str:
19 """Return card as string."""
20 return self._format_line().rstrip()
22 def _format_line(self) -> str:
23 """Return formatted line from given parameters."""
24 line = f"{self.codewd:<10}"
25 for w in self.what:
26 try:
27 num = float(w)
28 line += f"{num:>10.3E}" if len(str(w)) > 10 else f"{num:>10}"
29 except ValueError:
30 line += f"{w:>10}"
31 line += f"{self.sdum:<10}"
32 return line