Hi, as shown in the following full dependency graph of pingparsing, pingparsing requires typepy >=0.6.4,<2, pingparsing requires humanreadable <1,>=0.1.0 (humanreadable 0.1.0 will be installed, i.e., the newest version satisfying the version constraint), and directed dependency humanreadable 0.1.0 transitively introduces typepy >=0.6.4,<2.
Obviously, there are multiple version constraints set for typepy in this project. However, according to pip's “first found wins” installation strategy, typepy 1.1.1 (i.e., the newest version satisfying constraint >=0.6.4,<2) is the actually installed version.
Although the first found package version typepy 1.1.1 just satisfies the later dependency constraint (typepy >=0.6.4,<2), such installed version is very close to the upper bound of the version constraint of typepy specified by humanreadable 0.1.0.
Once humanreadable upgrades,its newest version will be installed, as pingparsing does not specify the upper bound of version constraint for humanreadable. Therefore, it will easily cause a dependency conflict (build failure), if the upgraded humanreadable version introduces a higher version of typepy, violating its another version constraint >=0.6.4,<2.
According to the release history of humanreadable, it habitually upgrates Typepy in its recent releases. For instance, humanreadable 0.0.5 upgrated Typepy’s constraint from >=0.4.0,<1.0.0 to >=0.4.2,<1.0.0,humanreadable 0.0.7 upgrated Typepy’s constraint from >=0.4.2,<1.0.0 to >=0.6.0,<1.0.0 and humanreadable 0.0.8 upgrated Typepy’s constraint from >=0.6.0,<1.0.0 to >=0.6.4,<2.
As such, it is a warm warning of a potential dependency conflict issue for pingparsing.
Dependency tree
pingparsing - 1.0.1
| +- humanreadable(install version:0.1.0 version range:<1,>=0.1.0)
| | +- pytest(install version:5.4.1 version range:*)
| | | +- atomicwrites(install version:1.3.0 version range:>=1.0)
| | | +- attrs(install version:19.3.0 version range:>=17.4.0)
| | | +- colorama(install version:0.4.3 version range:*)
| | | +- importlib-metadata(install version:1.6.0 version range:>=0.12)
| | | +- more-itertools(install version:8.2.0 version range:>=4.0.0)
| | | +- packaging(install version:20.3 version range:*)
| | | +- pathlib2(install version:2.3.5 version range:>=2.2.0)
| | | | +- six(install version:1.14.0 version range:*)
| | | +- pluggy(install version:0.13.1 version range:>=0.12,<1.0)
| | | | +- importlib-metadata(install version:1.6.0 version range:>=0.12)
| | | +- py(install version:1.8.1 version range:>=1.5.0)
| | | +- wcwidth(install version:0.1.9 version range:*)
| | +- typepy(install version:1.1.1 version range:>=0.6.4,<2)
| +- pyparsing(install version:2.4.7 version range:>=2.0.3,<3)
| +- pytest(install version:5.4.1 version range:*)
| | +- atomicwrites(install version:1.3.0 version range:>=1.0)
| | +- attrs(install version:19.3.0 version range:>=17.4.0)
| | +- colorama(install version:0.4.3 version range:*)
| | +- importlib-metadata(install version:1.6.0 version range:>=0.12)
| | +- more-itertools(install version:8.2.0 version range:>=4.0.0)
| | +- packaging(install version:20.3 version range:*)
| | +- pathlib2(install version:2.3.5 version range:>=2.2.0)
| | | +- six(install version:1.14.0 version range:*)
| | +- pluggy(install version:0.13.1 version range:>=0.12,<1.0)
| | | +- importlib-metadata(install version:1.6.0 version range:>=0.12)
| | +- py(install version:1.8.1 version range:>=1.5.0)
| | +- wcwidth(install version:0.1.9 version range:*)
| +- simplejson(install version:3.17.0 version range:*)
| +- sphinx(install version:3.0.1 version range:*)
| | +- alabaster(install version:0.7.12 version range:>=0.7,<0.8)
| | +- babel(install version:2.8.0 version range:>=1.3)
| | | +- pytz(install version:2019.3 version range:>=2015.7)
| | +- docutils(install version:0.16 version range:>=0.12)
| | +- imagesize(install version:1.2.0 version range:*)
| | +- Jinja2(install version:2.11.2 version range:>=2.3)
| | | +- MarkupSafe(install version:2.0.0a1 version range:>=0.23)
| | +- packaging(install version:20.3 version range:*)
| | +- Pygments(install version:2.6.1 version range:>=2.0)
| | +- requests(install version:2.23.0 version range:>=2.5.0)
| | | +- certifi(install version:2020.4.5.1 version range:>=2017.4.17)
| | | +- chardet(install version:3.0.4 version range:>=3.0.2,<4)
| | | +- idna(install version:2.9 version range:>=2.5,<3)
| | | +- urllib3(install version:1.25.9 version range:>=1.21.1,<1.26)
| | +- setuptools(install version:46.1.3 version range:*)
| | +- snowballstemmer(install version:2.0.0 version range:>=1.1)
| | +- sphinxcontrib-applehelp(install version:1.0.2 version range:*)
| | +- sphinxcontrib-devhelp(install version:1.0.2 version range:*)
| | +- sphinxcontrib-htmlhelp(install version:1.0.3 version range:*)
| | +- sphinxcontrib-jsmath(install version:1.0.1 version range:*)
| | +- sphinxcontrib-qthelp(install version:1.0.3 version range:*)
| | +- sphinxcontrib-serializinghtml(install version:1.1.4 version range:*)
| +- sphinx-rtd-theme(install version:0.4.3 version range:*)
| | +- sphinx(install version:3.0.1 version range:*)
| | | +- alabaster(install version:0.7.12 version range:>=0.7,<0.8)
| | | +- babel(install version:2.8.0 version range:>=1.3)
| | | | +- pytz(install version:2019.3 version range:>=2015.7)
| | | +- docutils(install version:0.16 version range:>=0.12)
| | | +- imagesize(install version:1.2.0 version range:*)
| | | +- Jinja2(install version:2.11.2 version range:>=2.3)
| | | | +- MarkupSafe(install version:2.0.0a1 version range:>=0.23)
| | | +- packaging(install version:20.3 version range:*)
| | | +- Pygments(install version:2.6.1 version range:>=2.0)
| | | +- requests(install version:2.23.0 version range:>=2.5.0)
| | | | +- certifi(install version:2020.4.5.1 version range:>=2017.4.17)
| | | | +- chardet(install version:3.0.4 version range:>=3.0.2,<4)
| | | | +- idna(install version:2.9 version range:>=2.5,<3)
| | | | +- urllib3(install version:1.25.9 version range:>=1.21.1,<1.26)
| | | +- setuptools(install version:46.1.3 version range:*)
| | | +- snowballstemmer(install version:2.0.0 version range:>=1.1)
| | | +- sphinxcontrib-applehelp(install version:1.0.2 version range:*)
| | | +- sphinxcontrib-devhelp(install version:1.0.2 version range:*)
| | | +- sphinxcontrib-htmlhelp(install version:1.0.3 version range:*)
| | | +- sphinxcontrib-jsmath(install version:1.0.1 version range:*)
| | | +- sphinxcontrib-qthelp(install version:1.0.3 version range:*)
| | | +- sphinxcontrib-serializinghtml(install version:1.1.4 version range:*)
| +- subprocrunner(install version:1.2.1 version range:<2,>=1.1.0)
| | +- mbstrdecoder(install version:1.0.0 version range:>=1.0.0,<2)
| | | +- chardet(install version:3.0.4 version range:<4,>=3.0.4)
| | | +- faker(install version:4.0.3 version range:>=1.0.2)
| | | | +- python-dateutil(install version:2.8.1 version range:>=2.4)
| | | | +- text-unidecode(install version:1.3 version range:==1.3)
| | | +- pytest(install version:5.4.1 version range:*)
| | | | +- atomicwrites(install version:1.3.0 version range:>=1.0)
| | | | +- attrs(install version:19.3.0 version range:>=17.4.0)
| | | | +- colorama(install version:0.4.3 version range:*)
| | | | +- importlib-metadata(install version:1.6.0 version range:>=0.12)
| | | | +- more-itertools(install version:8.2.0 version range:>=4.0.0)
| | | | +- packaging(install version:20.3 version range:*)
| | | | +- pathlib2(install version:2.3.5 version range:>=2.2.0)
| | | | +- pluggy(install version:0.13.1 version range:>=0.12,<1.0)
| | | | +- py(install version:1.8.1 version range:>=1.5.0)
| | | | +- wcwidth(install version:0.1.9 version range:*)
| | +- pytest(install version:5.4.1 version range:*)
| | | +- atomicwrites(install version:1.3.0 version range:>=1.0)
| | | +- attrs(install version:19.3.0 version range:>=17.4.0)
| | | +- colorama(install version:0.4.3 version range:*)
| | | +- importlib-metadata(install version:1.6.0 version range:>=0.12)
| | | +- more-itertools(install version:8.2.0 version range:>=4.0.0)
| | | +- packaging(install version:20.3 version range:*)
| | | +- pathlib2(install version:2.3.5 version range:>=2.2.0)
| | | | +- six(install version:1.14.0 version range:*)
| | | +- pluggy(install version:0.13.1 version range:>=0.12,<1.0)
| | | | +- importlib-metadata(install version:1.6.0 version range:>=0.12)
| | | +- py(install version:1.8.1 version range:>=1.5.0)
| | | +- wcwidth(install version:0.1.9 version range:*)
| | +- typepy(install version:1.1.1 version range:*)
| +- typepy(install version:1.1.1 version range:<2,>=0.6.4)
Hi, as shown in the following full dependency graph of pingparsing, pingparsing requires typepy >=0.6.4,<2, pingparsing requires humanreadable <1,>=0.1.0 (humanreadable 0.1.0 will be installed, i.e., the newest version satisfying the version constraint), and directed dependency humanreadable 0.1.0 transitively introduces typepy >=0.6.4,<2.
Obviously, there are multiple version constraints set for typepy in this project. However, according to pip's “first found wins” installation strategy, typepy 1.1.1 (i.e., the newest version satisfying constraint >=0.6.4,<2) is the actually installed version.
Although the first found package version typepy 1.1.1 just satisfies the later dependency constraint (typepy >=0.6.4,<2), such installed version is very close to the upper bound of the version constraint of typepy specified by humanreadable 0.1.0.
Once humanreadable upgrades,its newest version will be installed, as pingparsing does not specify the upper bound of version constraint for humanreadable. Therefore, it will easily cause a dependency conflict (build failure), if the upgraded humanreadable version introduces a higher version of typepy, violating its another version constraint >=0.6.4,<2.
According to the release history of humanreadable, it habitually upgrates Typepy in its recent releases. For instance, humanreadable 0.0.5 upgrated Typepy’s constraint from >=0.4.0,<1.0.0 to >=0.4.2,<1.0.0,humanreadable 0.0.7 upgrated Typepy’s constraint from >=0.4.2,<1.0.0 to >=0.6.0,<1.0.0 and humanreadable 0.0.8 upgrated Typepy’s constraint from >=0.6.0,<1.0.0 to >=0.6.4,<2.
As such, it is a warm warning of a potential dependency conflict issue for pingparsing.
Dependency tree
Thanks for your help. Best, Neolith