Skip to content

Add lazy loading for pytorch, tensorflow and the benchmarking module#171

Open
deruyter92 wants to merge 4 commits intomainfrom
jaap/lazy_loading
Open

Add lazy loading for pytorch, tensorflow and the benchmarking module#171
deruyter92 wants to merge 4 commits intomainfrom
jaap/lazy_loading

Conversation

@deruyter92
Copy link
Collaborator

replacement of #170 (wrong branch)

Summary:
This PR fixes import-time failures when optional ML backends are not installed, and makes top-level package imports lighter and safer.

What changed

Added centralized lazy import helpers in dlclive/utils.py:get_torch(required=..., feature=...), get_tensorflow(required=..., feature=...)
Updated get_available_backends to use those helpers.
Enforced clear fail-fast behavior in required runtime paths: dlclive/factory.py now validates backend availability before creating PyTorch/TensorFlow runners.
Removed eager torch imports from non-required paths: dlclive/benchmark.py, dlclive/live_inference.py
Made benchmark APIs lazily loaded from package root: dlclive.init now lazily resolves benchmark_videos and download_benchmarking_data.
Why
torch/tensorflow are optional extras. Importing dlclive should not fail if one backend is missing, while backend-specific execution should still raise actionable errors when that backend is actually required.

Copy link
Collaborator

@C-Achard C-Achard left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, I like the centralizing of imports in utils. Thanks !

@C-Achard C-Achard linked an issue Mar 13, 2026 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Making deep learning backends truly optional at import time

2 participants