Bug 1719145
| Summary: | python-suds fails to build with Python 3.8 (dictionary keys changed during iteration) | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Miro Hrončok <mhroncok> |
| Component: | python-suds | Assignee: | Scott Talbert <swt> |
| Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | high | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | rawhide | CC: | jortel, swt |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2019-06-11 23:12:11 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | |||
| Bug Blocks: | 1686977 | ||
Something like:
--- a/tests/test_transport.py Mon Jul 27 11:08:20 2015 +0200
+++ b/tests/test_transport.py Tue Jun 11 09:29:31 2019 +0200
@@ -140,7 +140,7 @@
("", {}, "\n\n\n\n\n\n"),
("", {}, u("\u4E2D\u539F\u5343\u519B\u9010\u848B"))))
def test_string_representation_with_message(self, url, headers, message):
- for key, value in headers.items():
+ for key, value in list(headers.items()):
old_key = key
if isinstance(key, text_type):
key = key.encode("utf-8")
Dangit, I forgot to test 3.8. Thanks. |
python-suds fails to build with Python 3.8.0b1: =================================== FAILURES =================================== _ TestRequest.test_string_representation_with_message[-headers1-for a bitch it's haaaard...] _ self = <test_transport.TestRequest object at 0x7f01a168a670>, url = '' headers = {b'aaa': b'uf-uf'}, message = "for a bitch it's haaaard..." @pytest.mark.parametrize(("url", "headers", "message"), ( ("my URL", {}, ""), ("", {"aaa": "uf-uf"}, "for a bitch it's haaaard..."), ("http://rumple-fif/muka-laka-hiki", {"uno": "eins", "zwei": "due"}, """\ I'm here to kick ass, and chew bubble gum... and I'm all out of gum."""), ("", {}, u("\u0161u\u0107-mu\u0107 pa o\u017Ee\u017Ei.. za 100 " "\u20AC\n\nwith multiple\nlines...")), ("", {}, "\n\n\n\n\n\n"), ("", {}, u("\u4E2D\u539F\u5343\u519B\u9010\u848B")))) def test_string_representation_with_message(self, url, headers, message): > for key, value in headers.items(): E RuntimeError: dictionary keys changed during iteration tests/test_transport.py:143: RuntimeError _ TestRequest.test_string_representation_with_message[http://rumple-fif/muka-laka-hiki-headers2-I'm here to kick ass,\nand chew bubble gum...\nand I'm all out of gum.] _ self = <test_transport.TestRequest object at 0x7f01a1764c10> url = 'http://rumple-fif/muka-laka-hiki' headers = {b'uno': b'eins', b'zwei': b'due'} message = "I'm here to kick ass,\nand chew bubble gum...\nand I'm all out of gum." @pytest.mark.parametrize(("url", "headers", "message"), ( ("my URL", {}, ""), ("", {"aaa": "uf-uf"}, "for a bitch it's haaaard..."), ("http://rumple-fif/muka-laka-hiki", {"uno": "eins", "zwei": "due"}, """\ I'm here to kick ass, and chew bubble gum... and I'm all out of gum."""), ("", {}, u("\u0161u\u0107-mu\u0107 pa o\u017Ee\u017Ei.. za 100 " "\u20AC\n\nwith multiple\nlines...")), ("", {}, "\n\n\n\n\n\n"), ("", {}, u("\u4E2D\u539F\u5343\u519B\u9010\u848B")))) def test_string_representation_with_message(self, url, headers, message): > for key, value in headers.items(): E RuntimeError: dictionary keys changed during iteration tests/test_transport.py:143: RuntimeError This is a new thing in 3.8, see https://github.com/python/cpython/pull/12596 A fix is usually to iterate over a copy (unless the code does some magical hacks). Logs: https://copr-be.cloud.fedoraproject.org/results/@python/python3.8/fedora-rawhide-x86_64/00934040-python-suds/