## START: Set by rpmautospec ## (rpmautospec version 0.6.0) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 3; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} ## END: Set by rpmautospec %global _without_docs 1 %global _without_tests 1 %bcond_with bootstrap %if 0%{?rhel} %bcond_with tests %else %if %{with bootstrap} # need updated libcst to update hypothesmith # and older hypothesmith does not work with newer hypothesis %bcond_with tests %else %bcond_without tests %endif %endif # Use --with all_tests to run all tests %bcond_with all_tests Name: python-libcst Version: 1.1.0 Release: %autorelease Summary: A concrete syntax tree with AST-like properties for Python 3 # see LICENSE in the upstream sources for the breakdown License: MIT AND (MIT OR PSF-2.0) AND Apache-2.0 URL: https://github.com/Instagram/LibCST Source: %{pypi_source libcst} # * specify license in crates' metadata # * drop unused, benchmark-only criterion dev-dependency Patch: libcst-fix-metadata.diff # Optional patches (100+) BuildRequires: cargo-rpm-macros >= 24 BuildRequires: python3-devel %if %{with tests} # test dependencies are intermingled with dev dependencies # so list them manually for now BuildRequires: python3dist(hypothesis) BuildRequires: python3dist(hypothesmith) BuildRequires: python3dist(pytest) %endif %global _description %{expand: LibCST parses Python source code as a CST tree that keeps all formatting details (comments, whitespaces, parentheses, etc). It's useful for building automated refactoring (codemod) applications and linters. LibCST creates a compromise between an Abstract Syntax Tree (AST) and a traditional Concrete Syntax Tree (CST). By carefully reorganizing and naming node types and fields, it creates a lossless CST that looks and feels like an AST.} %description %_description %package -n python3-libcst Summary: %{summary} # (MIT OR Apache-2.0) AND Unicode-DFS-2016 # Apache-2.0 # Apache-2.0 OR MIT # MIT # MIT AND PSF-2.0 # MIT OR Apache-2.0 # Unlicense OR MIT License: MIT AND (MIT OR PSF-2.0) AND Apache-2.0 AND (MIT OR Apache-2.0) AND Unicode-DFS-2016 AND (Unlicense OR MIT) # LICENSE.dependencies contains a full license breakdown # Documentation is hard to build since libcst.native is not available to import until %%install Obsoletes: python-libcst-doc < 1.1.0-1 %description -n python3-libcst %_description %prep %autosetup -N -n libcst-%{version} # Apply patches up to 99 %autopatch -p1 -M 99 # remove version locks rm native/Cargo.lock %cargo_prep %generate_buildrequires for p in libcst_derive libcst; do cd native/$p # dev dependencies need to be included, setuptools_rust seems to include them unconditionally %cargo_generate_buildrequires -t cd ../.. done %pyproject_buildrequires -r %build export RUSTFLAGS="%{build_rustflags}" %pyproject_wheel # write license summary and breakdown cd native %{cargo_license_summary} %{cargo_license} > ../LICENSE.dependencies cd .. %install %pyproject_install %pyproject_save_files libcst %check %pyproject_check_import -e 'libcst.tests.*' %if %{with tests} # libcst.native is not available in build directory # test the pure Python codepath for now # (TODO: test *both* paths) export LIBCST_PARSER_TYPE=pure %pyproject_check_import -e 'libcst.tests.*' %if %{with all_tests} %pytest %else # =========================== short test summary info ============================ ### these fail with this: ### AssertionError: False is not true : libcst._typed_visitor needs new codegen, see `python -m libcst.codegen.generate --help` for instructions, or run `python -m libcst.codegen.generate all` # FAILED libcst/codegen/tests/test_codegen_clean.py::TestCodegenClean::test_codegen_clean_matcher_classes # FAILED libcst/codegen/tests/test_codegen_clean.py::TestCodegenClean::test_codegen_clean_return_types # FAILED libcst/codegen/tests/test_codegen_clean.py::TestCodegenClean::test_codegen_clean_visitor_functions ### these need pyre, not available yet # ERROR libcst/metadata/tests/test_type_inference_provider.py::TypeInferenceProviderTest::test_gen_cache_0 # ERROR libcst/metadata/tests/test_type_inference_provider.py::TypeInferenceProviderTest::test_simple_class_types_0 # ERROR libcst/metadata/tests/test_type_inference_provider.py::TypeInferenceProviderTest::test_with_empty_cache EXCLUDES="not ... and not ..." EXCLUDES+=... #%%pytest -k "$EXCLUDES" %pytest \ --ignore=libcst/codegen/tests/test_codegen_clean.py \ --ignore=libcst/metadata/tests/test_type_inference_provider.py # end all_tests %endif # end tests %endif %files -n python3-libcst -f %{pyproject_files} %license LICENSE.dependencies %changelog ## START: Generated by rpmautospec * Fri Jun 07 2024 Python Maint - 1.1.0-3 - Bootstrap for Python 3.13 * Thu Feb 01 2024 Michel Lind - 1.1.0-2 - Rebuild with tests enabled * Wed Jan 31 2024 Michel Lind - 1.1.0-1 - Update to 1.1.0 * Fri Jan 26 2024 Fedora Release Engineering - 0.4.10-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Mon Jan 22 2024 Fedora Release Engineering - 0.4.10-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Fri Oct 27 2023 Miro HronĨok - 0.4.10-2 - Fix build --without tests * Wed Sep 06 2023 Michel Lind - 0.4.10-1 - Update to 0.4.10 - Use SPDX license identifiers - Modernize to use the new Python packaging guidelines * Fri Jul 21 2023 Fedora Release Engineering - 0.3.21-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild * Mon Jul 10 2023 Python Maint - 0.3.21-9 - Rebuilt for Python 3.12 * Tue Jun 13 2023 Python Maint - 0.3.21-8 - Bootstrap for Python 3.12 * Wed Feb 22 2023 Yaakov Selkowitz - 0.3.21-7 - Disable docs and tests by default in ELN builds * Fri Jan 20 2023 Fedora Release Engineering - 0.3.21-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild * Fri Jul 22 2022 Fedora Release Engineering - 0.3.21-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild * Sat Jul 16 2022 Python Maint - 0.3.21-4 - Rebuilt for Python 3.11 * Mon Jun 20 2022 Python Maint - 0.3.21-3 - Bootstrap for Python 3.11 * Fri Jan 21 2022 Fedora Release Engineering - 0.3.21-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Sun Nov 07 2021 Davide Cavalca - 0.3.21-1 - Update to 0.3.21; Fixes: RHBZ#1960292, RHBZ#1959007 * Sun Nov 07 2021 Davide Cavalca - 0.3.18-7 - Drop logic for Fedora 32 * Fri Jul 23 2021 Fedora Release Engineering - 0.3.18-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild * Mon Jun 07 2021 Python Maint - 0.3.18-4 - Rebuilt for Python 3.10 * Fri Jun 04 2021 Python Maint - 0.3.18-3 - Bootstrap for Python 3.10 * Wed Apr 21 2021 Tomas Hrnciar - 0.3.18-2 - Add bcond to disable tests to avoid dependency loop on python-hypothesmith * Sat Apr 03 2021 Davide Cavalca - 0.3.18-1 - Update to 0.3.18 - Add hypothesmith to BuildRequires and enable back some more tests * Wed Mar 03 2021 Davide Cavalca - 0.3.17-4 - Fix intersphinx inventory path - Fix %%py_provides gating * Wed Mar 03 2021 Davide Cavalca - 0.3.17-3 - Fix docs build and enable it by default * Tue Mar 02 2021 Davide Cavalca - 0.3.17-2 - Fix license - Switch to GitHub tarball - Add docs build (disabled by default) - Switch to pytest and document ignored tests * Tue Mar 02 2021 Davide Cavalca - 0.3.17-1 - Initial package. ## END: Generated by rpmautospec