1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
[build-system]
requires = ["setuptools", "setuptools-scm", "setuptools-rust", "wheel"]
[project]
name = "libcst"
description = "A concrete syntax tree with AST-like properties for Python 3.0 through 3.14 programs."
readme = "README.rst"
dynamic = ["version"]
license = { file = "LICENSE" }
classifiers = [
"License :: OSI Approved :: MIT License",
"Topic :: Software Development :: Libraries",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Free Threading",
"Typing :: Typed",
]
requires-python = ">=3.9"
dependencies = [
"pyyaml>=5.2; python_version < '3.13'",
"pyyaml-ft>=8.0.0; python_version == '3.13'",
"pyyaml>=6.0.3; python_version >= '3.14'",
"typing-extensions; python_version < '3.10'",
]
[project.urls]
Documentation = "https://libcst.readthedocs.io/en/latest/"
Github = "https://github.com/Instagram/LibCST"
Changelog = "https://github.com/Instagram/LibCST/blob/main/CHANGELOG.md"
[dependency-groups]
dev = [
"black==25.1.0",
"coverage[toml]>=4.5.4",
"build>=0.10.0",
"fixit==2.1.0",
"flake8==7.2.0",
"hypothesis>=4.36.0",
"hypothesmith>=0.0.4",
"maturin>=1.7.0,<1.8",
"poethepoet>=0.35.0",
"prompt-toolkit>=2.0.9",
"pyre-check==0.9.18; platform_system != 'Windows'",
"setuptools_scm>=6.0.1",
"ufmt==2.8.0",
"usort==1.0.8.post1",
"setuptools-rust>=1.5.2",
"slotscheck>=0.7.1",
]
docs = [
{include-group = "dev"},
"Sphinx>=5.1.1",
"sphinx-rtd-theme>=0.4.3",
"jupyter>=1.0.0",
"nbsphinx>=0.4.2",
"jinja2==3.1.6",
]
[tool.black]
target-version = ["py39"]
extend-exclude = '^/native/' # Prepend "^/" to specify root file/folder. See https://black.readthedocs.io/en/stable/usage_and_configuration/the_basics.html#configuration-format
[tool.coverage.report]
fail_under = 93
precision = 1
show_missing = true
skip_covered = true
omit = ["*/_parser/*"] # temporary while I remove the parser
[tool.uv]
cache-keys = [
{ file = "pyproject.toml" },
{ git = {commit = true, tags = true}},
{ file = "**/*.rs"},
{ file = "**/Cargo.toml"},
{ file = "**/Cargo.lock"},
]
[tool.poe.tasks]
fixtures = ["regenerate-fixtures", "_assert_no_changes"]
regenerate-fixtures = "python scripts/regenerate-fixtures.py"
_assert_no_changes = "git diff --exit-code"
format = "ufmt format libcst scripts"
_flake8 = "flake8 libcst"
_ufmt = "ufmt check libcst scripts"
_slotscheck = "python -m slotscheck libcst"
_check_copyright = "python scripts/check_copyright.py"
lint = ["_flake8", "_ufmt", "_slotscheck", "_check_copyright"]
test = "python -m coverage run -m libcst.tests"
typecheck = "pyre check"
docs = "sphinx-build -ab html docs/source docs/build"
[tool.slotscheck]
exclude-modules = '^libcst\.(testing|tests)'
[tool.ufmt]
excludes = ["native/", "stubs/"]
[tool.cibuildwheel]
build-verbosity = 1
environment = { PATH = "$PATH:$HOME/.cargo/bin", LIBCST_NO_LOCAL_SCHEME="1" }
skip = [
"pp*",
"*-win32",
"*-musllinux_i686",
"*-musllinux_ppc64le",
"*-musllinux_s390x",
"*-musllinux_armv7l",
]
enable = ["cpython-freethreading"]
test-command = [
"python --version",
"python -m libcst.tool list",
# TODO: remove the gil once thread-safety issues are resolved
"python -X gil=1 -m libcst.tool codemod remove_unused_imports.RemoveUnusedImportsCommand {project}/libcst/_nodes",
]
[tool.cibuildwheel.linux]
environment-pass = ["LIBCST_NO_LOCAL_SCHEME"]
before-all = "yum install -y libatomic; curl https://sh.rustup.rs -sSf | env -u CARGO_HOME sh -s -- --default-toolchain stable --profile minimal -y"
[tool.cibuildwheel.macos]
before-all = "rustup target add aarch64-apple-darwin x86_64-apple-darwin"
[tool.cibuildwheel.windows]
before-all = "rustup target add x86_64-pc-windows-msvc i686-pc-windows-msvc aarch64-pc-windows-msvc"
|