Software Development Kit and CLI for BioPro desktop plugins.
Project description
🔌 BioPro SDK
The Software Development Kit (SDK) and Command-Line Interface (CLI) for building, validating, and signing plugins for the BioPro desktop scientific suite.
🚀 Key Features
- Decoupled Architecture: Build and test PyQt6-based scientific plugins independently of the main desktop app.
- Fail-Safe Dynamic Theme Fallbacks: Visual components automatically load custom HSL-tailored colors when running standalone inside CI/CD test gates or external visualizers.
- Merkle-Tree Cryptographic Integrity: Built-in Ed25519 signing and verification tools to secure user environments against remote execution and tampering.
- PyPI-Ready Packaging: Complete declarative
pyproject.tomlconfig, built to publish natively under thebiopro-sdkpackage.
🛠️ Installation
Install the SDK directly into your plugin's virtual environment:
pip install biopro-sdk
(Or during development, install in editable mode):
git clone https://github.com/KalaimaranB/BioPro-SDK.git
cd BioPro-SDK
pip install -e .
📦 Creating a Custom BioPro Plugin
To build a valid plugin, implement the BioProPlugin interface and declare your entrypoints.
1. manifest.json
Every plugin must include a manifest file in its root directory:
{
"id": "my_custom_plugin",
"name": "My Custom Plugin",
"version": "1.0.0",
"author": "Dr. Kalaimaran",
"description": "High-performance scientific analysis plugin.",
"category": "analysis",
"min_core_version": "1.0.0",
"entrypoint": "plugin:MyPluginClass"
}
2. plugin.py
from PyQt6.QtWidgets import QWidget, QVBoxLayout, QLabel
from biopro_sdk.core.interfaces import BioProPlugin
from biopro_sdk.ui import PrimaryButton
class MyPluginClass(BioProPlugin):
"""A professional-grade BioPro plugin."""
def initialize(self) -> None:
self.logger.info("Initializing custom plugin...")
def create_panel(self, parent=None) -> QWidget:
panel = QWidget(parent)
layout = QVBoxLayout(panel)
title = QLabel("Welcome to Custom Analysis Panel")
btn = PrimaryButton("Execute Step")
layout.addWidget(title)
layout.addWidget(btn)
return panel
🛡️ Cryptographic Trust Architecture
BioPro implements a professional-grade Chain of Trust to protect laboratory environments:
[ Root Authority ] (Hardcoded Core Key)
│
▼ (signs)
[ Developer Key ] (Dev Certificate)
│
▼ (signs)
[ Plugin Manifest ] (Ed25519 Signature + Merkle-Tree Hashes)
1. Generate Your Cryptographic Identity
biopro-sdk setup-identity
- Local Private Key:
~/.biopro/dev_private_key.pem - Developer Certificate:
~/.biopro/dev_cert.bin
2. Sign Your Plugin payload
Calculates Merkle-hashes for all your files recursively, excludes development directories automatically, updates manifest.json, and writes signature.bin:
biopro-sdk sign <path/to/plugin>
3. Modularity Compliance Check
Verify your plugin matches QA and security standards:
biopro-sdk evaluate <path/to/plugin>
📘 Standalone Preview Support
Since the SDK decouples all theme components from the desktop core using robust try-except fallbacks, you can instantiate and preview components standalone in development:
import sys
from PyQt6.QtWidgets import QApplication
from biopro_sdk.ui import PrimaryButton, WizardPanel
app = QApplication(sys.argv)
widget = WizardPanel() # Renders beautifully even without the main app!
widget.show()
sys.exit(app.exec())
📄 License
This project is licensed under the MIT License.
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 biopro_sdk-1.1.0.tar.gz.
File metadata
- Download URL: biopro_sdk-1.1.0.tar.gz
- Upload date:
- Size: 57.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0aa736adacf658a91929262e9c809c885591106eb9d6a5aec8663713b40792b8
|
|
| MD5 |
3b823f5ab486abb71e5a74d8c15dda33
|
|
| BLAKE2b-256 |
960c04a039eae70809ec397f5130bb4b37418f5608643bf4ac2dd6f072654934
|
Provenance
The following attestation bundles were made for biopro_sdk-1.1.0.tar.gz:
Publisher:
publish.yml on KalaimaranB/BioPro-SDK
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
biopro_sdk-1.1.0.tar.gz -
Subject digest:
0aa736adacf658a91929262e9c809c885591106eb9d6a5aec8663713b40792b8 - Sigstore transparency entry: 1555409107
- Sigstore integration time:
-
Permalink:
KalaimaranB/BioPro-SDK@f0a420a4a928ae6e1faab8865614299238c743fd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/KalaimaranB
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f0a420a4a928ae6e1faab8865614299238c743fd -
Trigger Event:
push
-
Statement type:
File details
Details for the file biopro_sdk-1.1.0-py3-none-any.whl.
File metadata
- Download URL: biopro_sdk-1.1.0-py3-none-any.whl
- Upload date:
- Size: 50.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0e878fe22f984a246ee3073d8502d52c40fdd7a6101ad37f1acd0c6abfcde41
|
|
| MD5 |
cf8789f53141a2c7778aa3298528961b
|
|
| BLAKE2b-256 |
4c5bfcc1493049cd988791a560bf7664ce8c2fe207203fcb8f49acbe4117ed95
|
Provenance
The following attestation bundles were made for biopro_sdk-1.1.0-py3-none-any.whl:
Publisher:
publish.yml on KalaimaranB/BioPro-SDK
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
biopro_sdk-1.1.0-py3-none-any.whl -
Subject digest:
b0e878fe22f984a246ee3073d8502d52c40fdd7a6101ad37f1acd0c6abfcde41 - Sigstore transparency entry: 1555409115
- Sigstore integration time:
-
Permalink:
KalaimaranB/BioPro-SDK@f0a420a4a928ae6e1faab8865614299238c743fd -
Branch / Tag:
refs/heads/main - Owner: https://github.com/KalaimaranB
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f0a420a4a928ae6e1faab8865614299238c743fd -
Trigger Event:
push
-
Statement type: