Summary
Currently, the Python SDK in the python/ directory can only be used by cloning this entire repository:
git clone https://github.com/BrainCoTech/brainco-hand-sdk.git
cd brainco-hand-sdk/python
pip3 install -r requirements.txt
It would be great to publish the Python SDK as a proper package on PyPI, so users can simply run:
pip install brainco-hand-sdk
and start developing against the Revo1/Revo2 hand without pulling the whole repo.
Background
I noticed that the underlying core library bc-stark-sdk is already published on PyPI (v2.0.3, pip install bc-stark-sdk), which is great. However, the higher-level Python layer in this repo — common_imports.py, common_init.py, common_socketcan.py, common_utils.py, logger.py, and the protocol wrappers under revo1/, revo2/, revo2_can/, revo2_canfd/, revo2_ethercat/, etc. — is only distributed as source code in the repository.
Pain Points
- No
pip install support — users must clone the entire repo (including c/, archive/, docs, etc.) just to use the Python SDK.
- Version management — there is no versioned, installable artifact for the Python layer, making it hard to pin or upgrade the SDK in
requirements.txt.
- Offline / restricted environments — environments without access to GitHub (e.g. intranet, CI inside corporate networks) cannot easily install the SDK.
- First-run friction — the current flow requires checking out the repo, reading the docs to find the right directory, and manually installing dependencies.
Proposed Solution
- Add proper packaging config (e.g.
pyproject.toml with [build-system] and [project]) for the python/ directory — note the current pyproject.toml has packages = [] and [tool.uv] package = false, so the SDK modules are not actually bundled.
- Publish the package to PyPI, e.g. as
brainco-hand-sdk (the name is currently available on PyPI).
- Have it depend on
bc-stark-sdk so pip install brainco-hand-sdk pulls in everything needed.
- Optionally add a GitHub Actions workflow to build and publish automatically on tagged releases.
- Update the README install section to mention
pip install brainco-hand-sdk as the recommended path, while keeping the repo-clone instructions for the examples.
Expected Outcome
pip install brainco-hand-sdk
→ SDK ready to use for Revo1/Revo2 development (RS-485, CAN, CANFD, EtherCAT), with the repo kept for examples, demos and the C++ layer.
Thanks for maintaining this SDK — it would significantly improve the developer experience for Python users!
Summary
Currently, the Python SDK in the
python/directory can only be used by cloning this entire repository:git clone https://github.com/BrainCoTech/brainco-hand-sdk.git cd brainco-hand-sdk/python pip3 install -r requirements.txtIt would be great to publish the Python SDK as a proper package on PyPI, so users can simply run:
and start developing against the Revo1/Revo2 hand without pulling the whole repo.
Background
I noticed that the underlying core library
bc-stark-sdkis already published on PyPI (v2.0.3,pip install bc-stark-sdk), which is great. However, the higher-level Python layer in this repo —common_imports.py,common_init.py,common_socketcan.py,common_utils.py,logger.py, and the protocol wrappers underrevo1/,revo2/,revo2_can/,revo2_canfd/,revo2_ethercat/, etc. — is only distributed as source code in the repository.Pain Points
pip installsupport — users must clone the entire repo (includingc/,archive/, docs, etc.) just to use the Python SDK.requirements.txt.Proposed Solution
pyproject.tomlwith[build-system]and[project]) for thepython/directory — note the currentpyproject.tomlhaspackages = []and[tool.uv] package = false, so the SDK modules are not actually bundled.brainco-hand-sdk(the name is currently available on PyPI).bc-stark-sdksopip install brainco-hand-sdkpulls in everything needed.pip install brainco-hand-sdkas the recommended path, while keeping the repo-clone instructions for the examples.Expected Outcome
→ SDK ready to use for Revo1/Revo2 development (RS-485, CAN, CANFD, EtherCAT), with the repo kept for examples, demos and the C++ layer.
Thanks for maintaining this SDK — it would significantly improve the developer experience for Python users!