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): 0.4.14 How reproducible: every time Steps to Reproduce: 1. get https://github.com/timlau/dnf-apiex/blob/master/dnf-groups.py 2. python3 dnf-groups.py 3. Actual results: Traceback (most recent call last): File "dnf-groups.py", line 21, in <module> de = DnfExample() File "dnf-groups.py", line 17, in __init__ self.read_comps() 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 destination.write(data) TypeError: must be str, not bytes Expected results: No trace back Additional info: works fine if run with just : python dnf-groups.py
Look like a the common <str> vs <unicode> issue def _decompress_chunked(source, dest, ztype): .. .. while True: try: data = s_fn.read(1024000) except IOError: break if not data: break try: destination.write(data) except (OSError, IOError) as e: msg = "Error writing to file %s: %s" % (dest, str(e)) raise dnf.exceptions.MiscError(msg) .. 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: https://github.com/akozumpl/dnf/pull/97
Great, thank you!
fixed upstream
dnf-0.4.17-1.fc20 has been submitted as an update for Fedora 20. https://admin.fedoraproject.org/updates/dnf-0.4.17-1.fc20
Package dnf-0.4.17-1.fc20: * 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: https://admin.fedoraproject.org/updates/FEDORA-2014-3465/dnf-0.4.17-1.fc20 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.