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

1from dataclasses import dataclass, field 

2 

3 

4@dataclass(frozen=False) 

5class Card: 

6 """Class representing one line (card) in Fluka input.""" 

7 

8 codewd: str = "" 

9 what: list[str] = field(default_factory=list) 

10 sdum: str = "" 

11 

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)) 

17 

18 def __str__(self) -> str: 

19 """Return card as string.""" 

20 return self._format_line().rstrip() 

21 

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