content: [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [project]
  name = "metpx-sr3"
  dynamic = ["version"]
  description = 'Subscribe, Acquire, and Re-Advertise (managed multiple hop file transfers)'
  readme = "README.rst"
  requires-python = ">=3.7"
  license = "GPL-2.0-only"
  keywords = ["file transfer"]
  authors = [ 
     { name = "Peter Silva", email = "peter.silva@ssc-spc.gc.ca" },
     { name = "Reid Sunderland", email = "" },
     { name = "André Leblanc",  email = "" },
     { name = "Michel Grenier", email ="" },
     { name = "Greg Linton", email ="" },
     { name = "Cléa Aumont", email ="" },
     { name = "Cody Au", email ="" },
     { name = "Benoit Lapointe", email ="" },
  ]
  
  classifiers = [
    "Development Status :: 4 - Beta",
    "Programming Language :: Python",
    "Programming Language :: Python :: 3.7",
    "Programming Language :: Python :: 3.8",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: Implementation :: CPython",
    "Programming Language :: Python :: Implementation :: PyPy",
  ]
  
  dependencies =[
          "appdirs", "humanfriendly", "humanize", "jsonpickle", "paramiko",
          "psutil >= 5.3.0", "watchdog",
  ]
  
  # NOTE:
  # on Redhat, when building an rpm, need to replace the 
  # python-magic (last two lines of dependencies above )
  # by either nothing (older releases) or *file-magic* (fc39
  #        'file-magic'
  
  [project.scripts]
  sr3 = "sarracenia.sr:main"
  sr3_post = "sarracenia.sr_post:main"
  sr3_rotateLogsManually = "sarracenia.sr_rotateLogsManually:main"
  sr3_tailf = "sarracenia.sr_tailf:main"
  
  # future entry points:
  #sr3_poll="sarracenia.sr_flow:main"
  #sr3_report="sarracenia.sr_flow:main"
  #sr3_watch="sarracenia.sr_flow:main"
  #sr3_winnow="sarracenia.sr_flow:main"
  #sr3_sarra="sarracenia.sr_flow:main"
  #sr3_shovel="sarracenia.sr_flow:main"
  #sr3_sender="sarracenia.sr_flow:main"
  #sr3_subscribe="sarracenia.sr_flow:main"
  
  [project.optional-dependencies]
  
  amqp = [ "amqp" ]
  ftppoll = [ 'dateparser' ]
  mqtt = [ 'paho.mqtt>=1.5.1' ]
  vip = [ 'netifaces' ]
  redis = [ 'redis' ]
  filetypes-redhat = [ 'file-magic' ]
  filetypes = [ 'python-magic' ]
  
  
  [project.urls]
  Documentation = "https://metpx.github.io/sarracenia"
  Issues = "https://github.com/MetPX/sarracenia/issues"
  Source = "https://github.com/MetPX/sarracenia.git"
  
  [tool.hatch.version]
  path = "sarracenia/_version.py"
  
  [tool.hatch.build]
  include = [ "sarracenia" ]
  exclude = [ "tests", "debian" ]
  
  [tool.hatch.envs.default]
  dependencies = [
    "coverage[toml]>=6.5",
    "pytest",
  ]
  [tool.hatch.envs.default.scripts]
  test = "pytest {args:tests}"
  test-cov = "coverage run -m pytest {args:tests}"
  cov-report = [
    "- coverage combine",
    "coverage report",
  ]
  cov = [
    "test-cov",
    "cov-report",
  ]
  
  [[tool.hatch.envs.all.matrix]]
  python = ["3.7", "3.8", "3.9", "3.10", "3.11"]
  
  [tool.hatch.envs.lint]
  detached = true
  dependencies = [
    "black>=23.1.0",
    "mypy>=1.0.0",
    "ruff>=0.0.243",
  ]
  [tool.hatch.envs.lint.scripts]
  typing = "mypy --install-types --non-interactive {args: tests}"
  style = [
    "ruff {args:.}",
    "black --check --diff {args:.}",
  ]
  fmt = [
    "black {args:.}",
    "ruff --fix {args:.}",
    "style",
  ]
  all = [
    "style",
    "typing",
  ]
  
  [tool.black]
  target-version = ["py37"]
  line-length = 120
  skip-string-normalization = true
  
  [tool.ruff]
  target-version = "py37"
  line-length = 120
  select = [
    "A",
    "ARG",
    "B",
    "C",
    "DTZ",
    "E",
    "EM",
    "F",
    "FBT",
    "I",
    "ICN",
    "ISC",
    "N",
    "PLC",
    "PLE",
    "PLR",
    "PLW",
    "Q",
    "RUF",
    "S",
    "T",
    "TID",
    "UP",
    "W",
    "YTT",
  ]
  ignore = [
    # Allow non-abstract empty methods in abstract base classes
    "B027",
    # Allow boolean positional values in function calls, like `dict.get(... True)`
    "FBT003",
    # Ignore checks for possible passwords
    "S105", "S106", "S107",
    # Ignore complexity
    "C901", "PLR0911", "PLR0912", "PLR0913", "PLR0915",
  ]
  unfixable = [
    # Don't touch unused imports
    "F401",
  ]
  
  [tool.ruff.isort]
  known-first-party = ["temporary"]
  
  [tool.ruff.flake8-tidy-imports]
  ban-relative-imports = "all"
  
  [tool.ruff.per-file-ignores]
  # Tests can use magic values, assertions, and relative imports
  "tests/**/*" = ["PLR2004", "S101", "TID252"]
  
  [tool.coverage.run]
  source_pkgs = ["temporary", "tests"]
  branch = true
  parallel = true
  omit = [
    "src/temporary/__about__.py",
  ]
  
  [tool.coverage.paths]
  temporary = ["src/temporary", "*/temporary/src/temporary"]
  tests = ["tests", "*/temporary/tests"]
  
  [tool.coverage.report]
  exclude_lines = [
    "no cov",
    "if __name__ == .__main__.:",
    "if TYPE_CHECKING:",
  ]
  