Second Weekly Upgradathon Friday tomorrow (July 6, 2018)


#1

Hi All,

It’s that time of the week again. Our second, weekly Upgradathon Friday will be held tomorrow July 6th.
For those of you just joining us, be sure to check out last week’s post for the general idea and @fredrikekre’s awesome guide to updating your packages: https://discourse.julialang.org/t/ann-introducing-upgradathon-fridays.
As last week I’ll plan to be hanging out on the #upgradathon channel on Slack beginning at noon EST. Last week’s upgradathon was a huge success. Over the past week over 100 packages have been upgraded to 0.7. Great work everyone, and see you tomorrow.

Keno


#2

What would be very helpful is some easy way to determine what packages have been made 0.7 compliant. The test status used to be reported in the main packages listing but now only v0.6.3 (or earlier) status is shown.

Is there an accessible prioritized list of (some of) the packages needing further work?


#3

I’ve been posting a gist with the output from an upgraded version of PkgEval regularly in the #upgradathon channel. However, I unfortunately haven’t had time yet to hook up the nice HTML output of the old PkgEval. The latest overview is here: https://gist.github.com/Keno/eaf49cc99f5767d77f4a2cc7cb4e3ec2.


#4

Thank you. This is very helpful. One minor suggestion would be to sort the output alphabetically either overall or within categories to make finding specific packages easier.


#5

JuliaDiffEq is going to go through with the upgradathon. We have upgraded DiffEqDiffTools.jl, RecursiveArrayTools.jl, and DiffEqBase.jl. One solver package, ODEInterfaceDiffEq.jl should be completed by tonight which serves as a template for how to do it all. And then… tomorrow we’re set to upgrade it all!

  1. @YingboMa is taking on OrdinaryDiffEq.jl
  2. Someone needs to fix the finalizers in Sundials.jl, and probably DASKR.jl and LSODA.jl
  3. Some other solvers like DASSL.jl, ODE.jl,
  4. A lot of the random low-dependency libraries like PoissonRandom.jl, ResettableStacks.jl, MuladdMacro.jl, etc.

If we get that done then it’ll be a good start. After that, DiffEqUncertainty, DiffEqSensitivity, DiffEqParamEstim, etc. which depend on a solver for a test (usually OrdinaryDiffEq.jl) can be upgraded, so this is the rate-limiting step.


#6

So I’ve read the guide to upgrading packages, and want to start contributing to Julia, but not sure whether to start. Can I just pick a package at random and work through the upgrade process, or is it more orderly than that…


#7

Yes, I would suggest that you select a package that you have used yourself and try if it works on Julia v0.7. If not; feel free to update it!


#8

Could somebody help me to do this in Julia 0.7 please? :slight_smile:

I am really sorry for Python but it is so easy with snake. :wink:

Disclaimer: I don’t say that my result is nice, but it could help me bring some insight into problem.

# this is working for me in jupyter qtconsole 
%pylab
import requests
data = requests.get("https://gist.githubusercontent.com/Keno/eaf49cc99f5767d77f4a2cc7cb4e3ec2/raw/cef0d1432626779a69e62704336f2b8594684b75/gistfile1.txt")
import pandas as pd
df = pd.DataFrame([map(lambda a:a.strip('" '), i.split('=>')) for i in data.text.splitlines()], columns=["package","status"])

I could see status for some package:

df[df.package=='DataFrames']
Out[4]: 
        package    status
781  DataFrames  :skipped

plot is simple:

df.groupby(by="status").count().plot(kind="bar")

Figure_bar

df.groupby(by="status").count().plot(kind="pie", subplots=True)


#9

Well I don’t do plotting very often, but this might get you started:

using HTTP, DataFrames, UnicodePlots

data = HTTP.get("https://gist.githubusercontent.com/Keno/eaf49cc99f5767d77f4a2cc7cb4e3ec2/raw/cef0d1432626779a69e62704336f2b8594684b75/gistfile1.txt")

df = DataFrame(Package=String[], Status=String[])

for l in split(String(data.body), "\n")
    package, status = split(l,  " => ")
    package = replace(package, "\"", "")
    push!(df, (package, status))
end

barplot(["OK", "Skipped", "Fail"], by(df, :Status, nrow)[:x1])

A reasonable question to ask is “How did you know to put "OK", "Skipped", "Fail" in that order?” And the answer is, I didn’t. :slight_smile:


#10

Cool! :slight_smile:

0.7.0-beta.189> filter(i -> i[:Package]=="DataFrames", df)
1×2 DataFrame
│ Row │ Package    │ Status   │
├─────┼────────────┼──────────┤
│ 1   │ DataFrames │ :skipped │

It seems that DataFrames is working so maybe gist is a little pesimistic?