Skip to main content

A dead-simple, zero-dependency lazy import proxy to make Python CLIs start instantly.

Project description

cli-speeder

Make your Python CLIs start instantly (10x-100x faster). Python scripts are notoriously slow to start because they import heavy libraries (like pandas, torch, boto3, pydantic) at the top level, even if the user only runs a simple command like --help.

cli-speeder fixes this with zero code refactoring.

Installation

pip install cli-speeder

Usage

There are two ways to use this.

Method 1: The "One-Liner" (Recommended)

Add this once at the very top of your script (before your heavy imports).

from cli_speeder import speed_up_modules
# Magic: Forces these modules to load lazily
speed_up_modules(["pandas", "tensorflow", "boto3"])

# --- Your normal code stays exactly the same! ---
import pandas as pd      \# 0ms (Instant)
import tensorflow as tf  \# 0ms (Instant)
import boto3             \# 0ms (Instant)

def process_data():
\# The libraries only actually load HERE, when you use them.
df = pd.read_csv("data.csv")

Method 2: Manual Proxy (Granular Control)

If you want specific control over exactly which object is lazy.

from cli_speeder import lazy_import, lazy_from_import

# Replace 'import pandas as pd' with:
pd = lazy_import("pandas")

# Replace 'from pandas import DataFrame' with:
DataFrame = lazy_from_import("pandas", "DataFrame")

Benchmarks

Time to run python script.py --help:

Library Standard Import With cli-speeder
Pandas ~0.8s < 0.01s
Torch ~2.5s < 0.01s
Boto3 ~0.5s < 0.01s

Debugging / Production Safety

Lazy loading is great for CLIs, but sometimes (like in production workers) you might want standard behavior to catch ImportError immediately.

You can force all imports to happen immediately (disable lazy loading) by setting an environment variable:

export CLI_SPEEDER_EAGER=1
python my_script.py

License

cli_speeder is licensed under the Apache License 2.0. See the LICENSE file for more details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cli_speeder-0.1.2.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cli_speeder-0.1.2-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file cli_speeder-0.1.2.tar.gz.

File metadata

  • Download URL: cli_speeder-0.1.2.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cli_speeder-0.1.2.tar.gz
Algorithm Hash digest
SHA256 18f72b093143e0a6ad97a74227043204a14d36b8e0033db7a4c712931422a049
MD5 c3b7d15f524c7cbf3fc159c08e07f50f
BLAKE2b-256 f5d77ab3839cea8fdcfe6c794eac56cd05086e0ce1952b2e9a8308c6b591b700

See more details on using hashes here.

Provenance

The following attestation bundles were made for cli_speeder-0.1.2.tar.gz:

Publisher: publish.yml on Nabarup1/cli_speeder

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cli_speeder-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: cli_speeder-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cli_speeder-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d0cb110a0143ed761e7f0cf94bd498aacc0149d790c09298dd3642e2ee93d7cb
MD5 12b7a76737eeabd9417b62ba3be8068f
BLAKE2b-256 3f1cccb27230cf9fe1cd3168359785ca2a0b2480c048432096bd551980c478d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for cli_speeder-0.1.2-py3-none-any.whl:

Publisher: publish.yml on Nabarup1/cli_speeder

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page