Bug 1381750 - python3-aiohttp has dependency on multidict>=2 which is not available in F24 and F25
Summary: python3-aiohttp has dependency on multidict>=2 which is not available in F24 ...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: python-multidict
Version: 25
Hardware: All
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Igor Gnatenko
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 1394250
Blocks: 1379157
TreeView+ depends on / blocked
 
Reported: 2016-10-04 22:16 UTC by Othman Madjoudj
Modified: 2017-01-01 15:23 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2017-01-01 15:23:43 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Othman Madjoudj 2016-10-04 22:16:02 UTC
Description of problem:

python3-aiohttp-0.22.5-1 egg-info has dependency on multidict>=1.2.2,<2 which is not available in F25 (latest in repos is 1.1.0)

This break GNS3 for example.

Below some details.


Version-Release number of selected component (if applicable):
python3-aiohttp-0.22.5-1.fc25.x86_64

How reproducible:

Update while updates-testing repo is enabled then run: gns3server


Additional info:

]$ sudo dnf repoquery *multidict*
Last metadata expiration check: 0:11:03 ago on Tue Oct  4 21:56:21 2016.
python2-orderedmultidict-0:0.7.6-2.fc25.noarch
python3-multidict-0:1.1.0-1.fc25.1.x86_64
python3-orderedmultidict-0:0.7.6-2.fc25.noarch

]$ cat /usr/lib64/python3.5/site-packages/aiohttp-0.22.5-py3.5.egg-info/requires.txt 
chardet
multidict>=1.2.2,<2


]$ gns3server 
Traceback (most recent call last):
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 635, in _build_master
    ws.require(__requires__)
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 943, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 834, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (multidict 1.1.0 (/usr/lib64/python3.5/site-packages), Requirement.parse('multidict<2,>=1.2.2'), {'aiohttp'})

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/gns3server", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2958, in <module>
    @_call_aside
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2944, in _call_aside
    f(*args, **kwargs)
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2971, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 637, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 650, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 829, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'multidict<2,>=1.2.2' distribution was not found and is required by aiohttp

Comment 1 Othman Madjoudj 2016-10-04 22:30:06 UTC
It seems that:

F25 has =>  python-multidict-1.1.0-1.fc25.1

F26 (rawhide) has => python-multidict-2.1.1-1.fc26

Comment 2 Andrea Oliveri 2016-10-05 13:07:56 UTC
Gns3 seems require a multidict version >= 1.2.2 and < 2, but F25 has version 1.1.0 while F26 has version 2.1.1-1...

Comment 3 Othman Madjoudj 2016-10-05 19:51:07 UTC
@Andrea: gns3-server or -gui does not depend directly on python-multidict, it depends on python3-aiohttp which depends on python3-multidict

Another example is xcat package


$ xcat
Traceback (most recent call last):
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 635, in _build_master
    ws.require(__requires__)
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 943, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 834, in resolve
    raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (multidict 1.1.0 (/usr/lib64/python3.5/site-packages), Requirement.parse('multidict<2,>=1.2.2'), {'aiohttp'})

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/xcat", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2958, in <module>
    @_call_aside
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2944, in _call_aside
    f(*args, **kwargs)
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 2971, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 637, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 650, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/lib/python3.5/site-packages/pkg_resources/__init__.py", line 829, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'multidict<2,>=1.2.2' distribution was not found and is required by aiohttp

Comment 4 yucef sourani 2016-10-27 23:09:58 UTC
I have the same problem

gns3server Error:
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'multidict<2,>=1.2.2' distribution was not found and is required by aiohttp



release :
fedora 25 x86_64

gns3vserver version :
gns3-server-1.5.1-1.fc25.noarch

python3-aiohttp version :
python3-aiohttp-0.22.5-1.fc25.x86_64

python3-multidict version :
python3-multidict-1.1.0-1.fc25.1.x86_64

cat /usr/lib/python3.5/site-packages/gns3_server-1.5.1-py3.5.egg-info/requires.txt
:
jsonschema>=2.4.0
aiohttp>=0.21.5
Jinja2>=2.7.3
raven>=5.2.0
psutil>=3.0.0
zipstream>=1.1.3

Comment 5 Toshio Ernie Kuratomi 2016-11-06 21:53:34 UTC
I see that fab upgraded python-aiohttp to version 1.0.5: http://koji.fedoraproject.org/koji/packageinfo?packageID=19224

This updated the python-multidict dependency to >= 2.0.

Unfortunately, python-multidict is version 1.1.0 in Fedora 24 and Fedora 25.  It's only version 2.1.1 in Fedora 26: http://koji.fedoraproject.org/koji/packageinfo?packageID=22601

We either need to update python-multidict in Fedora 24 and 25 to 2.1.1 (might be okay... dnf repoquery tells me that python-aiohttp is the only package in fedora that requires python-multidict) or downgrade python-aiohttp and upgrade python-multidict to a version greater than 1.2.2.

Currently aiohttp is entirely broken (not just in packages which use egg-info) because multidict 2.x renames upstr to istr.  aiohttp 1.0.5 uses the new, istr name which isn't found in the version of python-multidict that we're shipping:

>>> import aiohttp
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python3.5/site-packages/aiohttp/__init__.py", line 9, in <module>
    from . import hdrs  # noqa
  File "/usr/lib64/python3.5/site-packages/aiohttp/hdrs.py", line 2, in <module>
    from multidict import istr
ImportError: cannot import name 'istr'

CC'ing the python-ultidict maintainer so the package maintainers can work out what to do.

Comment 6 Othman Madjoudj 2016-11-06 22:20:44 UTC
1.0.5 has also a dependency on async_timeout which is not available in Fedora afaik.

$ cat /usr/lib64/python3.5/site-packages/aiohttp-1.0.5-py3.5.egg-info/requires.txt
chardet
multidict>=2.0
async_timeout
^^^^^^^^^^^^^

Comment 7 Igor Gnatenko 2016-11-07 08:26:16 UTC
I built (building) python-multidict-2.1.2 for F24 / F25, so once you are done with other package -- feel free to submit update for multidict.

Comment 8 Othman Madjoudj 2016-11-11 13:34:07 UTC
I've submitted async_timeout for review RHBZ #1394250

Comment 9 Igor Gnatenko 2017-01-01 15:23:43 UTC
multidict is available on F24/F25.


Note You need to log in before you can comment on or make changes to this bug.