Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

pyfunc/load

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🔥 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! 🚀

About

load alternatywa dla import w Pythonie, inspirowaną prostotą Go i Groovy.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.