libcst-1.8.6gentoo
download
# Copyright 2024-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
PYPI_VERIFY_REPO=https://github.com/Instagram/LibCST
# TODO: add freethreading when the deps are done
PYTHON_COMPAT=( python3_{12..15} )
RUST_MIN_VER="1.80.0"
CRATES="
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
"
inherit cargo distutils-r1 pypi
DESCRIPTION="A concrete syntax tree with AST-like properties for Python"
HOMEPAGE="
https://github.com/Instagram/LibCST/
https://pypi.org/project/libcst/
"
SRC_URI+="
${CARGO_CRATE_URIS}
"
LICENSE="MIT Apache-2.0 PSF-2"
# Dependent crate licenses
LICENSE+=" Apache-2.0 Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0"
SLOT="0"
KEYWORDS="amd64 ~riscv"
RDEPEND="
>=dev-python/pyyaml-6.0.3[${PYTHON_USEDEP}]
"
BDEPEND="
dev-python/setuptools-rust[${PYTHON_USEDEP}]
dev-python/setuptools-scm[${PYTHON_USEDEP}]
test? (
dev-python/black[${PYTHON_USEDEP}]
)
"
EPYTEST_PLUGINS=()
EPYTEST_XDIST=1
distutils_enable_tests pytest
QA_FLAGS_IGNORED="usr/lib/py.*/site-packages/libcst/native.*"
export PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1
src_unpack() {
pypi_src_unpack
cargo_src_unpack
}
src_prepare() {
distutils-r1_src_prepare
# do not require the freethreading fork for regular 3.13
sed -i -e '/pyyaml-ft/d' pyproject.toml || die
}
python_test() {
local EPYTEST_DESELECT=(
# TODO
libcst/codemod/tests/test_codemod_cli.py::TestCodemodCLI::test_codemod_formatter_error_input
)
local EPYTEST_IGNORE=(
# fuzzing, require hypothesmith
libcst/tests/test_fuzz.py
# require pyre-check
libcst/metadata/tests/test_type_inference_provider.py
# requires `python -m libcst.codegen.generate` which has extra
# deps and needs patching to work in our venv
# TODO: figure out if we don't need that for revdeps anyway
libcst/codegen/tests/test_codegen_clean.py
)
cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
# fixtures
ln -s "${S}/native" . || die
nonfatal epytest
local ret=${?}
rm native || die
[[ ${ret} -ne 0 ]] && die "Tests failed on ${EPYTHON}"
}
python_test_all() {
cd native || die
cargo_src_test
}