juju / python-libjuju

Python library for the Juju API
Apache License 2.0
59 stars 99 forks source link

Incompatible with mysql-connector-python 8.1.0 #914

Closed carlcsaposs-canonical closed 9 months ago

carlcsaposs-canonical commented 1 year ago

python-libjuju is incompatible with mysql-connector-python 8.1.0 since python-libjuju depends on macaroonbakery, which hasn't been updated since Feb 2020 and depends on protobuf<4

mysql-connector-python depends on protobuf>=4.21.1

Details ``` Because no versions of macaroonbakery match >1.1,<1.1.2 || >1.1.2,<1.1.3 || >1.1.3,<1.1.4 || >1.1.4,<1.1.5 || >1.1.5,<1.2.0 || >1.2.0,<1.2.1 || >1.2.1,<1.2.2 || >1.2.2,<1.2.3 || >1.2.3,<1.3.0 || >1.3.0,<1.3.1 || >1.3.1,<2.0 and macaroonbakery (1.1.0) depends on protobuf (>=3.0.0,<4.0), macaroonbakery (>=1.1,<1.1.2 || >1.1.2,<1.1.3 || >1.1.3,<1.1.4 || >1.1.4,<1.1.5 || >1.1.5,<1.2.0 || >1.2.0,<1.2.1 || >1.2.1,<1.2.2 || >1.2.2,<1.2.3 || >1.2.3,<1.3.0 || >1.3.0,<1.3.1 || >1.3.1,<2.0) requires protobuf (>=3.0.0,<4.0). And because macaroonbakery (1.1.2) depends on protobuf (>=3.0.0,<4.0) and macaroonbakery (1.1.3) depends on protobuf (>=3.0.0,<4.0), macaroonbakery (>=1.1,<1.1.4 || >1.1.4,<1.1.5 || >1.1.5,<1.2.0 || >1.2.0,<1.2.1 || >1.2.1,<1.2.2 || >1.2.2,<1.2.3 || >1.2.3,<1.3.0 || >1.3.0,<1.3.1 || >1.3.1,<2.0) requires protobuf (>=3.0.0,<4.0). And because macaroonbakery (1.1.4) depends on protobuf (>=3.0.0,<4.0) and macaroonbakery (1.1.5) depends on protobuf (>=3.0.0,<4.0), macaroonbakery (>=1.1,<1.2.0 || >1.2.0,<1.2.1 || >1.2.1,<1.2.2 || >1.2.2,<1.2.3 || >1.2.3,<1.3.0 || >1.3.0,<1.3.1 || >1.3.1,<2.0) requires protobuf (>=3.0.0,<4.0). And because macaroonbakery (1.2.0) depends on protobuf (>=3.0.0,<4.0) and macaroonbakery (1.2.1) depends on protobuf (>=3.0.0,<4.0), macaroonbakery (>=1.1,<1.2.2 || >1.2.2,<1.2.3 || >1.2.3,<1.3.0 || >1.3.0,<1.3.1 || >1.3.1,<2.0) requires protobuf (>=3.0.0,<4.0). And because macaroonbakery (1.2.2) depends on protobuf (>=3.0.0,<4.0) and macaroonbakery (1.2.3) depends on protobuf (>=3.0.0,<4.0), macaroonbakery (>=1.1,<1.3.0 || >1.3.0,<1.3.1 || >1.3.1,<2.0) requires protobuf (>=3.0.0,<4.0). And because macaroonbakery (1.3.0) depends on protobuf (>=3.0.0,<4.0) and macaroonbakery (1.3.1) depends on protobuf (>=3.0.0,<4.0), macaroonbakery (>=1.1,<2.0) requires protobuf (>=3.0.0,<4.0). Because no versions of mysql-connector-python match >8.1.0,<9.0.0 and mysql-connector-python (8.1.0) depends on protobuf (>=4.21.1,<=4.21.12), mysql-connector-python (>=8.1.0,<9.0.0) requires protobuf (>=4.21.1,<=4.21.12). (1) Thus, mysql-connector-python (>=8.1.0,<9.0.0) is incompatible with macaroonbakery (>=1.1,<2.0). Because no versions of juju match >=2,<2.6.0 || >2.6.0,<2.6.1 || >2.6.1,<2.6.2 || >2.6.2,<2.6.3 || >2.6.3,<2.7.0 || >2.7.0,<2.7.1 || >2.7.1,<2.8.0 || >2.8.0,<2.8.1 || >2.8.1,<2.8.2 || >2.8.2,<2.8.3 || >2.8.3,<2.8.4 || >2.8.4,<2.8.5 || >2.8.5,<2.8.6 || >2.8.6,<2.9.0 || >2.9.0,<2.9.1 || >2.9.1,<2.9.2 || >2.9.2,<2.9.3 || >2.9.3,<2.9.4 || >2.9.4,<2.9.5 || >2.9.5,<2.9.6 || >2.9.6,<2.9.7 || >2.9.7,<2.9.8 || >2.9.8,<2.9.9 || >2.9.9,<2.9.10 || >2.9.10,<2.9.11 || >2.9.11,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0 and juju (2.6.0) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.6.1 || >2.6.1,<2.6.2 || >2.6.2,<2.6.3 || >2.6.3,<2.7.0 || >2.7.0,<2.7.1 || >2.7.1,<2.8.0 || >2.8.0,<2.8.1 || >2.8.1,<2.8.2 || >2.8.2,<2.8.3 || >2.8.3,<2.8.4 || >2.8.4,<2.8.5 || >2.8.5,<2.8.6 || >2.8.6,<2.9.0 || >2.9.0,<2.9.1 || >2.9.1,<2.9.2 || >2.9.2,<2.9.3 || >2.9.3,<2.9.4 || >2.9.4,<2.9.5 || >2.9.5,<2.9.6 || >2.9.6,<2.9.7 || >2.9.7,<2.9.8 || >2.9.8,<2.9.9 || >2.9.9,<2.9.10 || >2.9.10,<2.9.11 || >2.9.11,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.6.1) depends on macaroonbakery (>=1.1,<2.0) and juju (2.6.2) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.6.3 || >2.6.3,<2.7.0 || >2.7.0,<2.7.1 || >2.7.1,<2.8.0 || >2.8.0,<2.8.1 || >2.8.1,<2.8.2 || >2.8.2,<2.8.3 || >2.8.3,<2.8.4 || >2.8.4,<2.8.5 || >2.8.5,<2.8.6 || >2.8.6,<2.9.0 || >2.9.0,<2.9.1 || >2.9.1,<2.9.2 || >2.9.2,<2.9.3 || >2.9.3,<2.9.4 || >2.9.4,<2.9.5 || >2.9.5,<2.9.6 || >2.9.6,<2.9.7 || >2.9.7,<2.9.8 || >2.9.8,<2.9.9 || >2.9.9,<2.9.10 || >2.9.10,<2.9.11 || >2.9.11,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.6.3) depends on macaroonbakery (>=1.1,<2.0) and juju (2.7.0) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.7.1 || >2.7.1,<2.8.0 || >2.8.0,<2.8.1 || >2.8.1,<2.8.2 || >2.8.2,<2.8.3 || >2.8.3,<2.8.4 || >2.8.4,<2.8.5 || >2.8.5,<2.8.6 || >2.8.6,<2.9.0 || >2.9.0,<2.9.1 || >2.9.1,<2.9.2 || >2.9.2,<2.9.3 || >2.9.3,<2.9.4 || >2.9.4,<2.9.5 || >2.9.5,<2.9.6 || >2.9.6,<2.9.7 || >2.9.7,<2.9.8 || >2.9.8,<2.9.9 || >2.9.9,<2.9.10 || >2.9.10,<2.9.11 || >2.9.11,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.7.1) depends on macaroonbakery (>=1.1,<2.0) and juju (2.8.0) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.8.1 || >2.8.1,<2.8.2 || >2.8.2,<2.8.3 || >2.8.3,<2.8.4 || >2.8.4,<2.8.5 || >2.8.5,<2.8.6 || >2.8.6,<2.9.0 || >2.9.0,<2.9.1 || >2.9.1,<2.9.2 || >2.9.2,<2.9.3 || >2.9.3,<2.9.4 || >2.9.4,<2.9.5 || >2.9.5,<2.9.6 || >2.9.6,<2.9.7 || >2.9.7,<2.9.8 || >2.9.8,<2.9.9 || >2.9.9,<2.9.10 || >2.9.10,<2.9.11 || >2.9.11,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.8.1) depends on macaroonbakery (>=1.1,<2.0) and juju (2.8.2) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.8.3 || >2.8.3,<2.8.4 || >2.8.4,<2.8.5 || >2.8.5,<2.8.6 || >2.8.6,<2.9.0 || >2.9.0,<2.9.1 || >2.9.1,<2.9.2 || >2.9.2,<2.9.3 || >2.9.3,<2.9.4 || >2.9.4,<2.9.5 || >2.9.5,<2.9.6 || >2.9.6,<2.9.7 || >2.9.7,<2.9.8 || >2.9.8,<2.9.9 || >2.9.9,<2.9.10 || >2.9.10,<2.9.11 || >2.9.11,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.8.3) depends on macaroonbakery (>=1.1,<2.0) and juju (2.8.4) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.8.5 || >2.8.5,<2.8.6 || >2.8.6,<2.9.0 || >2.9.0,<2.9.1 || >2.9.1,<2.9.2 || >2.9.2,<2.9.3 || >2.9.3,<2.9.4 || >2.9.4,<2.9.5 || >2.9.5,<2.9.6 || >2.9.6,<2.9.7 || >2.9.7,<2.9.8 || >2.9.8,<2.9.9 || >2.9.9,<2.9.10 || >2.9.10,<2.9.11 || >2.9.11,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.8.5) depends on macaroonbakery (>=1.1,<2.0) and juju (2.8.6) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.9.0 || >2.9.0,<2.9.1 || >2.9.1,<2.9.2 || >2.9.2,<2.9.3 || >2.9.3,<2.9.4 || >2.9.4,<2.9.5 || >2.9.5,<2.9.6 || >2.9.6,<2.9.7 || >2.9.7,<2.9.8 || >2.9.8,<2.9.9 || >2.9.9,<2.9.10 || >2.9.10,<2.9.11 || >2.9.11,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.9.0) depends on macaroonbakery (>=1.1,<2.0) and juju (2.9.1) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.9.2 || >2.9.2,<2.9.3 || >2.9.3,<2.9.4 || >2.9.4,<2.9.5 || >2.9.5,<2.9.6 || >2.9.6,<2.9.7 || >2.9.7,<2.9.8 || >2.9.8,<2.9.9 || >2.9.9,<2.9.10 || >2.9.10,<2.9.11 || >2.9.11,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.9.2) depends on macaroonbakery (>=1.1,<2.0) and juju (2.9.3) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.9.4 || >2.9.4,<2.9.5 || >2.9.5,<2.9.6 || >2.9.6,<2.9.7 || >2.9.7,<2.9.8 || >2.9.8,<2.9.9 || >2.9.9,<2.9.10 || >2.9.10,<2.9.11 || >2.9.11,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.9.4) depends on macaroonbakery (>=1.1,<2.0) and juju (2.9.5) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.9.6 || >2.9.6,<2.9.7 || >2.9.7,<2.9.8 || >2.9.8,<2.9.9 || >2.9.9,<2.9.10 || >2.9.10,<2.9.11 || >2.9.11,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.9.6) depends on macaroonbakery (>=1.1,<2.0) and juju (2.9.7) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.9.8 || >2.9.8,<2.9.9 || >2.9.9,<2.9.10 || >2.9.10,<2.9.11 || >2.9.11,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.9.8) depends on macaroonbakery (>=1.1,<2.0) and juju (2.9.9) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.9.10 || >2.9.10,<2.9.11 || >2.9.11,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.9.10) depends on macaroonbakery (>=1.1,<2.0) and juju (2.9.11) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.9.38.1 || >2.9.38.1,<2.9.42.1 || >2.9.42.1,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.9.38.1) depends on macaroonbakery (>=1.1,<2.0) and juju (2.9.42.1) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.9.42.2 || >2.9.42.2,<2.9.42.3 || >2.9.42.3,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.9.42.2) depends on macaroonbakery (>=1.1,<2.0) and juju (2.9.42.3) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<2.9.42.4 || >2.9.42.4,<2.9.43.0 || >2.9.43.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (2.9.42.4) depends on macaroonbakery (>=1.1,<2.0) and juju (2.9.43.0) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (3.0.0) depends on macaroonbakery (>=1.1,<2.0) and juju (3.0.1) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<3.0.2 || >3.0.2,<3.0.3 || >3.0.3,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (3.0.2) depends on macaroonbakery (>=1.1,<2.0) and juju (3.0.3) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<3.0.4 || >3.0.4,<3.1.0.1 || >3.1.0.1,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (3.0.4) depends on macaroonbakery (>=1.1,<2.0) and juju (3.1.0.1) depends on macaroonbakery (>=1.1,<2.0), juju (>=2,<3.1.2.0 || >3.1.2.0,<3.2.0.0 || >3.2.0.0) requires macaroonbakery (>=1.1,<2.0). And because juju (3.1.2.0) depends on macaroonbakery (>=1.1,<2.0) and juju (3.2.0.0) depends on macaroonbakery (>=1.1,<2.0), juju (>=2) requires macaroonbakery (>=1.1,<2.0). And because mysql-connector-python (>=8.1.0,<9.0.0) is incompatible with macaroonbakery (>=1.1,<2.0) (1), mysql-connector-python (>=8.1.0,<9.0.0) is incompatible with juju (>=2) So, because foo1 depends on both juju (>=2) and mysql-connector-python (^8.1.0), version solving failed. ```

Steps to reproduce:

  1. Install poetry (e.g. pipx install poetry)
  2. poetry new foo
  3. cd foo
  4. poetry add mysql-connector-python^8.1.0
  5. poetry add juju>=2
github-actions[bot] commented 1 year ago

This issue is marked as incomplete because it has been open 30 days with no activity. Please remove incomplete label or comment or this will be closed in 5 days.

carlcsaposs-canonical commented 1 year ago

Still an issue

jnsgruk commented 1 year ago

@cderici would be interesting to run an experiment with a fork of py-macaroon-bakery with the constraint relaxed and see how things change. We could always submit a PR upstream and run on a forked dep until then?

cderici commented 1 year ago

@jnsgruk yeah that's what I was thinking as well, addressing this soon 👍

cderici commented 11 months ago

@carlcsaposs-canonical could you please try out the #956 and confirm that it fixes this? Thanks!

carlcsaposs-canonical commented 11 months ago

@carlcsaposs-canonical could you please try out the #956 and confirm that it fixes this? Thanks!

Sorry for the delay, still seeing issues:

Because juju (3.2.2.0) @ git+https://github.com/cderici/python-libjuju/@use-local-fork-for-macaroonbakery depends on macaroonbakery (1.3.1) @ git+https://github.com/cderici/py-macaroon-bakery@relax-protobuf-version
 and macaroonbakery (1.3.1) @ git+https://github.com/cderici/py-macaroon-bakery@relax-protobuf-version depends on protobuf (>=3.0.0,<4.0), juju (3.2.2.0) @ git+https://github.com/cderici/python-libjuju/@use-local-fork-for-macaroonbakery requires protobuf (>=3.0.0,<4.0).
And because mysql-connector-python (8.1.0) depends on protobuf (>=4.21.1,<=4.21.12)
 and no versions of mysql-connector-python match >8.1.0,<8.2.0, juju (3.2.2.0) @ git+https://github.com/cderici/python-libjuju/@use-local-fork-for-macaroonbakery is incompatible with mysql-connector-python (>=8.1.0,<8.2.0).
So, because charm depends on both juju (3.2.2.0) @ git+https://github.com/cderici/python-libjuju/@use-local-fork-for-macaroonbakery and mysql-connector-python (~8.1.0), version solving failed.

Reproducible with https://github.com/canonical/mysql-operator/pull/337 and poetry lock --no-update

or:

  1. Install poetry (e.g. pipx install poetry)
  2. poetry new foo
  3. cd foo
  4. poetry add mysql-connector-python^8.1.0
  5. poetry add git+https://github.com/cderici/python-libjuju@use-local-fork-for-macaroonbakery
github-actions[bot] commented 10 months ago

This issue is marked as incomplete because it has been open 30 days with no activity. Please remove incomplete label or comment or this will be closed in 5 days.

carlcsaposs-canonical commented 10 months ago

Still an issue

cderici commented 9 months ago

The ceiling for protobuf dependency has been removed in the macaroonbakery by https://github.com/go-macaroon-bakery/py-macaroon-bakery/pull/90 and released on pypi https://pypi.org/project/macaroonbakery/1.3.2/, so this incompatibility should be resolved now.

@carlcsaposs-canonical could you please confirm? Thanks!

carlcsaposs-canonical commented 9 months ago

@cderici what versions do you want me to test with?

carlcsaposs@laptop:~$ poetry new foo4
Created package foo4 in foo4
carlcsaposs@laptop:~$ cd foo4
carlcsaposs@laptop:~/foo4$ poetry add mysql-connector-python^8.1.0
Creating virtualenv foo4-4WLpIJhu-py3.10 in /home/carlcsaposs/.cache/pypoetry/virtualenvs

Updating dependencies
Resolving dependencies... (60.3s)

Package operations: 2 installs, 0 updates, 0 removals

  • Installing protobuf (4.21.12)
  • Installing mysql-connector-python (8.2.0)

Writing lock file
carlcsaposs@laptop:~/foo4$ poetry add juju
Using version ^3.3.0.0 for juju

Updating dependencies
Resolving dependencies... Downloading https://files.pythonhosted.org/packages/ed/eb/969660d216a5ea0c01c40046dff95211a6d4ad06dd798c42dc77f1eabbbb/macaroonbakery-Resolving dependencies... Downloading https://files.pythonhosted.org/packages/44/c9/1d5824fd56fe591fc3c2cb2bc6cc49ee0ed96e656e2909ea715ad3846b7f/macaroonbakery-Resolving dependencies... (80.1s)

    Because macaroonbakery (1.1.0) depends on protobuf (>=3.0.0,<4.0)
 and no versions of macaroonbakery match >1.1,<1.1.2 || >1.1.2,<1.1.3 || >1.1.3,<1.1.4 || >1.1.4,<1.1.5 || >1.1.5,<1.2.0 || >1.2.0,<1.2.1 || >1.2.1,<1.2.2 || >1.2.2,<1.2.3 || >1.2.3,<1.3.0 || >1.3.0,<1.3.1 || >1.3.1,<1.3.2 || >1.3.2,<2.0, macaroonbakery (>=1.1,<1.1.2 || >1.1.2,<1.1.3 || >1.1.3,<1.1.4 || >1.1.4,<1.1.5 || >1.1.5,<1.2.0 || >1.2.0,<1.2.1 || >1.2.1,<1.2.2 || >1.2.2,<1.2.3 || >1.2.3,<1.3.0 || >1.3.0,<1.3.1 || >1.3.1,<1.3.2 || >1.3.2,<2.0) requires protobuf (>=3.0.0,<4.0).
    And because macaroonbakery (1.1.2) depends on protobuf (>=3.0.0,<4.0), macaroonbakery (>=1.1,<1.1.3 || >1.1.3,<1.1.4 || >1.1.4,<1.1.5 || >1.1.5,<1.2.0 || >1.2.0,<1.2.1 || >1.2.1,<1.2.2 || >1.2.2,<1.2.3 || >1.2.3,<1.3.0 || >1.3.0,<1.3.1 || >1.3.1,<1.3.2 || >1.3.2,<2.0) requires protobuf (>=3.0.0,<4.0).
    And because macaroonbakery (1.1.3) depends on protobuf (>=3.0.0,<4.0)
 and macaroonbakery (1.1.4) depends on protobuf (>=3.0.0,<4.0), macaroonbakery (>=1.1,<1.1.5 || >1.1.5,<1.2.0 || >1.2.0,<1.2.1 || >1.2.1,<1.2.2 || >1.2.2,<1.2.3 || >1.2.3,<1.3.0 || >1.3.0,<1.3.1 || >1.3.1,<1.3.2 || >1.3.2,<2.0) requires protobuf (>=3.0.0,<4.0).
    And because macaroonbakery (1.1.5) depends on protobuf (>=3.0.0,<4.0)
 and macaroonbakery (1.2.0) depends on protobuf (>=3.0.0,<4.0), macaroonbakery (>=1.1,<1.2.1 || >1.2.1,<1.2.2 || >1.2.2,<1.2.3 || >1.2.3,<1.3.0 || >1.3.0,<1.3.1 || >1.3.1,<1.3.2 || >1.3.2,<2.0) requires protobuf (>=3.0.0,<4.0).
    And because macaroonbakery (1.2.1) depends on protobuf (>=3.0.0,<4.0)
 and macaroonbakery (1.2.2) depends on protobuf (>=3.0.0,<4.0), macaroonbakery (>=1.1,<1.2.3 || >1.2.3,<1.3.0 || >1.3.0,<1.3.1 || >1.3.1,<1.3.2 || >1.3.2,<2.0) requires protobuf (>=3.0.0,<4.0).
    And because macaroonbakery (1.2.3) depends on protobuf (>=3.0.0,<4.0)
 and macaroonbakery (1.3.0) depends on protobuf (>=3.0.0,<4.0), macaroonbakery (>=1.1,<1.3.1 || >1.3.1,<1.3.2 || >1.3.2,<2.0) requires protobuf (>=3.0.0,<4.0).
    And because macaroonbakery (1.3.1) depends on protobuf (>=3.0.0,<4.0)
 and macaroonbakery (1.3.2) depends on protobuf (>=3.0.0,<4.0), macaroonbakery (>=1.1,<2.0) requires protobuf (>=3.0.0,<4.0).
    Because no versions of juju match >3.3.0.0,<4.0.0.0
 and juju (3.3.0.0) depends on macaroonbakery (>=1.1,<2.0), juju (>=3.3.0.0,<4.0.0.0) requires macaroonbakery (>=1.1,<2.0).
(1) Thus, juju (>=3.3.0.0,<4.0.0.0) requires protobuf (>=3.0.0,<4.0).

    Because no versions of mysql-connector-python match >8.1.0,<8.2.0 || >8.2.0,<9.0.0
 and mysql-connector-python (8.1.0) depends on protobuf (>=4.21.1,<=4.21.12), mysql-connector-python (>=8.1.0,<8.2.0 || >8.2.0,<9.0.0) requires protobuf (>=4.21.1,<=4.21.12).
    And because mysql-connector-python (8.2.0) depends on protobuf (>=4.21.1,<=4.21.12), mysql-connector-python (>=8.1.0,<9.0.0) requires protobuf (>=4.21.1,<=4.21.12).
    And because juju (>=3.3.0.0,<4.0.0.0) requires protobuf (>=3.0.0,<4.0) (1), juju (>=3.3.0.0,<4.0.0.0) is incompatible with mysql-connector-python (>=8.1.0,<9.0.0)
    So, because foo4 depends on both mysql-connector-python (^8.1.0) and juju (^3.3.0.0), version solving failed.

if you want to test yourself, here are steps to reproduce: https://github.com/juju/python-libjuju/issues/914#issue-1810624652 or https://github.com/juju/python-libjuju/issues/914#issuecomment-1757281681

cderici commented 9 months ago

@carlcsaposs-canonical Thanks for looking at this again, it was working for me, not sure what I've missed there in my local setup. It appears that I forgot to change the setup.py along with the requirements in my initial protobuf PR, a new PR is open https://github.com/go-macaroon-bakery/py-macaroon-bakery/pull/92 to fix this, once that lands and pushed into pypi, I'll try again with a clean setup. I might ping you again @carlcsaposs-canonical to double confirm, thanks again for your time 👍

carlcsaposs-canonical commented 9 months ago

@cderici fyi it's also possible to test a branch with something like this poetry add git+https://github.com/cderici/python-libjuju@use-local-fork-for-macaroonbakery or create a venv & pip install git+https://github.com/cderici/python-libjuju@use-local-fork-for-macaroonbakery

cderici commented 9 months ago

@carlcsaposs-canonical Yeah I usually work with venv, didn't know how to do it with poetry, thanks for showing. Note that that branch is no longer needed since the upstream changed the protobuf requirements.

https://github.com/go-macaroon-bakery/py-macaroon-bakery/pull/92 is also landed and published on pypi. I tried again your steps and I'm able to install both mysql-connector-python^8.1.0 and juju. It would help if you could check and confirm the fix 👍 Thanks!

carlcsaposs-canonical commented 9 months ago

looks like it's working in the simple reproduction

also testing here with the charm: https://github.com/canonical/mysql-operator/actions/runs/7131287248?pr=337

thank you!

gboutry commented 9 months ago

Jumping in, we noticed that after macaroonbakery 1.3.3 has been published ,all of our CI tests have been failing in sunbeam.

Such as https://github.com/canonical/snap-openstack/actions/runs/7131094652/job/19418941480?pr=65

Any pointers on how to resolve it since you seem to have them working ?

cderici commented 9 months ago

So I tested pylibjuju with 1.3.2 as well as 1.3.3 (with some charms from charmhub) and it generally worked just fine. However, this is concerning, not sure what's going on there.

@fabricematrat can you please take look at the error that @gboutry mentioned above, is this something that needs to be fixed on the macaroonbakery? as the error mentions that some re-generation is needed:

If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.

@gboutry mentioned that pinning the protobuf to 4.21 made it work, so we might need to create a ceiling on macaroonbakery if we can't find a better solution.

cderici commented 9 months ago

@carlcsaposs-canonical looks like your charm is failing with the same problem as well.

https://github.com/canonical/mysql-operator/actions/runs/7131287248/job/19420921851?pr=337#step:5:154

gboutry commented 9 months ago

It's not working with protobuf 4.21.7, a bad refresh of my venv led me to believe this

cderici commented 9 months ago

Just for reference, reported this on the macaroonbakery repo https://github.com/go-macaroon-bakery/py-macaroon-bakery/pull/92#issuecomment-1845801614

gboutry commented 9 months ago

I also raised this issue: https://github.com/go-macaroon-bakery/py-macaroon-bakery/issues/94

gabrielcocenza commented 9 months ago

Hi @cderici Our CI started failing and it seems that is related with libjuju (we are using juju<3.0):

unit create: /home/cocenza/Documents/canonical/charmed-openstack-upgrader-1/.tox/unit
unit installdeps: .[unittests]
unit installed: aioconsole==0.6.2,aiounittest==1.4.2,bcrypt==4.1.1,cachetools==5.3.2,certifi==2023.11.17,cffi==1.16.0,charmed-openstack-upgrader==0.0.dev105,charset-normalizer==3.3.2,colorama==0.4.6,coverage==7.3.2,cryptography==41.0.7,debtcollector==2.5.0,exceptiongroup==1.2.0,gevent==23.9.1,google-auth==2.25.1,greenlet==3.0.1,halo==0.0.31,idna==3.6,iniconfig==2.0.0,juju==2.9.46.0,jujubundlelib==0.5.7,kubernetes==28.1.0,log-symbols==0.0.14,macaroonbakery==1.3.3,mypy-extensions==1.0.0,netaddr==0.9.0,oauthlib==3.2.2,oslo.config==9.2.0,oslo.i18n==6.2.0,packaging==23.2,paramiko==2.12.0,pbr==6.0.0,pluggy==1.3.0,protobuf==4.25.1,pyasn1==0.5.1,pyasn1-modules==0.3.0,pycparser==2.21,pymacaroons==0.13.0,PyNaCl==1.5.0,pyRFC3339==1.1,pytest==7.4.3,pytest-asyncio==0.23.2,pytest-cov==4.1.0,pytest-mock==3.12.0,python-dateutil==2.8.2,pytz==2023.3.post1,PyYAML==6.0.1,requests==2.31.0,requests-oauthlib==1.3.1,rfc3986==2.0.0,rsa==4.9,ruamel.yaml==0.18.5,ruamel.yaml.clib==0.2.8,six==1.16.0,spinners==0.0.24,stevedore==5.1.0,termcolor==2.4.0,theblues==0.5.2,tomli==2.0.1,toposort==1.10,typing-inspect==0.9.0,typing_extensions==4.8.0,urllib3==1.26.18,websocket-client==1.7.0,websockets==12.0,wrapt==1.16.0,zope.event==5.0,zope.interface==6.1
unit run-test-pre: PYTHONHASHSEED='2170810859'
unit run-test: commands[0] | pytest /home/cocenza/Documents/canonical/charmed-openstack-upgrader-1/tests/unit -v --cov --cov-report=term-missing --cov-report=html --cov-report=xml
ImportError while loading conftest '/home/cocenza/Documents/canonical/charmed-openstack-upgrader-1/tests/unit/conftest.py'.
tests/unit/conftest.py:23: in <module>
    from cou.apps.auxiliary import OpenStackAuxiliaryApplication
cou/__init__.py:15: in <module>
    from cou.__main__ import main
cou/__main__.py:16: in <module>
    from cou.cli import entrypoint
cou/cli.py:28: in <module>
    from cou.exceptions import COUException, HighestReleaseAchieved, TimeoutException
cou/exceptions.py:17: in <module>
    from juju.action import Action
.tox/unit/lib/python3.10/site-packages/juju/action.py:4: in <module>
    from . import model
.tox/unit/lib/python3.10/site-packages/juju/model.py:29: in <module>
    from .charmstore import CharmStore
.tox/unit/lib/python3.10/site-packages/juju/charmstore.py:9: in <module>
    import theblues.charmstore
.tox/unit/lib/python3.10/site-packages/theblues/charmstore.py:7: in <module>
    from macaroonbakery import httpbakery
.tox/unit/lib/python3.10/site-packages/macaroonbakery/httpbakery/__init__.py:3: in <module>
    from ._client import (
.tox/unit/lib/python3.10/site-packages/macaroonbakery/httpbakery/_client.py:7: in <module>
    import macaroonbakery.bakery as bakery
.tox/unit/lib/python3.10/site-packages/macaroonbakery/bakery/__init__.py:75: in <module>
    from ._oven import (
.tox/unit/lib/python3.10/site-packages/macaroonbakery/bakery/_oven.py:29: in <module>
    from ._internal import id_pb2
.tox/unit/lib/python3.10/site-packages/macaroonbakery/bakery/_internal/id_pb2.py:35: in <module>
    _descriptor.FieldDescriptor(
.tox/unit/lib/python3.10/site-packages/google/protobuf/descriptor.py:553: in __new__
    _message.Message._CheckCalledFromGeneratedFile()
E   TypeError: Descriptors cannot be created directly.
E   If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
E   If you cannot immediately regenerate your protos, some other possible workarounds are:
E    1. Downgrade the protobuf package to 3.20.x or lower.
E    2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
E
E   More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
ERROR: InvocationError for command /home/cocenza/Documents/canonical/charmed-openstack-upgrader-1/.tox/unit/bin/pytest tests/unit -v --cov --cov-report=term-missing --cov-report=html --cov-report=xml (exited with code 4)
___________________________________________________________________________________________ summary ____________________________________________________________________________________________
ERROR:   unit: commands failed

I've checked and when it used to pass the protobuf==3.20.3.

cderici commented 9 months ago

I got multiple teams confirming that this problem is resolved after https://github.com/go-macaroon-bakery/py-macaroon-bakery/pull/95 landed, @gabrielcocenza can you also confirm?

@carlcsaposs-canonical It would also help if you can check this once again just to make sure since we had another release pushed for the macaroonbakery with that PR. Thanks!

gabrielcocenza commented 9 months ago

@cderici I confirm that the issue is solved. Thanks!

carlcsaposs-canonical commented 9 months ago

@cderici which version/branch of libjuju do you want me to test with?

cderici commented 9 months ago

@carlcsaposs-canonical Version of libjuju doesn't matter as both 2.9 and 3.x tracks have the same range for the macaroonbakery, but regardless, I don't observe this incompatibility (with mysql-connector-python) anymore in my tests (that get the latest macaroonbakery 1.3.4 that's released yesterday), so I'm gonna close this issue. Feel free to reopen if it persists.

carlcsaposs-canonical commented 9 months ago

Appears to be passing on our end. Couple failing tests, but they look unrelated at first glance

https://github.com/canonical/mysql-operator/actions/runs/7208377297?pr=337