Skip to content

[P1/quality] Later pycubrid recipes (07-16) quality regression — missing annotations, getattr hack, missing imports #31

Description

@yeongseon

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

  1. Add from __future__ import annotations to files 07-10
  2. Replace getattr(pycubrid, "connect") with direct pycubrid.connect()
  3. Add type annotations to match quality of files 01-06
  4. Replace file-level pyright suppression with inline # type: ignore[attr-defined]
  5. Fix import ordering: stdlib → third-party → local

Context

Found during line-by-line code review (2025-07-23).

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdocumentationImprovements or additions to documentationpriority: highImportant, resolve soon

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions