Common tooling for Brinkhaus industrial applications
Project description
brinkhaustools
Multi-language infrastructure toolkit for Brinkhaus industrial applications.
What is brinkhaustools?
brinkhaustools provides reusable components for industrial monitoring and control applications in Python, Rust, JavaScript, and C++. All variants share the same version number and are wire-compatible with BrinkhausFleetManager.
Core components (available in all variants):
- App -- central wiring object that connects all components
- ShutdownHandler -- graceful shutdown with signal handling
- Settings -- thread-safe JSON settings with hierarchical dot-notation access
- SelfDiagnosisEngine -- error/warning tracking with numeric codes
- StatusEngine -- periodic status collection from pluggable sources
- HeartbeatEngine -- watchdog for detecting hung threads
- VersionInformation -- CI-generated version metadata
- Fleet management -- HTTPS-based reporting to BrinkhausFleetManager
Additionally, the Python variant includes a RestServer (Flask + Waitress).
Installation
Python
pip install brinkhaustools
# With REST server support:
pip install brinkhaustools[rest]
Requirements: Python >= 3.10. The core has no external dependencies.
Rust
# Cargo.toml
[dependencies]
brinkhaustools = "0.4"
# With fleet management client:
brinkhaustools = { version = "0.4", features = ["fleet"] }
JavaScript
Include js/src/brinkhaus-tools.js from the repository. Zero dependencies, browser-compatible.
git clone https://gitlab.com/brinkhaus/brinkhaustools.git
# Use js/src/brinkhaus-tools.js in your project
C++
# CMakeLists.txt
include(FetchContent)
FetchContent_Declare(
brinkhaustools
GIT_REPOSITORY https://gitlab.com/brinkhaus/brinkhaustools.git
GIT_TAG 0.4.0
SOURCE_SUBDIR cpp
)
FetchContent_MakeAvailable(brinkhaustools)
target_link_libraries(myapp PRIVATE brinkhaustools::brinkhaustools)
Quick Examples
Python
from brinkhaustools.common import App
app = App(
name="my-service",
settings_path="data/settings/settings_main.json",
fleet_config_path="fleetManagementData/config.json",
)
app.start()
app.wait()
Rust
use brinkhaustools::App;
let app = App::builder("my-service")
.settings("data/settings/settings_main.json")
.build();
app.start();
app.wait();
Documentation
Full API reference, guides, and configuration details:
brinkhaus.gitlab.io/brinkhaustools
License
MIT
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 brinkhaustools-0.18.0.tar.gz.
File metadata
- Download URL: brinkhaustools-0.18.0.tar.gz
- Upload date:
- Size: 52.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e60d8da5a0e732a33449bb22800248225413384dfce33a496c607482a3e681a
|
|
| MD5 |
ba4f0009740b8cec7674efc777d8237f
|
|
| BLAKE2b-256 |
529408f824f500e725304d32e267ab8f487974e92bdcc2e0c886d33584ab1433
|
File details
Details for the file brinkhaustools-0.18.0-py3-none-any.whl.
File metadata
- Download URL: brinkhaustools-0.18.0-py3-none-any.whl
- Upload date:
- Size: 39.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42be25d46797d06495c3ad6ef08403bdbd93c93e8d75d163c93061f218333299
|
|
| MD5 |
19dddf729332f6a6cf4cdf849f1787c0
|
|
| BLAKE2b-256 |
61b5f825da7c34d094167188d3053496818a3f7f00478d1a090e311595ebeb72
|