Skip to content

Commit 91e713a

Browse files
committed
Make pushsource compatible with attrs version 22.2.0
Since new attrs version release, pub tests have begun failing with the error "TypeError: keywords must be strings". Attrs have added an "alias" parameter to each attribute[1], which is used in the attrs's "evolve" method to construct a new instance. This causes issues with the attribute "from", which has some special logic implemented in order to be usable at all[2]. The attribute "from" is generated from "from_", copying all its parameters. Since "alias" is a new parameter, it isn't copied and thus its value is set no "None". attrs's "evolve" method uses **kwargs to create a new instance, and it sets one of the keys in **kwargs to "None" (from alias). Keys in **kwargs must be strings, which causes the TypeError. It can be fixed by also setting "alias" in the newly created "from" attribute. In case of "from_", it has the same value as "name" parameter ("from_"), which is why we don't want to copy it from the old attribute, but explicitly set it to "from" (otherwise it would be "from_"). The change should be backwards compatible with older versions of attrs. [1] python-attrs/attrs#950 [2] release-engineering#108
1 parent 8d9cd3b commit 91e713a

1 file changed

Lines changed: 2 additions & 0 deletions

File tree

src/pushsource/_impl/model/erratum_fixup.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ def __init__(self, delegate, attrs_old_to_new):
5353
# (we do this dynamically to cope with differences between ancient and newer
5454
# versions of attrs library)
5555
attr_kwargs = {"name": new_name}
56+
if hasattr(old_attr, "alias"):
57+
attr_kwargs["alias"] = new_name
5658
for argname in [
5759
"default",
5860
"validator",

0 commit comments

Comments
 (0)