booleanOperations icon indicating copy to clipboard operation
booleanOperations copied to clipboard

Loosen the version constraint of fonttools to avoid dependency conflicts

Open NeolithEra opened this issue 4 years ago • 3 comments

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

  1. Loosen click to be fonttools >=4.0.2.

@typemytype May I submit a PR to this issue?

Thanks for your attention. Best, Neolith

NeolithEra avatar Jun 01 '20 11:06 NeolithEra

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:*) 

NeolithEra avatar Jun 01 '20 11:06 NeolithEra

I dont know why the requirement not updating fontTools version, by default. I remember it did that...

@anthrotype ?

typemytype avatar Jun 01 '20 11:06 typemytype

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

anthrotype avatar Jun 01 '20 12:06 anthrotype