Skip to main content

Modern alternative to Python import - inspired by Go and Groovy. Compatible with Python 2.7 and 3.5+.

Project description

🔥 Load - Modern Python Import Alternative

Load is a modern alternative to Python's import system, inspired by the simplicity of Go and Groovy. It provides automatic package installation, intelligent caching, and magic import syntax.

🎯 Purpose

Load simplifies Python imports by:

  • Reducing boilerplate code
  • Automating package installation
  • Improving developer productivity
  • Making imports more intuitive

✨ Features

  • Automatic Package Installation: Missing packages are installed on demand
  • Smart Caching: Modules are cached for faster subsequent imports
  • Magic Import Syntax: Import with just the package name
  • Function-level Imports: Use @load decorator to manage dependencies at function level
  • Multiple Registries: Support for PyPI, GitHub, GitLab, and private registries
  • Python 2/3 Compatible: Works across Python versions

🚀 Quick Start

Install load using any of these methods:

# 1. Using curl (Linux/macOS/WSL)
curl -sSL https://load.pyfunc.com | python3 -

# 2. Using PowerShell (Windows)
(Invoke-WebRequest -Uri https://load.pyfunc.com -UseBasicParsing).Content | py -

# 3. Using Poetry
poetry add load

# 4. Using pip
pip install load

📚 Documentation

For detailed documentation, please refer to:

🎯 Function-level Dependency Loading

Use the @load decorator to automatically handle dependencies for specific functions:

from load import load_decorator as load

@load('numpy', 'pandas', 'plt=matplotlib.pyplot')
def analyze_data():
    import numpy as np
    data = np.random.rand(10, 3)
    plt.plot(data)
    plt.show()

# The required packages will be automatically installed when the function is first called
analyze_data()

For more examples and advanced usage, see the Decorator Documentation.

🤝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

📚 Documentation Index

🔗 Links

🔍 Real-World Example

Data Science Workflow

# Traditional way
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LinearRegression

# With Load
from load import load, import_aliases

# Single import
np = load('numpy')

# Multiple imports with aliases
pd, plt, sns = import_aliases('pandas', 'plt=matplotlib.pyplot', 'seaborn')

# Direct attribute access
model = load('sklearn.linear_model.LinearRegression')()

# Now use them as usual
data = pd.DataFrame({'x': [1, 2, 3], 'y': [1, 2, 3]})
model.fit(data[['x']], data['y'])
plt.scatter(data['x'], data['y'])
plt.plot(data['x'], model.predict(data[['x']]), 'r')
plt.show()

Web Development

from load import load, configure_private_registry

# Configure private registry
configure_private_registry(
    name="company",
    index_url="https://pypi.company.com/simple/"
)

# Import standard and private packages
fastapi = load('fastapi')
internal_auth = load('company-auth', registry="company")

app = fastapi.FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

🔒 Prywatne rejestry

# Prywatny PyPI firmy
configure_private_registry(
    name="company",
    index_url="https://pypi.company.com/simple/"
)

# Prywatny GitLab z tokenem  
configure_private_registry(
    name="internal", 
    base_url="https://gitlab.company.com/",
    token="your-token"  # lub GITLAB_TOKEN env var
)

# Użyj
company_lib = load("internal-package", registry="company")
secret_tool = load("team/secret-sauce", registry="internal")

🎯 Smart Loading - automatyczne wykrywanie

Load automatycznie wykrywa skąd ładować:

load("json")                    # → stdlib (nie instaluje)
load("requests")                # → PyPI  
load("user/repo")               # → GitHub
load("gitlab.com/user/proj")    # → GitLab
load("./file.py")               # → Lokalny plik
load("https://example.com/x.py") # → URL

🏢 Przykłady dla firm

Startup z GitHub

# Najnowsze z GitHub zamiast PyPI
ml_lib = load("huggingface/transformers")
selenium = load("SeleniumHQ/selenium/py") 
playwright = load("microsoft/playwright-python")

Korporacja z prywatnymi rejestrami

# Skonfiguruj rejestry firmy
configure_private_registry("nexus", 
    index_url="https://nexus.company.com/pypi/simple/")

configure_private_registry("artifactory",
    index_url="https://company.jfrog.io/pypi/simple/")

# Używaj
auth_lib = load("company-auth", registry="nexus")
internal_api = load("team-api-client", registry="artifactory")

Projekt z mieszanymi źródłami

def setup_project():
    return {
        # PyPI - stabilne wersje
        'web': load("fastapi"),
        'db': load("sqlalchemy"),
        
        # GitHub - najnowsze funkcje  
        'ai': load("openai/openai-python"),
        'scraping': load("microsoft/playwright-python"),
        
        # Prywatne - firmowe narzędzia
        'auth': load("auth-service", registry="company"),
        'monitoring': load("team/observability", registry="internal"),
        
        # Lokalne - logika biznesowa
        'models': load("./models.py"),
        'utils': load("./utils.py")
    }

🔧 Zarządzanie rejestrami

# Lista dostępnych rejestrów
list_registries()

# Dodaj własny rejestr
add_registry("custom", {
    'index_url': 'https://pypi.custom.com/simple/',
    'install_cmd': [sys.executable, "-m", "pip", "install", "--index-url"],
    'description': 'Custom PyPI mirror'
})

# Szybka konfiguracja
configure_private_registry("maven-central", 
    index_url="https://maven.central.com/pypi/")

🚀 Przykłady projektów

Data Science

def setup_ds():
    return {
        'pd': load("pandas", "pd"),                    # PyPI
        'np': load("numpy", "np"),                     # PyPI  
        'latest_sklearn': load("scikit-learn/scikit-learn"), # GitHub
        'utils': load("./ds_utils.py")                 # Local
    }

Web Development

def setup_web():
    return {
        'api': load("fastapi"),                        # PyPI
        'auth': load("company-sso", registry="nexus"), # Private
        'monitoring': load("team/apm-client", registry="gitlab"), # GitLab
        'models': load("./models.py")                  # Local
    }

AI/ML Pipeline

def setup_ai():
    return {
        'torch': load("pytorch/pytorch"),              # GitHub latest
        'transformers': load("huggingface/transformers"), # GitHub
        'custom_models': load("team/ml-models", registry="company"), # Private
        'preprocessing': load("./preprocess.py")        # Local
    }

📊 Popularne rejestry w praktyce

Dla startupów

  • PyPI - podstawowe biblioteki
  • GitHub - najnowsze wersje, eksperymenty
  • Lokalne pliki - własna logika

Dla korporacji

  • PyPI - sprawdzone, stable biblioteki
  • Prywatny PyPI - firmowe pakiety
  • GitLab Enterprise - internal repos
  • Artifactory/Nexus - cache i security scanning

Dla research

  • GitHub - cutting-edge research code
  • PyPI - etablowane biblioteki naukowe
  • URL - papers with code, direct downloads

🔒 Bezpieczeństwo

# Kontroluj źródła
ALLOWED_REGISTRIES = ['pypi', 'company', 'github-trusted']

def secure_load(name, registry=None):
    if registry not in ALLOWED_REGISTRIES:
        raise SecurityError(f"Registry {registry} not allowed")
    return load(name, registry=registry)

🎉 Dlaczego Load?

Problem Tradycyjnie Z Load
Instalacja pip install pkg load("pkg")
GitHub repo Clone, setup.py, pip install load("user/repo")
Prywatny rejestr Konfiguruj pip.conf load("pkg", registry="company")
Różne źródła Różne komendy load() dla wszystkiego
Najnowsza wersja Czekaj na PyPI load("user/repo") z GitHub

Load - jeden interfejs do wszystkich rejestrów Python! 🚀


Skopiuj load.py, napisz from load import * i ładuj skąd chcesz!

🔥 Podsumowanie - Load z rejestrami

Load z obsługą wszystkich głównych rejestrów Python:

📦 Obsługiwane rejestry:

  1. PyPI (~500k pakietów) - load("requests")
  2. GitHub (~miliony repozytoriów) - load("user/repo")
  3. GitLab (~setki tysięcy) - load("gitlab.com/user/proj")
  4. Prywatne PyPI - load("pkg", registry="company")
  5. URL - load("https://example.com/lib.py")
  6. Lokalne pliki - load("./utils.py")

🚀 Kluczowe funkcje:

  • Smart detection - automatycznie wykrywa skąd ładować
  • Auto-install - instaluje co brakuje
  • Cache w RAM - szybkie powtórne ładowanie
  • Prywatne rejestry - obsługa firmowych PyPI/GitLab z tokenami
  • Zero config - działa od razu

💪 Użycie:

from load import *

# Podstawowe
http = requests()                           # PyPI
data = pd()                                # PyPI + alias

# GitHub (najnowsze wersje)
ai = load("openai/openai-python")          # GitHub
ml = load("huggingface/transformers")      # GitHub

# Prywatne firmy
auth = load("company-auth", registry="nexus")
api = load("team/api", registry="gitlab")

# Lokalne
utils = load("./utils.py")

🏢 Dla firm:

# Skonfiguruj raz
configure_private_registry("company", 
    index_url="https://pypi.company.com/simple/")

# Używaj wszędzie
internal_lib = load("secret-package", registry="company")

🎯 Główne zalety:

  1. Jeden interfejs do wszystkich źródeł
  2. Automatyczne wykrywanie - nie musisz pamiętać skąd co
  3. Obsługa tokenów dla prywatnych repozytoriów
  4. Szybkie dzięki cache w RAM
  5. Proste jak w Go - jedna funkcja load()

Rezultat: Zamiast kombinować z pip install, git clone, konfiguracją pip.conf - po prostu load() i działa! 🚀

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

load-1.0.14.tar.gz (25.1 kB view details)

Uploaded Source

Built Distribution

load-1.0.14-py2.py3-none-any.whl (24.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file load-1.0.14.tar.gz.

File metadata

  • Download URL: load-1.0.14.tar.gz
  • Upload date:
  • Size: 25.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.14.11-300.fc42.x86_64

File hashes

Hashes for load-1.0.14.tar.gz
Algorithm Hash digest
SHA256 81f8b0fecbe9c0d437c2ef4c39a8f52f5ebb8c906c95d959e5584f2aaccb426a
MD5 0a6d618d571eac774d727d32333850b2
BLAKE2b-256 591c3ef5d3c857d59ad978806529f7784f500e639703bc03d926be96f3777965

See more details on using hashes here.

File details

Details for the file load-1.0.14-py2.py3-none-any.whl.

File metadata

  • Download URL: load-1.0.14-py2.py3-none-any.whl
  • Upload date:
  • Size: 24.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.14.11-300.fc42.x86_64

File hashes

Hashes for load-1.0.14-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 75999b0d239ef95110f0f4f8a66dc860ad70f71d833939c975ecaf7c4d221f07
MD5 6f28c3b89c188764d3d92835bf96f6bd
BLAKE2b-256 e28f07d5d2845499998982401c24b07c38bedd4e5ab0a67bddcd055ec3276209

See more details on using hashes here.

Supported by

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