Problem
The Module.import_module() method in dotflow/core/module.py uses rpartition(".") to split the entry point string:
module_path, _, attr_name = value.rpartition(".")
This forces the format module.path.attribute (all dots), which diverges from the Python packaging standard used by every major Python tool (Gunicorn, Uvicorn, Celery, setuptools, pyproject.toml).
Standard format
The Python ecosystem standard is module.path:attribute — dots for the module path, colon as separator before the attribute:
| Tool |
Example |
| Gunicorn |
main:app |
| Uvicorn |
package.module:app |
| Celery |
proj.celery:app |
| setuptools |
mymodule:main |
| Python spec |
importable.module:object.attr |
Reference: https://packaging.python.org/specifications/entry-points/
Fix
Change rpartition(".") to rpartition(":") in dotflow/core/module.py:
module_path, _, attr_name = value.rpartition(":")
Impact
- CLI usage changes from
dotflow start --step my_module.my_step to dotflow start --step my_module:my_step
- Breaking change — requires updating all examples and docs
Problem
The
Module.import_module()method indotflow/core/module.pyusesrpartition(".")to split the entry point string:This forces the format
module.path.attribute(all dots), which diverges from the Python packaging standard used by every major Python tool (Gunicorn, Uvicorn, Celery, setuptools, pyproject.toml).Standard format
The Python ecosystem standard is
module.path:attribute— dots for the module path, colon as separator before the attribute:main:apppackage.module:appproj.celery:appmymodule:mainimportable.module:object.attrReference: https://packaging.python.org/specifications/entry-points/
Fix
Change
rpartition(".")torpartition(":")indotflow/core/module.py:Impact
dotflow start --step my_module.my_steptodotflow start --step my_module:my_step