2 Commits

Author SHA1 Message Date
8b743abcfb rename UK Lotto to Lotto to match the website.
patch  bump
2026-02-22 23:34:10 +00:00
56028b2c52 get Result kind name from class type, it's more flexible to change.
patch bump
2026-02-22 23:24:36 +00:00
3 changed files with 14 additions and 13 deletions

View File

@@ -1,6 +1,6 @@
[project]
name = "lottery-tui"
version = "0.2.4"
version = "0.2.6"
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"]
@@ -13,6 +13,7 @@ classifiers = [
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
]

View File

@@ -17,7 +17,7 @@ class Result(NamedTuple):
match self.kind:
case 'EuroMillions':
bonus_name = 'Lucky Stars'
case 'Set For Life':
case 'SetForLife':
bonus_name = 'Life Ball'
case 'Thunderball':
bonus_name = 'Thunderball'
@@ -45,19 +45,19 @@ class Lottery(ABC):
@register_lottery
class UKlotto(Lottery):
"""A class representing the UK Lotto lottery.
class Lotto(Lottery):
"""A class representing the Lotto lottery.
Uk Lotto draws 6 numbers from a pool of 1 to 59, without replacement.
There is no bonus number in UK Lotto.
Lotto draws 6 numbers from a pool of 1 to 59, without replacement.
There is no bonus number in Lotto.
"""
POSSIBLE_NUMBERS = range(1, 60)
def draw(self) -> Result:
"""Perform a UK Lotto draw."""
result = random.sample(UKlotto.POSSIBLE_NUMBERS, 6)
return Result(kind='UK Lotto', numbers=result, bonus=None)
"""Perform a Lotto draw."""
result = random.sample(Lotto.POSSIBLE_NUMBERS, 6)
return Result(kind=type(self).__name__, numbers=result, bonus=None)
@register_lottery
@@ -75,7 +75,7 @@ class EuroMillions(Lottery):
"""Perform a EuroMillions draw."""
numbers = random.sample(EuroMillions.POSSIBLE_NUMBERS, 5)
bonus = random.sample(EuroMillions.POSSIBLE_BONUS_NUMBERS, 2)
return Result(kind='EuroMillions', numbers=numbers, bonus=bonus)
return Result(kind=type(self).__name__, numbers=numbers, bonus=bonus)
@register_lottery
@@ -92,7 +92,7 @@ class SetForLife(Lottery):
"""Perform a Set For Life draw."""
numbers = random.sample(SetForLife.POSSIBLE_NUMBERS, 5)
life_ball = [random.randint(1, 10)]
return Result(kind='Set For Life', numbers=numbers, bonus=life_ball)
return Result(kind=type(self).__name__, numbers=numbers, bonus=life_ball)
@register_lottery
@@ -109,7 +109,7 @@ class Thunderball(Lottery):
"""Perform a Thunderball draw."""
numbers = random.sample(Thunderball.POSSIBLE_NUMBERS, 5)
thunderball = [random.randint(1, 14)]
return Result(kind='Thunderball', numbers=numbers, bonus=thunderball)
return Result(kind=type(self).__name__, numbers=numbers, bonus=thunderball)
def request_lottery_obj(lottery_name: str) -> Lottery:

View File

@@ -19,7 +19,7 @@ class LotteryTUI(App):
Static('Pick a lottery to play:', id='instructions'),
Select(
options=[
('UK Lotto', 'uklotto'),
('Lotto', 'lotto'),
('EuroMillions', 'euromillions'),
('Set For Life', 'setforlife'),
('Thunderball', 'thunderball'),