Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,7 @@ Port auto-resolution: if `port=0` (default), uses 443 for TLS, 80 without. Ports

```bash
# Setup: requires uv
uv sync --all-extras --dev
make hooks # Install pre-commit hooks (once after cloning)
make install # Install dev deps and pre-commit hooks

# Daily workflow
make test # pytest
Expand Down
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,11 @@ SCRIPTS := scripts
# Core
# ------------------------------------------------------------------------------

.PHONY: test coverage build
.PHONY: install test coverage build

install: ## Install dev environment and pre-commit hooks
$(UV) sync --all-extras --dev
$(UV) run pre-commit install -f

test: ## Run unit tests
$(UV) run pytest $(TESTS) -v
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
[![PyPI version](https://badge.fury.io/py/ipsdk.svg)](https://badge.fury.io/py/ipsdk)
[![Python Versions](https://img.shields.io/pypi/pyversions/ipsdk.svg)](https://pypi.org/project/ipsdk/)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![Tests](https://github.com/itential/ipsdk/workflows/Run%20CI%20pipeline/badge.svg)](https://github.com/itential/ipsdk/actions)
[![Tests](https://github.com/itential/ipsdk/workflows/CI/badge.svg)](https://github.com/itential/ipsdk/actions)
[![Coverage](https://img.shields.io/badge/coverage-100%25-green)](https://github.com/itential/ipsdk)

> Python SDK for making API calls to Itential Platform and Itential Automation Gateway 4.x.
Expand Down Expand Up @@ -153,8 +153,8 @@ ipsdk.logging.add_sensitive_data_pattern("ssn", r"\d{3}-\d{2}-\d{4}")
## Development

```bash
# Install dependencies
uv sync
# Install dependencies and pre-commit hooks
make install

# Run checks (lint, format, security, tests, license headers)
make ci
Expand All @@ -168,7 +168,7 @@ make security # bandit scan
make license # check GPL headers

# Test across Python 3.10–3.15
uv run tox -p auto
make tox
```

## License
Expand Down
41 changes: 17 additions & 24 deletions docs/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ This project uses `uv` as the Python package manager and build tool. Here are th
## Setup

```bash
# Install dependencies and create virtual environment
$ uv sync
# Install dependencies and pre-commit hooks
$ make install
```

## Testing
Expand All @@ -29,33 +29,24 @@ $ make coverage

### Multi-Version Testing with Tox

The SDK supports Python 3.10, 3.11, 3.12, and 3.13. Use tox to test across all versions:
The SDK supports Python 3.10, 3.11, 3.12, 3.13, 3.14, and 3.15 (beta). Use tox to test across all versions:

```bash
# Run tests across all Python versions
$ uv run tox
$ make tox

# Run tests in parallel (faster)
$ uv run tox -p auto

# Run tests on specific Python version
$ uv run tox -e py310 # Python 3.10
$ make tox-py310

$ uv run tox -e py311 # Python 3.11
$ make tox-py311

$ uv run tox -e py312 # Python 3.12
$ make tox-py312

$ uv run tox -e py313 # Python 3.13
$ make tox-py313

# Run quick tests (no lint/security)
$ uv run tox -e quick

# Run coverage report on Python 3.13
$ make tox-py310 # Python 3.10
$ make tox-py311 # Python 3.11
$ make tox-py312 # Python 3.12
$ make tox-py313 # Python 3.13
$ make tox-py314 # Python 3.14
$ uv run tox -e py315 # Python 3.15 (beta, no make target)

# Run coverage report
$ uv run tox -e coverage
```

Expand Down Expand Up @@ -103,7 +94,7 @@ The project uses **dynamic versioning** from git tags:

## Development Workflow

1. **Setup**: Run `uv sync` to install dependencies and create a virtual environment
1. **Setup**: Run `make install` to install dependencies and pre-commit hooks
2. **Development**: Make your changes to the codebase
3. **Format**: Run `make format` to auto-format code
4. **Testing**: Run tests with `make test` or `uv run pytest tests`
Expand All @@ -122,9 +113,9 @@ The project uses the following development tools:
- **ruff**: Fast Python linter and formatter (30+ rule sets)
- **mypy**: Static type checker
- **bandit**: Security vulnerability scanner
- **tox**: Multi-version Python testing (3.10, 3.11, 3.12, 3.13)
- **pre-commit**: Git hook framework for running checks before each commit
- **tox**: Multi-version Python testing (3.10–3.15)
- **tox-uv**: Tox integration with uv for fast environments
- **q**: Debugging utility

All tools are configured in `pyproject.toml` and can be run through `uv` or the provided Makefile targets.

Expand All @@ -135,7 +126,7 @@ The project uses comprehensive Ruff configuration with 30+ rule sets:
- flake8-bugbear (B), isort (I), pylint (PL)
- Security checks (S), annotations (ANN), async (ASYNC)
- Line length: 88 characters (Black-compatible)
- Target: Python 3.8+ compatibility
- Target: Python 3.10+ compatibility
- Per-file ignores configured for different modules

### Coverage Requirements
Expand All @@ -152,6 +143,8 @@ The SDK officially supports Python >=3.10 and is tested on:
- Python 3.11
- Python 3.12
- Python 3.13
- Python 3.14
- Python 3.15 (beta)

Testing across versions is automated in CI/CD using GitHub Actions matrix testing.

Expand Down