| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- # See PEP 518 for the spec of this file
- # https://www.python.org/dev/peps/pep-0518/
- [project]
- name = "netbox"
- version = "4.6.1"
- requires-python = ">=3.12"
- description = "The premier source of truth powering network automation."
- readme = "README.md"
- license = "Apache-2.0"
- license-files = ["LICENSE.txt"]
- classifiers = [
- "Development Status :: 5 - Production/Stable",
- "Framework :: Django",
- "Natural Language :: English",
- "Programming Language :: Python",
- "Programming Language :: Python :: 3 :: Only",
- "Programming Language :: Python :: 3.12",
- "Programming Language :: Python :: 3.13",
- "Programming Language :: Python :: 3.14",
- ]
- [project.urls]
- Homepage = "https://netboxlabs.com/products/netbox/"
- Documentation = "https://netboxlabs.com/docs/netbox/"
- Source = "https://github.com/netbox-community/netbox"
- Issues = "https://github.com/netbox-community/netbox/issues"
- [tool.coverage.run]
- source = ["netbox/"]
- concurrency = ["multiprocessing"]
- parallel = true
- sigterm = true
- [tool.coverage.report]
- skip_covered = true
- omit = [
- "*/migrations/*",
- "*/tests/*",
- ]
- [tool.pyright]
- include = ["netbox"]
- exclude = [
- "**/node_modules",
- "**/__pycache__",
- ]
- reportMissingImports = true
- reportMissingTypeStubs = false
- [tool.ruff]
- exclude = [
- ".eggs",
- ".git",
- ".pyenv",
- ".pytest_cache",
- ".ruff_cache",
- ".venv",
- ".vscode",
- "__pypackages__",
- "_build",
- "build",
- "dist",
- "netbox/project-static/**",
- "node_modules",
- "site-packages",
- "venv",
- ]
- # Enforce line length and indent-width
- line-length = 120
- indent-width = 4
- # Ignores anything in .gitignore
- respect-gitignore = true
- # Always generate Python 3.12-compatible code
- target-version = "py312"
- [tool.ruff.lint]
- # Pin the effective default rule set used with `preview = true` to match Ruff 0.15.1.
- # Ruff 0.15.2 changed the preview defaults, see https://github.com/astral-sh/ruff/releases/tag/0.15.2
- # Keeping this explicit makes ruff deterministic.
- select = ["E4", "E7", "E9", "F"]
- extend-select = [
- "E1", # pycodestyle errors: indentation-related (e.g., unexpected/missing indent)
- "E2", # pycodestyle errors: whitespace-related (e.g., missing whitespace, extra spaces)
- "E3", # pycodestyle errors: blank lines / spacing around definitions
- "E501", # pycodestyle: line too long (enforced with `line-length` above)
- "W", # pycodestyle warnings (various style warnings, often whitespace/newlines)
- "I", # import sorting (isort-equivalent)
- "RET", # return semantics (flake8-return family: consistent/explicit returns; remove redundant else/assign before return)
- "UP", # pyupgrade: modernize syntax for your target Python (e.g., f-strings, built-in generics, newer stdlib idioms)
- "RUF022", # ruff: enforce sorted `__all__` lists
- ]
- # If you add a rule to `ignore`, please also update the "Linter Exceptions" section in
- # docs/development/style-guide.md.
- ignore = [
- "F403", # pyflakes: `from ... import *` used; unable to detect undefined names
- "F405", # pyflakes: name may be undefined or defined from star imports
- "RET504", # return: unnecessary assignment before `return` (e.g., `x = expr; return x` -> `return expr`)
- "UP032", # pyupgrade: prefer f-strings over `str.format(...)`
- ]
- preview = true
- [tool.ruff.lint.isort]
- known-first-party = [
- "account",
- "circuits",
- "core",
- "dcim",
- "extras",
- "ipam",
- "netbox",
- "tenancy",
- "users",
- "utilities",
- "virtualization",
- "vpn",
- "wireless",
- ]
- [tool.ruff.lint.per-file-ignores]
- "template_code.py" = ["E501"]
- "netbox/netbox/graphql/filter_lookups.py" = ["UP046"] # Strawberry typing: keep `Generic[T]` for now
- "netbox/netbox/graphql/scalars.py" = ["UP007"] # Strawberry scalar typing: `Union[...]` required
- [tool.ruff.format]
- # Use single quotes for strings.
- quote-style = "single"
- # Indent with spaces, rather than tabs.
- indent-style = "space"
- # Enforce UNIX line ending
- line-ending = "lf"
|