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

Split GraphIO into submodules #17

Merged
merged 4 commits into from
Oct 6, 2018

Conversation

simonschoelly
Copy link
Contributor

In the past, GraphIO.jl had problems with various dependencies that where not up to date. I order to fix this, the idea is, to split this package into multiple packages but keep them in the same repository. This way, if one dependency fails, the file-formats that do not depend on this dependency can still be used.

Unfortunately, the Julia ecosystem does completely support this yet. Therefore this PR splits GraphIO.jl into different submodules that can later be made into packages.

I use Revise.jl to dynamically load the submodules that depend on EzXML.jl and ParserCombinator only when these packages are imported. Originally I wanted to load them, when Julia detects that these packages are installed, but I can't find a clean way to do that, where there are no strange warnings and where I can be sure that there are no unwanted side effects.

The interface changes insofar, as that a users has to access a file-format in its submodule. E.g. instead of calling GraphIO.Graph6Format(), they now have to call GraphIO.Graph6.Graph6Format(). As this might break some code, I added some deprecations warnings.

@codecov
Copy link

codecov bot commented Sep 22, 2018

Codecov Report

Merging #17 into master will increase coverage by <.01%.
The diff coverage is 100%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #17      +/-   ##
==========================================
+ Coverage   99.66%   99.67%   +<.01%     
==========================================
  Files           9       10       +1     
  Lines         296      304       +8     
==========================================
+ Hits          295      303       +8     
  Misses          1        1
Impacted Files Coverage Δ
src/CDF/Cdf.jl 100% <ø> (ø)
src/NET/Net.jl 100% <ø> (ø)
src/Edgelist/Edgelist.jl 100% <ø> (ø)
src/Graph6/Graph6.jl 100% <ø> (ø)
src/GEXF/Gexf.jl 100% <100%> (ø)
src/GML/Gml.jl 100% <100%> (ø)
src/GraphIO.jl 100% <100%> (ø)
src/GraphML/GraphML.jl 100% <100%> (ø)
src/DOT/Dot.jl 100% <100%> (ø)
src/LGCompressed/LGCompressed.jl 88.88% <100%> (ø)
... and 1 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 5678e32...577c444. Read the comment docs.

@sbromberger
Copy link
Contributor

FWIW, I am completely in favor of this PR. Please resolve the conflicts (introduced by my PR; sorry!) and I'll approve / merge ASAP.

@sbromberger
Copy link
Contributor

also cc @StefanKarpinski to see whether we can do something interesting with Pkg3 here.

@sbromberger sbromberger merged commit 5e6207f into JuliaGraphs:master Oct 6, 2018
@sbromberger
Copy link
Contributor

@simonschoelly thank you again for all your hard work on this.

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

Successfully merging this pull request may close these issues.

2 participants