diff --git a/_multibuild b/_multibuild
deleted file mode 100644
index fcc7b97..0000000
--- a/_multibuild
+++ /dev/null
@@ -1,3 +0,0 @@
-
- test
-
diff --git a/_service b/_service
index f0048dd..820ebda 100644
--- a/_service
+++ b/_service
@@ -1,10 +1,8 @@
-
- libcst-0.4.9/native
- xz
+
+ libcst-*.tar.gz
+ native/Cargo.toml
true
-
- libcst-0.4.9/native
-
+
diff --git a/cargo_config b/cargo_config
deleted file mode 100644
index 6fb4ff4..0000000
--- a/cargo_config
+++ /dev/null
@@ -1,5 +0,0 @@
-[source.crates-io]
-replace-with = "vendored-sources"
-
-[source.vendored-sources]
-directory = "vendor"
\ No newline at end of file
diff --git a/libcst-0.4.9.tar.gz b/libcst-0.4.9.tar.gz
deleted file mode 100644
index 08fa58d..0000000
--- a/libcst-0.4.9.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:01786c403348f76f274dbaf3888ae237ffb73e6ed6973e65eba5c1fc389861dd
-size 742071
diff --git a/libcst-1.4.0.tar.gz b/libcst-1.4.0.tar.gz
new file mode 100644
index 0000000..c9f9b32
--- /dev/null
+++ b/libcst-1.4.0.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:449e0b16604f054fa7f27c3ffe86ea7ef6c409836fe68fe4e752a1894175db00
+size 771364
diff --git a/python-libcst.changes b/python-libcst.changes
index e53989f..1458923 100644
--- a/python-libcst.changes
+++ b/python-libcst.changes
@@ -1,3 +1,106 @@
+-------------------------------------------------------------------
+Mon Jul 22 10:24:31 UTC 2024 - Matej Cepl
+
+- Upgrade to 1.4.0:
+ - Fix Literal parse error in RemoveImportsVisitor
+ - Don't reset context.scratch between files
+ - Various documentation fixes
+ Typo fix FullRepoManager
+ ✏️ Fix tiny typo in docs/source/metadata.rst
+ ✏️ Fix typo in docs/source/scope_tutorial.ipynb
+ Update CONTRIBUTING.md
+ - Add helper functions for common ways of filtering nodes
+ - Dump CST to .dot (graphviz) files
+ - Implement PEP-696
+- Upgrade to 1.3.1:
+ - ImportError due to missing mypy_extensions dependency
+- Upgrade to 1.3.0:
+ - Removed dependencies on typing_extensions and typing_inspect
+- Temporarily switch off running of the test suite (gh#Instagram/LibCST#1176)
+
+-------------------------------------------------------------------
+Fri Mar 1 00:29:21 UTC 2024 - Soc Virnyl Estela
+
+- Update to version 1.2.0
+ * Upgrade pyo3 to 0.20
+ * Remove reference to distutil
+ * Add roundtrip tests from Python
+ * Fix parsing list matchers without explicit brackets
+ * Make readme example use python syntax highlighting
+ * Upgrade rust to version 1.70 in readthedocs config
+ * Update maturin requirement from <0.16,>=0.8.3 to >=0.8.3,<1.5
+ * Allow `Element::codegen` to be used by external users
+ * installing rustc/cargo for mybinder demo
+ * Update test_fix_pyre_directives.py
+ * remove 3.8 support
+ * Update syn to v2
+ * Set repository metadata entry for Rust crates
+ * upgrade flake8
+ * Update pyproject.toml for Python 3.12 support
+ * fix filepathprovider generic type
+ * Update README.rst
+ * Fix link in type_inference_provider.py
+ * Parse multiline expressions in f-strings
+ * Upgrade pyre
+ * eliminate relative paths from Cargo.toml
+ * Parse arbitrarily nested f-strings
+ * ScopeProvider: Record Access for Attributes and Decorators
+ * AddImportsVisitor: add imports before the first non-import statement
+ * Scope provider changes for type annotations
+ * add upper bound to pyo3 dependency
+ * scope_provider: Simplify parent resolution
+ * parser: remove Regexes from whitespace parser
+ * Add crate metadata
+ * Support files with mixed newlines
+ * PEP 695 - Type Parameter Syntax
+ * Remove need for regex in TextPosition::matches
+ * Fix readme's Python version requirement
+ * Switch to using thread_local regular expressions to avoid regex mutex contention
+ * Remove criterion-cycles-per-byte dependency and related benchmark measurement
+ * drop support for Python 3.7
+ * Don't gather dirs ending .py
+ * Don't insert duplicate imports
+ * Don't swallow trailing whitespace
+ * Allow pyo3 >=0.17
+ * Do not annotate the same variable multiple times in ApplyTypeAnnotationsVisitor
+ * Update changelog to 1.0.1
+ * Codemod CLI: Print diff only when there is a change
+ * Fix parsing of code without trailing newlines
+ * Fix whitespace, fstring, walrus related parse errors
+ * Fix Sentinal typo
+ * remove quotes around charset in .editorconfig
+ * Update maturin requirement from <0.14,>=0.8.3 to >=0.8.3,<0.16
+ * Fix type of `evaluated_value` on string to allow bytes
+ * Switch default parser implementation to native
+ * exclude native/target directory from sdist
+ * update changelog
+ * relax validation rules on decorators
+ * Fix crash on escaped backslashes in rf-string
+ * Fix pyre setup link in metadata.rst
+ * Support PEP 604 in ApplyTypeAnnotationsVisitor
+ * Fix spelling and grammar in some comments
+ * Fix ApplyTypeAnnotationsVisitor behavior on attribute assignments.
+ * Allow running codemods without configuring in YAML
+ * Ensure current Python interpreter is used for subprocesses
+ * Use subprocess.DEVNULL instead of opening os.devnull by hand
+ * PEP 621 + hatch to run tests/lint/etc
+ * Fix: relative imports from '' package are not allowed
+ * Add new FilePathProvider
+ * Use new setup-python caching actions
+ * Pass root path to FullyQualifiedNameProvider
+ * Script to regenerate test fixtures
+ * Add setuptools-rust to build requirements in setup.py
+ * Ignore common virtualenv names
+ * Fix Github issue 855 - fail to parse with statement
+ * fix PEP 604 union annotations in decorators
+ * Add py3.11 classifier
+- Update _service file
+ * remove obsoleted mode "disabled" to "manual"
+ * adopt new obs-service-cargo packaging method
+- Remove patches
+ * remove-ufmt-dep.patch
+ * replace-python-call.patch
+
-------------------------------------------------------------------
Fri Apr 21 12:27:55 UTC 2023 - Dirk Müller
diff --git a/python-libcst.spec b/python-libcst.spec
index 4f8bd3c..1790402 100644
--- a/python-libcst.spec
+++ b/python-libcst.spec
@@ -1,7 +1,7 @@
#
-# spec file
+# spec file for package python-libcst
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,32 +16,25 @@
#
-%define skip_python2 1
-%define rustflags '-Clink-arg=-Wl,-z,relro,-z,now'
%global flavor @BUILD_FLAVOR@%{nil}
-%if "%{flavor}" == "test"
-%define psuffix -test
-%bcond_without test
-%else
+# %%if "%%{flavor}" == "test"
+# %%define psuffix -test
+# %%bcond_without test
+# %%else
%define psuffix %{nil}
%bcond_with test
-%endif
+# %%endif
%define modname libcst
%{?sle15_python_module_pythons}
Name: python-libcst%{psuffix}
-Version: 0.4.9
+Version: 1.4.0
Release: 0
Summary: Python 3.5+ concrete syntax tree with AST-like properties
License: MIT
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-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
+Source0: https://files.pythonhosted.org/packages/source/l/libcst/%{modname}-%{version}.tar.gz
+Source1: vendor.tar.zst
+BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools-rust}
BuildRequires: %{python_module setuptools_scm}
BuildRequires: %{python_module setuptools}
@@ -50,7 +43,7 @@ BuildRequires: cargo
BuildRequires: cargo-packaging
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-BuildRequires: rust
+BuildRequires: zstd
Requires: python-PyYAML >= 5.2
Requires: python-typing-inspect >= 0.4.0
Requires: python-typing_extensions >= 3.7.4.2
@@ -71,52 +64,43 @@ BuildRequires: %{python_module typing_extensions >= 3.7.4.2}
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}
-cp -rf native/vendor vendor
-mkdir -p .cargo && echo "" >> .cargo/config.toml && cat %{SOURCE2} >>.cargo/config.toml
+%autosetup -a1 -n libcst-%{version} -p1
-pushd native
-mkdir -p .cargo
-cat %{SOURCE2} >>.cargo/config.toml
-popd
+# # Depends on optional pyre
+# rm \
+# libcst/metadata/tests/test_type_inference_provider.py \
+# libcst/metadata/tests/test_full_repo_manager.py \
+# libcst/tests/test_pyre_integration.py
-%autopatch -p1
-
-# Depends on optional pyre
-rm \
- libcst/metadata/tests/test_type_inference_provider.py \
- libcst/metadata/tests/test_full_repo_manager.py \
- libcst/tests/test_pyre_integration.py
-
-# gh#Instagram/LibCST#467
-sed -i -e 's/import AbstractBaseMatcherNodeMeta/import Optional, AbstractBaseMatcherNodeMeta/' libcst/codegen/gen_matcher_classes.py
-
-%if !%{with test}
+%if %{without test}
%build
export CARGO_NET_OFFLINE=true PROFILE=release
-%python_build
+%pyproject_wheel
%endif
%install
-%if !%{with test}
+%if %{without test}
export CARGO_NET_OFFLINE=true PROFILE=release
-%python_install
-%python_expand %fdupes %{buildroot}%{$python_sitearch}
+%pyproject_install
+# gh#Instagram/LibCST#818
+%{python_expand rm -rf %{buildroot}%{$python_sitearch}/libcst/tests
+%fdupes %{buildroot}%{$python_sitearch}
+}
%endif
+%clean
+
%if %{with test}
%check
-%python_exec -m libcst.codegen.generate all
-%pyunittest -v
+%pyunittest_arch discover -v libcst/tests
%endif
-%if !%{with test}
+%if %{without test}
%files %{python_files}
%doc README.rst
%license LICENSE
%{python_sitearch}/libcst
-%{python_sitearch}/libcst-%{version}-py*.egg-info
+%{python_sitearch}/libcst-%{version}*-info
%endif
%changelog
diff --git a/remove-ufmt-dep.patch b/remove-ufmt-dep.patch
deleted file mode 100644
index 4d94eb9..0000000
--- a/remove-ufmt-dep.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-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
deleted file mode 100644
index 73e8dae..0000000
--- a/replace-python-call.patch
+++ /dev/null
@@ -1,36 +0,0 @@
----
- libcst/codegen/generate.py | 2 +-
- libcst/codemod/tests/test_codemod_cli.py | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
---- a/libcst/codegen/generate.py
-+++ b/libcst/codegen/generate.py
-@@ -69,7 +69,7 @@ def codegen_visitors() -> None:
- # by attempting to run codegen again in a new process.
- with open(os.devnull, "w") as devnull:
- subprocess.check_call(
-- ["python3", "-m", "libcst.codegen.gen_visitor_functions"],
-+ [sys.executable, "-m", "libcst.codegen.gen_visitor_functions"],
- cwd=base,
- stdout=devnull,
- )
---- a/libcst/codemod/tests/test_codemod_cli.py
-+++ b/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/vendor.tar.xz b/vendor.tar.xz
deleted file mode 100644
index 58e043a..0000000
--- a/vendor.tar.xz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c119328db7b0c42d71498ee49480fcac03cb8026743e46f8fedbee5b0e6c62f2
-size 14686248
diff --git a/vendor.tar.zst b/vendor.tar.zst
new file mode 100644
index 0000000..63d277e
--- /dev/null
+++ b/vendor.tar.zst
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b7d89b1c34b8bc302ff105323671d9089a58e8a59c0d1579bc42379c4f197a28
+size 10695352