Skip to content

Cattrs (1.6.0) breaks dependency resolution in poetry and pipenv #147

@kdw2126

Description

@kdw2126
  • cattrs version: 1.6.0
  • Python version: 3.8.2
  • Operating System: OS X Big Sur (11.3.1)

Description

I've noticed that cattrs 1.6.0 seems to not show appropriate metadata for me. Projects I work on generally have attrs set at 19.3.0 for compatibility with a specific Airflow set up we have, and I've noticed if the version of cattrs isn't fixed version 1.6.0 will be downloaded because its metadata doesn't list a required versions of attrs. That seems like a problem since cattrs 1.6.0 will not initialize if attrs 19.3.0 is present on a system.

What I Did

To test, I set up a virtual environment on Python 3.8.2 running the following items.

Pip Freeze Output
appdirs==1.4.4
CacheControl==0.12.6
cachy==0.3.0
certifi==2020.12.5
chardet==4.0.0
cleo==0.8.1
clikit==0.6.2
crashtest==0.3.1
distlib==0.3.1
filelock==3.0.12
html5lib==1.1
idna==2.10
keyring==21.8.0
lockfile==0.12.2
msgpack==1.0.2
packaging==20.9
pastel==0.2.1
pexpect==4.8.0
pipenv==2020.11.15
pkginfo==1.7.0
poetry==1.1.6
poetry-core==1.0.3
ptyprocess==0.7.0
pylev==1.3.0
pyparsing==2.4.7
requests==2.25.1
requests-toolbelt==0.9.1
shellingham==1.4.0
six==1.16.0
tomlkit==0.7.0
urllib3==1.26.4
virtualenv==20.4.6
virtualenv-clone==0.5.4
webencodings==0.5.1

I then tried to run this deliberately simplified pyproject.toml file.

Pyproject.toml File
[tool.poetry]
name = "REDACTED"
version = "0.1.0"
description = ""
authors = ["REDACTED"]

[tool.poetry.dependencies]
attrs = "19.3.0"
cattrs = "*"
python = "~3.8"

[build-system]
requires = ["poetry_core>=1.0.0"]

I then get an installation with attrs=19.3.0 and cattrs=1.6.0, which immediate fails if I try "import cattr."

The following Pipfile runs into an identical issue.

Pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
attrs = "==19.3.0"
cattrs = "*"
Piplock Output
{
    "_meta": {
        "hash": {
            "sha256": "e91b9b1c282ec1db451907fe91d93cadc7f02abfb97b07a9313c84a77aee955e"
        },
        "pipfile-spec": 6,
        "requires": {},
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "attrs": {
            "hashes": [
                "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c",
                "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"
            ],
            "index": "pypi",
            "version": "==19.3.0"
        },
        "cattrs": {
            "hashes": [
                "sha256:3e2cd5dc8a1006d5da53ddcbf4f0b1dd3a21e294323b257678d0a96721f8253a",
                "sha256:c8de53900e3acad94ca83750eb12bb38aa85ce9114be47177c943e2f0eca63b0"
            ],
            "index": "pypi",
            "version": "==1.6.0"
        }
    },
    "develop": {}
}

Sorry if I included too much detail -- just worried I was doing something wrong on my end.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions