Description
Recipes 01-06 in fundamentals/pycubrid/ are high quality (full type annotations, proper imports, clean patterns). Recipes 07-16 show a significant quality drop:
1. Missing from __future__ import annotations
07_merge_upsert.py, 08_hierarchy_connect_by.py, 09_serial_order_numbers.py, 10_collection_columns.py
- Required by project AGENTS.md
2. getattr(pycubrid, "connect") anti-pattern
11_bulk_etl_pipeline.py:21, 12_pool_retry_worker.py:18, 13_atomic_counters.py:21, 14_manual_cascade_delete.py:16
- Uses
CONNECT = getattr(pycubrid, "connect") instead of direct pycubrid.connect
- Obscures the API for learners and disables IDE autocomplete
# Current (bad)
import pycubrid
CONNECT = getattr(pycubrid, "connect") # ← confusing for learners
# Should be
import pycubrid
# ... use pycubrid.connect() directly
3. Missing type annotations
- Functions in 07-14 lack return type annotations
- Earlier files (01-06) are fully annotated
4. File-level # pyright: reportAttributeAccessIssue=false
- Files 07-12 suppress pyright globally
- Masks real type errors
5. Import ordering violations
from datetime import datetime placed after import pycubrid (stdlib should come first)
Fix
- Add
from __future__ import annotations to files 07-10
- Replace
getattr(pycubrid, "connect") with direct pycubrid.connect()
- Add type annotations to match quality of files 01-06
- Replace file-level pyright suppression with inline
# type: ignore[attr-defined]
- Fix import ordering: stdlib → third-party → local
Context
Found during line-by-line code review (2025-07-23).
Description
Recipes 01-06 in
fundamentals/pycubrid/are high quality (full type annotations, proper imports, clean patterns). Recipes 07-16 show a significant quality drop:1. Missing
from __future__ import annotations07_merge_upsert.py,08_hierarchy_connect_by.py,09_serial_order_numbers.py,10_collection_columns.py2.
getattr(pycubrid, "connect")anti-pattern11_bulk_etl_pipeline.py:21,12_pool_retry_worker.py:18,13_atomic_counters.py:21,14_manual_cascade_delete.py:16CONNECT = getattr(pycubrid, "connect")instead of directpycubrid.connect3. Missing type annotations
4. File-level
# pyright: reportAttributeAccessIssue=false5. Import ordering violations
from datetime import datetimeplaced afterimport pycubrid(stdlib should come first)Fix
from __future__ import annotationsto files 07-10getattr(pycubrid, "connect")with directpycubrid.connect()# type: ignore[attr-defined]Context
Found during line-by-line code review (2025-07-23).