Red Hat Bugzilla – Bug 1070710
dnf.Base.read_comps() fails in Python3, works ok in Python2
Last modified: 2014-03-07 22:35:30 EST
Description of problem:
using the dnf.Base.read_comps(), fails if called in Python3
works fine in Python2
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. get https://github.com/timlau/dnf-apiex/blob/master/dnf-groups.py
2. python3 dnf-groups.py
Traceback (most recent call last):
File "dnf-groups.py", line 21, in <module>
de = DnfExample()
File "dnf-groups.py", line 17, in __init__
File "/usr/lib/python3.3/site-packages/dnf/base.py", line 406, in read_comps
decompressed = misc.repo_gen_decompress(comps_fn, 'groups.xml')
File "/usr/lib/python3.3/site-packages/dnf/yum/misc.py", line 1071, in repo_gen_decompress
return decompress(filename, dest=dest, check_timestamps=True,fn_only=cached)
File "/usr/lib/python3.3/site-packages/dnf/yum/misc.py", line 1056, in decompress
_decompress_chunked(filename, out, ztype)
File "/usr/lib/python3.3/site-packages/dnf/yum/misc.py", line 732, in _decompress_chunked
TypeError: must be str, not bytes
No trace back
works fine if run with just :
Look like a the common <str> vs <unicode> issue
def _decompress_chunked(source, dest, ztype):
data = s_fn.read(1024000)
if not data: break
except (OSError, IOError) as e:
msg = "Error writing to file %s: %s" % (dest, str(e))
data is always bytes
destination.write(data)needs unicode in python3
Hello, thank you for the report. We'll fix it.
Created attachment 868667 [details]
This simple patch fixes the issue by open the output file in binary mode
Made a pull request here:
Great, thank you!
dnf-0.4.17-1.fc20 has been submitted as an update for Fedora 20.
* should fix your issue,
* was pushed to the Fedora 20 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing dnf-0.4.17-1.fc20'
as soon as you are able to.
Please go to the following url:
then log in and leave karma (feedback).
tested in 0.4.17 and it works fine
dnf-0.4.17-1.fc20 has been pushed to the Fedora 20 stable repository. If problems still persist, please make note of it in this bug report.