booleanOperations
booleanOperations copied to clipboard
Loosen the version constraint of fonttools to avoid dependency conflicts
Hi, booleanoperations locked the version constraint of fonttools as fonttools ==4.0.2, which leads a troubling scenario to its direct downstream project afdko which has dependency fonttools.
What makes the situation worse is that the downstream projects [afdko,pagebot] of booleanoperations are also have dependency fonttools.
Could you please loosen the version constraint of fonttools? Benefit of this is that users using both of booleanoperations and fonttools can upgrade their third party libraries in a timely manner to reduce technical debts.
Solution
The dependency trees of your project and affected downstream projects are shown as follows. Taking the version constraints of upstream and downstream projects into comprehensive consideration, you can
- Loosen click to be fonttools >=4.0.2.
@typemytype May I submit a PR to this issue?
Thanks for your attention. Best, Neolith
Dependency tree-----
booleanoperations - 0.9.0
| +- fonttools(install version:4.0.2 version range:==4.0.2)
| | +- brotli(install version:1.0.7 version range:==1.0.7)
| | +- brotlipy(install version:0.7.0 version range:==0.7.0)
| | | +- cffi(install version:1.14.0 version range:>=1.0.0)
| | +- fs(install version:2.4.11 version range:==2.4.11)
| | | +- appdirs(install version:1.4.4 version range:<1.5,>=1.4.3)
| | | +- pytz(install version:2019.3 version range:*)
| | | +- setuptools(install version:46.1.3 version range:*)
| | | +- six(install version:1.15.0 version range:<2,>=1.10)
| | +- lxml(install version:4.4.1 version range:==4.4.1)
| | | +- cython(install version:3.0a1 version range:>=0.29.7)
| | +- munkres(install version:1.1.2 version range:==1.1.2)
| | +- scipy(install version:1.3.1 version range:==1.3.1)
| | +- unicodedata2(install version:12.0.0 version range:==12.0.0)
| | +- zopfli(install version:0.1.6 version range:==0.1.6)
| +- pyclipper(install version:1.1.0.post1 version range:==1.1.0.post1)
afdko - 2.8.2
| +- booleanoperations(install version:0.8.2 version range:<0.9,>=0.8.0)
| | +- fonttools(install version:3.32.0 version range:==3.32.0)
| | | +- brotli(install version:1.0.7 version range:==1.0.7)
| | | +- brotlipy(install version:0.7.0 version range:==0.7.0)
| | | | +- cffi(install version:1.14.0 version range:>=1.0.0)
| | | +- fs(install version:2.1.1 version range:==2.1.1)
| | | | +- appdirs(install version:1.4.4 version range:<1.5,>=1.4.3)
| | | | +- pytz(install version:2019.3 version range:*)
| | | | +- setuptools(install version:46.1.3 version range:*)
| | | | +- six(install version:1.15.0 version range:<2,>=1.10)
| | | +- munkres(install version:1.0.12 version range:==1.0.12)
| | | +- scipy(install version:1.1.0 version range:==1.1.0)
| | | +- unicodedata2(install version:11.0.0 version range:==11.0.0)
| | | +- zopfli(install version:0.1.4 version range:==0.1.4)
| | +- pyclipper(install version:1.0.5 version range:==1.0.5)
| +- defcon(install version:0.5.3 version range:<0.6,>=0.5.1)
| | +- fonttools(install version:3.29.0 version range:==3.29.0)
| | | +- brotli(install version:1.0.1 version range:==1.0.1)
| | | +- brotlipy(install version:0.7.0 version range:==0.7.0)
| | | | +- cffi(install version:1.14.0 version range:>=1.0.0)
| | | +- munkres(install version:1.0.10 version range:==1.0.10)
| | | +- unicodedata2(install version:11.0.0 version range:==11.0.0)
| | | +- zopfli(install version:0.1.4 version range:==0.1.4)
| | +- ufolib(install version:2.3.1 version range:==2.3.1)
| | | +- fonttools(install version:3.28.0 version range:==3.28.0)
| | | | +- brotli(install version:1.0.1 version range:==1.0.1)
| | | | +- brotlipy(install version:0.7.0 version range:==0.7.0)
| | | | +- munkres(install version:1.0.10 version range:==1.0.10)
| | | | +- unicodedata2(install version:10.0.0 version range:==10.0.0)
| | | | +- zopfli(install version:0.1.4 version range:==0.1.4)
| +- fontmath(install version:0.4.9 version range:<0.5,>=0.4.5)
| | +- fonttools(install version:4.7.0 version range:>=3.32.0)
| | | +- brotli(install version:1.0.7 version range:==1.0.7)
| | | +- brotlipy(install version:0.7.0 version range:==0.7.0)
| | | | +- cffi(install version:1.14.0 version range:>=1.0.0)
| | | +- fs(install version:2.4.11 version range:==2.4.11)
| | | | +- appdirs(install version:1.4.4 version range:<1.5,>=1.4.3)
| | | | +- pytz(install version:2019.3 version range:*)
| | | | +- setuptools(install version:46.1.3 version range:*)
| | | | +- six(install version:1.15.0 version range:<2,>=1.10)
| | | +- munkres(install version:1.1.2 version range:==1.1.2)
| | | +- scipy(install version:1.4.1 version range:==1.4.1)
| | | +- ufolib2(install version:0.6.2 version range:==0.6.2)
| | | +- unicodedata2(install version:13.0.0.post2 version range:==13.0.0.post2)
| | | +- zopfli(install version:0.1.6 version range:==0.1.6)
| +- fontpens(install version:0.1.0 version range:<0.2,>=0.1.0)
| +- fonttools(install version:3.27.1 version range:<3.28,>=3.27.0)
| | +- brotli(install version:1.0.1 version range:==1.0.1)
| | +- brotlipy(install version:0.7.0 version range:==0.7.0)
| | | +- cffi(install version:1.14.0 version range:>=1.0.0)
| | +- munkres(install version:1.0.10 version range:==1.0.10)
| | +- unicodedata2(install version:10.0.0 version range:==10.0.0)
| | +- zopfli(install version:0.1.4 version range:==0.1.4)
| +- mutatormath(install version:3.0.1 version range:<22,>=2.1.1)
| +- ufolib(install version:2.3.2 version range:<22,>=2.1.1)
| | +- fonttools(install version:3.30.0 version range:==3.30.0)
| | | +- brotli(install version:1.0.1 version range:==1.0.1)
| | | +- brotlipy(install version:0.7.0 version range:==0.7.0)
| | | | +- cffi(install version:1.14.0 version range:>=1.0.0)
| | | +- munkres(install version:1.0.10 version range:==1.0.10)
| | | +- unicodedata2(install version:11.0.0 version range:==11.0.0)
| | | +- zopfli(install version:0.1.4 version range:==0.1.4)
| | +- lxml(install version:4.2.4 version range:==4.2.4)
| | | +- cython(install version:3.0a1 version range:>=0.26.1)
| | +- singledispatch(install version:3.4.0.3 version range:==3.4.0.3)
| | | +- six(install version:1.14.0 version range:*)
| +- ufonormalizer(install version:0.3.6 version range:<0.4,>=0.3.5)
pagebot - 0.9.1
| +- booleanoperations(install version:0.9.0 version range:*)
| | +- fonttools(install version:4.0.2 version range:==4.0.2)
| | | +- brotli(install version:1.0.7 version range:==1.0.7)
| | | +- brotlipy(install version:0.7.0 version range:==0.7.0)
| | | | +- cffi(install version:1.14.0 version range:>=1.0.0)
| | | +- fs(install version:2.4.11 version range:==2.4.11)
| | | | +- appdirs(install version:1.4.4 version range:<1.5,>=1.4.3)
| | | | +- pytz(install version:2019.3 version range:*)
| | | | +- setuptools(install version:46.1.3 version range:*)
| | | | +- six(install version:1.14.0 version range:<2,>=1.10)
| | | +- lxml(install version:4.4.1 version range:==4.4.1)
| | | | +- cython(install version:3.0a1 version range:>=0.29.7)
| | | +- munkres(install version:1.1.2 version range:==1.1.2)
| | | +- scipy(install version:1.3.1 version range:==1.3.1)
| | | +- unicodedata2(install version:12.0.0 version range:==12.0.0)
| | | +- zopfli(install version:0.1.6 version range:==0.1.6)
| | +- pyclipper(install version:1.1.0.post1 version range:==1.1.0.post1)
| +- fonttools(install version:4.7.0 version range:*)
| | +- brotli(install version:1.0.7 version range:==1.0.7)
| | +- brotlipy(install version:0.7.0 version range:==0.7.0)
| | | +- cffi(install version:1.14.0 version range:>=1.0.0)
| | +- fs(install version:2.4.11 version range:==2.4.11)
| | | +- appdirs(install version:1.4.4 version range:<1.5,>=1.4.3)
| | | +- pytz(install version:2019.3 version range:*)
| | | +- setuptools(install version:46.1.3 version range:*)
| | | +- six(install version:1.14.0 version range:<2,>=1.10)
| | +- munkres(install version:1.1.2 version range:==1.1.2)
| | +- scipy(install version:1.4.1 version range:==1.4.1)
| | +- ufolib2(install version:0.6.2 version range:==0.6.2)
| | +- unicodedata2(install version:13.0.0.post2 version range:==13.0.0.post2)
| | +- zopfli(install version:0.1.6 version range:==0.1.6)
| +- libsass(install version:0.19.4 version range:*)
| | +- six(install version:1.14.0 version range:*)
| +- markdown(install version:3.2.1 version range:*)
| | +- setuptools (install version:46.1.3 version range:>=36)
| +- simpleidml(install version:1.0.6 version range:*)
| +- svgwrite(install version:1.4 version range:*)
| +- tornado(install version:6.0.4 version range:*)
I dont know why the requirement not updating fontTools version, by default. I remember it did that...
@anthrotype ?
The requirements.txt file is just used to set up the testing environment. The canonical place that defines the installation requirements is in setup.py install_requires. Currently it is fonttools >= 4.0.2 so any version grater than that is supported and should work.
https://github.com/typemytype/booleanOperations/blob/d9e70775c4dd4d4ada5239880b8e34f5addb1cec/setup.cfg#L31
Boolean operations is a library, not an application, so it keeps its dependencies abstract, not pinned to concrete specific versions, to avoid just the problems you are describing.
When one pip install booleanOperations the install_requires are the ones that pip will use to install dependencies. Ignore requirements.txt