Skip to main content

setuptools-cmd-deps

Continuous Integration pypi

Configure setuptools command dependencies easily.

Why I need this plugin

Once a custom setuptools command is defined and needs to be run before some build-in command, traditionally, there's no simple way and the solution is to override the build-in command, to call the new custom command before the command implemented in the super class.

In this way, having an additional class and digging into setuptools, are just to configure the command order or dependency.

This could be simplified by using setuptools-cmd-deps: enable the plugin and add custom configuration.

Command dependency in the project

If your command is just for the project and it won't be reused, you could use new setup keyword cmd_deps to define the dependencies.

Enable setuptools-cmd-deps

  • If your setup.py will run only after all depending packages are installed, add setuptools-cmd-deps in your dependency list, such as requirements.txt, or Pipfile.

  • If your setup.py supports running out of venv, you may not want these packages to be installed in the system. Then add setuptools-cmd-deps in the setup_requires option of your setuptools.

Define dependency

setuptools.setup(
    cmdclass={'generate_py': GenereatePy},
    cmd_deps={'build_py': ['generate_py']},
)

Command dependency to be shared

If you are developing a setuptools plugin, and want the command definition to be used by other project and run before some command, specify the dependency in the setuptools.cmd_deps section in your entry_points.

Enable setuptools-cmd-deps for the target

Add setuptools-cmd-deps in the install_requires option of your setuptools, so that any project uses your package, will automatically uses setuptools-cmd-deps.

Define dependency

Generally speaking, you already have distutils.commands in your entry_points.

For example, you defined gernate_py command in the entry_points as follows,

distutils.commands =
    generate_py = command:GeneratePy

and want it always run before build_py. Simply add setuptools.cmd_deps in the entry_points as follows,

setuptools.cmd_deps =
    build_py_dep = build_py:generate_py

Note that the name build_py_dep is not used here. It is just for the TOML syntax. For the same reason, if there are multiple dependencies for one command, it should use dot . as delimiter,

setuptools.cmd_deps =
    command_dep = command:cmd1.cmd2

Both cmd1 and cmd2 will be run before command.

Or you can have multiple rules,

setuptools.cmd_deps =
    command_dep1 = command:cmd1
    command_dep2 = command:cmd2

Release files for setuptools-cmd-deps 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for setuptools-cmd-deps 1.0.1
File Size Uploaded
setuptools-cmd-deps-1.0.1.tar.gz 13.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for setuptools-cmd-deps 1.0.1
File Interpreter ABI Platform
setuptools_cmd_deps-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 20.4 kB

Release files / setuptools-cmd-deps-1.0.1.tar.gz

Download URL setuptools-cmd-deps-1.0.1.tar.gz
Size 13.0 kB
Tags Source
SHA-256 checksum
How to use checksums
6001a8a5bb4f417e239f1ed86180bad77ccac4aa37232e9371c47c40a63e8f1f
BLAKE2b-256 checksum
How to use checksums
b704bbf89e7f50fbd55fd0f54692fcde4c33f297a3af7cb3ffd60fe3051c9975
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.5.9

Release files / setuptools_cmd_deps-1.0.1-py3-none-any.whl

Download URL setuptools_cmd_deps-1.0.1-py3-none-any.whl
Size 7.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e883071e161d4fabbbfc510a31aa94441e83b995553a7e45c7611fd317e7ab2
BLAKE2b-256 checksum
How to use checksums
306c9fb32399d2e22ac7cfd6f3db5133f5d29a81713d2325388a4c7646007bc8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.5.9

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page