Files
016-pretty-table/docs/business-case.md
T
Tirsvad c55db0e0f2 Add Pretty Table project: plan, accepted documents and code
Business Case, Stakeholder Analysis, Project Plan and milestone MIL-001
with review records RC-001 to RC-003, then the Python project: PrettyTable
Pokemon table, constants, pytest tests, pyproject.toml, Doxyfile, CI
workflow and README.

Task: MIL-001#1
Task: MIL-001#2
Task: MIL-001#3
Task: MIL-001#4
Task: MIL-001#5
Task: MIL-001#6
Task: MIL-001#7
Task: MIL-001#8
2026-10-07 12:29:40 +08:00

5.0 KiB
Raw Blame History

Business Case

Metadata

Key Value
ID BC-001
CrossReference SA-001
Language en
Domain it

Version History

Date Status Author Reviewer Change Commit
2026-10-07 Accepted Jens Tirsvad Nielsen S01 Initial version pending

Executive Summary

This project delivers the Udemy "100 Days of Code" lesson on adding Python packages from PyPI. It is a small, runnable Python program that builds a table of Pokémon names and types with the PrettyTable package, packaged as a clean, tested and documented repository that other course participants and GitHub visitors can read and run. The effort is deliberately small, and the single runtime dependency is the one the assignment teaches.

Methodological and Standards Foundation

The work follows the SQA and QC framework mounted at framework/ (Business Case, Stakeholder Analysis, Project Plan, milestones, tasks as issues, then code). Quality characteristics follow ISO/IEC 25010:2023. Code follows the framework's coding-conventions skill for Python and is reviewed against its qc-programming-* checklist.

Problem Statement

The assignment solution exists only as lesson material. Without a repository there is nothing to share, compare or reuse, and the install-and-import workflow for PyPI packages is not documented in a reproducible form (virtual environment, dependency declaration, tests).

Business Opportunity

A clear, runnable reference solution lets other course participants compare their code, and gives GitHub viewers a tidy example of a small Python project with tests, documentation and project configuration.

Objectives

  1. O1: Provide a Python program that prints the Pokémon type table with PrettyTable, using the assignment's function names.
  2. O2: Document how to create and use a local .venv, upgrade pip, run the program and run the tests.
  3. O3: Provide pytest tests, a pyproject.toml, constants in constants.py, Doxygen comments and a Doxyfile.
  4. O4: Publish the repository with a description and topics.

Scope

In Scope

  • Python 3.13 or newer source under src/, tests under tests/, documents under docs/.
  • pyproject.toml, Python .gitignore, Doxyfile, and a README built from the template.
  • Repository description and topics on the git host.

Out of Scope

  • Features beyond the lesson (the PrettyTable styling exercises of later lessons).
  • Publishing the package to PyPI.
  • Using, importing or testing the .env file; it is personal and only used to reach the git host.

Expected Benefits

Tangible Benefits

  • A runnable, tested repository that others can clone and run in minutes.
  • A reproducible environment recipe for Windows, Linux and macOS.

Intangible Benefits

  • A consistent portfolio of course assignments.
  • Practice with packages, PyPI and project hygiene.

Strategic Alignment

The project supports the participant's goal of completing the bootcamp with consistent, reviewable work, and the community goal of sharing readable solutions.

Success Criteria

# Criterion Target Measure
1 Program prints the Pokémon table Exit code 0 and the expected table text pytest test of the rendered table
2 Tests pass 100% of tests pass in a fresh .venv python -m pytest
3 README steps work A new reader runs the program using only the README Manual walkthrough on one OS
4 Repository metadata Description and at least 3 topics set Inspect the repository page

Risks

Risk Impact Mitigation
PrettyTable API changes Output or tests break Declare a minimum version in pyproject.toml and test the rendered output
Token leaks into the repository Credential exposure .env is git-ignored and never imported or tested
Over-engineering a tiny assignment Wasted effort Keep one runtime dependency and a minimal layout

Assumptions

  • Python 3.13 or newer is installed by the reader.
  • PyPI is reachable when installing PrettyTable.
  • The git host accepts a description and topics through its API.

Constraints

  • Python 3.13 or newer, venv for environments, pytest for tests.
  • Constants live in constants.py; source uses Doxygen comments.
  • Configuration lives in pyproject.toml.
  • Only the user performs commits, pushes and merges.

Cost–Benefit Assessment

Costs Benefits
A few hours of the participant's time; no licence or hosting cost A shareable, tested reference solution and a reusable project template

Stakeholders

Stakeholder ID (SA) Interest in this project
S01 Owns the work and wants an accepted, reviewed result
S02 Wants readable, runnable code with the assignment's function names
S03 Wants a clear description, topics and README, with no runtime dependencies beyond the lesson's

Recommendation

Proceed — the scope is small, the cost is minimal and the result is directly reusable.