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.0.0.tar.gz (39.9 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.0.0-py3-none-any.whl (48.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: biopro_sdk-1.0.0.tar.gz
  • Upload date:
  • Size: 39.9 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.0.0.tar.gz
Algorithm Hash digest
SHA256 6576bc35161b891322993eeeac10bdc66692f0fee9b8bc0cda3288d3e2056a1d
MD5 bb9ea103d6e735c12ebd7608aaf63e34
BLAKE2b-256 4cdb6a58eca291a171a01f423d0d348e2269a89ac55e0c0853634aac64e753e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for biopro_sdk-1.0.0.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.0.0-py3-none-any.whl.

File metadata

  • Download URL: biopro_sdk-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 48.9 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.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a8404ac9b088f188c245055aff27d76b20d8933ab674bd4e47a95c9b904fa4d3
MD5 5cdfaef5925242feb55934745b3c2199
BLAKE2b-256 3deee3502390953be314a671d369bdda6a780d82329256f31cfad378d2ace87a

See more details on using hashes here.

Provenance

The following attestation bundles were made for biopro_sdk-1.0.0-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