Metadata-Version: 2.4
Name: netbox-sdk
Version: 0.0.6
Summary: SDK-first NetBox toolkit with Python SDK, CLI, and Textual TUIs
Author-email: Emerson Felipe <emerson@netdevopsbr.com>
Maintainer-email: Emerson Felipe <emerson@netdevopsbr.com>
Project-URL: Homepage, https://github.com/emersonfelipesp/netbox-sdk
Project-URL: Documentation, https://emersonfelipesp.github.io/netbox-sdk/
Project-URL: Repository, https://github.com/emersonfelipesp/netbox-sdk
Project-URL: Issues, https://github.com/emersonfelipesp/netbox-sdk/issues
Project-URL: Changelog, https://github.com/emersonfelipesp/netbox-sdk/releases
Keywords: netbox,terminal,netbox-integration,tui,cli,terminal,api,integration
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet
Classifier: Topic :: System :: Networking
Classifier: Topic :: System :: Systems Administration
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: aiohttp>=3.9.0
Requires-Dist: pydantic>=2.0
Requires-Dist: email-validator>=2.2.0
Requires-Dist: rich>=13.7.0
Requires-Dist: pyyaml>=6.0.0
Provides-Extra: sdk
Provides-Extra: tui
Requires-Dist: textual>=0.62.0; extra == "tui"
Provides-Extra: cli
Requires-Dist: typer>=0.12.0; extra == "cli"
Provides-Extra: demo
Requires-Dist: playwright>=1.52.0; extra == "demo"
Provides-Extra: all
Requires-Dist: textual>=0.62.0; extra == "all"
Requires-Dist: typer>=0.12.0; extra == "all"
Requires-Dist: playwright>=1.52.0; extra == "all"
Provides-Extra: dev
Requires-Dist: pre-commit>=4.0.0; extra == "dev"
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
Requires-Dist: pytest-timeout>=2.3.0; extra == "dev"
Requires-Dist: pytest-xdist>=3.5.0; extra == "dev"
Requires-Dist: ruff>=0.11.0; extra == "dev"
Requires-Dist: textual>=0.62.0; extra == "dev"
Requires-Dist: typer>=0.12.0; extra == "dev"
Requires-Dist: playwright>=1.52.0; extra == "dev"
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.5; extra == "docs"
Dynamic: license-file

# netbox-sdk

`netbox-sdk` is an SDK-first NetBox toolkit with terminal interfaces built on
one shared runtime:

- `netbox_cli` — Typer command-line interface
- `netbox_tui` — Textual terminal applications
- `netbox_sdk` — standalone REST API SDK shared by both

Published package names remain:

- `netbox-sdk`
- `netbox-console`

## Quick Start with the Demo Instance

Install:

```bash
pip install 'netbox-sdk[all]'
```

Authenticate against the public demo instance:

```bash
nbx demo init
```

Try a few commands:

```bash
nbx demo dcim devices list
nbx demo ipam prefixes list
nbx demo tui
nbx demo dev tui
```

## Install

Minimal SDK only:

```bash
pip install netbox-sdk
```

CLI:

```bash
pip install 'netbox-sdk[cli]'
```

TUI:

```bash
pip install 'netbox-sdk[tui]'
```

Everything:

```bash
pip install 'netbox-sdk[all]'
```

With `uv` as a user tool:

```bash
uv tool install --force 'netbox-sdk[cli]'
```

Developer checkout:

```bash
git clone https://github.com/emersonfelipesp/netbox-sdk.git
cd netbox-sdk
uv sync --dev --extra cli --extra tui --extra demo
uv run nbx --help
```

## Common Commands

```bash
nbx init
nbx dcim devices list
nbx dcim devices get --id 1
nbx tui
nbx dev tui
nbx cli tui
nbx logs
```

## Architecture

- `netbox_sdk` owns config, auth, caching, schema parsing, request resolution, shared formatting, and demo helpers.
- `netbox_cli` owns the `nbx` command tree and lazy-loads `netbox_tui` where needed.
- `netbox_tui` owns all Textual apps, themes, widgets, and TCSS.

## Contributor Workflow

```bash
uv sync --dev --extra cli --extra tui --extra demo
uv run pre-commit install --hook-type pre-commit --hook-type pre-push
uv run pre-commit run --all-files
uv run pytest
```

## Release Process

Use a single GitHub release title pattern for every release:

- `netbox-sdk vX.Y.Z`

Example:

```bash
gh release create v0.0.5 \
  --title "netbox-sdk v0.0.5"
```
