- 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
This commit is contained in:
parent
0aae44e0a5
commit
fc72ad8a58
@ -1,40 +0,0 @@
|
|||||||
From d61f6cbd938c361fc746faff3d3d3ccfe273b9fc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stanislav Levin <slev@altlinux.org>
|
|
||||||
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 <slev@altlinux.org>
|
|
||||||
---
|
|
||||||
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)
|
|
10
_service
Normal file
10
_service
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<services>
|
||||||
|
<service name="cargo_vendor" mode="disabled">
|
||||||
|
<param name="srcdir">libcst-0.4.9/native</param>
|
||||||
|
<param name="compression">xz</param>
|
||||||
|
<param name="update">true</param>
|
||||||
|
</service>
|
||||||
|
<service name="cargo_audit" mode="disabled">
|
||||||
|
<param name="srcdir">libcst-0.4.9/native</param>
|
||||||
|
</service>
|
||||||
|
</services>
|
@ -1,11 +1,5 @@
|
|||||||
|
|
||||||
[source.crates-io]
|
[source.crates-io]
|
||||||
replace-with = "vendored-sources"
|
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]
|
[source.vendored-sources]
|
||||||
directory = "vendor"
|
directory = "vendor"
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:961ab38c0ef318c384a287f1e4f877bb61ce93945f352b14b5dbbe7a317882b1
|
|
||||||
size 715682
|
|
BIN
libcst-0.4.9.tar.gz
(Stored with Git LFS)
Normal file
BIN
libcst-0.4.9.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -1,3 +1,97 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Dec 14 11:41:04 UTC 2022 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
|
|
||||||
|
- 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 <mcepl@suse.com>
|
Fri Feb 18 21:32:48 UTC 2022 - Matej Cepl <mcepl@suse.com>
|
||||||
|
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
|
||||||
%define skip_python2 1
|
%define skip_python2 1
|
||||||
%define rustflags '-Clink-arg=-Wl,-z,relro,-z,now'
|
%define rustflags '-Clink-arg=-Wl,-z,relro,-z,now'
|
||||||
%global flavor @BUILD_FLAVOR@%{nil}
|
%global flavor @BUILD_FLAVOR@%{nil}
|
||||||
@ -29,7 +28,7 @@
|
|||||||
%endif
|
%endif
|
||||||
%define modname libcst
|
%define modname libcst
|
||||||
Name: python-libcst%{psuffix}
|
Name: python-libcst%{psuffix}
|
||||||
Version: 0.4.1
|
Version: 0.4.9
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Python 3.5+ concrete syntax tree with AST-like properties
|
Summary: Python 3.5+ concrete syntax tree with AST-like properties
|
||||||
License: MIT
|
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
|
Source0: https://files.pythonhosted.org/packages/source/l/%{modname}/%{modname}-%{version}.tar.gz
|
||||||
Source1: vendor.tar.xz
|
Source1: vendor.tar.xz
|
||||||
Source2: cargo_config
|
Source2: cargo_config
|
||||||
# PATCH-FIX-UPSTREAM skip_failing_test.patch gh#Instagram/LibCST#442 mcepl@suse.com
|
# PATCH-FIX-OPENSUSE remove-ufmt-dep.patch python-ufmt package doesn't exists in Tumbleweed
|
||||||
# test fails on i586 with Python 3.6
|
Patch0: remove-ufmt-dep.patch
|
||||||
Patch0: skip_failing_test.patch
|
# PATCH-FIX-OPENSUSE replace-python-call.patch
|
||||||
# PATCH-FIX-UPSTREAM 650-sorting-in-test_ordering.patch gh#Instagram/LibCST#650 mcepl@suse.com
|
# wrong executable call when outside of venv (gh#Instagram/LibCST#468)
|
||||||
# Fix assumption about sorting in test_ordering
|
Patch1: replace-python-call.patch
|
||||||
Patch1: 650-sorting-in-test_ordering.patch
|
|
||||||
BuildRequires: %{python_module setuptools-rust}
|
BuildRequires: %{python_module setuptools-rust}
|
||||||
BuildRequires: %{python_module setuptools_scm}
|
BuildRequires: %{python_module setuptools_scm}
|
||||||
BuildRequires: %{python_module setuptools}
|
BuildRequires: %{python_module setuptools}
|
||||||
@ -75,12 +73,15 @@ A concrete syntax tree with AST-like properties for Python 3.5+ programs.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q -n libcst-%{version}
|
%setup -q -n libcst-%{version}
|
||||||
tar x -C native/ -f %{SOURCE1}
|
tar x -C native/ -f %{SOURCE1}
|
||||||
mkdir -p .cargo && cat %{SOURCE2} >>.cargo/config.toml
|
cp -rf native/vendor vendor
|
||||||
(cd native && mkdir -p .cargo && cat %{SOURCE2} >>.cargo/config.toml)
|
mkdir -p .cargo && echo "" >> .cargo/config.toml && cat %{SOURCE2} >>.cargo/config.toml
|
||||||
%autopatch -p1
|
|
||||||
|
|
||||||
# wrong executable call when outside of venv (gh#Instagram/LibCST#468)
|
pushd native
|
||||||
sed -i 's/"python"/sys.executable/' libcst/codemod/tests/test_codemod_cli.py
|
mkdir -p .cargo
|
||||||
|
cat %{SOURCE2} >>.cargo/config.toml
|
||||||
|
popd
|
||||||
|
|
||||||
|
%autopatch -p1
|
||||||
|
|
||||||
# Depends on optional pyre
|
# Depends on optional pyre
|
||||||
rm \
|
rm \
|
||||||
@ -93,23 +94,12 @@ sed -i 's/import AbstractBaseMatcherNodeMeta/import Optional, AbstractBaseMatche
|
|||||||
|
|
||||||
%if !%{with test}
|
%if !%{with test}
|
||||||
%build
|
%build
|
||||||
cd native
|
|
||||||
%{python_expand export PYO3_PYTHON=%{_bindir}/python%{$python_version}
|
|
||||||
%cargo_build
|
|
||||||
}
|
|
||||||
cd ..
|
|
||||||
export CARGO_NET_OFFLINE=true PROFILE=release
|
export CARGO_NET_OFFLINE=true PROFILE=release
|
||||||
cargo metadata --offline --manifest-path native/libcst/Cargo.toml --format-version 1
|
|
||||||
%python_build
|
%python_build
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%install
|
%install
|
||||||
%if !%{with test}
|
%if !%{with test}
|
||||||
cd native
|
|
||||||
%{python_expand export PYO3_PYTHON=%{_bindir}/python%{$python_version}
|
|
||||||
%cargo_install
|
|
||||||
}
|
|
||||||
cd ..
|
|
||||||
export CARGO_NET_OFFLINE=true PROFILE=release
|
export CARGO_NET_OFFLINE=true PROFILE=release
|
||||||
%python_install
|
%python_install
|
||||||
%python_expand %fdupes %{buildroot}%{$python_sitearch}
|
%python_expand %fdupes %{buildroot}%{$python_sitearch}
|
||||||
@ -117,6 +107,9 @@ export CARGO_NET_OFFLINE=true PROFILE=release
|
|||||||
|
|
||||||
%if %{with test}
|
%if %{with test}
|
||||||
%check
|
%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_exec # https://github.com/Instagram/LibCST/issues/331 + 467
|
||||||
$python -m libcst.codegen.generate matchers
|
$python -m libcst.codegen.generate matchers
|
||||||
$python -m libcst.codegen.generate return_types
|
$python -m libcst.codegen.generate return_types
|
||||||
|
17
remove-ufmt-dep.patch
Normal file
17
remove-ufmt-dep.patch
Normal file
@ -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:
|
22
replace-python-call.patch
Normal file
22
replace-python-call.patch
Normal file
@ -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",
|
@ -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_"
|
|
BIN
vendor.tar.xz
(Stored with Git LFS)
BIN
vendor.tar.xz
(Stored with Git LFS)
Binary file not shown.
Loading…
Reference in New Issue
Block a user