From fc72ad8a580b26877d0dddae4cd8cd93f9df47cbf4ab1db63be5021d0944a335 Mon Sep 17 00:00:00 2001 From: Daniel Garcia Date: Wed, 14 Dec 2022 12:08:22 +0000 Subject: [PATCH] - Remove 650-sorting-in-test_ordering.patch not needed anymore - Add remove-ufmt-dep.patch, python-ufmt is not in tumbleweed - Add replace-python-call.patch, wrong executable call when outside of venv (gh#Instagram/LibCST#468) - Update to 0.4.9: - Bump setuptools-rust version by @zsol in #809 - 0.4.8 - Fix parse error message for number parsing by @zzl0 in #724 - Fix problematic doc build, due to the new builder image provided by readthedocs doesn't has the graphviz-dev package pre-installed any more by @MapleCCC in #751 - Fix docstring of FullRepoManager by @MapleCCC in #750 - Fix bug when TypeOf is one of options in OneOf / AllOf by @MapleCCC in #756 - Tighten the metadata type of ExpressionContextProvider by @MapleCCC in #760 - Fix the bug that the use of formatter in codemods has undetermined target Python version, resulting in hard-to-reason-with behavior by @MapleCCC in #771 - Python 3.11 rutime support - test using python 3.11 beta versions by @zsol in #723 - Python 3.11 wheels by @vfazio in #801 - Raise informative exception when metadata is unresolved in a metadata-based match by @MapleCCC in #757 - Add AccessorProvider by @matthewshaer in #807 - 0.4.7 - 2022-07-12 - Fix get_qualified_names_for matching on prefixes of the given name by @lpetre in #719 - Implement lazy loading mechanism for expensive metadata providers by @Chenguang-Zhu in #720 - 0.4.6 - 2022-07-04 - convert_type_comments now preserves comments following type comments by OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-libcst?expand=0&rev=20 --- 650-sorting-in-test_ordering.patch | 40 ------------- _service | 10 ++++ cargo_config | 6 -- libcst-0.4.1.tar.gz | 3 - libcst-0.4.9.tar.gz | 3 + python-libcst.changes | 94 ++++++++++++++++++++++++++++++ python-libcst.spec | 41 ++++++------- remove-ufmt-dep.patch | 17 ++++++ replace-python-call.patch | 22 +++++++ skip_failing_test.patch | 37 ------------ vendor.tar.xz | 4 +- 11 files changed, 165 insertions(+), 112 deletions(-) delete mode 100644 650-sorting-in-test_ordering.patch create mode 100644 _service delete mode 100644 libcst-0.4.1.tar.gz create mode 100644 libcst-0.4.9.tar.gz create mode 100644 remove-ufmt-dep.patch create mode 100644 replace-python-call.patch delete mode 100644 skip_failing_test.patch diff --git a/650-sorting-in-test_ordering.patch b/650-sorting-in-test_ordering.patch deleted file mode 100644 index cd63e9f..0000000 --- a/650-sorting-in-test_ordering.patch +++ /dev/null @@ -1,40 +0,0 @@ -From d61f6cbd938c361fc746faff3d3d3ccfe273b9fc Mon Sep 17 00:00:00 2001 -From: Stanislav Levin -Date: Fri, 18 Feb 2022 13:18:04 +0300 -Subject: [PATCH] tests: Fix assumption about sorting in test_ordering - -The test wrongly assumed that `first_assignment.references` -is ordered collection, while actually it is `set`. - -Fixes: https://github.com/Instagram/LibCST/issues/442 -Signed-off-by: Stanislav Levin ---- - libcst/metadata/tests/test_scope_provider.py | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - ---- a/libcst/metadata/tests/test_scope_provider.py -+++ b/libcst/metadata/tests/test_scope_provider.py -@@ -1534,19 +1534,20 @@ class ScopeProviderTest(UnitTest): - first_assignment = list(global_scope.assignments)[0] - assert isinstance(first_assignment, cst.metadata.Assignment) - self.assertEqual(first_assignment.node, import_stmt) -- global_refs = list(first_assignment.references) -+ global_refs = first_assignment.references - self.assertEqual(len(global_refs), 2) -+ global_refs_nodes = {x.node for x in global_refs} - class_def = ensure_type(m.body[1], cst.ClassDef) - x = ensure_type( - ensure_type(class_def.body.body[0], cst.SimpleStatementLine).body[0], - cst.Assign, - ) -- self.assertEqual(x.value, global_refs[0].node) -+ self.assertIn(x.value, global_refs_nodes) - class_b = ensure_type( - ensure_type(class_def.body.body[1], cst.SimpleStatementLine).body[0], - cst.Assign, - ) -- self.assertEqual(class_b.value, global_refs[1].node) -+ self.assertIn(class_b.value, global_refs_nodes) - - class_accesses = list(scopes[x].accesses) - self.assertEqual(len(class_accesses), 3) diff --git a/_service b/_service new file mode 100644 index 0000000..f0048dd --- /dev/null +++ b/_service @@ -0,0 +1,10 @@ + + + libcst-0.4.9/native + xz + true + + + libcst-0.4.9/native + + diff --git a/cargo_config b/cargo_config index f27f832..6fb4ff4 100644 --- a/cargo_config +++ b/cargo_config @@ -1,11 +1,5 @@ - [source.crates-io] replace-with = "vendored-sources" -[source."https://github.com/kevinmehall/rust-peg"] -git = "https://github.com/kevinmehall/rust-peg" -rev = "4b146b4b78a80c07e43d7ace2d97f65bfde279a8" -replace-with = "vendored-sources" - [source.vendored-sources] directory = "vendor" \ No newline at end of file diff --git a/libcst-0.4.1.tar.gz b/libcst-0.4.1.tar.gz deleted file mode 100644 index cddb2b1..0000000 --- a/libcst-0.4.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:961ab38c0ef318c384a287f1e4f877bb61ce93945f352b14b5dbbe7a317882b1 -size 715682 diff --git a/libcst-0.4.9.tar.gz b/libcst-0.4.9.tar.gz new file mode 100644 index 0000000..08fa58d --- /dev/null +++ b/libcst-0.4.9.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01786c403348f76f274dbaf3888ae237ffb73e6ed6973e65eba5c1fc389861dd +size 742071 diff --git a/python-libcst.changes b/python-libcst.changes index 851c137..12b0b7e 100644 --- a/python-libcst.changes +++ b/python-libcst.changes @@ -1,3 +1,97 @@ +------------------------------------------------------------------- +Wed Dec 14 11:41:04 UTC 2022 - Daniel Garcia + +- Remove 650-sorting-in-test_ordering.patch not needed anymore +- Add remove-ufmt-dep.patch, python-ufmt is not in tumbleweed +- Add replace-python-call.patch, wrong executable call when outside of venv + (gh#Instagram/LibCST#468) +- Update to 0.4.9: + - Bump setuptools-rust version by @zsol in #809 + +- 0.4.8 + - Fix parse error message for number parsing by @zzl0 in #724 + - Fix problematic doc build, due to the new builder image provided by + readthedocs doesn't has the graphviz-dev package pre-installed any more by + @MapleCCC in #751 + - Fix docstring of FullRepoManager by @MapleCCC in #750 + - Fix bug when TypeOf is one of options in OneOf / AllOf by @MapleCCC in #756 + - Tighten the metadata type of ExpressionContextProvider by @MapleCCC in #760 + - Fix the bug that the use of formatter in codemods has undetermined target + Python version, resulting in hard-to-reason-with behavior by @MapleCCC in + #771 + - Python 3.11 rutime support + - test using python 3.11 beta versions by @zsol in #723 + - Python 3.11 wheels by @vfazio in #801 + - Raise informative exception when metadata is unresolved in a metadata-based + match by @MapleCCC in #757 + - Add AccessorProvider by @matthewshaer in #807 + +- 0.4.7 - 2022-07-12 + - Fix get_qualified_names_for matching on prefixes of the given name by + @lpetre in #719 + - Implement lazy loading mechanism for expensive metadata providers by + @Chenguang-Zhu in #720 + +- 0.4.6 - 2022-07-04 + - convert_type_comments now preserves comments following type comments by + @superbobry in #702 + - QualifiedNameProvider optimizations + - Cache the scope name prefix to prevent scope traversal in a tight loop by + @lpetre in #708 + - Faster qualified name formatting by @lpetre in #710 + - Prevent unnecessary work in Scope.get_qualified_names_for_ by @lpetre in + #709 + - Fix parsing of parenthesized empty tuples by @zsol in #712 + - Support whitespace after ParamSlash by @zsol in #713 + - [parser] bail on deeply nested expressions by @zsol in #718 + +- 0.4.5 - 2022-06-17 + - Only skip supported escaped characters in f-strings by @zsol in #700 + - Escaping quote characters in raw string literals causes a tokenizer error + by @zsol in #668 + - Corrected a code example in the documentation by @zzl0 in #703 + - Handle multiline strings that start with quotes by @zzl0 in #704 + - Fixed a performance regression in libcst.metadata.ScopeProvider by @lpetre + in #698 + +- 0.4.4 - 2022-06-13 + - Add package links to PyPI by @adamchainz in #688 + - native: add overall benchmark by @zsol in #692 + - Add support for PEP-646 by @zsol in #696 + - parser: use references instead of smart pointers for Tokens by @zsol in + #691 + +- 0.4.3 - 2022-05-11 + - Restore the 0.4.1 behavior for libcst.helpers.get_absolute_module by + @lpetre in #684 + +- 0.4.2 - 2022-05-04 + - native: Avoid crashing by making IntoPy conversion fallible by @zsol in + #639 + - native: make sure ParserError's line is zero-indexed by @zsol in #681 + - Fix space validation for AsName and Await by @zsol in #641 + - Qualified Name Provider: Fix returned qname for symbols that are prefixes + of each other by @wiyr in #669 + - Rename Codemod: Correct last renamed import from by @toofar in #675 + - Many changes to the Apply Type Comments codemod: + - Allow for skipping quotes when applying type comments by @stroxler in + #644 + - Port pyre fixes by @stroxler in #651 + - Preserve as-imports when merging type annotations. by @martindemello in + #664 + - Qualify imported symbols when the dequalified form would cause a conflict + by @martindemello in #674 + - Add an argument to always qualify imported type annotations. by + @martindemello in #676 + - Create an AddTrailingCommas codemod by @stroxler in #643 + - Define gather global names visitor by @shannonzhu in #657 + - Support module and package names in the codemod context by @lpetre in #662 + - Drop support for running libcst using a python 3.6 interpreter by @lpetre + in #663 + - Update relative import logic to match cpython by @lpetre in #660 + - Scope Provider: Consider access information when computing qualified names + for nodes by @lpetre in #682 + ------------------------------------------------------------------- Fri Feb 18 21:32:48 UTC 2022 - Matej Cepl diff --git a/python-libcst.spec b/python-libcst.spec index f2e1ad2..f346cdb 100644 --- a/python-libcst.spec +++ b/python-libcst.spec @@ -16,7 +16,6 @@ # -%{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 %define rustflags '-Clink-arg=-Wl,-z,relro,-z,now' %global flavor @BUILD_FLAVOR@%{nil} @@ -29,7 +28,7 @@ %endif %define modname libcst Name: python-libcst%{psuffix} -Version: 0.4.1 +Version: 0.4.9 Release: 0 Summary: Python 3.5+ concrete syntax tree with AST-like properties License: MIT @@ -37,12 +36,11 @@ URL: https://github.com/Instagram/LibCST Source0: https://files.pythonhosted.org/packages/source/l/%{modname}/%{modname}-%{version}.tar.gz Source1: vendor.tar.xz Source2: cargo_config -# PATCH-FIX-UPSTREAM skip_failing_test.patch gh#Instagram/LibCST#442 mcepl@suse.com -# test fails on i586 with Python 3.6 -Patch0: skip_failing_test.patch -# PATCH-FIX-UPSTREAM 650-sorting-in-test_ordering.patch gh#Instagram/LibCST#650 mcepl@suse.com -# Fix assumption about sorting in test_ordering -Patch1: 650-sorting-in-test_ordering.patch +# PATCH-FIX-OPENSUSE remove-ufmt-dep.patch python-ufmt package doesn't exists in Tumbleweed +Patch0: remove-ufmt-dep.patch +# PATCH-FIX-OPENSUSE replace-python-call.patch +# wrong executable call when outside of venv (gh#Instagram/LibCST#468) +Patch1: replace-python-call.patch BuildRequires: %{python_module setuptools-rust} BuildRequires: %{python_module setuptools_scm} BuildRequires: %{python_module setuptools} @@ -75,12 +73,15 @@ A concrete syntax tree with AST-like properties for Python 3.5+ programs. %prep %setup -q -n libcst-%{version} tar x -C native/ -f %{SOURCE1} -mkdir -p .cargo && cat %{SOURCE2} >>.cargo/config.toml -(cd native && mkdir -p .cargo && cat %{SOURCE2} >>.cargo/config.toml) -%autopatch -p1 +cp -rf native/vendor vendor +mkdir -p .cargo && echo "" >> .cargo/config.toml && cat %{SOURCE2} >>.cargo/config.toml -# wrong executable call when outside of venv (gh#Instagram/LibCST#468) -sed -i 's/"python"/sys.executable/' libcst/codemod/tests/test_codemod_cli.py +pushd native +mkdir -p .cargo +cat %{SOURCE2} >>.cargo/config.toml +popd + +%autopatch -p1 # Depends on optional pyre rm \ @@ -93,23 +94,12 @@ sed -i 's/import AbstractBaseMatcherNodeMeta/import Optional, AbstractBaseMatche %if !%{with test} %build -cd native -%{python_expand export PYO3_PYTHON=%{_bindir}/python%{$python_version} -%cargo_build -} -cd .. export CARGO_NET_OFFLINE=true PROFILE=release -cargo metadata --offline --manifest-path native/libcst/Cargo.toml --format-version 1 %python_build %endif %install %if !%{with test} -cd native -%{python_expand export PYO3_PYTHON=%{_bindir}/python%{$python_version} -%cargo_install -} -cd .. export CARGO_NET_OFFLINE=true PROFILE=release %python_install %python_expand %fdupes %{buildroot}%{$python_sitearch} @@ -117,6 +107,9 @@ export CARGO_NET_OFFLINE=true PROFILE=release %if %{with test} %check +# test_fuzz needs network access because of 'from hypothesmith import from_grammar' +rm libcst/tests/test_fuzz.py + %{python_exec # https://github.com/Instagram/LibCST/issues/331 + 467 $python -m libcst.codegen.generate matchers $python -m libcst.codegen.generate return_types diff --git a/remove-ufmt-dep.patch b/remove-ufmt-dep.patch new file mode 100644 index 0000000..4d94eb9 --- /dev/null +++ b/remove-ufmt-dep.patch @@ -0,0 +1,17 @@ +Index: libcst-0.4.9/libcst/codegen/generate.py +=================================================================== +--- libcst-0.4.9.orig/libcst/codegen/generate.py ++++ libcst-0.4.9/libcst/codegen/generate.py +@@ -25,8 +25,10 @@ from libcst.codegen.transforms import ( + + + def format_file(fname: str) -> None: +- with open(os.devnull, "w") as devnull: +- subprocess.check_call(["ufmt", "format", fname], stdout=devnull, stderr=devnull) ++ # Do not format to avoid ufmt dependency that's not yet in opensuse ++ pass ++ # with open(os.devnull, "w") as devnull: ++ # subprocess.check_call(["ufmt", "format", fname], stdout=devnull, stderr=devnull) + + + def clean_generated_code(code: str) -> str: diff --git a/replace-python-call.patch b/replace-python-call.patch new file mode 100644 index 0000000..181f083 --- /dev/null +++ b/replace-python-call.patch @@ -0,0 +1,22 @@ +Index: libcst-0.4.9/libcst/codemod/tests/test_codemod_cli.py +=================================================================== +--- libcst-0.4.9.orig/libcst/codemod/tests/test_codemod_cli.py ++++ libcst-0.4.9/libcst/codemod/tests/test_codemod_cli.py +@@ -4,7 +4,7 @@ + # LICENSE file in the root directory of this source tree. + # + +- ++import sys + import subprocess + from pathlib import Path + +@@ -16,7 +16,7 @@ class TestCodemodCLI(UnitTest): + def test_codemod_formatter_error_input(self) -> None: + rlt = subprocess.run( + [ +- "python", ++ sys.executable, + "-m", + "libcst.tool", + "codemod", diff --git a/skip_failing_test.patch b/skip_failing_test.patch deleted file mode 100644 index f58d163..0000000 --- a/skip_failing_test.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- - libcst/metadata/tests/test_scope_provider.py | 5 ++++- - libcst/testing/utils.py | 2 +- - 2 files changed, 5 insertions(+), 2 deletions(-) - ---- a/libcst/metadata/tests/test_scope_provider.py -+++ b/libcst/metadata/tests/test_scope_provider.py -@@ -28,7 +28,9 @@ from libcst.metadata.scope_provider impo - Scope, - ScopeProvider, - ) --from libcst.testing.utils import data_provider, UnitTest -+from libcst.testing.utils import data_provider, skipUnless, UnitTest -+ -+is_64bits = sys.maxsize > 2**32 - - - class DependentVisitor(cst.CSTVisitor): -@@ -1514,6 +1516,7 @@ class ScopeProviderTest(UnitTest): - } - self.assertEqual(names, {"a.b.c", "a.b", "a"}) - -+ @skipUnless(is_64bits, "Doesn't work on 32bit platforms") - def test_ordering(self) -> None: - m, scopes = get_scope_metadata_provider( - """ ---- a/libcst/testing/utils.py -+++ b/libcst/testing/utils.py -@@ -20,7 +20,7 @@ from typing import ( - TypeVar, - Union, - ) --from unittest import TestCase -+from unittest import TestCase, skipUnless - - DATA_PROVIDER_DATA_ATTR_NAME = "__data_provider_data" - DATA_PROVIDER_DESCRIPTION_PREFIX = "_data_provider_" diff --git a/vendor.tar.xz b/vendor.tar.xz index bc3eef8..58e043a 100644 --- a/vendor.tar.xz +++ b/vendor.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5afc1e7a9de484bcace395eb1c199c0f533aa4ec01aed24d4250e6f051f0fcef -size 15127288 +oid sha256:c119328db7b0c42d71498ee49480fcac03cb8026743e46f8fedbee5b0e6c62f2 +size 14686248