Prologue
What is Equipment?
Equipment is a comprehensive scaffolding framework designed to simplify and streamline Python project development. It provides a robust, flexible foundation that adapts to projects of any scale - from simple scripts to complex enterprise applications.
By providing a pre-configured architecture and a set of core services, Equipment allows you to focus on your business logic rather than boilerplate code and project setup.
Why Equipment?
- Zero Configuration: Get up and running in minutes with a standardized project structure.
- Batteries Included: Built-in support for Dependency Injection, SQLite/MySQL/PostgreSQL, Logging, Queues, Scheduling, and Storage.
- Flexible & Non-opinionated: Use what you need, ignore what you don't. It fits any development strategy.
- Scalable: Start small and grow your project into a large-scale application without changing your fundamental architecture.
- Modern Tech Stack: Leverages industry-standard libraries like SQLAlchemy, Alembic, and Redis.
Key Design Principles
- Developer Experience: Minimize boilerplate code and configuration overhead.
- Flexibility: Support various project types and development strategies.
- Scalability: Grow from small scripts to large applications seamlessly.
- Modularity: Easy integration with other Python tools and frameworks.
Core Features
🔧 Dependency Injection
- Intuitive dependency management using
python-dependency-injector. - Support for class-based and function-based dependencies.
- Simplifies object lifecycle management and improves testability.
🏗️ Project Initialization
- One-command project creation:
equipment new my-app. - Consistent setup across different project types.
- Pre-configured
pyproject.toml,.env, and directory structure.
📝 Advanced Logging
- Configurable logging system with multiple channels (console, file, daily, sqlite).
- Support for JSON formatters.
- Environment-specific logging levels.
⏰ Task Scheduling
- Built-in task scheduler powered by the
schedulelibrary. - Support for periodic and recurring tasks.
- Integrates seamlessly with the queue system.
📦 Queue Management
- Support for
sync(synchronous) andredis(asynchronous) queues. - Asynchronous task processing using
rq. - Easy enqueuing of any Python callable.
💾 Database Integration
- SQLAlchemy ORM integration with support for multiple providers.
- Automated migrations powered by Alembic.
- Easy-to-use session management.
💽 Storage Management
- Filesystem abstraction layer (Local and S3 support).
- Consistent API for file operations.
- Easily extensible for custom storage drivers.
Getting Started
To start a new project with Equipment:
# 1. Install Equipment CLI
pip install equipment
# 2. Create a new project directory
equipment new my-app
# 3. Enter the project and install it as an editable package
cd my-app
pip install .
# 4. Run the main entry point
python main.py
🤝 Community and Support
We're passionate about making Python development easier and more enjoyable. Join our community:
📄 License
This project is open-sourced software licensed under the MIT license.
Equipment icons created by Freepik - Flaticon