"""Runnable demonstrations covering every section of the supplied TP01 review."""
from data_tools.analysis import calculate_sum, calculate_total

PI = 3.14159
MAX_SCORE = 100


class Student:
    def __init__(self, name):
        self.name = name

    def study(self):
        return f"{self.name} is studying."


def parse_age(text):
    try:
        return int(text)
    except ValueError:
        return "Please enter a number."


def main():
    student_name = "CHHO Sengmeng"
    student_age = 22
    score = 85
    print("Variables:", student_name, student_age, score)
    print("Function:", calculate_sum(5, 3))
    student = Student(student_name)
    print("Class and object:", type(student).__name__)
    print("Method:", student.study())
    print("Constants:", PI, MAX_SCORE)
    print("Module:", calculate_sum(5, 2))
    print("Package: data_tools contains analysis.py")
    print("Readable product:", calculate_total(10, 3))
    print("Reusable totals:", [calculate_total(p, q) for p, q in [(10, 2), (20, 3), (15, 4)]])
    print("Built-in sum:", sum([10, 20, 30, 40]))
    print("Valid age:", parse_age("20"))
    print("Invalid age:", parse_age("hello"))
    print("Debugging fix:", int("20") + 5)
    print("PEP 8 refactoring:", calculate_sum(5, 3))


if __name__ == "__main__":
    main()
