-
Notifications
You must be signed in to change notification settings - Fork 24
tulip-python: Remove tulipgui packaging and deployment to PyPI #48
Conversation
Hi Antoine,
Thanks a lot again for all the great support!
As you are mentionning, Tulip-GUI bindings are a lot to maintain, but,
although still underexploited, I think the bindings bring a lot .
Let me elaborate.
As people manipulate graphs, they obviously wish to visualize them,
especially when manipulated with Tulip.
If the only choice is to redirect them to the Tulip app, it may have a
negative impact on Tulip.
Tulip app still suffers from a lot of unstability (let be honest, from
users' perspective, the crashes are more or less random, very much like
Meshlab, which is still a powerful and popular software). Only power users
get the reflex (saving saving saving) and good practices to overcome these
unstabilities and make the best out of Tulip. Meaning that a lot of people
may turn to other frameworks if we force them to switch to the Tulip app.
To that mean, the Tulip-gui bindings are heaven, since they are more
stable, but the fact that they make a separated package is non-trivial.
So I think it is ok not to distribute the Tulip-gui package, but we should
for sure propose them for compilation (and advertise this as a great
feature of Tulip).
However, in the default tulip-python package, for the sake of Tulip's
popularity and usability, I think we should propose at least a basic
visualization of the graphs.
People want to effortless check their graph at some point (not an
export/import in a different software kind of thing).
Maybe we can forget a second about interaction, and propose a rendering
that would fit into pyplot?
This actually may have a positive impact on Tulip usage, as many users have
their habits on pyplot.
Best,
…--
Benjamin
On Thu, 27 Sep 2018 at 22:15, Antoine Lambert ***@***.***> wrote:
Hello,
I saw that there was some move lately in the repository regarding the
generation of Python wheels to upload on PyPI. As I am the one who put this
in place at the time, I thought that some advices from
me could be useful in order to ease the maintenance of that part.
First, as I said in the comments of commit 96f11e4#commitcomment-30659658
<96f11e4#commitcomment-30659658>,
this process will not work to generate binary wheels on Linux compatible
will all available Python versions. I fixed that.
Secondly, as also explained in 96f11e4#commitcomment-30659994
<96f11e4#commitcomment-30659994>,
I think that the distribution of the tulipgui-python module on PyPI should
be purely and simply abandonned.
Thinking it back, it was a silly idea from me to distribute that module on
PyPI. I truly doubt that a lot of people use it as it is quite redundant
with the main Tulip software capabilities while being less intuitive to
use. Moreover it is really painful to build the wheel (especially on Linux)
as there is a lot of fancy dependencies (Qt, GLEW, freetype, ...) that need
to be bundled in it, and this is not really a good practice to upload such
a wheel on PyPI. Based on my experience, the maintenance of that thing is
not pleasant and too much time consuming for something that nobody use.
So I think that users should now be redirected to use the main Tulip
software for visualization purposes instead of using the tulipgui module
from PyPI (they can still use the one bundled with the Tulip installation
if needed).
In that PR, the PyPI packaging for tulipgui-python is dropped while of
course keeping the one for tulip-python. As there is only one wheel left, I
renamed the following make targets:
- wheels -> wheel
- wheels-upload -> wheel-upload
- wheels-upload-test -> wheel-upload-test
I have also added a CI job to generate and test the wheels on Linux with
all available Python versions.
This is still a WIP (doc needs to be updated, CI jobs need to be added for
building the wheels on MacOS and windows) so DO NOT MERGE yet.
------------------------------
You can view, comment on, or merge this pull request online at:
#48
Commit Summary
- tulip-python: Revert parts of 96f11e4 for building wheels on Linux
as this will not work
- tulip-python: Remove tulipgui packaging and deployment on PyPI
- sip: Fix build on Centos 5.x using gcc 4.8
- tulip-python/PythonInterpreter: Remove no more needed calls
- tulip-python: Fix tulip-core packaging for Python 2
- travis.yml: Add job to build tulip-python wheel on manylinux1
File Changes
- *M* .travis.yml
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-0> (26)
- *M* CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-1> (72)
- *A* bundlers/linux/tulip_python_wheels_build.sh
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-2> (34)
- *M* cmake/FindQtX.cmake
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-3> (9)
- *M* cmake/TulipUseFile.cmake
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-4> (31)
- *M* doc/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-5> (8)
- *M* library/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-6> (4)
- *M* library/tulip-core/src/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-7> (8)
- *M* library/tulip-gui/src/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-8> (4)
- *M* library/tulip-ogdf/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-9> (6)
- *M* library/tulip-ogl/bitmaps/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-10> (21)
- *M* library/tulip-ogl/src/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-11> (4)
- *M* library/tulip-python/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-12> (6)
- *M* library/tulip-python/bindings/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-13> (4)
- *M* library/tulip-python/bindings/stl/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-14> (10)
- *M* library/tulip-python/bindings/tulip-core/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-15> (28)
- *M* library/tulip-python/bindings/tulip-core/packaging/README.rst
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-16> (3)
- *M* library/tulip-python/bindings/tulip-core/packaging/setup.py.in
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-17> (2)
- *M* library/tulip-python/bindings/tulip-gui/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-18> (56)
- *D* library/tulip-python/bindings/tulip-gui/packaging/MANIFEST.in
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-19> (1)
- *D* library/tulip-python/bindings/tulip-gui/packaging/README.rst
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-20> (123)
- *D*
library/tulip-python/bindings/tulip-gui/packaging/configure_tulipgui_python_setup.cmake
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-21> (2)
- *D*
library/tulip-python/bindings/tulip-gui/packaging/copyTulipGuiDllDependencies.cmake
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-22> (72)
- *D* library/tulip-python/bindings/tulip-gui/packaging/setup.cfg.in
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-23> (10)
- *D* library/tulip-python/bindings/tulip-gui/packaging/setup.py.in
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-24> (221)
- *M* library/tulip-python/modules/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-25> (8)
- *M* library/tulip-python/plugins/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-26> (6)
- *M* library/tulip-python/src/PythonInterpreter.cpp
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-27> (3)
- *M* plugins/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-28> (7)
- *M* plugins/clustering/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-29> (10)
- *M* plugins/colors/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-30> (6)
- *M* plugins/export/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-31> (6)
- *M* plugins/glyph/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-32> (9)
- *M* plugins/import/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-33> (14)
- *M* textures/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-34> (6)
- *M* thirdparty/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-35> (4)
- *M* thirdparty/OGDF/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-36> (6)
- *M* thirdparty/ftgl/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-37> (4)
- *M* thirdparty/gzstream/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-38> (8)
- *M* thirdparty/libtess2/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-39> (4)
- *M* thirdparty/quazip/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-40> (4)
- *M* thirdparty/sip-4.19.12/siplib/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-41> (20)
- *M* thirdparty/yajl/src/CMakeLists.txt
<https://github.com/Tulip-Dev/tulip/pull/48/files#diff-42> (8)
Patch Links:
- https://github.com/Tulip-Dev/tulip/pull/48.patch
- https://github.com/Tulip-Dev/tulip/pull/48.diff
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#48>, or mute the thread
<https://github.com/notifications/unsubscribe-auth/ARP9llOcP4_7jIgjWS-SVuIfFuLmKmVIks5ufM9LgaJpZM4W8oxd>
.
|
Hi, Below are some answers to your comments.
You're welcome. Even if I am not involved in Tulip development anymore, I think helping
I do not agree on that. tulipgui-python is basically a wrapper to display Tulip views from Python
I understand that the user experience can be painful due to the frequent crashes. But if nobody fills a bug report or indicates how to reproduce the encountered issue, Tulip maintainers won't know it and so won't fix it. It's a shame because Tulip outputs a stack trace when it crashes and this is the kind of information of interest to the maintainers. An interesting feature would be to save that trace to a file and then upload it to your servers when Tulip is executed again, could help a lot tracking common bugs imho. Also, maybe adding a section in the official documentation regarding how to help debugging and making Tulip more stable would be a good idea ? Another problematic issue is that the Github repository has never been officially advertised (see #46 ),
From my point of view, simply loading a graph file produced with tulip-python in the main Tulip
Trust me, maintaining and compiling those binary wheels for tulipgui-python is a nightmare. Moreover, those kind of wheels including a lot of exotic binaries dependencies should not be uploaded on PyPI. It was fun to do at the time but thinking it back, that was not a good idea and it is just a giant hack on the capability of Python to import modules written in C/C++. For tulip-python, it is OK as it has a real solid API and it only relies on libstdc++ and zlib which are lightweight dependencies.
Yes the feature will still be available if you compile Tulip yourself or use an official installation.
From my point of view, that's out of scope. tulip-python is only dedicated to the creation and manipulation of graphs hierarchy and the application of algorithms. We gave the user the possibility Anyway, based on that commit (b0b9321) I see that you will still try to build and upload the tulipgui wheel.
In the mean time, I will continue to work on that PR (rebasing and pushing force the branch). You would be wise to merge it once it is ready. Cheers! |
Hi,
I don't want to deliberate on these, but just gave feedbacks from some
users' point of view.
I understand all the effort behind, and just explained this point of vue.
A few points though, I thought the backtrack abandonned, because I haven't
seen them for a couple of release (sorry I cannot trace). The random nature
of the crashes make them hard to track, very time consuming to reproduce
when possible, often data specific (not easy always to share the data) and
report. Some cannot really be fixed or are hanging for a while (but
probably still on stackoverflow, which a separate issue - I just recall the
unstability due to Jp fonts for example).
You probably are right they require advance manipulations, that is why I
proposed the idea of a minimal visualization from python.
About the only package outhere for graph hierarchies, you are right, but
the best does not mean the most usable and popular. That is why most people
are turning to Gephi when it comes to visualization of custom graphs and
Networkx for analysis. Usuability may be key. IMHO Tulip really has a
wasted potential there. Most of the most used analysis python packages out
there has this sort of plot capabilities (as a feature, not a pure
dependency, basically something we can feed to a plot, still running on a
server). This would really help convincing outsiders to adopt tulip. The
bigger the Tulip community, the more contributions we will get to the
project, won't we?
Cheers,
--
Benjamin
…On Sat, 29 Sep 2018 at 01:40, Antoine Lambert ***@***.***> wrote:
Hi,
Below are some answers to your comments.
Thanks a lot again for all the great support!
You're welcome. Even if I am not involved in Tulip development anymore, I
think helping
on the maintenance of the parts I was involved in and fix my mistakes is
the least that I
can do.
If the only choice is to redirect them to the Tulip app, it may have a
negative impact on Tulip.
I do not agree on that. tulipgui-python is basically a wrapper to display
Tulip views from Python
so that's exactly the same thing you got when using the Tulip software.
Tulip app still suffers from a lot of unstability (let be honest, from
users' perspective, the crashes are more or less random, very much like
Meshlab, which is still a powerful and popular software). Only power users
get the reflex (saving saving saving) and good practices to overcome these
unstabilities and make the best out of Tulip. Meaning that a lot of people
may turn to other frameworks if we force them to switch to the Tulip app
I understand that the user experience can be painful due to the frequent
crashes. But if nobody fills a bug report or indicates how to reproduce the
encountered issue, Tulip maintainers won't know it and so won't fix it.
It's a shame because Tulip outputs a stack trace when it crashes and this
is the kind of information of interest to the maintainers. An interesting
feature would be to save that trace to a file and then upload it to your
servers when Tulip is executed again, could help a lot tracking common bugs
imho. Also, maybe adding a section in the official documentation regarding
how to help debugging and making Tulip more stable would be a good idea ?
Another problematic issue is that the Github repository has never been
officially advertised (see #46
<#46> ),
there is no link to the repository on the main page of Tulip website !!!.
People will usually find
it through a google search but indicating clearly where to report bugs
would be a good idea in my opinion.
To that mean, the Tulip-gui bindings are heaven, since they are more stable
From my point of view, simply loading a graph file produced with
tulip-python in the main Tulip
software will not lead to a direct crash. If you do not apply a lot of
complex operations on
you graph and simply visualize it as you would do with the tulipgui-python
module, there is
no reason that a crash appears. That's why I said that the module is
redundant with the
main software.
but the fact that they make a separated package is non-trivial.
Trust me, maintaining and compiling those binary wheels for
tulipgui-python is a nightmare.
I can't count the time I worked on making the wheels work on all platforms
at the time.
Currently, this works because Qt4 can still be used. But once Qt4 support
will be dropped (based
on what I read in the 5.2 changelog) and Qt5 will be the only supported Qt
version, things will get really complicated. The main issue is for the
Linux platform as Qt5 plus other dependencies need to be compiled manually
on a dedicated docker image based on Centos 5.11, and this is not a piece
of cake. During last weeks, I tried to see if using Qt5 to build the
tulipgui-python on Linux was feasible. I painfully found a way but at the
cost of some hacks. This led me to the conclusion that the distribution of
tulipgui-python
on PyPI should be abandonned because it is too time consuming and main
development efforts should be done on the software itself and not on that
complex binary packaging stuff.
Moreover, those kind of wheels including a lot of exotic binaries
dependencies should not be uploaded on PyPI. It was fun to do at the time
but thinking it back, that was not a good idea and it is just a giant hack
on the capability of Python to import modules written in C/C++. For
tulip-python, it is OK as it has a real solid API and it only relies on
libstdc++ and zlib which are lightweight dependencies.
So I think it is ok not to distribute the Tulip-gui package, but we should
for sure propose them for compilation (and advertise this as a great
feature of Tulip).
Yes the feature will still be available if you compile Tulip yourself or
use an official installation.
However, in the default tulip-python package, for the sake of Tulip's
popularity and usability, I think we should propose at least a basic
visualization of the graphs. People want to effortless check their graph at
some point (not an export/import in a different software kind of thing).
Maybe we can forget a second about interaction, and propose a rendering
that would fit into pyplot?
From my point of view, that's out of scope. tulip-python is only dedicated
to the creation and manipulation of graphs hierarchy and the application of
algorithms. We gave the user the possibility
to draw any imported graph using Tulip layout algorithms and it's up to
him to visualize it afterwards
with the technology of its choice (Tulip being the most adequate of
course). Moreover tulip-python should not depend on other non standard
Python modules and it should also remain usable in a server environment
(without display available), let's keep it simple.
Anyway, based on that commit (b0b9321
<b0b9321>)
I see that you will still try to build and upload the tulipgui wheel.
Based on my experience on the subject, you will need to do a lot of tests
before effectively deploy
it to the PyPI server. My advices are the following:
- create an account on https://test.pypi.org/ and use the
wheels-upload-test make targets to upload the produced wheels on the PyPI
test server (more details here:
https://packaging.python.org/guides/using-testpypi/)
- prior building the wheel, set the CMake variable named
PythonWheelVersionSuffix to ".devN", start with N=1 then increment it after
each upload (PyPI does not allow to upload twice a wheel with the same
version number).
- once a wheel has been uploaded, install it with pip in a clean
environment different from the one you used to compile it. For linux, I
recommend to use VirtualBox and test against various commonly used
distributions (Debian stable, Fedora, ArchLinux, Ubuntu, CentOS).
- once you are sure that the produced modules can be successfully
imported in the wild, proceed to the upload on the real PyPI server through
the wheels-upload make target.
In the mean time, I will continue to work on that PR (rebasing and pushing
force the branch). You would be wise to merge it once it is ready.
Cheers!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#48 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/ARP9ljJVccoEh5cdgwyWSl0pdh8BNE7fks5uflEEgaJpZM4W8oxd>
.
|
Use Sphinx 1.7 as Sphinx 1.8 seems buggy on that platform.
- store the Inetc NSIS plugin in the repository instead of downloading it - use CMake provided by AppVeyor instead of the MSYS2 one - force install dependencies - remove Sphinx/Doxygen installation as it is not needed anymore
Distributing tulipgui-python on PyPI was a silly idea from my part. Thinking it back, only tulip-python should be provided on PyPI. The reasons of this removal are the following: - the module is not really used - bundling needed binaries in the wheel (notably the Qt ones) is painful and hard to maintain (especially on Linux) - the module is quite redundant with the main Tulip software, while being less intuituve to use Previous users should now be redirected to use the main Tulip software for visualization purposes or use the modules located in an official Tulip installation instead.
0df1b6a
to
d62cde8
Compare
I have updated the PR by fixing some noticed issues and by adding CI jobs to build tulip-python wheels on all platforms. There is still the documentation to update. Ping me when you think it is time to merge it in master and I will rebase it to facilitate the operation. |
I saw my prayers have been heard (85f572a) so closing that PR (you could have pinged me instead of doing all the work on your own, a simple |
MacOS (https://travis-ci.org/Tulip-Dev/tulip/jobs/466597865) and Windows (https://ci.appveyor.com/project/tulip-dev/tulip/build/job/6wrn42xjbtr770k0) builds are broken ... I can help on the subject but you should ping me next time ... |
Hello,
I saw that there was some move lately in the repository regarding the generation of Python wheels to upload on PyPI. As I am the one who put this in place at the time, I thought that some advices from
me could be useful in order to ease the maintenance of that part.
First, as I said in the comments of commit 96f11e4#commitcomment-30659658, this process will not work to generate binary wheels on Linux compatible with all available Python versions. I fixed that.
Secondly, as also explained in 96f11e4#commitcomment-30659994, I think that the distribution of the tulipgui-python module on PyPI should be purely and simply abandonned.
Thinking it back, it was a silly idea from me to distribute that module on PyPI. I truly doubt that a lot of people use it as it is quite redundant with the main Tulip software capabilities while being less intuitive to use. Moreover it is really painful to build the wheel (especially on Linux) as there is a lot of fancy dependencies (Qt, GLEW, freetype, ...) that need to be bundled in it, and this is not really a good practice to upload such a wheel on PyPI. Based on my experience, the maintenance of that thing is not pleasant and too much time consuming for something that nobody use.
So I think that users should now be redirected to use the main Tulip software for visualization purposes instead of using the tulipgui module from PyPI (they can still use the one bundled with the Tulip installation if needed).
In that PR, the PyPI packaging for tulipgui-python is dropped while of course keeping the one for tulip-python. As there is only one wheel left, I renamed the following make targets:
I have also added a CI jobs to generate and test the wheels on Linux, MacOS and Windows.