From 714341b57926b19b6f594175170a790c4a459f88 Mon Sep 17 00:00:00 2001 From: Jerry James Date: Mon, 4 Nov 2019 14:33:55 -0700 Subject: [PATCH] New upstream version. Also: - Drop upstreamed patches: -is, -source-target, -union-find, -cb-iterable, -iterable, and -dict-iteration. - Unbundle fonts from the documentation. - Reenable the tests. - Add -test patch. --- python-networkx-cb-iterable.patch | 60 ---------------------- python-networkx-dict-iteration.patch | 17 ------ python-networkx-is.patch | 22 -------- python-networkx-iterable.patch | 27 ---------- python-networkx-source-target.patch | 34 ------------ python-networkx-test.patch | 42 +++++++++++++++ python-networkx-union-find.patch | 33 ------------ python-networkx.rpmlintrc | 11 ++++ python-networkx.spec | 77 +++++++++++++++++----------- sources | 2 +- 10 files changed, 101 insertions(+), 224 deletions(-) delete mode 100644 python-networkx-cb-iterable.patch delete mode 100644 python-networkx-dict-iteration.patch delete mode 100644 python-networkx-is.patch delete mode 100644 python-networkx-iterable.patch delete mode 100644 python-networkx-source-target.patch create mode 100644 python-networkx-test.patch delete mode 100644 python-networkx-union-find.patch create mode 100644 python-networkx.rpmlintrc diff --git a/python-networkx-cb-iterable.patch b/python-networkx-cb-iterable.patch deleted file mode 100644 index b0edd7d..0000000 --- a/python-networkx-cb-iterable.patch +++ /dev/null @@ -1,60 +0,0 @@ -https://github.com/networkx/networkx/commit/eb3a675c5b2b15e33b0a4a35bcee34d6b81ed94d -Replace cb.iterable with np.iterable (#3458) - -`matplotlib.cbook.iterable` is deprecated in matplotlib 3.1 -https://matplotlib.org/3.1.0/api/cbook_api.html#matplotlib.cbook.iterable - -Fixes https://github.com/networkx/networkx/issues/3466 - ---- networkx/drawing/nx_pylab.py.orig 2019-04-11 14:52:34.000000000 -0600 -+++ networkx/drawing/nx_pylab.py 2019-09-11 10:14:12.380878784 -0600 -@@ -550,7 +550,6 @@ def draw_networkx_edges(G, pos, - try: - import matplotlib - import matplotlib.pyplot as plt -- import matplotlib.cbook as cb - from matplotlib.colors import colorConverter, Colormap, Normalize - from matplotlib.collections import LineCollection - from matplotlib.patches import FancyArrowPatch -@@ -576,13 +575,13 @@ def draw_networkx_edges(G, pos, - # set edge positions - edge_pos = np.asarray([(pos[e[0]], pos[e[1]]) for e in edgelist]) - -- if not cb.iterable(width): -+ if not np.iterable(width): - lw = (width,) - else: - lw = width - - if not is_string_like(edge_color) \ -- and cb.iterable(edge_color) \ -+ and np.iterable(edge_color) \ - and len(edge_color) == len(edge_pos): - if np.alltrue([is_string_like(c) for c in edge_color]): - # (should check ALL elements) -@@ -591,7 +590,7 @@ def draw_networkx_edges(G, pos, - for c in edge_color]) - elif np.alltrue([not is_string_like(c) for c in edge_color]): - # If color specs are given as (rgb) or (rgba) tuples, we're OK -- if np.alltrue([cb.iterable(c) and len(c) in (3, 4) -+ if np.alltrue([np.iterable(c) and len(c) in (3, 4) - for c in edge_color]): - edge_colors = tuple(edge_color) - else: -@@ -673,7 +672,7 @@ def draw_networkx_edges(G, pos, - line_width = None - shrink_source = 0 # space from source to tail - shrink_target = 0 # space from head to target -- if cb.iterable(node_size): # many node sizes -+ if np.iterable(node_size): # many node sizes - src_node, dst_node = edgelist[i][:2] - index_node = nodelist.index(dst_node) - marker_size = node_size[index_node] -@@ -797,7 +796,6 @@ def draw_networkx_labels(G, pos, - """ - try: - import matplotlib.pyplot as plt -- import matplotlib.cbook as cb - except ImportError: - raise ImportError("Matplotlib required for draw()") - except RuntimeError: diff --git a/python-networkx-dict-iteration.patch b/python-networkx-dict-iteration.patch deleted file mode 100644 index 5ef9477..0000000 --- a/python-networkx-dict-iteration.patch +++ /dev/null @@ -1,17 +0,0 @@ -https://github.com/networkx/networkx/commit/52e7b5d8732c84512f5423661f234790ce7b1b5f -Fix dict iteration for Py3.8 - -Python 3.8 tracks if any key names change while iterating. -https://github.com/python/cpython/pull/12596 - ---- networkx/classes/reportviews.py.orig 2019-04-11 14:52:34.000000000 -0600 -+++ networkx/classes/reportviews.py 2019-09-11 09:36:56.783002687 -0600 -@@ -1025,7 +1025,7 @@ class EdgeView(OutEdgeView): - def __iter__(self): - seen = {} - for n, nbrs in self._nodes_nbrs(): -- for nbr in nbrs: -+ for nbr in list(nbrs): - if nbr not in seen: - yield (n, nbr) - seen[n] = 1 diff --git a/python-networkx-is.patch b/python-networkx-is.patch deleted file mode 100644 index 273dab5..0000000 --- a/python-networkx-is.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- networkx/convert_matrix.py.orig 2019-04-11 14:52:34.000000000 -0600 -+++ networkx/convert_matrix.py 2019-09-11 09:40:18.967671622 -0600 -@@ -560,7 +560,7 @@ def from_numpy_matrix(A, parallel_edges= - edges = map(lambda e: (int(e[0]), int(e[1])), - zip(*(np.asarray(A).nonzero()))) - # handle numpy constructed data type -- if python_type is 'void': -+ if python_type == 'void': - # Sort the fields by their offset, then by dtype, then by name. - fields = sorted((offset, dtype, name) for name, (dtype, offset) in - A.dtype.fields.items()) ---- networkx/drawing/nx_pydot.py.orig 2019-04-11 14:52:34.000000000 -0600 -+++ networkx/drawing/nx_pydot.py 2019-09-11 09:40:50.592150597 -0600 -@@ -199,7 +199,7 @@ def to_pydot(N): - - name = N.name - graph_defaults = N.graph.get('graph', {}) -- if name is '': -+ if name == '': - P = pydot.Dot('', graph_type=graph_type, strict=strict, - **graph_defaults) - else: diff --git a/python-networkx-iterable.patch b/python-networkx-iterable.patch deleted file mode 100644 index 5d9599e..0000000 --- a/python-networkx-iterable.patch +++ /dev/null @@ -1,27 +0,0 @@ -https://github.com/networkx/networkx/commit/d27930ce099d6f0edca8d5d91d5f3a8d9dc90c9d - -Fix deprecation warning with Python 3.7 (#3487) - -Replace collections.Iterable with collections.abc.Iterable to fix deprecation warning with Python 3.7: -"DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working" - ---- networkx/drawing/nx_pylab.py.orig 2019-09-11 10:14:12.380878784 -0600 -+++ networkx/drawing/nx_pylab.py 2019-09-11 10:14:26.196649773 -0600 -@@ -373,7 +373,7 @@ def draw_networkx_nodes(G, pos, - draw_networkx_labels() - draw_networkx_edge_labels() - """ -- import collections -+ from collections.abc import Iterable - try: - import matplotlib.pyplot as plt - import numpy as np -@@ -399,7 +399,7 @@ def draw_networkx_nodes(G, pos, - except ValueError: - raise nx.NetworkXError('Bad value in node positions.') - -- if isinstance(alpha, collections.Iterable): -+ if isinstance(alpha, Iterable): - node_color = apply_alpha(node_color, alpha, nodelist, cmap, vmin, vmax) - alpha = None - diff --git a/python-networkx-source-target.patch b/python-networkx-source-target.patch deleted file mode 100644 index c43edf2..0000000 --- a/python-networkx-source-target.patch +++ /dev/null @@ -1,34 +0,0 @@ -https://github.com/networkx/networkx/commit/ea2c8db07e0047daa649d484c4cf68ec2d9035f7 -typo: swap source and target - ---- networkx/algorithms/shortest_paths/astar.py.orig 2019-04-11 14:52:34.000000000 -0600 -+++ networkx/algorithms/shortest_paths/astar.py 2019-09-11 09:22:19.922448001 -0600 -@@ -131,7 +131,7 @@ def astar_path(G, source, target, heuris - enqueued[neighbor] = ncost, h - push(queue, (ncost + h, next(c), neighbor, ncost, curnode)) - -- raise nx.NetworkXNoPath("Node %s not reachable from %s" % (source, target)) -+ raise nx.NetworkXNoPath("Node %s not reachable from %s" % (target, source)) - - - def astar_path_length(G, source, target, heuristic=None, weight='weight'): ---- networkx/algorithms/shortest_paths/weighted.py.orig 2019-04-11 14:52:34.000000000 -0600 -+++ networkx/algorithms/shortest_paths/weighted.py 2019-09-11 09:22:46.694007187 -0600 -@@ -1422,7 +1422,7 @@ def bellman_ford_path_length(G, source, - return length[target] - except KeyError: - raise nx.NetworkXNoPath( -- "node %s not reachable from %s" % (source, target)) -+ "node %s not reachable from %s" % (target, source)) - - - def single_source_bellman_ford_path(G, source, weight='weight'): -@@ -1597,7 +1597,7 @@ def single_source_bellman_ford(G, source - try: - return (dist[target], paths[target]) - except KeyError: -- msg = "Node %s not reachable from %s" % (source, target) -+ msg = "Node %s not reachable from %s" % (target, source) - raise nx.NetworkXNoPath(msg) - - diff --git a/python-networkx-test.patch b/python-networkx-test.patch new file mode 100644 index 0000000..919c4f9 --- /dev/null +++ b/python-networkx-test.patch @@ -0,0 +1,42 @@ +--- networkx/readwrite/tests/test_gexf.py.orig 2019-10-16 20:03:56.000000000 -0600 ++++ networkx/readwrite/tests/test_gexf.py 2019-10-30 11:31:05.799922383 -0600 +@@ -409,17 +409,17 @@ gexf.net/1.2draft http://www.gexf.net/1. + nx.set_node_attributes(G, {n: n for n in numpy.arange(4)}, 'number') + G[0][1]['edge-number'] = numpy.float64(1.1) + +- expected = """ ++ expected = """ + + NetworkX {} + + +- ++ + + +- ++ + + + +@@ -445,13 +445,13 @@ gexf.net/1.2draft http://www.gexf.net/1. + + + +- ++ + + + + +- +- ++ ++ + + + """.format(time.strftime('%Y-%m-%d'), nx.__version__) diff --git a/python-networkx-union-find.patch b/python-networkx-union-find.patch deleted file mode 100644 index 3be645d..0000000 --- a/python-networkx-union-find.patch +++ /dev/null @@ -1,33 +0,0 @@ -https://github.com/networkx/networkx/commit/1203164760f7be90d5c3a50ab7ab99f04453af8f -Fix UnionFind set extraction (#3224) - -Paths are not guaranteed to be fully pruned by the current -implementation if subtrees are unioned, e.g.: -> uf = UnionFind() -> uf.union(1, 2) -> uf.union(3, 4) -> uf.union(4, 5) -> uf.union(1, 5) - -In the current implementation, parents[1]=3 and parents[2]=1. -Thus, the mere call of networkx.utils.groups(parents) will yield a -wrong result: -[set([2]), set([1, 3, 4, 5])] - -This patch fixes this behavior by simply doing a "find" operation -(which, in turn, does full path pruning) on every key before calling -groups. - ---- networkx/utils/union_find.py.orig 2019-04-11 14:52:34.000000000 -0600 -+++ networkx/utils/union_find.py 2019-09-11 09:27:32.240303742 -0600 -@@ -90,6 +90,10 @@ class UnionFind: - [['x', 'y'], ['z']] - - """ -+ # Ensure fully pruned paths -+ for x in self.parents.keys(): -+ _ = self[x] # Evaluated for side-effect only -+ - # TODO In Python 3.3+, this should be `yield from ...`. - for block in groups(self.parents).values(): - yield block diff --git a/python-networkx.rpmlintrc b/python-networkx.rpmlintrc new file mode 100644 index 0000000..00a7adb --- /dev/null +++ b/python-networkx.rpmlintrc @@ -0,0 +1,11 @@ +# THIS FILE IS FOR WHITELISTING RPMLINT ERRORS AND WARNINGS IN TASKOTRON +# https://fedoraproject.org/wiki/Taskotron/Tasks/dist.rpmlint#Whitelisting_errors + +# Zip files are not text +addFilter(r'W: file-not-utf8 .*.zip') + +# Dangling font symlinks: the Requires ensures they will not dangle +addFilter(r'W: dangling-symlink .*fonts') + +# We use the versions of jquery and js-underscore that sphinx gives us +addFilter(r'W: unversioned-explicit-provides bundled\((jquery|js-underscore)\)') diff --git a/python-networkx.spec b/python-networkx.spec index ca4ecfe..2cd39ec 100644 --- a/python-networkx.spec +++ b/python-networkx.spec @@ -1,8 +1,8 @@ %global srcname networkx Name: python-%{srcname} -Version: 2.3 -Release: 5%{?dist} +Version: 2.4 +Release: 1%{?dist} Summary: Creates and Manipulates Graphs and Networks License: BSD URL: http://networkx.github.io/ @@ -11,40 +11,27 @@ Source0: https://github.com/networkx/networkx/archive/%{srcname}-%{versio # The parallel betweenness example hangs when executed, possibly due to a # function that cannot be pickled. In any case, skip it. Patch0: %{name}-doc.patch -# Fix incorrect uses of the 'is' keyword -Patch1: %{name}-is.patch -# Fix swapped source and target arguments -# https://github.com/networkx/networkx/commit/ea2c8db07e0047daa649d484c4cf68ec2d9035f7 -Patch2: %{name}-source-target.patch -# Fix UnionFind set extraction -# https://github.com/networkx/networkx/commit/1203164760f7be90d5c3a50ab7ab99f04453af8f -Patch3: %{name}-union-find.patch -# Replace use of deprecated matplotlib.cbook.iterable with np.iterable -# https://github.com/networkx/networkx/commit/eb3a675c5b2b15e33b0a4a35bcee34d6b81ed94d -Patch4: %{name}-cb-iterable.patch -# Fix the import of Iterable for python 3 -# https://github.com/networkx/networkx/commit/d27930ce099d6f0edca8d5d91d5f3a8d9dc90c9d -Patch5: %{name}-iterable.patch -# Fix iterating over a dictionary when the key names may change -# https://github.com/networkx/networkx/commit/52e7b5d8732c84512f5423661f234790ce7b1b5f -Patch6: %{name}-dict-iteration.patch +# Fix a test that fails on python 3.8 due to reordering of XML attributes. +Patch1: %{name}-test.patch BuildArch: noarch -BuildRequires: python3-devel +BuildRequires: pkgconfig(python3) +BuildRequires: python3-docs +BuildRequires: python3-numpy-doc BuildRequires: python3dist(decorator) BuildRequires: python3dist(gdal) BuildRequires: python3dist(lxml) BuildRequires: python3dist(matplotlib) BuildRequires: python3dist(nb2plots) -BuildRequires: python3dist(nose) -BuildRequires: python3dist(nose-ignore-docstring) BuildRequires: python3dist(numpy) BuildRequires: python3dist(numpydoc) BuildRequires: python3dist(pandas) BuildRequires: python3dist(pillow) BuildRequires: python3dist(pydot) BuildRequires: python3dist(pygraphviz) +BuildRequires: python3dist(pytest) +BuildRequires: python3dist(pytest-cov) BuildRequires: python3dist(pyyaml) BuildRequires: python3dist(scipy) BuildRequires: python3dist(setuptools) @@ -105,7 +92,12 @@ study of the structure, dynamics, and functions of complex networks. %package doc Summary: Documentation for networkx +Requires: fontawesome-fonts-web +Requires: font(fontawesome) +Requires: font(lato) +Requires: font(robotoslab) Provides: bundled(jquery) +Provides: bundled(js-underscore) %description doc Documentation for networkx @@ -115,18 +107,39 @@ Documentation for networkx # Do not use env for f in $(grep -FRl %{_bindir}/env .); do - sed -e 's,%{_bindir}/env python,%{__python3},' \ + sed -e 's,%{_bindir}/env python[[:digit:]]*,%{__python3},' \ -e 's,%{_bindir}/env ,%{_bindir},' \ -i.orig $f touch -r $f.orig $f rm $f.orig done +# Use local objects.inv for intersphinx +sed -e "s|'https://docs\.python\.org/2/': None|'https://docs.python.org/': '%{_docdir}/python3-docs/html/objects.inv'|" \ + -e "s|\('https://docs\.scipy\.org/doc/numpy/': \)None|\1'%{_docdir}/python3-numpy-doc/objects.inv'|" \ + -i doc/conf.py + %build %py3_build # Build the documentation PYTHONPATH=$PWD/build/lib make -C doc html +rst2html --no-datestamp README.rst README.html + +# Do not bundle fonts into the documentation +cd doc/build/html/_static/fonts +for suffix in eot svg ttf woff woff2; do + rm fontawesome-webfont.$suffix + ln -s %{_datadir}/fonts/fontawesome/fontawesome-webfont.$suffix . +done +rm {Lato,RobotoSlab}/*.ttf +ln -s %{_datadir}/fonts/lato/Lato-Bold.ttf Lato/lato-bold.ttf +ln -s %{_datadir}/fonts/lato/Lato-BoldItalic.ttf Lato/lato-bolditalic.ttf +ln -s %{_datadir}/fonts/lato/Lato-Italic.ttf Lato/lato-italic.ttf +ln -s %{_datadir}/fonts/lato/Lato-Regular.ttf Lato/lato-regular.ttf +ln -s %{_datadir}/fonts/google-roboto-slab/RobotoSlab-Bold.ttf RobotoSlab/roboto-slab-v7-bold.ttf +ln -s %{_datadir}/fonts/google-roboto-slab/RobotoSlab-Regular.ttf RobotoSlab/roboto-slab-v7-regular.ttf +cd - %install %py3_install @@ -146,15 +159,11 @@ done # The tests have shebangs, so mark them as executable grep -rlZ '^#!' %{buildroot}%{python3_sitelib}/networkx | xargs -0 chmod a+x -# Temporarily disabled until a bug in graphviz > 2.38 is fixed that causes -# multigraphs to not work. (Adding the same edge with multiple keys yields -# only the initial edge; see bz 1703571). This is slated to be fixed in -# graphviz 2.42. Once that is built for Fedora, we can reenable the tests. -#%%check -#nosetests-3 -v +%check +pytest %files -n python3-networkx -%doc README.rst installed-docs/* +%doc README.html installed-docs/* %license LICENSE.txt %{python3_sitelib}/networkx* @@ -162,6 +171,14 @@ grep -rlZ '^#!' %{buildroot}%{python3_sitelib}/networkx | xargs -0 chmod a+x %doc doc/build/html/* %changelog +* Mon Nov 4 2019 Jerry James - 2.4-1 +- New upstream version +- Drop upstreamed patches: -is, -source-target, -union-find, -cb-iterable, + -iterable, and -dict-iteration +- Unbundle fonts from the documentation +- Reenable the tests +- Add -test patch + * Wed Sep 11 2019 Jerry James - 2.3-5 - Add -doc patch to fix building the gallery of examples - Add -is patch to reduce noise in sagemath diff --git a/sources b/sources index ddccf67..9048ea0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (networkx-2.3.tar.gz) = c94de6f4804e8972e79d125c59d1a6c2c4287123146696e33ecea677f4d78dd319c025ad343238bd350fd1df1396b06eb6cffd33e6182ec7037a585c8857dbe8 +SHA512 (networkx-2.4.tar.gz) = 2fedc556d068d2b0b1d238f5f2715c928c7999df33c318b720650893a3e536459545769c8b86c97c62ef56a62cc808848bd6897df9f37656810b11990f5d6be0