Source code for python_pkg_template._main

#!/usr/bin/env python3

# PGK FILE DESCRIPTION
# 2026 (c) YOUR NAME
# https://github.com/username/
# your.mail@mail.com

from __future__ import annotations

import argparse
import logging

from . import __version__
from ._util import character_factory
from ._util import battle

from typing import Optional

logger = logging.getLogger(__name__)


[docs] def main(argv: Optional[list[str]] = None) -> int: """Main function. Parameters ---------- argv : list or str, or None, default = None Arguments passed to argparse. Returns ------- int Exit status (zero is success). Examples -------- >>> from python_pkg_template import main >>> main(["-f", "data/characters.csv"]) INFO:main:Both characters have 130.0 hit points! The battle begins: INFO:main:Character Shadowheart has initiative! INFO:main:Character Shadowheart deals 311.13673321167755 damage! INFO:main:Character Shadowheart won! 0 """ parser = argparse.ArgumentParser( prog="battle", description="Battles two characters.", epilog="(c) Micha Birklbauer, 2026", ) parser.add_argument( "-f", "--file", dest="file", required=True, help="character file to read characters from (str).", type=str, ) parser.add_argument( "-c1", "--character-1", dest="character_1", default=0, help="index of the first character to use (int).", type=int, ) parser.add_argument( "-c2", "--character-2", dest="character_2", default=1, help="index of the second character to use (int).", type=int, ) parser.add_argument( "-hp", "--hit-points", dest="health", default=130, help="health of all characters (int).", type=int, ) parser.add_argument("--version", action="version", version=__version__) args = parser.parse_args(argv) logging.basicConfig(level=logging.INFO) try: characters = character_factory(args.file) character_1 = int(args.character_1) character_2 = int(args.character_2) health = float(args.health) logger.info(f"Both characters have {health} hit points! The battle begins:") if character_1 < 0 or character_1 >= len(characters): raise IndexError("Character 1 is not a valid index in the character file!") if character_2 < 0 or character_2 >= len(characters): raise IndexError("Character 1 is not a valid index in the character file!") _ = battle(characters[character_1], characters[character_2], health) except Exception as _e: logger.exception("An error occurred while running the script!") return 1 return 0