Go to file
Krzysztof kuhy Rudnicki 2a59de6363 The six mypy errors are gone: four were fixable, two are scoped
The note in TODO-refactor-remaining.md said ERSMS's four were structural and
that a fix "would rewrite both models". Both halves were wrong.
flask-sqlalchemy 3.1.1 does ship py.typed; the real blocker was that
`class User(db.Model)` is attribute access, which mypy cannot resolve in a
base-class position.

backend/models.py now declares a named DeclarativeBase with SQLAlchemy 2.0
Mapped[] columns. The Model mixin goes away with the base, so the six legacy
Model.query call sites became db.session selects and the two table names are
spelled out rather than derived.

Verified by driving the real routes through Flask's test client with Firebase
stubbed out -- 16 scenarios covering every one of the six call sites, plus
both CREATE TABLE statements, byte-identical to the submitted version. That
harness caught the one thing review would not have: mapped_column(ForeignKey(
"user.uid")) silently infers VARCHAR(80) from the referenced column, which
had changed the submitted `user_id INTEGER`. An explicit Integer puts it back.

app.py went over the 250-line cap on the way, hence the split; models.py takes
the shebang + exec bit that NLP's nine import-only modules already use, since
__init__.py would make `from models import` unresolvable to mypy while it
still works at runtime. backend/Dockerfile copied only app.py, so it needed
the new file too.

PSD's two are pyflink's MapFunction and KeyedProcessFunction, which ship no
types and are not installed in that venv at all -- a hand-written .pyi would
assert an API nothing here can check. A [[tool.mypy.overrides]] scoped to that
one module turns off disallow_subclassing_any and nothing else.

ERSMS 4 -> 0, PSD 2 -> 0, under --strict. ruff and ruff format clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
2026-08-29 11:00:28 +02:00
.github/workflows Gate the invariants, fix ECOTE's unrunnable tests, contain build output 2026-08-28 18:43:13 +02:00
.vscode Merge branch 'main' of https://github.com/kuhyx/WUT_Computer_Science 2025-04-21 17:21:13 +02:00
gates Say which jupyter problem it is, and regenerate the status table 2026-08-29 08:44:02 +02:00
NotProgramming EARIN: zero findings, verified against byte-identical program output 2026-08-28 20:39:53 +02:00
Programming The six mypy errors are gone: four were fixable, two are scoped 2026-08-29 11:00:28 +02:00
scripts Say which jupyter problem it is, and regenerate the status table 2026-08-29 08:44:02 +02:00
.binary-allowlist Gate the invariants, fix ECOTE's unrunnable tests, contain build output 2026-08-28 18:43:13 +02:00
.gitignore Run all 33 safe courses; fix what that broke 2026-08-28 18:52:31 +02:00
.pre-commit-config.yaml The six mypy errors are gone: four were fixable, two are scoped 2026-08-29 11:00:28 +02:00
CLAUDE.md ECOTE and ECRYPT_PROJECT: zero findings, tests still green 2026-08-28 20:03:01 +02:00
DOCS-runnability.md Say which jupyter problem it is, and regenerate the status table 2026-08-29 08:44:02 +02:00
install.sh Add CI, install.sh and the run.sh harness 2026-08-28 18:26:10 +02:00
pyproject.toml The six mypy errors are gone: four were fixable, two are scoped 2026-08-29 11:00:28 +02:00
README.md Revise README to reflect group project inclusion 2026-02-06 22:23:55 +01:00
run.sh Hold the coursework to the same lint bar as the tooling 2026-08-28 19:53:04 +02:00
TODO-file-length-250.md Declare vendored subtrees and park the data-txt cap decision 2026-08-28 17:31:30 +02:00
TODO-refactor-remaining.md Gate the zero, and fix the LaTeX course the run guard exposed 2026-08-29 08:41:34 +02:00

WUT_Computer_Science

This repository aims to consolidate every single project I did solo during my Computer Science course on Warsaw University of Technology
It does not include projects I did in groups like:
EARIN
EDABA
ECRYPT
EOPSY

Thanks to some git magic this repo now CONTAINS all the group projects alongside with all proper contributors