A minimalist plugin system for Python that requires zero modifications to existing code.
Copy plugin_core.py to your Python project directory.
The system will automatically create a plugins/ directory on first use, or you can create it manually.
Copy any existing Python files to the plugins/ directory. No changes needed!
Add this single line to your main program:
from plugin_core import call_plugin_funcCall any function from any plugin:
result = call_plugin_func("your_module", "your_function", param1="value1")Your_Project/
├── main.py # Your main program
├── plugin_core.py # Plugin system (single file)
└── plugins/ # Auto-discovered plugins
├── your_module_1.py # Existing Python file 1
├── your_module_2.py # Existing Python file 2
└── subdirectory/ # Subdirectories supported
└── your_module_3.py # Call as "subdirectory.your_module_3"
- Existing Python files work as plugins without any changes
- No decorators, base classes, or configuration needed
- Copy files to
plugins/directory and they're ready to use
# Only this line needed in your main program
from plugin_core import call_plugin_funcCall any function within any module:
call_plugin_func("data_processor", "process_data", data=[1,2,3])
call_plugin_func("data_processor", "main") # Even main functions- Module not found → Returns
None, logs warning - Function not found → Returns
None, logs warning - Execution errors → Returns
None, logs error - Main program continues unaffected
result = call_plugin_func("data_tools", "process_data",
data=my_data, format="json")from plugin_core import call_plugin_func_with_fallback
result = call_plugin_func_with_fallback(
"exporter",
primary_func="advanced_export",
fallback_func="basic_export",
data=my_data
)from plugin_core import plugin_context
# Plugin A stores data
plugin_context.set_data("processing_result", result)
# Plugin B reads data
data = plugin_context.get_data("processing_result")python generic_demo.pyThe demo shows usage patterns without providing specific implementations.
- Create
plugins/directory in your project - Copy any Python files to
plugins/ - Test with
call_plugin_func()
For detailed technical documentation:
- English Documentation - Complete technical reference, architecture, and advanced features
- 中文文档 - 完整的技术参考、架构设计和高级功能
This README provides a quick start guide. For in-depth understanding of the system design, plugin development, and advanced usage patterns, please refer to the detailed documentation above.
- 🚀 New Users: Read this entire README for quick setup
- 🔧 Developers: See docs/en-US/index.md for API reference and advanced features
- 📖 Chinese Users: 查看 docs/zh-CN/index.md 获取中文文档
- Zero Modification: No changes to existing code
- Minimal Intrusion: One-line integration
- Maximum Compatibility: Works with any Python file
- Graceful Degradation: Failures don't crash the program
- Performance First: Caching and optimization built-in
This is a complete, self-contained system. To adapt it to your needs:
- Copy
plugin_core.pyto your project - Modify as needed for your specific requirements
- Maintain the core principles of zero modification and graceful degradation
This system is designed to be copied and adapted freely. No restrictions on usage.
Remember: The power of this system is its simplicity. Copy plugin_core.py, add your existing Python files to plugins/, and start calling functions with a single import. No configuration, no modification, no complexity.