This is the contents of a file to which the CLI’s help command is redirected as of asyncutils v0.9.7.
Command used:
python3 -m asyncutils -h > help.out
Note
Generated by scripts/genhelp.ps1 at 2026-05-20 11:02:03.
usage: asyncutils [-l [FILE] | -n] [-e ETYP | -c ETYP | --thread | --process |
--interpreter | --loky | --loky-noreuse | --dask |
--ipython | --elib-flux-cluster | --elib-flux-job |
--elib-slurm-cluster | --elib-slurm-job |
--elib-single-node | --pebble-thread | --pebble-process |
--deadpool] [-Q] [-V] [-q] [-b] [-m M] [-p] [-s SEED] [-d]
[-P] [-v] [-?]
A versatile, feature-rich library of async tools integrated into the asyncio framework, aiming to make asynchronous programming easier for everyone.
Has CLI and colored REPL support for quick development.
On both conda and pip as py-asyncutils.
options:
-l, --log-to [FILE] This module uses a logger, so that post-mortem debugging can be done by inspecting the log file created.
When FILE, interpreted as a file descriptor if an integer, is passed, the logging output goes to a file with that name.
Passing 'NULL' for FILE is equivalent to specifying the --no-log option.
If FILE is 'MEMORY', logs are stored in memory and returned and voided whenever get_past_logs is called.
If FILE is 'MAKE' or no filename is passed but the option specified, an attempt is made to create a file of format 'asyncutils_log<number>.log' in the
current working directory for logging, for number from 1 to 4096. If you have more than 4096 log files, you should probably clean them up.
Log file rotation is not currently supported.
If FILE is 'STDOUT', log to stdout.
If FILE is 'STDERR', log to stderr. This is also the default behaviour and fallback if the above steps fail.
-n, --no-log Disable logging completely.
A disabled logger is still created to make subsequent logging.getLogger calls return it.
Thus, this option cannot avoid the cost of importing logging and instantiating the logger early on.
-e, --executor ETYP Choose an executor class to use when necessary depending on the value of ETYP as follows:
thread: Use concurrent.futures.thread.ThreadPoolExecutor. This is the default and will be used if the third-party options are passed but not installed.
The below options are experimental.
process: Use concurrent.futures.process.ProcessPoolExecutor. Use with care, since this depends on CPU architecture.
interpreter: Use concurrent.futures.interpreter.InterpreterPoolExecutor. May throw various errors relating to unshareable objects.
The below options are third-party.
loky_noreuse: Use a new loky.process_executor.ProcessPoolExecutor every time.
loky: Reuse a loky.process_executor.ProcessPoolExecutor if possible.
dask: Use dask.distributed.Client, the API of which just so happens to be a superset of those of concurrent.futures executors.
ipython: Use ipyparallel.ViewExecutor.
elib_flux_cluster: Use executorlib.executor.flux.FluxClusterExecutor.
elib_flux_job: Use executorlib.executor.flux.FluxJobExecutor.
elib_slurm_cluster: Use executorlib.executor.slurm.SlurmClusterExecutor.
elib_slurm_job: Use executorlib.executor.slurm.SlurmJobExecutor.
elib_single_node: Use executorlib.executor.single.SingleNodeExecutor.
pebble_thread: Use pebble.pool.thread.ThreadPool.
pebble_process: Use pebble.pool.process.ProcessPool.
deadpool: Use deadpool.Deadpool.
Note: The executorlib project is Python <3.14 only, and the executors extra may not work on higher python versions, causing installation of the all
extra to also fail.
There are some implementations from niche libraries (found on a PyPI-wide search using the keyword "executor") that are intentionally excluded, since
they either require prior configuration to be useful (as is the case with adaptive-executor), are too small (contextvars-executor), unmaintained
(celery-executor), too little-known (sequential-executor), rely on possibly outdated implementation details (bounded-pool-executor), have specific
backends seldom used for this purpose (Flask-Executor) or have completely incompatible APIs (thread-executor). In those cases, pass the fully qualified
name to -c and bear the potential consequences.
-c, --custom-executor ETYP
Use a custom executor not included in the above options by specifying the name of an implementation.
Passing "package.submodule.Implementation", for example, will execute "from package.submodule import Implementation as Executor".
--thread Equivalent to "-e thread".
--process Equivalent to "-e process".
--interpreter Equivalent to "-e interpreter".
--loky Equivalent to "-e loky".
--loky-noreuse Equivalent to "-e loky_noreuse".
--dask Equivalent to "-e dask".
--ipython Equivalent to "-e ipython".
--elib-flux-cluster Equivalent to "-e elib_flux_cluster".
--elib-flux-job Equivalent to "-e elib_flux_job".
--elib-slurm-cluster Equivalent to "-e elib_slurm_cluster".
--elib-slurm-job Equivalent to "-e elib_slurm_job".
--elib-single-node Equivalent to "-e elib_single_node".
--pebble-thread Equivalent to "-e pebble_thread".
--pebble-process Equivalent to "-e pebble_process".
--deadpool Equivalent to "-e deadpool".
verbosity:
Adjust the amount of output of this program.
-Q Produce less logging output. Additive.
-V Produce more logging output. Additive.
repl:
Configure the behaviour of the Read-Eval-Print Loop of this module.
-q, --quiet Do not display the banner and exit message in the REPL; the -q flag can be passed to the python command directly to achieve the same effect.
-b, --basic-repl Do not use the console with colors and enhanced functionality from _pyrepl. Use only if you have experienced a bug with the colored console.
-m, --max-memerrs M The REPL will exit on the M+1-th MemoryError to prevent consuming too many computer resources.
M defaults to 3.
Set to a negative value to disable the threshold completely.
testing:
Options to more conveniently test this module.
-p, --load-all Preload all submodules of this module. Useful for testing, but incurs noticeable performance penalty.
-s, --seed SEED Seed the random instance used internally by this module with SEED, which will be interpreted as an integer if possible.
-d, --debug Enable debug mode to produce more logging output by entering the global debug context manager. Different from -VV, since
the verbosity flags take effect again when the context manager is manually exited.
-P, --pdb Intended for developers of this library only; open the pdb debugger interface when the exit code of the console is greater than zero,
or an uncaught error occurs in the console execution logic itself.
metadata:
Get basic information about this installation of asyncutils.
-v, --version Print the current version number of asyncutils, in the form as specified by __version__.representation, and exit.
Useful for checking if the installation succeeded.
-?, -h, --help Print this help message and exit.
Use @<filename> to insert command-line arguments from the file of that name at the exact position of this parameter.
The file should have one argument per line; this format differs from that described below.
Use the AUTILSCFGPATH environment variable to specify a path to a file of a supported type containing the default configuration.
A --config option is not offered due to the complexity of implementation and ease to revert to a default config within a one-off config.
See the possible keys in format.json5, which can be accessed using tools.get_cfg_json_format().
Note that the inner workings of this library is tightly coupled with the ever-evolving asyncio framework.
As such, it is probably incompatible with full-fledged third-party async frameworks such as curio, anyio, trio, and tornado.