store: Pattern: Lazy import inside function body to break circular imports

This commit is contained in:
Cal Corum 2026-02-25 16:26:37 -06:00
parent dedef61fcd
commit 9e56f53375

View File

@ -0,0 +1,12 @@
---
id: d637ad5b-0ad1-4164-b737-b870fce85ae1
type: code_pattern
title: "Pattern: Lazy import inside function body to break circular imports"
tags: [paper-dynasty, card-creation, card_builder, calcs_batter, circular_import, lazy_import, python]
importance: 0.6
confidence: 0.8
created: "2026-02-25T22:26:37.747893+00:00"
updated: "2026-02-25T22:26:37.747893+00:00"
---
## Problem\nbatters/card_builder.py imports from batters/calcs_batter.py (needs BattingCardRatingsModel). If calcs_batter.py also imported from card_builder.py at module level, this would cause a circular ImportError.\n\n## Solution: Lazy Import Inside Function Body\n```python\n# In batters/calcs_batter.py — inside get_batter_ratings():\ntry:\n from batters.card_builder import build_batter_full_cards\n vl_card, vr_card = build_batter_full_cards(...)\n vl_dict.update(vl_card.card_output())\n vr_dict.update(vr_card.card_output())\nexcept Exception as e:\n logger.warning(f'Card layout builder failed: {e}')\n```\n\nSame pattern used in pitchers/calcs_pitcher.py:\n```python\nfrom pitchers.card_builder import build_pitcher_full_cards\n```\n\n## Why It Works\nThe import only executes when the function is called, not at module load time, so the circular dependency never materializes at import resolution.