From fa31b192e73dd490c01ba8bc002dead1365d348b Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sun, 7 Jan 2024 19:46:06 +0200 Subject: [PATCH] feat: make installable --- README.md | 0 pyproject.toml | 25 ++++++++++++--- requirements.txt | 10 +++--- requirements_dev.txt | 6 ++-- tetris/__init__.py | 0 tetris/__main__.py | 75 ++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 104 insertions(+), 12 deletions(-) create mode 100644 README.md create mode 100644 tetris/__init__.py create mode 100644 tetris/__main__.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml index 8e3432c..9463533 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,20 +1,36 @@ +[build-system] +requires = ["setuptools>=42.0", "wheel"] +build-backend = "setuptools.build_meta" + [project] name = "tetris" version = "0.1.0" -description = "Tetris game with AI" +description = "Tetris game" authors = [{ name = "Kristofers Solo", email = "dev@kristofers.xyz" }] readme = "README.md" requires-python = ">=3.11" -license = { text = "GPLv3" } +license = { file = "LICENSE" } dependencies = [ "attrs==23.1.0", "loguru==0.7.2", - "neat-python==0.92", "numpy==1.26.3", "pygame-ce==2.4.0", + "toml==0.10.2", +] +keywords = ["tetris", "game", "pygame"] +classifiers = [ + "Development Status :: 3 - Alpha", + "License :: OSI Approved :: GPLv3 License", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", ] +[project.urls] +Repository = "https://github.com/kristoferssolo/Tetris" + [tool.mypy] +mypy_path = "src" check_untyped_defs = true disallow_any_generics = true ignore_missing_imports = true @@ -32,7 +48,8 @@ line-length = 120 indent-width = 4 [tool.ruff.lint] -select = ["I"] +extend-select = ["I"] +preview = true [tool.ruff.format] quote-style = "double" diff --git a/requirements.txt b/requirements.txt index 56c1f94..e8c8681 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ -attrs>=23.1.0 -loguru>=0.7.2 -neat-python>=0.92 -numpy>=1.26.3 -pygame-ce>=2.4.0 +attrs==23.1.0 +loguru==0.7.2 +numpy==1.26.3 +pygame-ce==2.4.0 +toml==0.10.2 . diff --git a/requirements_dev.txt b/requirements_dev.txt index 5dcd987..f3bc67b 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,3 +1,3 @@ -mypy>=1.8.0 -pytest>=7.4.3 -ruff>=0.1.9 +mypy==1.8.0 +pytest==7.4.3 +ruff==0.1.9 diff --git a/tetris/__init__.py b/tetris/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tetris/__main__.py b/tetris/__main__.py new file mode 100644 index 0000000..a47c87b --- /dev/null +++ b/tetris/__main__.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python +import argparse +import sys + +from loguru import logger + +parser = argparse.ArgumentParser(description="Tetris game with AI") +group = parser.add_mutually_exclusive_group() +group.add_argument( + "-d", + "--debug", + action="store_true", + help="Debug", +) + +group.add_argument( + "-v", + "--verbose", + action="store_true", + help="Verbose", +) + +parser.add_argument( + "-g", + "--graphic", + action="store_true", + help="Run app with GUI [Default]", +) + + +def setup_logger(level: str = "warning") -> None: + from utils import BASE_PATH + + logger.remove() + logger.add( + sink=sys.stdout, + format="{time} | {level} | {message}", + level=level.upper(), + colorize=True, + ) + + logger.add( + BASE_PATH / ".logs" / "teris.log", + format="{time} | {level} | {message}", + level="DEBUG" if level.upper() == "DEBUG" else "INFO", + rotation="10 MB", + compression="zip", + ) + + +@logger.catch +def run() -> None: + import game + from utils import GameMode + + logger.debug("Launching the game") + game.Main(GameMode.PLAYER).run() + + +def main(args: argparse.ArgumentParser) -> None: + if args.debug: + level = "debug" + elif args.verbose: + level = "info" + else: + level = "warning" + + setup_logger(level) + + run() + + +if __name__ == "__main__": + args = parser.parse_args() + main(args)