'TypeError: attrib() got an unexpected keyword argument 'convert'

This error occurred during automated testing of a python project on the CI server using pytest. I'm using pytest==4.0.2. This error only just started to occur, previous pipelines seem to work fine.

The full error:

File "/usr/local/lib/python3.7/site-packages/_pytest/tmpdir.py", line 35, in TempPathFactory
    lambda p: Path(os.path.abspath(six.text_type(p)))
TypeError: attrib() got an unexpected keyword argument 'convert'


Solution 1:[1]

pytest fixed using deprecated keyword convert at 3.6.3 (https://docs.pytest.org/en/latest/changelog.html#pytest-3-6-3-2018-07-04). At 4.0.1, pytest merged code using convert (https://github.com/pytest-dev/pytest/pull/4427). This code was fixed on 5.2.0 (https://github.com/pytest-dev/pytest/pull/4795).

Solution 2:[2]

pytest version 5.3.1 with attrs Version 19.3.0 works fine for me. [To check the pytest Version and attrs Version issue the following command:]

pip show pytest attrs

I solved the same problem by upgrading pytest module via pip command:

pip install -U pytest

Solution 3:[3]

python -m pip install --upgrade pytest

(anaconda prompt or cmd)

this should solve your problem, as an updated version of pytest automatically takes care of attr issues.

Solution 4:[4]

I have the same error with aws-encryption-cli v2. I have updated my aws-cdk.core lib and it work again with migrate to aws-encryption-cli V2.

pip install -U aws-cdk.core

V2 doc: https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/crypto-cli-examples.html#cli-example-encrypt-file

github bug: https://github.com/aws/aws-cdk/issues/3293

Solution 5:[5]

The issue is that with attrs==19.2.0 the convert attribute was removed (source).

attr.ib(convert=int) should be deprecated and replaced by attr.ib(converter=int)

You either need to update whatever is using attrs or you need to downgrade: pip install 'attrs<19.2.0'

Solution 6:[6]

Simply use the command

conda update conda

and restart your system.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Atsushi Odagiri
Solution 2 iun1x
Solution 3 code-freeze
Solution 4 maxtess
Solution 5 Martin Thoma
Solution 6 Nikhil Parashar