Using the MakefileΒΆ

Added in version 0.9.8.

make.bat on Windows, or the Makefile otherwise, is often a handy companion in development. It makes development less dry, repetitive and error-prone, and the process as a whole more smooth-sailing.

This is partly also to compensate for the lack of a setup.py after adaptation of the standardized pyproject.toml; see PEP 621 and the official PyPA guide for more. Note that the Makefile is not intended to be used by end-users, but rather by developers.

Changed in version 0.9.9: Removed makefile-usage.rst from version control. The Read the Docs build now generates it automatically.

Added in version 0.9.7: Created make.bat at the project root, such that developers on Windows can achieve a close equivalent of using the Makefile.

Changed in version 0.9.5: Used more of uv in the Makefile.

Added in version 0.9.0: Created a Makefile to simplify development chores.

If you are in powershell, make will not work directly and you must use .\make.bat instead, which is more verbose; thus, you are strongly advised to develop in cmd.exe, the traditional command prompt.

Below is the Makefile help as of asyncutils v0.9.11.

Note

Generated by scripts/genmakefileusage.sh at 2026-06-05 13:32:27 UTC.

Available targets:
 help             - Show this help message
 test             - Run tests, allowing up to 5 failures since any more would likely mean an obvious error
 test-with-badges - Run tests more strictly, once with pytest-asyncio-cooperative and once with pytest-asyncio, generating badges and coverage
                    respectively; use as pre-push step only to update static SVGs
 clean            - Clean build artifacts and caches
 install          - Install the package in editable mode with development dependencies; assumes a virtual environment is present
 install-system   - Install the package in editable mode without a virtual environment
 install-silent   - The above without output
 venv             - Create a virtual environment using uv
 ruff             - Run the ruff linter
 watch            - Watch for changes and run tests automatically; requires pytest-watch
 type-check       - Run ty for type checking
 rmclog           - Remove existing changelog file
 clog             - Generate changelog from git history to file named ChangeLog
 publish          - Publish the package to PyPI, assuming version is already bumped, regenerating help files as well
 pre-commit       - Run pre-commit hooks on all files
Note: Some targets require additional tools to be installed, and some other targets will automatically install the uv package manager.
More targets may be added in the future on popular demand, so do keep updated.