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 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
|
[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools>=78.0.2"]
[project]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"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",
"Topic :: Software Development :: Internationalization",
"Topic :: Software Development :: Localization",
"Topic :: Utilities"
]
dependencies = [
"argcomplete",
"python-dateutil",
"pyxdg",
"requests>=2.25.0",
"urllib3>=1.26"
]
description = "A command-line utility for Weblate, translation tool with tight version control integration"
dynamic = ["version"]
keywords = [
"i18n",
"l10n",
"gettext",
"git",
"mercurial",
"translate"
]
license = "GPL-3.0-or-later"
license-files = ["LICENSE"]
name = "wlc"
requires-python = ">=3.10"
[[project.authors]]
email = "michal@weblate.org"
name = "Michal Čihař"
[project.optional-dependencies]
lint = ["pre-commit==4.3.0"]
test = [
"pytest-cov==7.0.0",
"pytest-github-actions-annotate-failures==0.3.0",
"pytest==8.4.2",
"responses==0.25.8"
]
types = [
"mypy==1.18.2",
"types-python-dateutil==2.9.0.20251008",
"types-requests==2.32.4.20250913"
]
[project.readme]
content-type = "text/markdown"
file = "README.md"
[project.scripts]
wlc = "wlc.main:main"
[project.urls]
Documentation = "https://docs.weblate.org/"
Download = "https://github.com/WeblateOrg/wlc"
Funding = "https://weblate.org/donate/"
Homepage = "https://weblate.org/"
"Issue Tracker" = "https://github.com/WeblateOrg/wlc/issues"
"Source Code" = "https://github.com/WeblateOrg/wlc"
Twitter = "https://twitter.com/WeblateOrg"
[tool.check-manifest]
ignore = [
".dockerignore",
"Dockerfile",
".well-known/*",
".editorconfig",
"*.toml",
"*.yaml",
"*.yml"
]
[tool.check-wheel-contents]
ignore = [
"W002" # Triggered by API mocks
]
[tool.coverage.paths]
source = [
"."
]
[tool.coverage.report]
exclude_also = [
"@(abc\\.)?abstractmethod",
# Don't complain about missing debug-only code:
"def __repr__",
# Don't complain if non-runnable code isn't run:
"if 0:",
"if __name__ == .__main__.:",
"if self\\.debug",
# Type checking
"if TYPE_CHECKING:",
# Have to re-enable the standard pragma
"pragma: no cover",
# Don't complain if tests don't hit defensive assertion code:
"raise AssertionError",
"raise NotImplementedError"
]
[tool.isort]
profile = "black"
[tool.ruff]
target-version = "py38"
[tool.ruff.format]
docstring-code-format = true
[tool.ruff.lint]
ignore = [
"D10", # TODO: we are missing many docstrings
"D203", # CONFIG: incompatible with D211
"D212", # CONFIG: incompatible with D213
"D401", # TODO: many strings need rephrasing
"T201", # WONTFIX: using print() (maybe add noqa)
"TRY003", # WONTFIX: Avoid specifying long messages outside the exception class
"PLR0913", # WONTFIX: Too many arguments to function call
"PLR2004", # TODO: Magic value used in comparison, consider replacing 201 with a constant variable
"COM", # CONFIG: No trailing commas
"PT", # CONFIG: Not using pytest
"PTH", # TODO: Not using pathlib
"EM", # TODO: Exception strings
"FBT", # TODO: Boolean in function definition
"ANN", # TODO: type annotations
"N818" # TODO: exception naming
]
select = ["ALL"]
[tool.ruff.lint.mccabe]
max-complexity = 16
[tool.setuptools]
include-package-data = true
platforms = ["any"]
[tool.setuptools.dynamic.version]
attr = "wlc.__version__"
[tool.setuptools.package-dir]
wlc = "wlc"
[tool.setuptools.packages.find]
include = ["wlc*"]
namespaces = true
[tool.typos.default]
extend-ignore-re = [
"\"shortrevision\": \"[a-f0-9]+\"",
"code\": \"[a-z]+\""
]
|