Merge branch 'main' into sub-title-str

This commit is contained in:
Rodrigo Girão Serrão
2023-05-10 13:10:48 +01:00
committed by GitHub
3 changed files with 25 additions and 2 deletions

View File

@@ -12,6 +12,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
- App `title` and `sub_title` attributes can be set to any type https://github.com/Textualize/textual/issues/2521 - App `title` and `sub_title` attributes can be set to any type https://github.com/Textualize/textual/issues/2521
### Fixed
- Fixed `ZeroDivisionError` in `resolve_fraction_unit` https://github.com/Textualize/textual/issues/2502
## [0.24.1] - 2023-05-08 ## [0.24.1] - 2023-05-08

View File

@@ -143,7 +143,7 @@ def resolve_fraction_unit(
resolved: list[Fraction | None] = [None] * len(resolve) resolved: list[Fraction | None] = [None] * len(resolve)
remaining_fraction = Fraction(sum(scalar.value for scalar, _, _ in resolve)) remaining_fraction = Fraction(sum(scalar.value for scalar, _, _ in resolve))
while True: while remaining_fraction > 0:
remaining_space_changed = False remaining_space_changed = False
resolve_fraction = Fraction(remaining_space, remaining_fraction) resolve_fraction = Fraction(remaining_space, remaining_fraction)
for index, (scalar, min_value, max_value) in enumerate(resolve): for index, (scalar, min_value, max_value) in enumerate(resolve):
@@ -166,7 +166,7 @@ def resolve_fraction_unit(
return ( return (
Fraction(remaining_space, remaining_fraction) Fraction(remaining_space, remaining_fraction)
if remaining_space if remaining_space > 0
else Fraction(1) else Fraction(1)
) )

View File

@@ -1,4 +1,5 @@
from fractions import Fraction from fractions import Fraction
from itertools import chain
import pytest import pytest
@@ -122,3 +123,22 @@ def test_resolve_fraction_unit():
Fraction(32), Fraction(32),
resolve_dimension="width", resolve_dimension="width",
) == Fraction(2) ) == Fraction(2)
def test_resolve_issue_2502():
"""Test https://github.com/Textualize/textual/issues/2502"""
widget = Widget()
widget.styles.width = "1fr"
widget.styles.min_width = 11
assert isinstance(
resolve_fraction_unit(
(widget.styles,),
Size(80, 24),
Size(80, 24),
Fraction(10),
resolve_dimension="width",
),
Fraction,
)