Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-importlab for openSUSE:Factory checked in at 2023-12-08 22:31:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-importlab (Old) and /work/SRC/openSUSE:Factory/.python-importlab.new.25432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-importlab" Fri Dec 8 22:31:53 2023 rev:8 rq:1131708 version:0.8.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-importlab/python-importlab.changes 2022-10-29 20:18:43.570728357 +0200 +++ /work/SRC/openSUSE:Factory/.python-importlab.new.25432/python-importlab.changes 2023-12-08 22:32:07.692164951 +0100 @@ -1,0 +2,6 @@ +Thu Dec 7 22:00:25 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 0.8.1: + * Filter out self-edges from the graph. + +------------------------------------------------------------------- Old: ---- importlab-0.8.tar.gz New: ---- importlab-0.8.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-importlab.spec ++++++ --- /var/tmp/diff_new_pack.GO3UHQ/_old 2023-12-08 22:32:08.364189678 +0100 +++ /var/tmp/diff_new_pack.GO3UHQ/_new 2023-12-08 22:32:08.368189826 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-importlab # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -21,7 +21,7 @@ # python36-networkx no longer exists in Tumbleweed (due to SciPy following NEP 29) %define skip_python36 1 Name: python-importlab -Version: 0.8 +Version: 0.8.1 Release: 0 Summary: A library to calculate python dependency graphs License: Apache-2.0 ++++++ importlab-0.8.tar.gz -> importlab-0.8.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlab-0.8/CHANGELOG new/importlab-0.8.1/CHANGELOG --- old/importlab-0.8/CHANGELOG 2022-09-22 21:26:33.000000000 +0200 +++ new/importlab-0.8.1/CHANGELOG 2023-10-07 00:39:32.000000000 +0200 @@ -1,3 +1,6 @@ +Version 0.8.1 (2023-10-06) +* FIX: Filter out self-edges from the graph. + Version 0.8 (2022-09-22) * Add --version to bin importlab. * Use ImportStatement.source to impove import resolution. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlab-0.8/CONTRIBUTING.md new/importlab-0.8.1/CONTRIBUTING.md --- old/importlab-0.8/CONTRIBUTING.md 2022-04-23 01:16:51.000000000 +0200 +++ new/importlab-0.8.1/CONTRIBUTING.md 2023-08-10 07:01:57.000000000 +0200 @@ -20,6 +20,44 @@ All submissions, including submissions by project members, require review. We use Github pull requests for this purpose. +### Releasing to PyPI + +To release to PyPI: + +1. (Optional) We recommend that you release from within a virtualenv: + ```console + $ python3 -m venv .venv_release + $ source .venv_release/bin/activate + ``` +1. Make sure that `wheel` and `twine` are installed: + ```console + $ pip install wheel twine + ``` +1. Navigate into the top-level `importlab` directory and build a source + distribution and a wheel: + ```console + $ cd importlab + $ python3 setup.py sdist bdist_wheel + ``` + The build command puts the distributions in a `dist` subdirectory and also + creates `build` and `importlab.egginfo` subdirectories as side effects. +1. Upload the distributions to (Test)PyPI: + ```console + $ twine upload --repository testpypi dist/* + ``` + Remove the `--repository testpypi` to upload to PyPI proper. +1. (Optional) If you've uploaded to TestPyPI, you can install your new version + for testing like so: + ```console + $ pip install -U --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple importlab + ``` + If you've uploaded to PyPI proper, install with `pip install -U importlab` + as usual. +1. Clean up the subdirectories created by the build command: + ```console + $ rm -rf build/ dist/ importlab.egg-info/ + ``` + ### The small print Contributions made by corporations are covered by a different agreement than the one mentioned above; they're covered by the the Software Grant and diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlab-0.8/PKG-INFO new/importlab-0.8.1/PKG-INFO --- old/importlab-0.8/PKG-INFO 2022-09-23 00:35:42.746949200 +0200 +++ new/importlab-0.8.1/PKG-INFO 2023-10-07 00:43:29.962581000 +0200 @@ -1,12 +1,11 @@ Metadata-Version: 2.1 Name: importlab -Version: 0.8 +Version: 0.8.1 Summary: A library to calculate python dependency graphs. Home-page: https://github.com/google/importlab Maintainer: Google Inc. Maintainer-email: pytype-...@google.com License: Apache 2.0 -Platform: UNKNOWN Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Apache Software License @@ -89,5 +88,3 @@ update and parallel execution features - Integration with other static analysis tools - - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlab-0.8/importlab/graph.py new/importlab-0.8.1/importlab/graph.py --- old/importlab-0.8/importlab/graph.py 2022-09-22 06:43:57.000000000 +0200 +++ new/importlab-0.8.1/importlab/graph.py 2023-10-07 00:35:35.000000000 +0200 @@ -120,7 +120,10 @@ queue.append(f) seen.add(f) self.graph.add_node(f) - self.graph.add_edge(filename, f) + if filename != f: + # Prevent self edges if our dependency checker mistakenly + # detects a module as its own direct dependency. + self.graph.add_edge(filename, f) def shrink_to_node(self, scc): """Shrink a strongly connected component into a node.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlab-0.8/importlab.egg-info/PKG-INFO new/importlab-0.8.1/importlab.egg-info/PKG-INFO --- old/importlab-0.8/importlab.egg-info/PKG-INFO 2022-09-23 00:35:42.000000000 +0200 +++ new/importlab-0.8.1/importlab.egg-info/PKG-INFO 2023-10-07 00:43:29.000000000 +0200 @@ -1,12 +1,11 @@ Metadata-Version: 2.1 Name: importlab -Version: 0.8 +Version: 0.8.1 Summary: A library to calculate python dependency graphs. Home-page: https://github.com/google/importlab Maintainer: Google Inc. Maintainer-email: pytype-...@google.com License: Apache 2.0 -Platform: UNKNOWN Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Apache Software License @@ -89,5 +88,3 @@ update and parallel execution features - Integration with other static analysis tools - - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlab-0.8/setup.py new/importlab-0.8.1/setup.py --- old/importlab-0.8/setup.py 2022-09-22 21:26:33.000000000 +0200 +++ new/importlab-0.8.1/setup.py 2023-10-07 00:40:09.000000000 +0200 @@ -13,7 +13,7 @@ EMAIL = 'pytype-...@google.com' AUTHOR = 'Google Inc.' REQUIRES_PYTHON = '>=3.6.0' -VERSION = '0.8' +VERSION = '0.8.1' REQUIRED = [ 'networkx>=2', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/importlab-0.8/tests/test_graph.py new/importlab-0.8.1/tests/test_graph.py --- old/importlab-0.8/tests/test_graph.py 2022-04-23 01:16:51.000000000 +0200 +++ new/importlab-0.8.1/tests/test_graph.py 2023-10-07 00:36:29.000000000 +0200 @@ -67,6 +67,11 @@ "b.py": (["d.py", "a.py"], ["f"], {}), } +SELF_DEPS = { + "a.py": (["a.py", "b.py", "c.py"], [], {}), + "b.py": (["a.py", "b.py", "d.py"], [], {}), +} + SIMPLE_SYSTEM_DEPS = { "a.py": (["b.py"], [], {"b.py": resolve.System("b.py", "b")}), "b.py": (["c.py"], [], {"c.py": resolve.System("c.py", "c")}), @@ -117,6 +122,18 @@ sources = g.ordered_sorted_source_files() self.check_order(sources, ["d.py"], ["a.py", "b.py"]) self.check_order(sources, ["c.py"], ["a.py", "b.py"]) + + def test_self_dep(self): + g = FakeImportGraph(SELF_DEPS) + g.add_file_recursive("a.py") + g.build() + cycles = [x for x, ys in g.deps_list() + if isinstance(x, graph.NodeSet)] + self.assertEqual(len(cycles), 1) + self.assertEqual(set(cycles[0].nodes), set(["a.py", "b.py"])) + sources = g.ordered_sorted_source_files() + self.check_order(sources, ["d.py"], ["a.py", "b.py"]) + self.check_order(sources, ["c.py"], ["a.py", "b.py"]) def test_trim(self): # Untrimmed g1 follows system module b to its dependency c.