File size: 1,948 Bytes
6424951
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
"""Application configuration, constants, and logging setup."""

import logging
from typing import Final

# Database column names for player data
PLAYER_COLUMNS: Final[list[str]] = [
    "FULL_NAME",
    "AST",
    "BLK",
    "DREB",
    "FG3A",
    "FG3M",
    "FG3_PCT",
    "FGA",
    "FGM",
    "FG_PCT",
    "FTA",
    "FTM",
    "FT_PCT",
    "GP",
    "GS",
    "MIN",
    "OREB",
    "PF",
    "PTS",
    "REB",
    "STL",
    "TOV",
    "FIRST_NAME",
    "LAST_NAME",
    "FULL_NAME_LOWER",
    "FIRST_NAME_LOWER",
    "LAST_NAME_LOWER",
    "IS_ACTIVE",
]

# Columns used for ML model features
STAT_COLUMNS: Final[list[str]] = [
    "PTS",
    "OREB",
    "DREB",
    "AST",
    "STL",
    "BLK",
    "TOV",
    "FG3_PCT",
    "FT_PCT",
    "FGM",
]

# Game configuration
TEAM_SIZE: Final[int] = 5
MAX_QUERY_ATTEMPTS: Final[int] = 10

# Difficulty presets: (PTS, REB, AST, STL)
DIFFICULTY_PRESETS: Final[dict[str, tuple[int, int, int, int]]] = {
    "Regular": (850, 400, 200, 60),
    "93' Bulls": (1050, 500, 300, 80),
    "All-Stars": (1250, 600, 400, 100),
    "Dream Team": (1450, 700, 500, 120),
}

# Score ranges for game simulation
WINNER_SCORE_RANGE: Final[tuple[int, int]] = (90, 130)
LOSER_SCORE_RANGE: Final[tuple[int, int]] = (80, 120)

# Default fallback scores when generation fails
DEFAULT_WINNER_SCORE: Final[int] = 100
DEFAULT_LOSER_SCORE: Final[int] = 90


def setup_logging(level: int = logging.INFO) -> logging.Logger:
    """Configure and return the application logger.

    Args:
        level: Logging level (default: INFO)

    Returns:
        Configured logger instance
    """
    logging.basicConfig(
        level=level,
        format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
        datefmt="%Y-%m-%d %H:%M:%S",
    )
    logger = logging.getLogger("streamlit_nba")
    logger.setLevel(level)
    return logger


# Module-level logger instance
logger: Final[logging.Logger] = setup_logging()