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

Make kiwisolver an optional dependency? #10386

Closed
dstansby opened this issue Feb 6, 2018 · 18 comments
Closed

Make kiwisolver an optional dependency? #10386

dstansby opened this issue Feb 6, 2018 · 18 comments
Labels
topic: geometry manager LayoutEngine, Constrained layout, Tight layout
Milestone

Comments

@dstansby
Copy link
Member

dstansby commented Feb 6, 2018

#9082 introduced a nice new geometry manager, but now installing Matplotlib requires installing kiwisolver. Would it be possible to make this an optional dependency that is only needed for doing constrained layout stuff (especially since the layout stuff is experimental at the moment)?

@jklymak
Copy link
Member

jklymak commented Feb 6, 2018

Is kiwisolver being a difficult install?

@dstansby
Copy link
Member Author

dstansby commented Feb 6, 2018

On my machine at least it doesn't seem to come pre-compiled so builds it from a source distribution, which takes ~30 secs. It's not a massive issue, but keeping the install simple with minimum dependencies would be nice.

@jklymak jklymak added the topic: geometry manager LayoutEngine, Constrained layout, Tight layout label Feb 6, 2018
@jklymak
Copy link
Member

jklymak commented Feb 6, 2018

@tacaswell and @QuLogic discussed on gitter, and should be the final arbitrers. I have no idea how onerous this dependency is in the general install world, but it would be a shame from a usability point of view if it wasn't installed by default. e.g. its a lot easier to tell a user to try constrained_layout=True then to get them to pip intstall kiwisolver, etc etc after they have already installed matplotlib.

@anntzer
Copy link
Contributor

anntzer commented Feb 6, 2018

Looks like @matthew-brett is trying to get OSX wheels built for that? (nucleic/kiwi#44)
FWIW it is really easy to build a manylinux wheel (once you have a standard manylinux docker setup).

@story645
Copy link
Member

story645 commented Feb 6, 2018

@jklymak it's also required for the tests...which are there own odd install set.

@matthew-brett
Copy link
Contributor

@anntzer - yes I'm using multibuild which builds both OSX and manyinux wheels, as well as Windows wheels:

https://github.com/MacPython/kiwisolver-wheels

The sticking point is the issue you've pointed to.

@anntzer
Copy link
Contributor

anntzer commented Feb 6, 2018

what's wrong with running pytest from their source folder? (yes, you may prefer being sure not to be accidentally importing something from the source tree, but it's a C-only package with no python component so indeed you won't be importing anything from the source tree (other than the tests))

@story645
Copy link
Member

story645 commented Feb 6, 2018

I am running pytest from the source folder!

@tacaswell tacaswell added this to the v2.2 milestone Feb 6, 2018
@anntzer
Copy link
Contributor

anntzer commented Feb 6, 2018

I meant the kiwi tests (the issue mentioned by @matthew-brett in the kiwi repo).

@matthew-brett
Copy link
Contributor

@anntzer - yes, that's not a bad idea in our case (where we do have the source repo to hand) - I'll give it a go.

@QuLogic
Copy link
Member

QuLogic commented Feb 7, 2018

kiwisolver is in Fedora now.

@jklymak
Copy link
Member

jklymak commented Feb 7, 2018

Thanks a lot @QuLogic

@matthew-brett
Copy link
Contributor

The Kiwisolver maintainer @MatthieuDartiailh has kindly put up wheels now:

https://pypi.org/project/kiwisolver/#files

@MatthieuDartiailh - I guess you're planning to keep updating these for new releases? I'm asking because it may well affect whether Matplotlib takes Kiwisolver as a dependency.

@MatthieuDartiailh
Copy link
Contributor

Yes I will keep updating those. Even though I have no short term plans for updates to this library. However should any bugs be found, I will try to address those and release in consequence.

@dstansby
Copy link
Member Author

I'm happy leaving this as a dependency in that case - thanks a lot @MatthieuDartiailh for making the wheels!

@MatthieuDartiailh
Copy link
Contributor

You should rather thank @matthew-brett for setting up the whole infrastructure. Even the upload of the wheels is automated.

@QuLogic QuLogic modified the milestones: needs sorting, v2.2.0 Feb 12, 2018
@jamesshannon
Copy link

FWIW kiwisolver takes a non-trivial amount of time (maybe 5 minutes) to compile & install on my power- and resource- constrained raspberry Pi.

@matthew-brett
Copy link
Contributor

I believe there are wheels, for Python 3.5 : https://www.piwheels.hostedpi.com/simple/kiwisolver/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic: geometry manager LayoutEngine, Constrained layout, Tight layout
Projects
None yet
Development

No branches or pull requests

9 participants