Python API library for WATS (Web-based Automated Test System) - manufacturing test data management
Project description
pyWATS
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.8 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
│ │ ├── models/ # Pydantic data models
│ │ ├── modules/ # High-level API modules
│ │ └── rest_api/ # REST API wrappers
│ └── 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
- Architecture Overview - System design and layered architecture
- Report Module - Test reports and factory methods
- Product Module - Product/BOM management
- Production Module - Serial number and unit tracking
Testing
# Run all tests
pytest
# Run with coverage
pytest --cov=src --cov-report=html
Contributing
This project is maintained by Virinco AS.
License
MIT License - see LICENSE for details.
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pywats_api-0.1.0b2.tar.gz.
File metadata
- Download URL: pywats_api-0.1.0b2.tar.gz
- Upload date:
- Size: 353.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
008ca6b932564009c34c9a26032ff8a1b63ffa8d37e92ba0c306f557f7f7fdc3
|
|
| MD5 |
fccd02b0150b7a54f52eb9c07abbc184
|
|
| BLAKE2b-256 |
9d4c2fdf7963b83406d84ed629fdfd7ebdf5f91ed5eeb3789bfcaf0480be69a7
|
File details
Details for the file pywats_api-0.1.0b2-py3-none-any.whl.
File metadata
- Download URL: pywats_api-0.1.0b2-py3-none-any.whl
- Upload date:
- Size: 457.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50edd1fd27148ca9f7048743fa8230f93ffc25992e146d8372a8f805add66307
|
|
| MD5 |
375f592d0716bc4edc4800fe14dbc1d0
|
|
| BLAKE2b-256 |
4dfe862fae27279831b5e083a045cba7e7e3359c81b5605235f87666b7f782af
|