Metadata-Version: 2.4
Name: nsot
Version: 2.14.2
Summary: Network Source of Truth (IP Address Management).
Author-email: Jathan McCollum <jathan@gmail.com>, "Gary M. Josack" <gary@dropbox.com>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/jathanism/nsot
Project-URL: Repository, https://github.com/jathanism/nsot
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Framework :: Django
Classifier: Framework :: Django :: 5.2
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Networking
Requires-Python: <3.13,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE.md
Requires-Dist: cryptography>=3.4
Requires-Dist: dj-static>=0.0.6
Requires-Dist: django~=5.2.0
Requires-Dist: django-extensions~=4.1
Requires-Dist: django-filter~=24.3
Requires-Dist: django-guardian~=3.2.0
Requires-Dist: django-macaddress~=1.9.0
Requires-Dist: djangorestframework~=3.16.0
Requires-Dist: drf-extensions~=0.8.0
Requires-Dist: drf-flex-fields>=1.0.2
Requires-Dist: drf-nested-routers~=0.95.0
Requires-Dist: gunicorn>=20.0.4
Requires-Dist: inflection>=0.5.1
Requires-Dist: ipython>=8.0
Requires-Dist: itypes>=1.1.0
Requires-Dist: logan~=0.7.2
Requires-Dist: netaddr<2,>=1.0.0
Requires-Dist: packaging>=21.0
Requires-Dist: requests>=2.28.0
Requires-Dist: static3>=0.6.1
Requires-Dist: uritemplate>=3.0
Requires-Dist: urllib3>=2.0
Provides-Extra: dev
Requires-Dist: attrs>=22.0; extra == "dev"
Requires-Dist: ipdb>=0.13; extra == "dev"
Requires-Dist: mrproxy~=0.4.0; extra == "dev"
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-django>=4.5; extra == "dev"
Requires-Dist: python-semantic-release>=9.0.0; extra == "dev"
Requires-Dist: PyYAML>=6.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=5.0; extra == "docs"
Requires-Dist: sphinx-autobuild>=2021.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=1.0; extra == "docs"
Dynamic: license-file

# NSoT

![Network Source of Truth](https://raw.githubusercontent.com/jathanism/nsot/main/docs/_static/logo_128.png)

[![CI](https://github.com/jathanism/nsot/actions/workflows/ci.yml/badge.svg)](https://github.com/jathanism/nsot/actions/workflows/ci.yml)
[![Documentation Status](https://readthedocs.org/projects/nsot/badge/?version=latest&style=flat)](https://nsot.readthedocs.io/)
[![PyPI Status](https://img.shields.io/pypi/v/nsot.svg?style=flat)](https://pypi.org/project/nsot/)

Network Source of Truth (NSoT) is a source of truth database and repository for
tracking inventory and metadata of network entities to ease management and
automation of network infrastructure.

NSoT is an API-first application that provides a REST API for managing IP
addresses (IPAM), network devices, and network interfaces.

NSoT was originally created at [Dropbox](https://github.com/dropbox/nsot) and
is now maintained by [Jathan McCollum](https://github.com/jathanism).

## What's New in v2.0.0

- Upgraded to **Django 5.2** and **Django REST Framework 3.16**
- Requires **Python 3.10+** (dropped Python 2.7 / 3.x < 3.10)
- Modern tooling: **uv** for dependency management, **ruff** for linting/formatting
- CI/CD via **GitHub Actions** with **python-semantic-release**

## Installation

```bash
pip install nsot
```

Or with [uv](https://docs.astral.sh/uv/):

```bash
uv add nsot
```

## Quick Start

```bash
# Initialize the config (~/.nsot/nsot.conf.py)
nsot-server init

# Create a superuser
nsot-server createsuperuser --email admin@localhost

# Start the server on 8990/tcp
nsot-server start
```

Then browse the API at http://localhost:8990/api/ or the admin at http://localhost:8990/admin/.

## Development

```bash
git clone https://github.com/jathanism/nsot.git
cd nsot
uv sync --all-extras

# Run tests
NSOT_API_VERSION=1.0 uv run pytest -vv tests/

# Lint / format
uv run ruff check nsot/ tests/
uv run ruff format nsot/ tests/
```

## Resources

- [Documentation](https://nsot.readthedocs.io/)
- [Python API client / CLI utility (pyNSoT)](https://pynsot.readthedocs.io/)
- [GitHub Issues](https://github.com/jathanism/nsot/issues)
