-
-
Notifications
You must be signed in to change notification settings - Fork 417
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
We need to support a multiplatform installation #52
Comments
|
Sheepishly, I must admit I did a bunch of cowboy stuff without doing incremental commits and changing too many names: it's kind of broken, but parts of it might be salveagable. I kind of like what @takluyver did with cite2c. Frankly, I didn't even know To reduce the focus on fiddling with configuration files, I think any slideshow customizations ( Version: what's wrong with Interested to see where this all goes! |
I have, for now, completely bypassed packaging systems in the cite2c install script, though that may have to change to handle the server side extension I've added recently. The load_extensions thing is nice because the install script can enable the new extension, but you can't do that as part of conda packaging or pip installation from wheels, because those can only place new files on the filesystem. There may be less need for this if @juhasch's config extension. Version: If you've already done 1.x and 2.x releases, it seems like a bad idea to go back and call the next version 0.3. You'd have to rewrite history to number the old versions, and you're bound to miss something, and it would cause problems for everyone with the code already installed, or a clone of the repo, or whatever. Absent some really exceptionally good reason, I'd keep version numbers rolling forwards, even if I thought the numbering scheme was wrong. |
Me. Just. Wow. O_O. |
wow, yes, I hadn't even paid attention to that. Are all of the second row slideshow related, or are they various different extensions? Maybe we should consider an API to add icon+text buttons, because I wouldn't want to bet on what any of those added buttons do. |
Because you think it's not already taken care of ? Action = handler + icon + text + name Toolbar = list of action. Sprinkle with IPython magic and most things should work. Of course some things above require custom code for dropdown :-) |
But I think the text is help text, not something to put on a button. It would also be part of the toolbar API whether to display a button as icon, text or icon+text.
✨ ✨ ✨ 🐍 |
Yeah, yeah, I think we probably want the menu to use actions before that, and add requested features one at a time. |
Heresy! ;-) |
Idea for the rest ? |
Yes: those are all slideshow-level metadata. The other option would be to have a big modal where all of this was defined, and only a single button. I'd like a well-thought-out icon/text/icon+text mode of the toolbars as well, eventually.
Yes, please! |
A lot of activity here... nice... some of my answers
NICE, I will take a deeper look on the weekend
Yep, I agree...
Yes, I thought about that in the past, the thing is find a way to make without messing the user with a high complex UI...
Yep
Yeah, it can be...
Yep, that's is very interesting... I think a lot of us want to see it merged in Jupyter soon...
OK, both convinced me... let's keep it in the current way...
Yeah, I would love to have text on the button...
I agree, that would be awesome... |
I understand from the check-list at the top that it doesn't work on Windows yet. Am I right? Thanks |
I think it should. Try it and let us know what happens! |
Windows 7, 64bit, Anaconda - conda with Python 3, IPython 3.0 (just updated) and I get this: C:\Users\franz\Documents\IPython Notebooks\RISE-master> python setup.py |
I think you need to run |
You are right! Doing that it worked like a charm! (I didn't know it... my apologies) On Mon, Mar 2, 2015 at 10:41 PM, Thomas Kluyver [email protected]
Francisco J. Navarro-Brull |
That's OK. I'm not quite sure why it works like that, because there's nothing you can put after it except |
In fact, this part was contributed from a user... probably something like |
As a windows report,
But |
Yes, it is a know issue about the "symlink" in windowa... not sure if there is a simple solution, I did not have touched win for years... @takluyver any idea about win support in the |
Ah, yes, the issue is here: ipython/ipython#6239 |
No, I think If you use Python 3 and you have a special permission bit set, creating symlinks normally will work, but that permission bit is off by default, so it's generally easiest to assume that you can't create symlinks on Windows. There is something called 'NTFS juction points' which works like symlinks for directories, but I don't know of any Python programs that use those. |
Fine with me... you always can re-install... not as nice, but just a command to trigger... thanks for the additional info @takluyver |
This still isn't pip installable, even from |
The way things are moving with Python packaging (i.e. towards wheels), jupyter-pip is either going to break, or is going to increasingly need to circumvent the systems it. Looking at the code, I suspect it may already fail with pip 7. I don't think that's a good way to do things. We're still trying to work out what extension packaging and distribution should look like. But one thing I think we're mostly agreed on is that installing and enabling an extension are not the same thing - though I see a place for a UI like Firefox's extension manager that installs and enables an extension with one click. |
I agree with @takluyver, I would not use jupyter-pip to do this... and, in fact, I am not sure we have to do a python package to install this... still thinking on it... why? Right now, we have a pure JS/CSS extension which only uses python to install/activate the thing... but, in the future, I would like to make all the component/objects "draggable" and persist that info in some way (so people can actually create your slides and "design" it on the fly)... maybe sending that info to the notebook server and writing it to a file (it could be other way, ideas? we should probably start another thread for that discussion). In that case it makes sense to have a python-based installation... But well... maybe we can try a traditional setup.py approach, a conda one and maybe a npm one? About the extension manager, we should be compatible with that when "that" happen... |
jupyter-pip works great at this particular moment... but not with wheels, indeed. The point here is that a) RISE isn't packaged and b) can't be installed with pip, 7 or otherwise, and jupyter-pip would solve that immediately. RISE is (really) a pure js (and css... and fonts... and images...) nbextension, and having even rudimentary support for an existing package manager would nail this use case admirably, preventing us from re-inventing front-end asset management: see typescript,
...but could be advanced into something useful. |
Is there already a (meta-)thread for the long-con of front-end packaging someplace? |
We could use flit from @takluyver as well...
I don't remember if there is one... or just some discussions on the meetings... |
If there was an entry_point for nbextensions, flit would be a good match, as I assume it handles those! But wheels vs bdist, like bower vs npm, give you no opportunity to run scripts after install.
Let's not do anything that breaks nbviewer :) What I mean is, markdown is the "presentation" cell type, so we should try to work within that. But departing from markdown would carry a cost: with nb-inkscapelayers, I'm doing some terrible tricks with SVG that could be applied here: "cells": [
{
"cell_type": "markdown",
"source": ["![](data:image/svg+xml;base64,a bunch of stuff)"],
"metadata": {
"rise": {"use_wysiwyg": true}
}
] Get or make a suitable editor that can modify in-memory SVG, serialize it back out to that img tag, and the rendered view would be, no-fooling, what everyone else would see, and be editable. But it would be an image, no links, no interactivity. For the actual editor, there is the creaky, but still alive svg-edit. I've looked at a few others, but they most are experimental or unsatisfying in some way. A code cell with hacked output SVG or HTML would work :shivers:. But it might keep some semblance of searchability, which the base64 trick fails. But there would be many perils. |
If you want to make it installable with pip, you can use flit, but flit only makes wheels, and the tricks jupyter-pip does don't work with wheels. That's not just a bug with jupyter-pip: by design, wheels don't run code from the package at install time, so j-p can never work with wheels. I'm inclined to agree with @damianavila that for things like RISE that don't involve any Python code, it would be rather bizarre to package them as Python modules. We have thought of using entry points, but it seems backwards to tie JS+HTML extensions to Python packaging, especially since it's not a packaging system that wins many awards. (flit does handle entry points, btw :-) ) It would be fairly easy for us to design an extension packaging system for things like RISE. The tricky part is what we do for extensions that require a combination of server+frontend parts (e.g. cite2c), or kernel+frontend parts (e.g. any custom widgets). Do we try to have one packaging mechanism that works for all the different cases? Or do we carve them up somehow and only try to solve the easier cases? But this would be annoying if you started with a pure frontend extension and then needed to add a server part (as cite2c did), as you'd have to stop using the 'pure extension' packaging mechanism. I can't immediately think of any single thread for this - it's one of those topics that has come up from time to time in different venues. We discussed it quite a bit at our last in-person dev meeting in Berkeley. There are notes from that, but we didn't record it. |
So, google group thread? Issue on jupyter/jupyter? (I|J)PEP? |
Probably a thread at the jupyter mailing list is a good place...
As for now, in the case of RISE, I understand @bollwyvl position about making it installable, and we probably need to be pragmatic and come up with something... I am thinking into make a conda package, for sure, because of the agnostic nature of conda... and probably use flit because if you installed jupyter, you probably have pip there (or conda, which falls in the previous point)... thoughts? |
Will do!
Hooray conda. Will it enable it?
Unless we succeed in getting stuff into distros :) Still will have to manually install it... which is why I like the "hack" of jp's If manual enabling is okay, still another option is publishing a zip of just the livereveal folder to gh-pages: one could then use: ipython install-nbextension https://damianavila.github.io/RISE/livereveal.zip |
Conda can install it (putting it into
Maybe what we should be adding in the short term is a command-line interface to enable an nbextension? That way, although it would be two steps, we could easily give them to people together, e.g.:
|
I think this is not entirely true... IIRC, you can add a post-script to your conda recipe to potentially enable things... let me find some link... ok, here: http://conda.pydata.org/docs/building/build-scripts.html
Sound interesting (although as I said before, this should be solved with a post script in conda). |
In my conda nbextensions package I use a script to install files and also change the configuration. It should be even easier using the JSON instead of the PY configuration. |
Oh, neat. Then it should be possible to package frontend extensions as plain conda packages and enable them on install. And if I add an |
Great, so... probably the summary:
How does sound? |
Sounds great. it will be even better to have "nbextension enable". The On 08:18, Mon, Jul 20, 2015 Damián Avila [email protected] wrote:
|
Yep, really exciting, I agree... |
Am I right in assuming this has not been addressed yet? |
Planned for the next release... |
Dear god in heaven, THANK YOU! For real. This is great news! |
Some things to discuss/implement:
how to deal with require in custom.js (I like the current solution although is hacky)Other ideas welcome...
The text was updated successfully, but these errors were encountered: