Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Loosen the version constraint of fonttools to avoid dependency conflicts #60

Open
NeolithEra opened this issue Jun 1, 2020 · 3 comments

Comments

@NeolithEra
Copy link

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
Copy link
Author

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

@typemytype
Copy link
Owner

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

@anthrotype ?

@anthrotype
Copy link
Collaborator

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.

fonttools >= 4.0.2

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants