Skip to main content

Python API library for WATS (Web-based Automated Test System) - manufacturing test data management

Project description

PyWATS

PyPI version Python 3.10+ License: MIT

A Python library for interacting with the WATS (Web-based Automated Test System) API.

⚠️ Beta Release: This is a beta version. The API is stabilizing but may have changes before 1.0.

Requirements

  • Python 3.10 or later
  • WATS Server 2025.3.9.824 or later

Features

  • PyWATS Library - Core API library for WATS integration

    • Product management
    • Asset management
    • Report creation and submission
    • Production/serial number management
    • RootCause ticket system
    • Software distribution
    • Statistics and analytics
  • PyWATS Client - Desktop and headless client application

    • Connection management
    • Converter configuration
    • Report queue management
    • GUI Mode: Qt-based desktop application (Windows, macOS, Linux)
    • Headless Mode: CLI and HTTP API for servers, Raspberry Pi, embedded systems

Installation

From PyPI (Recommended)

# Install core API library only
pip install pywats-api

# Install with GUI client (requires Qt)
pip install pywats-api[client]

# Install headless client (no Qt - for Raspberry Pi, servers)
pip install pywats-api[client-headless]

# Install with MCP server (for AI assistant integration)
pip install pywats-api[mcp]

From Source (Development)

# Clone the repository
git clone https://github.com/olreppe/pyWATS.git
cd pyWATS

# Create virtual environment
python -m venv .venv
.venv\Scripts\activate  # Windows
source .venv/bin/activate  # Linux/Mac

# Install in development mode
pip install -e ".[dev]"

Configuration

Create a configuration with your WATS credentials:

from pywats import pyWATS

api = pyWATS(
    base_url="https://your-server.wats.com",
    token="your_base64_encoded_token"
)

Or use environment variables:

WATS_BASE_URL=https://your-server.wats.com
WATS_AUTH_TOKEN=your_base64_encoded_token

Quick Start

from pywats import pyWATS, WATSFilter

# Initialize API
api = pyWATS(
    base_url="https://your-server.wats.com",
    token="your_token"
)

# Test connection
if api.test_connection():
    print(f"Connected! Server version: {api.get_version()}")

# Get products
products = api.product.get_products()
for p in products:
    print(f"{p.part_number}: {p.name}")

# Query recent reports
filter = WATSFilter(top_count=10)
headers = api.report.query_uut_headers(filter)

Enable Debug Logging

from pywats import pyWATS, enable_debug_logging

# Quick debug mode - shows all library operations
enable_debug_logging()

# Or configure logging your way
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('pywats').setLevel(logging.DEBUG)

# Now use the API with detailed logging
api = pyWATS(base_url="...", token="...")

See LOGGING_STRATEGY.md for comprehensive logging documentation.

Running the GUI Client

python -m pywats_client

GUI Configuration

The GUI supports modular tab configuration and logging control:

  • Tab Visibility: Show/hide tabs (Software, SN Handler, etc.) based on your needs
  • Logging Integration: Automatic PyWATS library logging when debug mode is enabled
  • Multiple Instances: Run multiple client instances with separate configurations

See GUI Configuration Guide for detailed setup instructions.

Running Headless (Raspberry Pi, Servers)

For systems without display or Qt support:

# Initialize configuration
pywats-client config init

# Test connection
pywats-client test-connection

# Run service with HTTP control API
pywats-client start --api --api-port 8765

# Run as daemon (Linux)
pywats-client start --daemon

CLI Commands

pywats-client config show          # Show configuration
pywats-client config set key value # Set config value
pywats-client status               # Show service status
pywats-client converters list      # List converters

HTTP Control API

When running with --api, manage the service remotely:

curl http://localhost:8765/status    # Get status
curl http://localhost:8765/config    # Get configuration
curl -X POST http://localhost:8765/restart  # Restart services

See Headless Operation Guide for complete documentation.

Project Structure

pyWATS/
├── src/
│   ├── pywats/              # Core library
│   │   ├── domains/         # Domain models and services
│   │   ├── core/            # HTTP client, exceptions, station
│   │   ├── models/          # Report models (UUT/UUR)
│   └── pywats_client/       # Client application
│       ├── core/            # Core client functionality
│       ├── gui/             # Qt GUI components (optional)
│       ├── control/         # Headless control (CLI, HTTP API)
│       └── services/        # Background services
├── converters/              # User converter plugins
├── docs/                    # Documentation
│   ├── api_specs/           # OpenAPI specifications
│   ├── examples/            # Usage examples
│   └── gui_screens/         # GUI screenshots
├── pyproject.toml           # Project configuration
└── requirements.txt         # Dependencies

Documentation

Official Documentation

Complete guides shipped with the package:

Domain API Reference

Client Documentation

Additional Resources

Documentation available in the GitHub repository (not shipped with package):

Testing

# Run all tests
pytest

# Run with coverage
pytest --cov=src --cov-report=html

Contributing

This project is maintained by Virinco AS.

For Maintainers: Releasing a New Beta Version

There is only ONE command to release:

.\scripts\bump.ps1

See RELEASE.md for complete details. Never manually edit versions or create tags.

License

MIT License - see LICENSE for details.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pywats_api-0.1.0b27.tar.gz (505.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pywats_api-0.1.0b27-py3-none-any.whl (510.9 kB view details)

Uploaded Python 3

File details

Details for the file pywats_api-0.1.0b27.tar.gz.

File metadata

  • Download URL: pywats_api-0.1.0b27.tar.gz
  • Upload date:
  • Size: 505.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pywats_api-0.1.0b27.tar.gz
Algorithm Hash digest
SHA256 6acd4f91f8e477b3f7ec7f586411ebc9c5cfde06c231108991103ef2d5fa40ed
MD5 a6cf83b359cb78b4e0501b37ecb50a79
BLAKE2b-256 aa9ad184606950a2b371d3cf15cc0842e9e469ee947ccc8b1c8be96c8a35dbad

See more details on using hashes here.

Provenance

The following attestation bundles were made for pywats_api-0.1.0b27.tar.gz:

Publisher: publish.yml on olreppe/pyWATS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pywats_api-0.1.0b27-py3-none-any.whl.

File metadata

  • Download URL: pywats_api-0.1.0b27-py3-none-any.whl
  • Upload date:
  • Size: 510.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pywats_api-0.1.0b27-py3-none-any.whl
Algorithm Hash digest
SHA256 10a1e0da4620d084d03a4cec8eef81be28d22b34006dc013511ea8676404fd65
MD5 c21c01bfdb8c4c6cb0683aec03fe797b
BLAKE2b-256 4e3ac6efea32384139f7287b1cf66ccadb1140dab7ce01fe479bd7ac24076971

See more details on using hashes here.

Provenance

The following attestation bundles were made for pywats_api-0.1.0b27-py3-none-any.whl:

Publisher: publish.yml on olreppe/pyWATS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page