[build-system] requires = ["flit_core >=2,<4"] build-backend = "flit_core.buildapi" [project] name = "py-project-toml" authors = [ {name = "Daniel Ciborowski", email = "dciborow@microsoft.com"}, ] description = "Sample Python Project for creating a new Python Module" readme = "README.md" classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11" ] requires-python = ">=3.8.1" dynamic = ["version"] [project.optional-dependencies] spark = [ "pyspark>=3.0.0" ] test = [ "bandit[toml]==1.7.5", "black==23.3.0", "check-manifest==0.49", "flake8-bugbear==23.5.9", "flake8-docstrings", "flake8-formatter_junit_xml", "flake8", "flake8-pyproject", "pre-commit==3.3.1", "pylint==2.17.4", "pylint_junit", "pytest-cov==4.0.0", "pytest-mock<3.10.1", "pytest-runner", "pytest==7.3.1", "pytest-github-actions-annotate-failures", "shellcheck-py==0.9.0.2" ] [project.urls] Documentation = "https://github.com/microsoft/python-package-template/tree/main#readme" Source = "https://github.com/microsoft/python-package-template" Tracker = "https://github.com/microsoft/python-package-template/issues" [tool.flit.module] name = "python_package" [tool.bandit] exclude_dirs = ["build","dist","tests","scripts"] number = 4 recursive = true targets = "src" [tool.black] line-length = 120 fast = true [tool.coverage.run] branch = true [tool.coverage.report] fail_under = 100 [tool.flake8] max-line-length = 120 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.pytest.ini_options] addopts = "--cov-report xml:coverage.xml --cov src --cov-fail-under 0 --cov-append -m 'not integration'" pythonpath = [ "src" ] testpaths = "tests" junit_family = "xunit2" markers = [ "integration: marks as integration test", "notebooks: marks as notebook test", "gpu: marks as gpu test", "spark: marks tests which need Spark", "slow: marks tests as slow", "unit: fast offline tests", ] [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*(# )?.*['\"]??" indent-after-paren=4 indent-string=' ' max-line-length=120 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" ]