Skip to main content

pypi versions License: MIT boltwood/test

Boltwood

Modern, type-safe, zero-dependency python library for controlling the Boltwood III observing conditions sensor.

Installation

uv add boltwood

or

using your preferred environment / package manager of choice, e.g., poetry, conda or pip:

pip install boltwood
poetry add boltwood
conda install boltwood

Usage

To use the conditions monitor, you need to create an instance of the BoltwoodIIIConditionsMonitorDeviceInterface class with the appropriate parameters.

Below is a simple example of how to set up and use the Boltwood III Conditions Monitor:

from boltwood import (
    BoltwoodIIIConditionsMonitorDeviceInterface,
    BoltwoodIIIConditionsMonitorDeviceParameters,
)

# Define the parameters for the BoltwoodIII monitor device:
params: BoltwoodIIIConditionsMonitorDeviceParameters = BoltwoodIIIConditionsMonitorDeviceParameters(
    name="Boltwood III Conditions Monitor",
    description="Boltwood III Conditions Monitor",
    port="/dev/ttyUSB0",  # Replace with your actual port
    baudrate=9600,
    latitude=33.87047,
    longitude=-118.24708,
    elevation=0.0,
    did="0", # Device ID
    vid="067b",  # Vendor ID
    pid="23a3",  # Product ID
)

# Create a new Boltwood III Conditions Monitor device interface:
monitor = BoltwoodIIIConditionsMonitorDeviceInterface(
    id=0,
    params=params,
)

# Initialise the monitor:
monitor.initialise()

# Get the current status of the monitor:
status = monitor.get_status()

...

To use the safety monitor, you can create an instance of the BoltwoodIIISafetyMonitorDeviceInterface class in a similar way:

from boltwood import (
    BoltwoodIIISafetyMonitorDeviceInterface,
    BoltwoodIIISafetyMonitorDeviceParameters,
)

# Define the parameters for the BoltwoodIII safety monitor device:
params: BoltwoodIIISafetyMonitorDeviceParameters = BoltwoodIIISafetyMonitorDeviceParameters(
    name="Boltwood III Safety Monitor",
    description="Boltwood III Safety Monitor",
    port="/dev/ttyUSB0",  # Replace with your actual port
    baudrate=9600,
    did="0", # Device ID
    vid="067b",  # Vendor ID
    pid="23a3",  # Product ID
)

# Create a new Boltwood III Safety Monitor device interface:
safety_monitor = BoltwoodIIISafetyMonitorDeviceInterface(
    id=0,
    params=params,
)

# Initialise the safety monitor:
safety_monitor.initialise()

# Get the current status of the safety monitor:
status = safety_monitor.get_status()

...

As the boltwood instance is fully typed, you can use your IDE's autocompletion to see all the available methods and properties.

We have also provided further usage examples in the examples directory.

Milestones

  • Type-safe modern 3.6+ Python
  • Fully unit tested
  • Simpler API (modelled around the ASCOM Alpaca API)
  • Integration testing with HIL testing (hardware-in-the-loop)
  • Zero-external dependencies (no numpy, astropy etc for portability)
  • Example API usage
  • Fully supported Observing Conditions Sensor operations
  • Fully supported Safety Monitor operations
  • Fully supported Alert Threshold operations
  • ASCOM Alpaca APIs w/Fast API

Disclaimer

This project is not affiliated with Diffraction Limited in any way. It is a community-driven project. All trademarks and logos are the property of their respective owners.

License

This project is licensed under the terms of the MIT license.

Metadata

Release files for boltwood 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for boltwood 0.3.0
File Size Uploaded
boltwood-0.3.0.tar.gz 39.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for boltwood 0.3.0
File Interpreter ABI Platform
boltwood-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 61.7 kB

Release files / boltwood-0.3.0.tar.gz

Download URL boltwood-0.3.0.tar.gz
Size 39.0 kB
Tags Source
SHA-256 checksum
How to use checksums
8db3d932dd5e3f7ee6c78dc23822a8e360d1b7ab72d5cc4761d53bebeb50639e
BLAKE2b-256 checksum
How to use checksums
d4a8ebf4e1baafb7835590e5e95a62549e550a5e633901eec9fde34b914f1f9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 17, 2026.

Transparency log

Release files / boltwood-0.3.0-py3-none-any.whl

Download URL boltwood-0.3.0-py3-none-any.whl
Size 22.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e9c47bbdd665fc052295a86da78189cca3ec24aa717976e94e0a2ff31fdf79ab
BLAKE2b-256 checksum
How to use checksums
cd6ce7303c6d4618a4a9e8a82b988a76bdf8b56735d8bf0993716efe9ced8232
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page