Skip to content

document where nightly wheels are published #9994

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

Closed
tillahoffmann opened this issue Dec 13, 2017 · 23 comments · Fixed by #22733
Closed

document where nightly wheels are published #9994

tillahoffmann opened this issue Dec 13, 2017 · 23 comments · Fixed by #22733
Milestone

Comments

@tillahoffmann
Copy link
Contributor

It would be great to have a nightly pip package as provided by tensorflow such that users can easily experiment with the most recent code without having to build from source, e.g. publish a package matplotlib-nightly to pypi as part of builds on master.

I came across this document from 2015 discussing a similar idea, but couldn't find anything on a nightly package in the installation instructions.

@matthew-brett
Copy link
Contributor

Actually, we're already doing this:

PRE_URL=https://7933911d6844c6c53a7d-47bd50c35cd79bd838daf386af554a83.ssl.cf2.rackcdn.com/
pip install -f $PRE_URL --pre matplotlib

Any interest in putting a PR to the install instructions?

@tillahoffmann
Copy link
Contributor Author

Oh, great news! Is that URL stable? Happy to send a PR.

@matthew-brett
Copy link
Contributor

Yes, the URL is stable (I know it doesn't look like it)...

@tacaswell
Copy link
Member

Is there any plan to cull those over time?

@tacaswell tacaswell added this to the v2.1.1-doc milestone Dec 13, 2017
@tacaswell tacaswell changed the title Wishlist: nightly pip packages document where nightly wheels are published Dec 13, 2017
@matthew-brett
Copy link
Contributor

No plan - but we could do that ...

@jklymak
Copy link
Member

jklymak commented Dec 13, 2017

Is it possible to have a more legible/canonical redirect somewhere?

@matthew-brett
Copy link
Contributor

It's canonical, but not legible I agree. I don't personally know of any free services that provide https redirects - anyone have any good ideas? It has to be https in order for pip to use the URL without cumbersome extra flags.

@tacaswell
Copy link
Member

We use cloudflare for https on matplotlib.org ( @jkseppan took care of setting that up ). I wonder if we can use that? https://nightly.matplotlib.org ? I am not sure if that is possible given the way that we are using a custom domain with github pages...

@matthew-brett
Copy link
Contributor

That would be very good - if someone could configure that.

@jkseppan
Copy link
Member

I set up a CNAME record at nightly.matplotlib.org pointing to 7933911d6844c6c53a7d-47bd50c35cd79bd838daf386af554a83.ssl.cf2.rackcdn.com (@tcaswell may have received a security warning about that) but that doesn't seem to be enough. I couldn't enable Cloudflare's proxying for that address (I suspect they blacklist other CDNs) but the CNAME should work anyway. Perhaps there is some additional step to take on the Rackspace side by whoever has the credentials to do that?

Rackspace instructions indicate that SSL is not going to work with CNAME records. It seems to me that the requirements of a custom domain and SSL support are not compatible with the free-of-charge solution of just adding DNS records at Cloudflare.

This would probably need a very small Heroku app (or similar) to return "302 Redirect" responses at a custom domain, pointing to the rackcdn address. But at least on Heroku the SSL support is only available on paid plans.

@jkseppan
Copy link
Member

The error message at http://nightly.matplotlib.org seems to be an Akamai message, so if anyone has access to the Akamai (or possibly Rackspace) account used to configure the rackcdn.com subdomain, it probably needs to be set up to allow the CNAME redirection. But, again, that will not work with SSL.

@tillahoffmann
Copy link
Contributor Author

Would it be possible to publish the wheel to pypi under a different name such as matplotlib-nightly? That would avoid redirect difficulties and allow users to install the nightly build without having to specify a specific URL.

@tacaswell
Copy link
Member

I do not think that pip can express 'conflicts with' in the requirements which means you could install both matplotlib and matplotlib-nightly which would overlap and would lead to interesting bug reports!

I would much rather work with in the system (here using non-canonical repositories and the '--pre' flag) rather than work around the system (by creating a package with a slightly different name).

@jkseppan
Copy link
Member

jkseppan commented Dec 14, 2017

I realized that the redirection can be done with Cloudflare's page rules, which we can use in a limited way on the free tier. https://nightly.matplotlib.org/ now redirects to https://7933911d6844c6c53a7d-47bd50c35cd79bd838daf386af554a83.ssl.cf2.rackcdn.com/ and pip install --pre -f https://nightly.matplotlib.org matplotlib installs a prerelease version. You can see the redirection target in the output, though:

Collecting matplotlib
  Downloading https://7933911d6844c6c53a7d-47bd50c35cd79bd838daf386af554a83.ssl.cf2.rackcdn.com/matplotlib-2.1.1+734.gfb18b4ec1-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (13.2MB)
    100% |████████████████████████████████| 13.2MB 96kB/s
Collecting six>=1.10 (from matplotlib)
  Using cached six-1.11.0-py2.py3-none-any.whl
Collecting pytz (from matplotlib)
  Using cached pytz-2017.3-py2.py3-none-any.whl
Collecting numpy>=1.7.1 (from matplotlib)
  Downloading https://7933911d6844c6c53a7d-47bd50c35cd79bd838daf386af554a83.ssl.cf2.rackcdn.com/numpy-1.15.0.dev0+20171214134454_d233e1f-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.7MB)
    100% |████████████████████████████████| 4.7MB 262kB/s
Collecting pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 (from matplotlib)
  Using cached pyparsing-2.2.0-py2.py3-none-any.whl
Collecting python-dateutil>=2.0 (from matplotlib)
  Using cached python_dateutil-2.6.1-py2.py3-none-any.whl
Collecting cycler>=0.10 (from matplotlib)
  Using cached cycler-0.10.0-py2.py3-none-any.whl
Installing collected packages: six, pytz, numpy, pyparsing, python-dateutil, cycler, matplotlib
Successfully installed cycler-0.10.0 matplotlib-2.1.1+734.gfb18b4ec1 numpy-1.15.0.dev0+d233e1f pyparsing-2.2.0 python-dateutil-2.6.1 pytz-2017.3 six-1.11.0

@jkseppan
Copy link
Member

There could be some danger in using Cloudflare's services for something that could get used in automated scripts. I think Cloudflare is mainly intended for serving web pages to humans efficiently, and if they detect what looks like a distributed attack they could start serving CAPTCHA challenges or otherwise limiting the usage.

@tacaswell
Copy link
Member

Sweet!

Somewhat fortuitously, I will be having a chat with someone from cloudflare in the near future anyway (we push enough data every month they noticed us). I'll be sure to bring this up.

@matthew-brett
Copy link
Contributor

Where are we on nightly wheels? Anything I can do to help?

@tacaswell
Copy link
Member

We have moved to building the wheels via github actions (see https://github.com/matplotlib/matplotlib/actions/workflows/cibuildwheel.yml). There is a download link, but I am not sure if that is something you can easily point pip at.

@matthew-brett
Copy link
Contributor

Sorry - I am sure I'm being dumb but I couldn't see how to get the wheels from that interface.

But - if we can't point pip at the results - is there a way to upload them them somewhere pip can see? I think the desire is to have something we can test our individual CIs against - certainly I would like to do that.

@tacaswell
Copy link
Member

If you click on the PR tittle you get to https://github.com/matplotlib/matplotlib/actions/runs/695524406 which has a download link at the bottom (sorry, typed this 5 hours ago and failed to hit 'comment' 🤦 ).

@matthew-brett
Copy link
Contributor

Aha - thanks - Firefox deceived me and I couldn't see or easily get to the bottom of the page.

So, the individual jobs generate a .zip file containing the wheels. Could we make a cron job or similar to download the zip file, unpack and upload somewhere like Anaconda.org?

@QuLogic
Copy link
Member

QuLogic commented Mar 29, 2021

See MacPython/matplotlib-wheels#15

@dstansby
Copy link
Member

dstansby commented May 4, 2021

Just a quick note that we would be very interested in nightly wheels of Matplotlib over at sunpy too - currently we test against the Matplotlib master branch.

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

Successfully merging a pull request may close this issue.

7 participants