Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Lazy-load TensorFlow for TFRecord-specific pipeline paths

Aperta
#151 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

@hanzalaareeb ci sta già lavorando.

Dal 20/8/2026.

  • #152 di @hanzalaareeb — aperta
  • #208 di @venuachari777-bot — aperta

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
68/100
Tipo di issue
Refactoring
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
python, tensorflow

Direzione di ricerca

Inizia con dpsynth.data_generation e dpsynth.pipeline_transformations.input_output, quindi esamina il percorso di importazione di tfrecord_descriptor e i relativi rami di I/O specifici per TFRecord. Esegui il controllo di importazione Python fornito per confermare che i moduli non-TFRecord non lascino TensorFlow in sys.modules, quindi esegui i test della pipeline e verifica che gli 11 test esistenti passino.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary

This PR removes eager TensorFlow initialization from shared pipeline import paths.

Previously, importing non-TFRecord pipeline functionality could transitively import TensorFlow:

dpsynth.data_generation
→ creating_data_recorder_converter
→ tfrecord_descriptor
→ tensorflow

As a result, workflows that do not use TFRecord, including the SWIFT pipeline test, still required TensorFlow to initialize successfully during module import.

This PR defers TFRecord-specific imports until DataFormat.TFRECORD is selected and imports TensorFlow only inside TFRecord-specific I/O paths.

Changes

  • Lazily import tfrecord_descriptor when DataFormat.TFRECORD is selected.
  • Move TensorFlow imports into TFRecord-specific branches in pipeline I/O.
  • Preserve TensorFlow type annotations using the existing from __future__ import annotations support and TYPE_CHECKING imports without requiring TensorFlow at module import time.
  • Add regression coverage to verify that importing non-TFRecord pipeline modules does not load TensorFlow.
  • Preserve existing public APIs and dependency extras.

Why

Python executes module-level imports when importing a module. The previous import structure therefore initialized TensorFlow during test collection:

pytest collection
→ import SWIFT test
→ import shared DPSynth modules
→ import TFRecord implementation
→ import TensorFlow

This happened before any SWIFT test executed.

The SWIFT workflow uses PipelineDP's LocalBackend and a dummy record converter and does not require TFRecord support. However, it could still be blocked if TensorFlow failed to initialize in the environment.

The change makes TensorFlow initialization conditional on actually entering a TFRecord code path:

shared pipeline import
→ select data format
   ├── non-TFRecord → TensorFlow not imported
   └── TFRECORD → load TFRecord implementation → import TensorFlow

This preserves TFRecord support while preventing unrelated pipeline workflows from depending on successful TensorFlow initialization.

Verification

Confirmed that importing the shared modules no longer loads TensorFlow:

python -c "import sys; \
from dpsynth import data_generation; \
from dpsynth.pipeline_transformations import input_output; \
assert 'tensorflow' not in sys.modules"

The previously blocked pipeline tests now complete successfully:

11 passed

Some unrelated JAX, Beam, httplib2, and Pyparsing warnings remain.

Lingua principale
Python
Stelle
32
Fork
13
Merge medio
1g 19h
PR unite (30g)
20

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di google/dpsynth

Tutte le issue di google/dpsynth

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.