content: [tool.poetry]
  name = "hier-config"
  version = "3.2.2"
  description = "A network configuration query and comparison library, used to build remediation configurations."
  packages = [
      { include="hier_config", from="."},
  ]
  authors = [
      "Andrew Edwards <edwards.andrew@heb.com>",
      "James Williams <james.williams@networktocode.com",
      "Jan Brooks <jan.brooks@rackspace.com"
  ]
  license = "MIT"
  classifiers = [
      "Development Status :: 5 - Production/Stable",
      "Intended Audience :: Developers",
      "Intended Audience :: Information Technology",
      "Intended Audience :: System Administrators",
      "Intended Audience :: Telecommunications Industry",
      "License :: OSI Approved :: MIT License",
      "Programming Language :: Python :: 3.9",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3.13",
      "Natural Language :: English",
      "Topic :: Software Development :: Libraries :: Python Modules",
      "Topic :: System :: Networking",
  ]
  [tool.poetry.dependencies]
  python = ">=3.9.0,<4.0"
  pydantic = "^2.9"
  
  [tool.poetry.group.dev.dependencies]
  flynt = "*"
  mkdocs = "*"
  mkdocs-include-markdown-plugin = "*"
  mypy = "*"
  pylint = "*"
  pylint-pydantic = "*"
  pyright = "*"
  pytest = "*"
  pytest-cov = "*"
  pytest-profiling = "*"
  pytest-runner = "*"
  pytest-xdist = "*"
  ruff = "*"
  typer = "*"
  types-pyyaml = "*"
  yamllint = "*"
  
  
  [build-system]
  requires = ["poetry-core>=1.0.0"]
  build-backend = "poetry.core.masonry.api"
  
  
  [tool.pyright]
  typeCheckingMode = "strict"
  
  
  [tool.pylint.message_control]
  load-plugins = [
      "pylint.extensions.bad_builtin",
      "pylint.extensions.broad_try_clause",
      "pylint.extensions.check_elif",
      "pylint.extensions.comparison_placement",
      "pylint.extensions.confusing_elif",
      "pylint.extensions.consider_ternary_expression",
      "pylint.extensions.dict_init_mutate",
      "pylint.extensions.dunder",
      "pylint.extensions.eq_without_hash",
      "pylint.extensions.for_any_all",
      "pylint.extensions.overlapping_exceptions",
      "pylint.extensions.overlapping_exceptions",
      "pylint.extensions.redefined_loop_name",
      "pylint.extensions.set_membership",
      "pylint.extensions.typing",
      "pylint_pydantic",
  ]
  disable = [
      "consider-alternative-union-syntax",
      "duplicate-code",  # Enable this at some point in the future
      "fixme",  # Covered by ruff FIX002
      "import-outside-toplevel", # Covered by ruff PLC0415
      "line-too-long",  # Whatever ruff format determines the line should look like is fine
      "missing-class-docstring",
      "missing-function-docstring",
      "missing-module-docstring",
      "protected-access",  # Covered by ruff SLF001
      "redefined-loop-name",  # Covered by ruff PLW2901
      "too-many-arguments",  # Covered by ruff PLR0913
      "too-many-return-statements",  # Covered by ruff PLR0911
      "too-many-locals",  # Coverred by ruff PLR0914
      "too-many-public-methods",  # Coverred by ruff PLR0904
  ]
  
  
  [tool.mypy]
  strict = true
  pretty = true
  show_column_numbers = true
  show_error_codes = true
  show_error_context = true
  warn_unreachable = true
  plugins = [
      "pydantic.mypy"
  ]
  
  
  [tool.ruff]
  line-length = 88
  target-version = "py39"
  
  [tool.ruff.format]
  docstring-code-format = true
  
  [tool.ruff.lint]
  select = ["ALL"]
  preview = true
  ignore = [
      # The below checks we might never enable
      "B019",  # using lru_cache can cause memory leaks
      "COM812",  # DO NOT REMOVE: conflicts with ruff formater
      "CPY001", # Missing copyright notice at top of file
      "D213",  # DO NOT REMOVE: multi-line-summary-second-line is incompatible with D212(multi-line-summary-first-line)
      "E501",  # line too long
      "EXE002",  # DO NOT REMOVE: The file is executable but no shebang is present
      "ISC001",  # DO NOT REMOVE: The following rule may cause conflicts when used with the formatter
      "PLR2004",  # Magic value used in comparison
      # The below checks should eventually be enabled
      "D100",  # Missing docstring in public module
      "D101",  # Missing docstring in public class
      "D102",  # Missing docstring in public method
      "D103",  # Missing docstring in public function
      "D104",  # Missing docstring in public package
      "D105",  # Missing docstring in magic method
      "D107",  # Missing docstring in `__init__`
      "D200",  # One-line docstring should fit on one line
      "D203",  # 1 blank line required before class docstring - Incompatible with D211
      "D205",  # 1 blank line required between summary line and description
      "D401",  # First line of docstring should be in imperative mood
      "DOC201",  # `return` is not documented in docstring
      "DOC402",  # `yield` is not documented in docstring
      "DOC501",  # Raised exception missing from docstring
      # These can be re-enabled once we deprecate Python 3.9
      "FA100",  # future-rewritable-type-annotation
      "UP007",  # non-pep604-annotation
      "UP045",  # Use `X | None` for type annotations
  ]
  
  [tool.ruff.lint.flake8-pytest-style]
  parametrize-values-type = "tuple"
  
  [tool.ruff.lint.per-file-ignores]
  "**/tests/*" = ["PLC2701", "S101"]
  