| 146 | |
| 147 | @dataclass(frozen=True) |
| 148 | class Ratio: |
| 149 | num: int |
| 150 | den: int | None = None |
| 151 | percentage: bool = True |
| 152 | |
| 153 | def __float__(self): |
| 154 | if self.den == 0: |
| 155 | return 0.0 |
| 156 | elif self.den is None: |
| 157 | return self.num |
| 158 | else: |
| 159 | return self.num / self.den |
| 160 | |
| 161 | def markdown(self) -> str: |
| 162 | if self.den is None: |
| 163 | return "" |
| 164 | elif self.den == 0: |
| 165 | if self.num != 0: |
| 166 | return f"{self.num:,} / 0 !!" |
| 167 | return "" |
| 168 | elif self.percentage: |
| 169 | return f"{self.num / self.den:,.01%}" |
| 170 | else: |
| 171 | return f"{self.num / self.den:,.02f}" |
| 172 | |
| 173 | |
| 174 | class DiffRatio(Ratio): |
no outgoing calls
no test coverage detected
searching dependent graphs…