Auto Import Py
A Python library for automatically importing modules from a directory structure.
English | 한국어
Features
- 📁 Automatically imports all Python modules from a directory structure
- 🔄 Recursively traverses subdirectories
- ⚙️ Returns a list of imported module objects
- 🚀 Simple and lightweight implementation
- 🛣️ Works with any directory structure
Installation
pip install auto-import-py
uv add auto-import-py
Usage
Basic Usage
from auto_import import auto_import
from pathlib import Path
# Import all modules from the current directory
modules = auto_import()
# Import all modules from a specific directory
modules = auto_import("my_modules")
# Import all modules from a Path object
modules = auto_import(Path("src/components"))
Directory Structure Example
my_modules/
├── users.py # Will be imported
├── items.py # Will be imported
├── __init__.py # Will be filtered out
└── v1/
├── admin.py # Will be imported
└── __init__.py # Will be filtered out
Module File Example
# my_modules/users.py
def get_users():
return {"users": []}
def create_user(name: str):
return {"name": name, "id": 1}
# my_modules/items.py
class Item:
def __init__(self, name: str):
self.name = name
def get_items():
return [Item("item1"), Item("item2")]
Using Imported Modules
from auto_import import auto_import
# Import all modules
modules = auto_import("my_modules")
# Access functions and classes from imported modules
for module in modules:
print(f"Module: {module.__name__}")
# Get all functions from the module
functions = [attr for attr in dir(module) if callable(getattr(module, attr)) and not attr.startswith('_')]
print(f"Functions: {functions}")
# Get all classes from the module
classes = [attr for attr in dir(module) if isinstance(getattr(module, attr), type) and not attr.startswith('_')]
print(f"Classes: {classes}")
Advanced Usage
from auto_import import auto_import
import inspect
# Import modules and inspect their contents
modules = auto_import("src")
for module in modules:
print(f"\n=== {module.__name__} ===")
# Get all callable objects
for name, obj in inspect.getmembers(module, callable):
if not name.startswith('_'):
print(f"Callable: {name}")
# Get all classes
for name, obj in inspect.getmembers(module, inspect.isclass):
if not name.startswith('_'):
print(f"Class: {name}")
API Reference
auto_import(dir_path: Path | str = ".") -> list[ModuleType]
Automatically imports all Python modules from the specified directory.
Parameters:
dir_path(Path | str): Directory path to import modules from (default: ".")
Returns:
list[ModuleType]: List of imported module objects
Behavior:
- Recursively traverses the specified directory
- Finds all
.pyfiles - Imports each module using
importlib.import_module - Returns a list of successfully imported modules
Note: The function will return an empty list if the directory doesn't exist.
Development
Install Dependencies
# Install development dependencies
uv sync
Run Tests
# Run all tests
uv run pytest
Code Quality Checks
# Linting
ruff check src/ tests/
# Formatting
ruff format src/ tests/
License
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
Contributing
Bug reports, feature requests, and pull requests are welcome! Please create an issue first before contributing.
Author
- owjs3901 - Initial work - owjs3901@gmail.com
Metadata
Release files for auto-import-py 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| auto_import_py-0.1.0.tar.gz | 25.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| auto_import_py-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.8 kB
Release files / auto_import_py-0.1.0.tar.gz
| Download URL | auto_import_py-0.1.0.tar.gz |
|---|---|
| Size | 25.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
012555e05fd9ca6ce35c9b7ac7fe800cf1e3d5dea823f4a40a4fd118b88cd5d6
|
|
BLAKE2b-256 checksum How to use checksums |
313c3bb984d49109cdf025aa21979b1cd916aff2014c773fd7118892f6f94935
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.8.17
|
Release files / auto_import_py-0.1.0-py3-none-any.whl
| Download URL | auto_import_py-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cb14e4c93e28465ca8b164ea53b3a9239b3c59903eaf9a018b37f6356dd6e1f9
|
|
BLAKE2b-256 checksum How to use checksums |
d867acac63933833a60fbdbe382fd24c99390e9e616cc0b58d3b74e98d49e1ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.8.17
|