From 97e5c9df5af3ec851e06501cfb289789a8422971 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Wed, 22 Jul 2026 16:07:14 +0100 Subject: [PATCH] add powerball lottery minor bump --- pyproject.toml | 2 +- src/lottery_tui/lottery.py | 19 +++++++++++++++++++ src/lottery_tui/tui.py | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 55f0186..03dec2c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "lottery-tui" -version = "1.0.3" +version = "1.1.0" description = "A terminal user interface for lottery games." authors = [{ name = "onyx-and-iris", email = "code@onyxandiris.online" }] dependencies = ["textual>=8.0.0", "loguru>=0.7.3"] diff --git a/src/lottery_tui/lottery.py b/src/lottery_tui/lottery.py index dd141b2..39facca 100644 --- a/src/lottery_tui/lottery.py +++ b/src/lottery_tui/lottery.py @@ -33,6 +33,8 @@ class Result: bonus_name = 'Life Ball' case 'Thunderball': bonus_name = 'Thunderball' + case 'Powerball': + bonus_name = 'Powerball' case _: bonus_name = 'Bonus Numbers' out += f'\n{bonus_name}: {", ".join(str(n) for n in self.bonus)}' @@ -124,6 +126,23 @@ class Thunderball(Lottery): return Result(kind=type(self).__name__, numbers=numbers, bonus=thunderball) +@register_lottery +class Powerball(Lottery): + """A class representing the Powerball lottery. + + Powerball draws 5 numbers from a pool of 1 to 69, without replacement, + and 1 "Powerball" number from a separate pool of 1 to 26. + """ + + POSSIBLE_NUMBERS = range(1, 70) + + def draw(self) -> Result: + """Perform a Powerball draw.""" + numbers = random.sample(Powerball.POSSIBLE_NUMBERS, 5) + powerball = [random.randint(1, 26)] + return Result(kind=type(self).__name__, numbers=numbers, bonus=powerball) + + def request_lottery_obj(lottery_name: str) -> Lottery: """Return a lottery object based on the provided lottery name.""" lottery_cls = registry.get(lottery_name.lower()) diff --git a/src/lottery_tui/tui.py b/src/lottery_tui/tui.py index 957270d..b7eacae 100644 --- a/src/lottery_tui/tui.py +++ b/src/lottery_tui/tui.py @@ -25,6 +25,7 @@ class LotteryTUI(App): ('EuroMillions', 'euromillions'), ('Set For Life', 'setforlife'), ('Thunderball', 'thunderball'), + ('Powerball', 'powerball'), ], value='lotto', allow_blank=False,