content: [tool.poetry]
  name = "nautobot_ansible_modules"
  version = "5.16.0"
  description = "Ansible collection to interact with Nautobot's API"
  authors = ["Network to Code <opensource@networktocode.com>"]
  license = "Apache 2.0"
  package-mode = false
  
  [tool.poetry.dependencies]
  python = ">=3.11,<4.0"
  netutils = "^1.2"
  pynautobot = "^2.6.6"
  ansible-core = ">=2.17,<2.19"
  aiohttp = "^3.11.13"
  asyncio = "^3.4.3"
  
  [tool.poetry.dev-dependencies]
  ansible-lint = "*"
  cryptography = "*"
  jinja2 = "*"
  jmespath = "*"
  jsondiff = "*"
  pytest = "*"
  pytest-asyncio = "^0.25.3"
  pytest-mock = "*"
  pytest-xdist = "*"
  pyyaml = "*"
  mock = "*"
  importlib-metadata = "*"
  pylint = "*"
  hypothesis = "*"
  pytest-pythonpath = "*"
  parameterized = "*"
  invoke = "*"
  pytest-forked = "*"
  # Rendering docs to HTML
  mkdocs = "1.6.1"
  # Material for MkDocs theme
  mkdocs-material = "9.5.30"
  # Render custom markdown for version added/changed/remove notes
  markdown-version-annotations = "1.0.1"
  # Render dynamic pages for Ansible Collections documentation
  mkdocs-ansible-collection = "1.1.0"
  towncrier = "^24.8.0"
  toml = "^0.10.2"
  ruff = "*"
  
  [build-system]
  requires = ["poetry-core>=1.0.0"]
  build-backend = "poetry.core.masonry.api"
  
  [tool.pytest.ini_options]
  testpaths = [
      "tests"
  ]
  python_paths = "./"
  addopts = "-vv"
  
  [tool.pylint.messages_control]
  # Line length is enforced by Ruff, so pylint doesn't need to check it.
  # Pylint and Ruff disagree about how to format multi-line arrays; Ruff wins.
  disable = """,
      line-too-long
      """
  
  [tool.ruff]
  line-length = 120
  target-version = "py38"
  
  [tool.ruff.lint]
  select = [
      "D",  # pydocstyle
      "F", "E", "W",  # flake8
      "S",  # bandit
      "I",  # isort
  ]
  ignore = [
      # warning: `one-blank-line-before-class` (D203) and `no-blank-line-before-class` (D211) are incompatible.
      "D203", # 1 blank line required before class docstring
  
      # D212 is enabled by default in google convention, and complains if we have a docstring like:
      # """
      # My docstring is on the line after the opening quotes instead of on the same line as them.
      # """
      # We've discussed and concluded that we consider this to be a valid style choice.
      "D212", # Multi-line docstring summary should start at the first line
      "D213", # Multi-line docstring summary should start at the second line
  
      # Produces a lot of issues in the current codebase.
      "D101", # Missing docstring in public class
      "D102", # Missing docstring in public method
      "D200", # One-line docstring should fit on one line
      "D205", # 1 blank line required between summary line and description
      "D401", # First line of docstring should be in imperative mood
      "D407", # Missing dashed underline after section
      "D416", # Section name ends in colon
      "E501", # Line too long
  
      # Ansible conventions
      "D100", # Missing docstring in public module
      # Conflicts with ansible sanity test "empty-init"
      "D104", # Missing docstring in public package
      "E402", # Module level import not at top of file
  ]
  
  [tool.ruff.lint.pydocstyle]
  convention = "google"
  
  [tool.ruff.lint.per-file-ignores]
  "tests/*" = [
      "D",
      "F",
      "S"
  ]
  "development/*" = [
      "D",
      "F",
      "S"
  ]
  
  [tool.towncrier]
  name = "nautobot-ansible"
  directory = "changes"
  filename = "CHANGELOG.md"
  template = "changes/towncrier_template.j2"
  start_string = "<!-- towncrier release notes start -->\n"
  issue_format = "[#{issue}](https://github.com/nautobot/nautobot-ansible/issues/{issue})"
  
  [[tool.towncrier.type]]
  directory = "added"
  name = "Added"
  showcontent = true
  
  [[tool.towncrier.type]]
  directory = "changed"
  name = "Changed"
  showcontent = true
  
  [[tool.towncrier.type]]
  directory = "dependencies"
  name = "Dependencies"
  showcontent = true
  
  [[tool.towncrier.type]]
  directory = "deprecated"
  name = "Deprecated"
  showcontent = true
  
  [[tool.towncrier.type]]
  directory = "documentation"
  name = "Documentation"
  showcontent = true
  
  [[tool.towncrier.type]]
  directory = "fixed"
  name = "Fixed"
  showcontent = true
  
  [[tool.towncrier.type]]
  directory = "housekeeping"
  name = "Housekeeping"
  showcontent = true
  
  [[tool.towncrier.type]]
  directory = "removed"
  name = "Removed"
  showcontent = true
  
  [[tool.towncrier.type]]
  directory = "security"
  name = "Security"
  showcontent = true
  