Linux-CommA/pyproject.toml

169 строки
4.1 KiB
TOML

# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
[build-system]
requires = ["setuptools >= 65"]
build-backend = "setuptools.build_meta"
[project]
name = "comma"
description = "Linux Commit Analyzer"
classifiers = [
"Programming Language :: Python :: 3",
"Development Status :: 5 - Production/Stable",
"Topic :: Software Development",
]
dependencies = [
"approxidate",
"gitpython ~= 3.1.31",
"fuzzywuzzy[speedup] ~= 0.18.0",
"sqlalchemy[mssql] ~= 1.4.48",
"openpyxl ~= 3.1.2",
]
dynamic = ["version"]
license = {text = "MIT"}
readme = "README.md"
requires-python = ">=3.8"
authors = [
{name = "Ryan Feldman", email = "ryfeldma@microsoft.com"},
{name = "Abhishek Marathe", email = "abmarath@microsoft.com"},
{name = "Andrew Schwartzmeyer", email = "andrew@schwartzmeyer.com"},
]
[project.scripts]
comma = "comma.cli:main"
[project.optional-dependencies]
flake8 = [
"flake8 ~= 6.0.0",
"flake8-black ~= 0.3.6",
"flake8-bugbear ~= 23.3.23",
"flake8-isort ~= 6.0.0",
"Flake8-pyproject",
]
black = [
"black ~= 23.3.0",
]
isort = [
"isort ~= 5.12.0",
]
pylint = [
"pylint[spelling]",
]
[project.urls]
homepage = "https://github.com/microsoft/Linux-CommA"
[tool.black]
line-length = 100
[tool.flake8]
max-line-length = 140 # Enfoced by black and pylint, only for extremely long lines
extend-exclude = [
"build",
"Repos",
".venv",
]
[tool.isort]
force_grid_wrap = 0
include_trailing_comma = true
line_length = 100
lines_after_imports = 2
multi_line_output = 3
py_version=38
skip_gitignore = true
use_parentheses = true
[tool.pylint.basic]
# Good variable names which should always be accepted, separated by a comma.
good-names = ["e", "_"]
[tool.pylint.format]
# Regexp for a line that is allowed to be longer than the limit.
# URLs and pure strings, or since argument assignments to pure strings
ignore-long-lines = "^\\s*(# )?<?https?://\\S+>?$|^\\s*([^=]+=)?[f|r]?b?[\\\"\\'\\`].+[\\\"\\'\\`],?$"
[tool.pylint.design]
# Minimum number of public methods for a class (see R0903).
min-public-methods = 1
[tool.pylint."messages control"]
enable = [
"bad-inline-option",
"c-extension-no-member",
"deprecated-pragma",
"file-ignored",
"use-symbolic-message-instead",
"useless-suppression",
]
[tool.pylint.main]
# List of plugins (as comma separated values of python module names) to load,
# usually to register additional checkers.
load-plugins = [
"pylint.extensions.bad_builtin",
"pylint.extensions.check_elif",
"pylint.extensions.comparetozero",
"pylint.extensions.comparison_placement",
"pylint.extensions.consider_refactoring_into_while_condition",
"pylint.extensions.dict_init_mutate",
"pylint.extensions.dunder",
"pylint.extensions.empty_comment",
"pylint.extensions.emptystring",
"pylint.extensions.for_any_all",
"pylint.extensions.no_self_use",
"pylint.extensions.overlapping_exceptions",
"pylint.extensions.private_import",
"pylint.extensions.redefined_loop_name",
"pylint.extensions.redefined_variable_type",
"pylint.extensions.set_membership"
]
# Minimum Python version to use for version dependent checks. Will default to the
# version used to run pylint.
py-version = "3.8"
[tool.pylint.miscellaneous]
# List of note tags to take in consideration, separated by a comma
# See https://github.com/pylint-dev/pylint/issues/8734
notes=["SomethingThatWillNotBeFound"]
# Regular expression of note tags to take in consideration.
notes-rgx="TODO(?! \\(Issue \\d+\\))"
[tool.pylint.reports]
output-format = "colorized"
[tool.pylint.spelling]
# Spelling dictionary name
spelling-dict = "en_US"
# List of comma separated words that should not be checked.
spelling-ignore-words = [
"CLI", "commit's", "ctags",
"distro", "distros",
"HyperV",
"iterable", "isort",
"monitoringSubject",
"namespace", "Nox",
"ORM",
"parsers", "PatchData", "preprocessing",
"repo", "repos",
"setuptools", "SHA", "subclassed", "subcommand", "subcommands",
"untracked",
"virtualenv",
]
[tool.setuptools.packages.find]
include = ["comma*"]
namespaces = false
[tool.setuptools.dynamic]
version = {attr = "comma.__version__"}