Search code examples
pythondevpi

TypeError: detect_vcs() missing 1 required positional argument: 'ui' when running `devpi upload --formats bdist_wheel`


username@machinename:~/$ devpi upload --formats bdist_wheel
Traceback (most recent call last):
  File "/opt/python3.6/bin/devpi", line 11, in <module>
    sys.exit(main())
  File "/opt/python3.6/lib/python3.6/site-packages/devpi/main.py", line 32, in main
    return method(hub, hub.args)
  File "/opt/python3.6/lib/python3.6/site-packages/devpi/upload.py", line 33, in main
    setupdir_only=setupcfg.get("setupdir-only"))
  File "/opt/python3.6/lib/python3.6/site-packages/devpi/upload.py", line 281, in __init__
    hasvcs = check_manifest.detect_vcs().metadata_name
TypeError: detect_vcs() missing 1 required positional argument: 'ui'

My versions are:

devpi-client==5.1.0
devpi-common==3.4.0

How can I solve this? I tried upgrading/downgrading devpi-client to 4.4.0 and to 5.1.1 but it still gives me the same error.


Solution

  • This is due to an incompatibility between the 2 packages check_manifest and devpi. Since check_manifest==0.42, the detect_vcs function takes a required argument ui and devpi does not give it in the version you have (hasvcs = check_manifest.detect_vcs().metadata_name)

    There are 2 solutions to this problem:

    1. Downgrade check_manifest to 0.41.

    2. Upgrade devpi-client to a version >= 5.2.0. (since the fix has been introduced for devpi-client==5.2.0 (https://github.com/devpi/devpi/commit/f40e0f51b610325d807367206cced90ed1fa005d)