content: [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*(# )?.*['\"]?<?https?://\\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"
  ]
  