Skip to main content

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.toml config, built to publish natively under the biopro-sdk package.

🛠️ 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


Download files

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

Source Distribution

biopro_sdk-1.1.1.tar.gz (57.5 kB view details)

Uploaded Source

Built Distribution

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

biopro_sdk-1.1.1-py3-none-any.whl (50.7 kB view details)

Uploaded Python 3

File details

Details for the file biopro_sdk-1.1.1.tar.gz.

File metadata

  • Download URL: biopro_sdk-1.1.1.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

Hashes for biopro_sdk-1.1.1.tar.gz
Algorithm Hash digest
SHA256 110e639a0c76a65692bf2b1e7b7c6562ebf5db76716e65ce1103112c73d00410
MD5 01b5a0a6f32face9d78205f4b8c7836d
BLAKE2b-256 46288d0c9cccbf65521409060e3ced739fbedb4f33ed065244eb7b609aa905ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for biopro_sdk-1.1.1.tar.gz:

Publisher: publish.yml on KalaimaranB/BioPro-SDK

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

File details

Details for the file biopro_sdk-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: biopro_sdk-1.1.1-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

Hashes for biopro_sdk-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6fdb89849b6099f126ba4859a53ad10b8d35ad4a1c64fd3766515649b4855272
MD5 36961e7222b2eff1aaba9b040bb25dab
BLAKE2b-256 b6309d12bb613fb95ac7852c1c884c70f1605b01bd5792c2cd1e5de667d79cc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for biopro_sdk-1.1.1-py3-none-any.whl:

Publisher: publish.yml on KalaimaranB/BioPro-SDK

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