xonsh/pyproject.toml
Noorhteen Raja NJ 769dfbe6aa
Py 312 pre-liminary support (#5156)
* refactor: project requires 3.9+

changed as per NEP-29
https://numpy.org/neps/nep-0029-deprecation_policy.html

* test: nose type tests are deprecated in pytest now

* fix: deprecation of ast.Str and ast.Bytes and .s attribute access

* fix: deprecation of ast.Num,ast.NameConstant,ast.Ellipsis

* refactor: upgrade code to be py39+ using ruff

the changes are auto-generated

* refactor: remove typing.Annotated compatibility code

* fix: temporarily disable having xonsh syntax inside f-strings

* test: skip failing tests

there is no workaround for this version. It might get solved in the
final release though

* refactor: make XonshSession.completer lazily populated

this speedsup the tests as cmd_cache would not be actively populated
when used in default_completers function

* refactor: make presence of walrus operator default
2023-07-04 22:18:37 +05:30

289 lines
7.3 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[build-system]
# PEP 518 https://www.python.org/dev/peps/pep-0518/
# https://discuss.python.org/t/help-testing-experimental-features-in-setuptools/13821
requires = ["setuptools>=61", "wheel"]
# PEP 517 https://peps.python.org/pep-0517/
build-backend = "setuptools.build_meta"
[project]
# PEP 621 project metadata
# See https://www.python.org/dev/peps/pep-0621/
name = "xonsh"
dynamic = ["version", "readme"]
description = "Python-powered, cross-platform, Unix-gazing shell"
authors = [{ name = "Anthony Scopatz" }, { email = "scopatz@gmail.com" }]
maintainers = [{ name = "Anthony Scopatz" }, { email = "scopatz@gmail.com" }]
license = { text = "BSD 2-Clause License" }
requires-python = ">=3.9"
[tool.setuptools.dynamic]
version = {attr = "xonsh.__version__"}
readme = {file = ["README.rst"]}
[tool.setuptools]
packages = [
"xonsh",
"xonsh.ply.ply",
"xonsh.ptk_shell",
"xonsh.procs",
"xonsh.parsers",
"xonsh.xoreutils",
"xontrib",
"xonsh.completers",
"xonsh.history",
"xonsh.prompt",
"xonsh.pytest",
"xonsh.lib",
"xonsh.webconfig",
"xonsh.virtualenv",
"xompletions",
]
platforms = ["Cross Platform"]
include-package-data = false
[tool.setuptools.package-dir]
xonsh = "xonsh"
xontrib = "xontrib"
xompletions = "xompletions"
"xonsh.lib" = "xonsh/lib"
"xonsh.webconfig" = "xonsh/webconfig"
[tool.setuptools.package-data]
xonsh = [
"*.json",
"*.githash",
]
xontrib = ["*.xsh"]
"xonsh.lib" = ["*.xsh"]
"xonsh.virtualenv" = ["*.xsh"]
"xonsh.webconfig" = [
"*.html",
"js/app.min.js",
"js/bootstrap.min.css",
"js/LICENSE-bootstrap",
"js/xonsh_sticker_mini.png",
]
[project.entry-points]
pytest11 = { xonsh = "xonsh.pytest.plugin" }
[project.entry-points."pygments.lexers"]
xonsh = "xonsh.pyghooks:XonshLexer"
xonshcon = "xonsh.pyghooks:XonshConsoleLexer"
[project.entry-points."virtualenv.activate"]
xonsh = "xonsh.virtualenv:XonshActivator"
[project.urls]
Homepage = "https://xon.sh"
documentation = "https://xon.sh/contents.html"
repository = "https://github.com/xonsh/xonsh"
changelog = "https://github.com/xonsh/xonsh/blob/main/CHANGELOG.rst"
"Issue tracker" = "https://github.com/xonsh/xonsh/issues"
[project.optional-dependencies]
ptk = [
"prompt-toolkit>=3.0.29",
"pyperclip",
]
pygments = ["pygments>=2.2"]
mac = ["gnureadline"]
linux = ["distro"]
proctitle = ["setproctitle"]
full = [
"xonsh[ptk,pygments]",
"distro; platform_system=='Linux'",
"setproctitle; platform_system=='Windows'",
"gnureadline; platform_system=='Darwin'",
"ujson",
]
bestshell = [
"prompt_toolkit>=3.0.29",
"pygments>=2.2",
]
test = [
"xonsh[bestshell]",
"pytest>=7",
"restructuredtext_lint",
"pytest-cov",
"pytest-mock",
"pytest-timeout",
"pytest-subprocess",
"pytest-rerunfailures",
"prompt-toolkit>=3.0.29",
"pygments>=2.2",
"coverage>=5.3.1",
"pyte>=0.8.0",
"virtualenv>=20.16.2",
]
dev = [
"xonsh[test,doc]",
"pre-commit",
"re-ver",
"tomli",
]
doc = [
"xonsh[bestshell]",
"furo",
"numpydoc",
"sphinx<5,>=3.1",
"psutil",
"pyzmq",
"matplotlib",
"doctr",
"tornado",
"runthis-sphinxext",
"livereload",
"myst-parser",
]
[project.scripts]
xonsh = "xonsh.main:main"
xonsh-cat = "xonsh.xoreutils.cat:main"
xonsh-uname = "xonsh.xoreutils.uname:main"
xonsh-uptime = "xonsh.xoreutils.uptime:main"
[tool.black]
# better to keep default line-length than to match flake8
exclude = '''
( # exclude entire contents of these top level directories...
/( \.eggs
| \.git
| \.hg
| \.mypy
| _cache
| \.nox
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
)/
)
|
( # and these additional random rules
/( __pycache__
| \.circleci
| \.github
| \.vscode
| \.pytest_cache
| ply
)/
)
'''
extend_exclude = '''
((xonsh/parser_table.py)|(xonsh/completion_parser_table.py))
'''
[tool.ruff.isort]
known-first-party = ["xonsh", "xontrib", "xompletions", "tests"]
known-third-party = ["ply", "pytest"]
[tool.ruff]
src = [
"xonsh", "xontrib", "xompletions", "tests"
]
exclude = [
"docs/",
"*/ply/",
"parser*_table.py",
"completion_parser_table.py",
"build/",
"dist/",
"setup.py",
".vscode/",
"feedstock",
"rever",
".venv*/",
".local.out*/",
]
ignore = [
"D100", # Missing docstring in public module
"D101", # Missing docstring in public class
"D102", # Missing docstring in public method
"D103", # Missing docstring in public function
"D104", # Missing docstring in public package
"D105", # Missing docstring in magic method
"D200", # One-line docstring should fit on one line with quotes
"D202", # No blank lines allowed after function docstring
"D205", # 1 blank line required between summary line and description
"D207", # Docstring is under-indented
"D208", # Docstring is over-indented
"D209", # Multi-line docstring closing quotes should be on a separate line
"D210", # No whitespaces allowed surrounding docstring text
"D301", # Use r""" if any backslashes in a docstring
"D400", # First line should end with a period
"D401", # First line should be in imperative mood
"D403", # First word of the first line should be properly capitalized
"D404", # First word of the docstring should not be This
"D406", # Section name should end with a newline
"D407", # Missing dashed underline after section
"D409", # Section underline should be in the line following the sections name
"D411", # Missing blank line before section
"D418", # Function decorated with `@overload` shouldn't contain a docstring
"E402", # Module level import not at top of file
"E731", # Do not assign a lambda expression, use a def
]
line-length = 180
select = [
"B", # https://beta.ruff.rs/docs/rules/#flake8-bugbear-b
"D", # https://beta.ruff.rs/docs/rules/#pydocstyle-d
"E", # https://beta.ruff.rs/docs/rules/#pycodestyle-e-w
"F", # https://beta.ruff.rs/docs/rules/#pyflakes-f
"I", # https://beta.ruff.rs/docs/rules/#isort-i
"T10", # https://beta.ruff.rs/docs/rules/#flake8-debugger-t10
"YTT", # https://beta.ruff.rs/docs/rules/#flake8-2020-ytt
"W", # https://beta.ruff.rs/docs/rules/#pycodestyle-e-w
"UP", # https://beta.ruff.rs/docs/rules/#pyupgrade-up
]
[tool.ruff.pydocstyle]
convention = "numpy"
[tool.ruff.per-file-ignores]
"xonsh/timings.py" = ["F401"]
"xonsh/history.py" = ["F821"]
"xonsh/lexer.py" = ["E741"]
"xonsh/parsers/completion_context.py" = ["B018"]
"xonsh/tokenize.py" = [
"F821",
"F841",
"B904" # Within an `except` clause, raise exceptions with `raise ... from err`
]
"xonsh/pyghooks.py" = ["F821"]
"tests/test_builtins.py" = [
"F821",
"B011",
]
"xonsh/built_ins.py" = [
"F821",
"E721",
"E721",
]
"xonsh/style_tools.py" = ["F821"]
"xonsh/xoreutils/*.py" = ["E722"]
"xonsh/completers/python.py" = ["E722"]
"xonsh/ptk/shell.py" = ["E731"]
"xonsh/ast.py" = ["F401"]
"xonsh/readline_shell.py" = ["F401"]
"xonsh/commands_cache.py" = ["F841"]
"xonsh/ptk/key_bindings.py" = ["F841"]
"xonsh/tools.py" = [
"E731",
]
"xonsh/xonfig.py" = ["E731"]
"xontrib/vox.py" = ["F821"]
"xonsh/inspectors.py" = ["E722"]
"xonsh/platform.py" = ["F401"]
"xonsh/parsers/*.py" = [
"E741", # E741 Ambiguous variable name
]
"tests/test*.py" = [
"E741", # E741 Ambiguous variable name
]