Skip to content

Move pylsl into the monorepo as a component - #11

Merged
neuromechanist merged 2 commits into
mainfrom
8-move-pylsl-into-the-monorepo-as-a-component
Jul 19, 2026
Merged

Move pylsl into the monorepo as a component#11
neuromechanist merged 2 commits into
mainfrom
8-move-pylsl-into-the-monorepo-as-a-component

Conversation

@neuromechanist

Copy link
Copy Markdown
Member

Closes #8

First of the three component moves (#8 pylsl, #9 LabRecorder, #10 SigVisualizer). Depends on #7, now merged, which established the component licensing policy.

What moved

neuromechanist/pylsl branch feature/secure-lsl-support (based on upstream c90f623) is vendored at bindings/pylsl/.

Licensing

Per the COMPONENT LICENSING POLICY added in #7, this component retains its upstream MIT license (Copyright (c) 2012-2018 Christian A. Kothe), preserved unmodified at bindings/pylsl/LICENSE, and the security integration added here is contributed under that same MIT license.

That is accurate rather than generous: the integration is 170 lines of ctypes interface declarations plus StreamInfo.security_enabled() and security_fingerprint(), which call the public liblsl C API. It contains no cryptographic implementation, so there is nothing in it requiring the proprietary grant. The proprietary terms continue to cover the security implementation in liblsl/ and the integrated work.

Also in this PR

  • bindings/pylsl/COMPONENT.md recording upstream URL, base commit, and the graceful-degradation contract
  • THIRD-PARTY-NOTICES.md entry with the verbatim MIT text
  • docs/integration/pylsl.md, wired into the mkdocs nav
  • Removed the vendored .github/ so upstream CI workflows do not fire in this repository

Note on the docs

My first draft of the docs page used library_version() to report security status and accessed security_enabled / security_fingerprint as properties. Both were wrong: library_version() returns an integer, and those two are methods. The page now uses is_secure_build(), base_version(), security_version(), full_version(), and check_security(), and every symbol referenced in the page was verified to exist in the vendored source before commit.

Behavior against stock liblsl

Security symbols resolve inside try/except AttributeError with _security_api_available flags, so the binding imports and behaves exactly as upstream when linked against a stock liblsl. This is what lets the same application code run against both libraries.

Vendored at bindings/pylsl/ from neuromechanist/pylsl branch
feature/secure-lsl-support, based on upstream c90f623.

Licensing follows the component policy: the upstream MIT license
(Copyright (c) 2012-2018 Christian A. Kothe) is preserved unmodified in
the component directory, and the security integration added here is
contributed under that same MIT license. The integration is ctypes
interface declarations plus StreamInfo.security_enabled() and
security_fingerprint(), calling the public liblsl C API with no
cryptographic implementation, so the proprietary terms do not apply.

- COMPONENT.md records upstream provenance, base commit, and the
  graceful-degradation behavior on a stock liblsl
- THIRD-PARTY-NOTICES.md gains the pylsl entry
- docs/integration/pylsl.md added and wired into the nav; every symbol
  it references was checked against the vendored source
- Dropped the vendored .github workflows so upstream CI does not fire
  in this repository

Closes #8
@neuromechanist neuromechanist linked an issue Jul 19, 2026 that may be closed by this pull request
6 tasks
@neuromechanist
neuromechanist merged commit d0dd322 into main Jul 19, 2026
10 checks passed
@neuromechanist
neuromechanist deleted the 8-move-pylsl-into-the-monorepo-as-a-component branch July 19, 2026 19:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Move pylsl into the monorepo as a component

1 participant