Use pyproject.toml to conform with PEP 621

This commit is contained in:
Cosmin Ciocan
2024-01-02 11:16:26 +01:00
parent 7d8e04622c
commit 2a5a7ffeb7
4 changed files with 299 additions and 22 deletions
+297
View File
@@ -0,0 +1,297 @@
[build-system]
requires = ["hatchling >= 1.13.0"]
build-backend = "hatchling.build"
[project]
name = "nvcc4jupyter"
description = "Jupyter notebook plugin to run CUDA C/C++ code"
readme = "README.md"
requires-python = ">=3.7"
license = {text = "MIT License"}
authors = [
{ name = "Andrei Nechaev", email = "lyfaradey@yahoo.com" },
]
classifiers = [
"Programming Language :: Python :: 3",
"Programming Language :: Python",
]
dependencies = []
dynamic = ["version"]
[tool.hatch.version]
path = "nvcc4jupyter/__init__.py"
[tool.hatch.build.targets.wheel]
packages = ["nvcc4jupyter"]
[project.optional-dependencies]
testing = ["pytest>=7.4.3", "IPython>=8.19.0"]
[tool.pytest.ini_options]
addopts = [
"--color=yes",
"--durations=0",
"--strict-markers",
"--doctest-modules",
]
filterwarnings = [
"ignore::DeprecationWarning",
"ignore::UserWarning",
]
log_cli = "True"
markers = [
"slow: slow tests",
]
minversion = "6.0"
testpaths = "tests/"
[tool.coverage.report]
exclude_lines = [
"pragma: nocover",
"raise NotImplementedError",
"raise NotImplementedError()",
"if __name__ == .__main__.:",
]
[tool.isort]
profile = "black"
[tool.bandit]
exclude_dirs = ["build","dist","tests","scripts"]
number = 4
recursive = true
targets = "src"
skips = ["B101", "B311"]
[tool.black]
line-length = 79
fast = true
experimental-string-processing = true
[tool.coverage.run]
branch = true
[tool.flake8]
max-line-length = 79
select = "F,E,W,B,B901,B902,B903"
exclude = [
".eggs",
".git",
".tox",
"nssm",
"obj",
"out",
"packages",
"pywin32",
"tests",
"swagger_client"
]
ignore = [
"E722",
"B001",
"W503",
"E203"
]
[tool.pyright]
include = ["src"]
exclude = [
"**/node_modules",
"**/__pycache__",
]
venv = "env37"
reportMissingImports = true
reportMissingTypeStubs = false
pythonVersion = "3.7"
pythonPlatform = "Linux"
executionEnvironments = [
{ root = "src" }
]
[tool.tox]
legacy_tox_ini = """
[tox]
envlist = py, integration, spark, all
[testenv]
commands =
pytest -m "not integration and not spark" {posargs}
[testenv:integration]
commands =
pytest -m "integration" {posargs}
[testenv:spark]
extras = spark
setenv =
PYSPARK_DRIVER_PYTHON = {envpython}
PYSPARK_PYTHON = {envpython}
commands =
pytest -m "spark" {posargs}
[testenv:all]
extras = all
setenv =
PYSPARK_DRIVER_PYTHON = {envpython}
PYSPARK_PYTHON = {envpython}
commands =
pytest {posargs}
"""
[tool.pylint]
extension-pkg-whitelist= [
"numpy",
"torch",
"cv2",
"pyodbc",
"pydantic",
"ciso8601",
"netcdf4",
"scipy"
]
ignore="CVS"
ignore-patterns="test.*?py,conftest.py"
init-hook='import sys; sys.setrecursionlimit(8 * sys.getrecursionlimit())'
jobs=0
limit-inference-results=100
persistent="yes"
suggestion-mode="yes"
unsafe-load-any-extension="no"
[tool.pylint.'MESSAGES CONTROL']
enable="c-extension-no-member"
[tool.pylint.'REPORTS']
evaluation="10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)"
output-format="text"
reports="no"
score="yes"
[tool.pylint.'REFACTORING']
max-nested-blocks=5
never-returning-functions="sys.exit"
[tool.pylint.'BASIC']
argument-naming-style="snake_case"
attr-naming-style="snake_case"
bad-names= [
"foo",
"bar"
]
class-attribute-naming-style="any"
class-naming-style="PascalCase"
const-naming-style="UPPER_CASE"
docstring-min-length=-1
function-naming-style="snake_case"
good-names= [
"i",
"j",
"k",
"ex",
"Run",
"_"
]
include-naming-hint="yes"
inlinevar-naming-style="any"
method-naming-style="snake_case"
module-naming-style="any"
no-docstring-rgx="^_"
property-classes="abc.abstractproperty"
variable-naming-style="snake_case"
[tool.pylint.'FORMAT']
ignore-long-lines="^\\s*(# )?.*['\"]?<?https?://\\S+>?"
indent-after-paren=4
indent-string=' '
max-line-length=79
max-module-lines=1000
single-line-class-stmt="no"
single-line-if-stmt="no"
[tool.pylint.'LOGGING']
logging-format-style="old"
logging-modules="logging"
[tool.pylint.'MISCELLANEOUS']
notes= [
"FIXME",
"XXX",
"TODO"
]
[tool.pylint.'SIMILARITIES']
ignore-comments="yes"
ignore-docstrings="yes"
ignore-imports="yes"
min-similarity-lines=7
[tool.pylint.'SPELLING']
max-spelling-suggestions=4
spelling-store-unknown-words="no"
[tool.pylint.'STRING']
check-str-concat-over-line-jumps="no"
[tool.pylint.'TYPECHECK']
contextmanager-decorators="contextlib.contextmanager"
generated-members="numpy.*,np.*,pyspark.sql.functions,collect_list"
ignore-mixin-members="yes"
ignore-none="yes"
ignore-on-opaque-inference="yes"
ignored-classes="optparse.Values,thread._local,_thread._local,numpy,torch,swagger_client"
ignored-modules="numpy,torch,swagger_client,netCDF4,scipy"
missing-member-hint="yes"
missing-member-hint-distance=1
missing-member-max-choices=1
[tool.pylint.'VARIABLES']
additional-builtins="dbutils"
allow-global-unused-variables="yes"
callbacks= [
"cb_",
"_cb"
]
dummy-variables-rgx="_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_"
ignored-argument-names="_.*|^ignored_|^unused_"
init-import="no"
redefining-builtins-modules="six.moves,past.builtins,future.builtins,builtins,io"
[tool.pylint.'CLASSES']
defining-attr-methods= [
"__init__",
"__new__",
"setUp",
"__post_init__"
]
exclude-protected= [
"_asdict",
"_fields",
"_replace",
"_source",
"_make"
]
valid-classmethod-first-arg="cls"
valid-metaclass-classmethod-first-arg="cls"
[tool.pylint.'DESIGN']
max-args=5
max-attributes=7
max-bool-expr=5
max-branches=12
max-locals=15
max-parents=7
max-public-methods=20
max-returns=6
max-statements=50
min-public-methods=2
[tool.pylint.'IMPORTS']
allow-wildcard-with-all="no"
analyse-fallback-blocks="no"
deprecated-modules="optparse,tkinter.tix"
[tool.pylint.'EXCEPTIONS']
overgeneral-exceptions= [
"BaseException",
"Exception"
]
-13
View File
@@ -1,13 +0,0 @@
from distutils.core import setup
setup(
name='NVCCPlugin',
version='0.0.2',
author='Andrei Nechaev',
author_email='lyfaradey@yahoo.com',
py_modules=['nvcc_plugin', 'v2.v2', 'v1.v1', 'common.helper'],
url='https://github.com/andreinechaev/nvcc4jupyter',
license='LICENSE',
description='Jupyter notebook plugin to run CUDA C/C++ code',
# long_description=open('README.md').read(),
)
-3
View File
@@ -1,8 +1,5 @@
import glob import glob
import os import os
import sys
sys.path.append(".")
import pytest import pytest
from IPython.core.interactiveshell import InteractiveShell from IPython.core.interactiveshell import InteractiveShell
+2 -6
View File
@@ -3,14 +3,10 @@ import math
import os import os
import re import re
import shutil import shutil
import sys
from typing import List from typing import List
import pytest import pytest
sys.path.append(".")
from nvcc4jupyter.plugin import NVCCPlugin from nvcc4jupyter.plugin import NVCCPlugin
@@ -42,9 +38,9 @@ def copy_source_to_group(
@pytest.fixture(autouse=True, scope="function") @pytest.fixture(autouse=True, scope="function")
def before_each(plugin: NVCCPlugin): def before_each(plugin: NVCCPlugin):
shutil.rmtree(plugin.workdir, ignore_errors=True) # before test shutil.rmtree(plugin.workdir, ignore_errors=True) # before test
yield yield
pass # after test pass # after test
def test_save_source(plugin: NVCCPlugin, sample_cuda_code: str) -> None: def test_save_source(plugin: NVCCPlugin, sample_cuda_code: str) -> None: