Author SHA1 Message Date
Tirsvad 6bccc8c9e7 Link git host milestones in the project plan
Fill the Milestone column of the Gateway Schedule in
docs/project-plan.md
with links to Milestones 30 to 33, which sync-project.sh created for
MIL-001 to MIL-004.

No issue closed: documentation-only change.
2026-10-04 21:11:57 +08:00
Tirsvad afdffdf564 Merge pull request 'MIL-004: Add README and verify documentation' (#33) from mil-004-documentation-and-release into main
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Successful in 4s
Reviewed-on: #33
2026-10-04 15:10:18 +02:00
Tirsvad db477d99fb Add README with setup, run and test instructions
MIL-004 Documentation and release.

- Write README.md from the project template: overview, requirements,
  setup with a local .venv and pip upgrade, run, tests, AGPL license
  and links
- Document building the API docs with doxygen Doxyfile
- Verified: doxygen builds without warnings, and a clean copy installs,
  runs and passes the 13 tests following only the README

Closes #26
Closes #27
Closes #28

Task: MIL-004#1
Task: MIL-004#2
Task: MIL-004#3
2026-10-04 21:06:50 +08:00
Tirsvad 142a027e5c Merge pull request 'MIL-003: Add console interface' (#32) from mil-003-console-interface into main
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Successful in 5s
Reviewed-on: #32
2026-10-04 15:01:14 +02:00
2 changed files with 99 additions and 5 deletions
+91 -1
View File
@@ -1,2 +1,92 @@
# 010-calc
# 🧮 Calculator
A beginner-friendly Python console program that adds, subtracts, multiplies and divides numbers, and lets you keep calculating with the previous result.
## 📚 Table of Contents
- [Overview](#-overview)
- [Requirements](#-requirements)
- [Setup](#-setup)
- [Run](#-run)
- [Tests](#-tests)
- [License](#-license)
- [Links](#-links)
## 🧭 Overview
Final project of Day 10 of Udemy's *100 Days of Code: The Complete Python Pro Bootcamp*. The program shows an ASCII calculator with the title beside it, then asks for a number, an operation (`+`, `-`, `*`, `/`) and a second number.
The operations are functions stored in a dictionary (`OPERATIONS` in `src/calc/operations.py`) and called through it. After each result you can continue with it (`y`), start a new calculation (`n`, which calls `calculator()` again through recursion) or quit (`q`). Invalid input is asked for again, and dividing by zero starts over with a message.
## 📋 Requirements
- Python 3.13 or newer
- No runtime dependencies
- `pytest` for the tests (installed with the `dev` extra)
- Optional: [Doxygen](https://www.doxygen.nl/) to build the API documentation
## 🛠️ Setup
Create a local virtual environment in the project folder:
```bash
python -m venv .venv
```
Activate it:
```bash
# Windows (PowerShell)
.venv\Scripts\Activate.ps1
# Windows (Git Bash)
source .venv/Scripts/activate
# Linux / macOS
source .venv/bin/activate
```
Upgrade pip and install the project with the test tools:
```bash
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
```
Leave the environment with `deactivate`. The `.env` file in the repository is for personal tooling only; the project never reads or imports it.
## ▶️ Run
With the environment active:
```bash
python -m calc
```
or, since the install adds a console script, simply:
```bash
calc
```
## 🧪 Tests
```bash
python -m pytest
```
Build the API documentation from the Doxygen comments (written to `docs/doxygen/`):
```bash
doxygen Doxyfile
```
## 📄 License
GNU Affero General Public License v3.0, see [LICENSE](LICENSE).
## 🔗 Links
- [Repository](https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code)
- [Documentation](docs/doxygen/html/index.html) (generated with `doxygen Doxyfile`)
- [Issue tracker](https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/010-calc/issues)
+8 -4
View File
@@ -30,10 +30,10 @@ Schedule the four phases that deliver the console calculator of Udemy's "100 Day
| Gateway | Document | Window | Decision date | Owner | Stories | Main deliverable | Milestone |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Project scaffold | [MIL-001] | 2026-10-05 | 2026-10-05 | S01 | | `pyproject.toml` | |
| Calculator core | [MIL-002] | 2026-10-06 | 2026-10-06 | S01 | | `src/calc/constants.py` and `src/calc/operations.py` | |
| Console interface | [MIL-003] | 2026-10-07 | 2026-10-07 | S01 | | `src/calc/calculator.py` and `src/calc/__main__.py` | |
| Documentation and release | [MIL-004] | 2026-10-08 | 2026-10-08 | S01 | | `README.md` following the project template | |
| Project scaffold | [MIL-001] | 2026-10-05 | 2026-10-05 | S01 | | `pyproject.toml` | [Milestone 30] |
| Calculator core | [MIL-002] | 2026-10-06 | 2026-10-06 | S01 | | `src/calc/constants.py` and `src/calc/operations.py` | [Milestone 31] |
| Console interface | [MIL-003] | 2026-10-07 | 2026-10-07 | S01 | | `src/calc/calculator.py` and `src/calc/__main__.py` | [Milestone 32] |
| Documentation and release | [MIL-004] | 2026-10-08 | 2026-10-08 | S01 | | `README.md` following the project template | [Milestone 33] |
```plantuml
@startgantt
@@ -86,3 +86,7 @@ A No-Go moves every later date by the time needed to fix the failed criterion.
[SA-001]: ./stakeholder-analysis.md
[BC-001]: ./business-case.md
[8ccefff]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/010-calc/commit/8ccefffef7ec1f9ecbf548085a5c92fae75e1341
[Milestone 30]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/010-calc/milestone/30
[Milestone 31]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/010-calc/milestone/31
[Milestone 32]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/010-calc/milestone/32
[Milestone 33]: https://git.tirsystem.com/Tirsvad-Udemy-100_days_of_code/010-calc/milestone/33