- Ignore mypy internal crashes gracefully (Issue #19, reported by tirnovantudor8-maker, troubleshooting details by eloiberlinger1): Bypassed checker failures caused by mypy internal errors (e.g. on circular import exercises like
ft_kaboom_1.pyor system setup incompatibilities) while preserving regular type-checking diagnostics.
- Authorize
__import__built-in function (Modules 05, 07, 08): Explicitly allow the standard__import__built-in function which was previously filtered out by thestartswith("_")check on builtin namespaces, resolving false positives on dynamic package validation.
- Module 07 capabilities variant support (PR #18, contributed by eloiberlinger1): Supported alternative expected output strings ("morphs into" and "stabilizes its form" as alternatives to "revert") in Exercise 1 Capacitor checks, handling different versions of the subject PDF.
- Module 03 Primitive types allowance (Issue #16, reported by Ketaminepunch): Authorized the standard types
str,int, andfloatglobally across all exercises to avoid false positives on standard constructor calls likefloat()orstr(). - Module 04 False Positive: FileNotFoundError handling (Issue #17, reported by koldoest26): Made
FileNotFoundErroroutput checks in Exercise 0 case-insensitive and robust against standard OS-style message variants (e.g., containing "no such file" and "error" without colon). - Core modernization and packaging: Refactored module checkers into a unified
BaseTesterto reduce duplication, implemented--verboseand--versionCLI flags, established subprocess execution timeouts, modernized packaging withpyproject.toml, and configured automated CI workflow checks.
- Module 09 Cosmic Data (v3.0) Enum resolution: Checker fixtures now resolve
ContactType/Rankmembers by subject semantic tokens (case-insensitive match on member name or.value), so idiomatic enums such asRADIO = "radio"orCOMMANDER = "commander"no longer fail before validation with misleadingAttributeError-style messages. - Module 09 Ex2 crew cardinality + schema: Enforced PDF
crewsize 1–12 via runtime probes (empty crew and 13-member crew must reject) and optional JSON-schemaminItems/maxItemsalignment when Pydantic exposes them. - Module 09 Ex2 PDF field bounds: Added runtime rejection probes for
SpaceMission(mission_id/mission_name/destinationlengths,duration_days,budget_millions) andCrewMember(string lengths,age,years_experience) so spec-incomplete models without properFieldconstraints are less likely to pass on behavior alone. - Module 09 Ex1 PDF field bounds: Added analogous runtime probes for
AlienContact(contact_id,location,signal_strength,duration_minutes,witness_count, optionalmessage_receivedmax length). - Root regression coverage for Module 09: Extended
tests/test_module09_v30_alignment.pywith cases for uppercase Enum member naming and unboundedcrewlists.
- Module 10 Ex3 implementation-constraint enforcement: Hardened
python_module_10Ancient Library checks to reject lambda substitutions insidespell_reduceroperation maps (add/multiply/max/min) and require operator-backed reducer handlers, aligning checker behavior with the subject’s explicit technique requirement. - Root regression coverage for Module 10 Ex3 reducer policy: Extended
tests/test_module10_v30_alignment.pywith a case that verifies behavior-correct but instruction-noncompliant lambda reducer handlers are now flagged.
- Auto-detection robustness (file checker hardening): Reworked
ModuleDetector.detect()from first-hit matching to a weighted signature-scoring strategy that prioritizes distinctive required files over generic directory patterns, reducing cross-module false positives in mixed or partially-complete student repositories. - Module 07 vs Module 09 collision fix: Tightened DataDeck signatures by removing generic
ex*/__init__.pymarkers from Module 07 detection, preventing Cosmic Data (ex0/space_station.py,ex1/alien_contact.py,ex2/space_crew.py) workspaces from being misclassified as Module 07. - Root regression coverage for module detection: Added
tests/test_module_detector_alignment.pycases to lock Module 09 detection behavior against Module 07 signature collisions and future detector regressions.
- A-Maze-ing v2.1 lint-rule parity: Hardened
a_maze_ingMakefile validation so the mandatorylintrecipe now enforces the required mypy flags from the subject (--warn-return-any,--warn-unused-ignores,--ignore-missing-imports,--disallow-untyped-defs,--check-untyped-defs) instead of only checking for genericmypypresence. - A-Maze-ing v2.1 “42” pattern enforcement: Added explicit output-grid validation for the required visible
"42"built from fully closed cells (0xF), while preserving subject-compliant small-maze behavior by requiring an explanatory runtime message when the pattern is omitted due to size constraints. - Root regression coverage for A-Maze-ing checker alignment: Added
tests/test_a_maze_ing_checker_alignment.pyto lock Makefile lint-flag enforcement and"42"requirement behavior (including small-maze exemption messaging) against future regressions.
- Module 07 auto-detection reliability: Updated
ModuleDetectorDataDeck signatures to match v3.0 layouts (battle.py,capacitor.py,tournament.pyplusex0/,ex1/,ex2/package markers), sogerminettenow auto-detects Module 07 correctly from standard project folders. - Module 08 builtin
typesallowance: Adjusted Matrix checker import policy to accept the stdlibtypesmodule in Ex0/Ex1/Ex2 strict checks when students use it. - Module 06 v2.0 parity completion: Added two missing codex rules in checker logic: (1) preserve the intentional pedagogical mypy exception path for
ft_alembic_4.py, and (2) requirealchemy/transmutation/recipes.pyto include at least one absolute import and one relative import, as demanded by Part III. - Module 06 regression expansion: Extended
tests/test_module06_v20_alignment.pywith coverage for the Alembic 4 mypy-exception allowance and transmutation import-style enforcement. - Module 09 v3.0 checker hardening: Tightened Cosmic Data validation by enforcing required
ex0/ex1/ex2file presence, strengthening field-constraint checks in Ex0, and adding Pydantic v2 validation expectations (reject deprecated@validator, require@model_validatorfor business-rule exercises). - Root regression coverage for Module 09 checker: Added
tests/test_module09_v30_alignment.pyto lock project-structure checks and Pydantic validator-policy behavior. - Module 10 v3.0 checker hardening: Strengthened FuncMage validation by adding explicit forbidden checks for
eval()/exec(), module-level global variable detection, stricter external-import rejection, stricter lambda enforcement for Exercise 0, and tighter Exercise 1 behavior checks using the documented(target, power)higher-order contracts. - Root regression coverage for Module 10 checker: Added
tests/test_module10_v30_alignment.pyto lock forbidden-function/global-state behavior and higher-order signature flow checks. - Module 00 v3.0 checker hardening: Added AST-level structure enforcement for Growing Code submissions, including no top-level executable statements, no
if __name__ == "__main__":blocks, and “only requested function per file” checks, with a dedicated recursive helper allowance for Ex6 recursive implementation. - Root regression coverage for Module 00 checker: Added
tests/test_module00_v30_alignment.pyto lock__main__-block rejection and Ex6 recursive helper acceptance behavior. - Root regression coverage for Module 01 checker: Added
tests/test_module01_v30_alignment.pyto lock key Module 01 expectations (Ex0 main-guard requirement and Ex1Plant.show()requirement) against future checker drift.
- Module 05 v3.0 checker alignment: Updated
python_module_05strict checks to match Code Nexus v3.0 general rules (imports restricted toabc/typing, all builtins authorized) and removed the non-subjectsuper()mandate that caused false negatives. - Module 05 structure validation refresh: Added targeted AST checks for required architecture elements: Ex0 class/method contracts (
DataProcessor+validate/ingest/output), Ex1DataStreamrequired methods (register_processor,process_stream,print_processors_stats), and Ex2ExportPluginprotocol flow plusoutput_pipelineand CSV/JSON plugin presence. - Module 05 runtime expectation cleanup: Replaced legacy hardcoded output markers with v3.0-oriented markers that preserve flexibility allowed by the subject examples while still validating mandatory pipeline demonstration sections.
- Root regression coverage for Module 05 checker: Added
tests/test_module05_v30_alignment.pyto lock these v3.0 expectations and reduce future checker drift. - Module 06 v2.0 checker hardening: Strengthened The Codex checks by enforcing project-local import rules (rejecting out-of-project imports), preserving forbidden
eval()/exec()andsys.pathprotections, and adding mandatory laboratory tree validation against the expected module/package layout. - Root regression coverage for Module 06 checker: Added
tests/test_module06_v20_alignment.pyto lock import-scope and required-structure behavior, reducing future drift in Module 06 validation. - Module 07 v3.0 checker hardening: Tightened DataDeck checks to enforce module-local import policy (external libraries forbidden), align builtin authorization with subject rules (
eval/execexcluded), and require mandatory__init__.pypackage files inex0/,ex1/, andex2/. - Root regression coverage for Module 07 checker: Added
tests/test_module07_v30_alignment.pyto lock external-import rejection and required package-init enforcement for Module 07. - Module 07 auto-detection fix: Updated
ModuleDetectorsignatures for DataDeck v3.0 so standard layouts (battle.py,capacitor.py,tournament.py+ex0//ex1//ex2/) are correctly auto-detected when runninggerminettefrom module folders.
- Module 04 v3.0 checker realignment: Corrected subject drift in
python_module_04by enforcing the right Exercise 1 header (=== Cyber Archives Recovery & Preservation ===), validating line-end#transformation (instead of legacy comment-prefix checks), and replacing the off-subject Exercise 2 stream scenario with v3.0 recovery/preservation flow checks (sys.stdininput path +[STDERR]-prefixed error routing). - Module 04 structure/contract enforcement: Added explicit pre-Ex3 guard forbidding
withusage in Exercises 0-2, aligned allowed imports withtyping-annotated subject expectations, and strengthened Exercise 3 verification to validatesecure_archive()behavior as a real(bool, str)contract for read/write and error cases. - Root regression coverage for Module 04 checker: Added
tests/test_module04_v30_alignment.pyto lock these v3.0 expectations and reduce future false positives/false negatives.
- Module 08 v3.0 checker compliance hardening: Aligned
python_module_08checks with subject expectations across all exercises. Ex0 now validates mandatory matrix/venv markers and mode-specific guidance/details; Ex1 now enforces required dependency artifacts (requirements.txt+pyproject.toml), numpy-driven dataset intent, and explicit pip/Poetry comparison while allowing only import-related style/type noise as permitted by the subject; Ex2 now enforces required.env.examplekeys (MATRIX_MODE,DATABASE_URL,API_KEY,LOG_LEVEL,ZION_ENDPOINT) plus visible dev/prod output differences through environment-driven runs. - Root regression coverage for Module 08 checker: Added
tests/test_module08_v30_alignment.pyto lock the updated v3.0 behavior and prevent reintroduction of partial or legacy checks.
- Module 03 Ex3 (Achievement Hunter) v3.0 checker (#14, reported by koldoest26):
ft_achievement_trackeris now validated against Data Quest v3.0 (four players Alice–Dylan,All distinct achievements:/Common achievements:/Only <name> has:/<name> is missing:) instead of legacy phrases (Common to all players:,Total unique achievements:, etc.). Stricter import list for this exercise now matches the subject (onlyrandom, notsys).
- Module 03 v3.0 checker alignment (#13, reported by koldoest26): Updated Data Quest checks to match subject v3.0 by allowing
round()in Ex2, requiring the Ex4 header=== Inventory System Analysis ===, replacing outdated Ex5 damage/items expectations with player-action stream validation, and allowingrandom+ list/dict comprehension validation flow in Ex6.
- A-Maze-ing checker (subject-aligned): Added full
germinette/subjects/a_maze_ing.pycoverage for mandatory files, Makefile targets, config parsing, README requirements, reusablemazegenpackaging checks, runtime/output format validation, wall-coherence checks, border-wall checks, 3x3-open-area prevention checks, shortest-path validation, andPERFECT=Truetree validation on the traversable component. - A-Maze-ing seed safety checks: Added explicit checks for deterministic behavior when
SEEDis missing/commented, variability whenSEEDis present, and AST-based detection of broken interactive regen logic (R) plus invalidlaunch(seed=...)forwarding. - Root test coverage for A-Maze-ing checker: Added
tests/test_a_maze_ing_checker_seed_logic.pyso seed-logic regressions are tested from the main repository test suite.
- Module menu and version labeling:
a_maze_ingis now listed as fully available in the module picker and labeled with PDF-derived versionv.2.1. - A-Maze-ing warning UX: Improved warning section readability and clarified that warnings are non-blocking.
- A-Maze-ing package artifact detection: Checker now accepts real-world
mazegenartifact names using both hyphen and underscore prefixes (e.g.mazegen_sabo_gla_bgebreeg-*.whl).
- A-Maze-ing sample project seed forwarding (
devtools/other/amazing_sabo): Restored correct UI seed forwarding (launch(seed=seed)) so commented/missingSEEDdoes not accidentally enable seed increment behavior on regenerate.
- Subject version sync tooling: Added
scripts/check_subject_updates.pyandscripts/subject_pdf_urls.jsonto compare Module 00-10 subjectVersion:values from official CDN PDFs againstMODULE_VERSION_LABELS. - Module 02 stricter pedagogical checks (#12, reported by bgebreeg): Enforced exception-handling location in Ex0, required natural exception-triggering code + multi-exception tuple handling in Ex2, and enforced one global
try/except/finallyflow with immediate return on error in Ex4. - Module 01 runtime-sanity checks (#11, reported by muali): Added static checks for suspicious builtin misuse in
super().__init__(...)and undefinedself.<attr>access patterns (with inheritance-aware safeguards).
- Global style gate:
BaseTester.check_flake8()now runs bothflake8andmypy, and reports failures from either checker in one combined diagnostics block. - Module menu labeling: Module picker shows per-module version suffixes via
MODULE_VERSION_LABELSand formatting helper.
- Module 00/01 v3.0 alignment: Restored subject-correct exercise mapping (
ft_garden_namein Mod00 Ex1, strictshow()expectation in Mod01 Ex1, and minimum plant-output expectations per subject). - A-Maze-ing project robustness (
devtools/other/amazing_sabo): Updated non-perfect wall-breaking to prevent creation of forbidden 3x3 fully-open areas while preserving loop generation. - Dev fixtures cleanup and alignment: Reworked
devtools/testfixtures for Modules 00, 01, and 02 to match current v3.0 subjects; removed stale shifted files and debug artifacts. - mypy-compatible dev fixtures: Updated affected fixture files in Modules 02/03/08/10 to pass the new combined
flake8 + mypyenforcement.
- Global v3.0 Compatibility: Core updater logic (
MODULE_VERSION_LABELS) properly aligns Module 00 through Module 10 to standard v3.0 specs. - Module 02: Added tests parsing behavior and error handling of
ft_raise_exceptionand native core Exceptions likeTypeError. - Module 03: Abstract Syntax Tree parsing ensuring
ft_data_alchemistspecifically utilizes List Comprehensions per v3.0 rubric. - Module 04: Comprehensive tests for handling
sys.stdin/sys.stderrsafely (added string checks for exact validation brackets e.g.[STDERR]). - Module 05 Code Nexus: Completely new evaluation path tailored to test Abstract Base Classes (
data_processor), multi-faceted inheritance Polymorphism (data_stream), and Python Protocols (data_pipeline). - Module 06 The Codex: Full overwrite matching the massive v2.0 package integration refractor: enforces execution validation, circular dependencies, absolute/relative routing, and package visibility mapping.
- Module 07 DataDeck: Dropped the old Card format logic and rewrote tests checking for
CreatureFactory(Abstract Factory mapping),HealCapability(Mixins), andBattleStrategy(Abstract Strategy). - Modules 08, 09, and 10 required zero evaluation overwrites (only simple version bumps) and remain fully compliant natively.
- Legacy Logic: Hundreds of lines of deprecated code wiped relating to dead v1.0 and v2.0 exercises (
ft_analytics_dashboard,ft_crisis_response, old card games, etc.).
install.sh(--home): On uv-managed Python,python3 -m venvoften fails (ensurepiperror) leaving a broken.germinenv. The script now removes incomplete envs, prefersuv venv .germinenvwhenuvis onPATH, installs withuv pip install --python …or the venv interpreter directly (nosource activate, so the systempython3is never used forpip install).
install.sh: On PEP 668 / externally managed Python (including uv-managed interpreters), automatically fall back to an isolated.germinenvinstall (same as--home) instead of failing onpip install --user. Secondary retry if pip errors mentionexternally-managed-environmentbut the marker file was missed.
- Strict imports:
typing_extensionsis allowed alongsidetypingincheck_imports(e.g.Selfon Python 3.10; Issue #10, thanks @mauricelorenz).
- Integration tests: Golden reference project for Module 07 under
tests/fixtures/python_module_07_golden/andtests/test_integration_module07.py. - CI: GitHub Actions workflow (
.github/workflows/ci.yml) runs Module 07 integration tests on Python 3.10 and 3.12. - Developer install:
pip install -e ".[dev]"extra insetup.py(includespytest).
install.sh: Ifpipexits non-zero after a successful install (e.g. pyenv cannot rehash shims), verify the package and continue with a warning instead of failing (Issue #9, thanks @GayaOliveira).germinette.core:check_importsnow allowsfrom __future__ import annotations(standard library).- Module 06:
ft_pathway_debateoutput check accepts longerphilosophers_stone()lines and typographic apostrophes (Issue #8, thanks @IntRogerYT).
- Module 07 tester: Repository root
__init__.pyis required (recorded error, not only a warning); flake8/type-hint/strict checks run on all primary.pyfiles per exercise (includingmain.py,__init__.py, Ex1SpellCard/ArtifactCard, Ex2Combatable/Magical, etc.). - README: Maintainer section for integration tests; Conda/venv
pythonvspiptroubleshooting; version & update block at the end of the file. - CLI: Footer order: (if no errors) green “All exercises passed” panel → red Disclaimer → version / update line last. Unknown
-e/ exercise name now records an error so a false “all passed” is not shown. A-Maze-ing KO paths now userecord_error+ grouped report. - CLI: End-of-run footer uses GitHub
mainto decide: yellow “update available” panel only when a newer version exists; otherwise a dim “up to date” line (or offline hint).check_update()now returns(needs_update, remote_version, check_ok);germinette -uno longer claims “latest” when the version check failed (e.g. offline).
- Module 03 Exercise 4 (
ft_inventory_system): authorizedsum,max,min,listalongside dict-centric builtins for typical inventory reports.
- Stricter alignment with subjects across modules 00–10 (e.g. type hints / flake8 where required, Module 09 Pydantic rules, Module 03 Ex5 imports, Module 00 plant-age boundary, Module 01 CodeCultivation checks and banner).
- Installation:
install.shnow detects active virtual environments ($VIRTUAL_ENV) and installs without--userflag to avoid errors (Issue #6).
- Infrastructure: Added
--homeflag toinstall.sh(Feature #4).- Creates and installs into a local virtual environment (
.germinenv). - Automatically symlinks the binary to
~/.local/bin/germinette. - Bypasses PEP 668 restrictions on managed systems.
- Creates and installs into a local virtual environment (
- Module 03: Updated
ft_inventory_system(Ex4) tester to match Version 2.2 Subject (Issue #5).- New output requirements (Analysis, Categories, Suggestions).
- Removed outdated gold/transaction checks.
- Module 01: Relaxed verify strictness based on subject re-eval.
- Ex2: Removed strict check for
grow()method name. - Ex3: Removed minimum instance count check (5).
- Ex4: Removed valid accessor checks for
get_heightandget_age. - Ex5: Removed strict check for
bloom()method. - Ex6: Removed strict check for specific analytics output strings.
- Ex2: Removed strict check for
- Module 10:
- Authorized
round()function (required for Ex0). - Fixed missing type hints in solution files (inner functions, test helpers).
- Authorized
- Module 10: FuncMage (Functional Programming):
- Added support for all Functional Programming exercises.
- Ex0: Lambda Sanctum (
lambda_spells.py). - Ex1: Higher Realm (
higher_magic.py). - Ex2: Memory Depths (
scope_mysteries.py). - Ex3: Ancient Library (
functools_artifacts.py). - Ex4: Master's Tower (
decorator_mastery.py).
- Features:
- Validates usage of functional patterns (lambdas, closures, decorators).
- Enforces strict type hints (including return types).
- Forbids classes in Ex0-Ex3 (Functional focus).
- Module 08 & 09:
- Enforced strict type hint checking (including return types) as per requirements.
- Module 09: Initial release with Pydantic support.
- Ex0:
SpaceStationmodel. - Ex1:
AlienContactmodel. - Ex2:
SpaceMissionmodel.
- Ex0:
- Global: Removed mandatory docstring checks from Modules 01, 03, 04, 05, and 06.
- Aligns with the non-mandatory nature of docstrings in these subjects.
- Module 02: Removed mandatory docstring checks.
- Module 08:
- Authorized
sitemodule incommon_strict_checkfor virtual environment operations.
- Authorized
- Module 01:
- Moved
get_info()check from Exercise 1 to Exercise 2, matching the correction sheet requirements.
- Moved
- Module 08:
- Removed hardcoded test bypasses in solution files.
- Cleaned up comments to ensure solutions look authentic.
- Verified solutions against real dependencies (
pandas,numpy, etc.).
- Module 08:
- Fixed
flake8violations in solution files (construct.py,loading.py,oracle.py). - Corrected line lengths, whitespace, and formatting issues.
- Fixed
- Module 08: The Matrix (Environment & Config)
- Implemented
python_module_08tester. - Added support for Exercise 0 (
construct.py- Virtual Env detection). - Added support for Exercise 1 (
loading.py- Dependency Management). - Added support for Exercise 2 (
oracle.py- Environment Variables). - Added solution files in
devtools/test/python_module_08.
- Implemented
- Module 07 Verification:
- Corrected output expectations for dictionary printing (added spaces).
- Fixed strictness checks to allow relative imports (e.g.,
from ex0.Card import Card). - Relaxed strictness on library files (disabled mandatory
try/exceptcheck for non-main files). - Enabled auto-detection for
python_module_07.
- Module 07: DataDeck (Abstract Base Classes)
- Implemented strictness checks for ABC usage, multiple inheritance, and design patterns.
- Verified output against
en.subject-25.pdf.
- Mod 04 Update (v23 PDF):
- Updated content checks for "Ancient Text" and "Crisis Response" to match v23 strings.
- Enforced strict authorization for
openusage (skipped if not strictly authorized). - Simulate real crisis constraints (chmod 000 for vault test).
- Mod 05 Update (v24 PDF):
- Strict output matching for Polymorphic Streams ("Pipeline capacity" etc.).
- Enforced strict function allow-lists (
super,isinstancemandatory). - Clarified authorized imports (
random,time,collectionsfor specific exercises).
- Mod 03 Complete: Fully enforced v22 PDF strictness (Removed
sorted,list,enumerate. Onlysysimported). - Global Strictness: Refactored
BaseTesterto handle strict authorized function checks and imports centrally. - Mod 05 & 06 Upgrade: Updated both modules to use the new strictness engine.
- Mod 05 now strictly checks for
super()and authorized functions (zip,sum, etc. allowed). - Mod 06 now strictly whitelists
alchemyandsysimports while banning magic likeimportlib.
- Mod 05 now strictly checks for
- Cleanup: Tidy up of codebase and removal of debug artifacts.
- New Module: Added support for Module 06 (Import Mysteries).
- Features:
- Checks for package exposure (
ft_sacred_scroll). - Verifies import transmutation (aliasing, specific imports).
- Handles circular dependency checks (
ft_circular_curse).
- Checks for package exposure (
- Safety: Added checks to forbid
sys.pathhacking andexec/eval.
- Feature: Strict implementation of "Authorized Functions" for Module 02.
- Strictness: Mandatory
try/exceptenforcement across all exercises. - Fixes: Corrected function signature checks in
ft_garden_management.
- New Modules: Added full test suites for Module 04 and Module 05.
- Module 05:
- Protocol & ABC verification.
- Polymorphism output matching (Data Processor, Stream Nexus).
- Module 04:
- Context Manager checks (
withstatement). - File I/O verification (creating archives, reading logs).
- Context Manager checks (
- Enhancement: Added "Single KO" policy - testing stops at the first failure to save time.
- UI: Better error grouping and clearer "Exercise X" titles.
- Update System:
germinette -ucommand to auto-update the tool.
Older versions omitted for brevity.