Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
280 commits
Select commit Hold shift + click to select a range
0d993bb
remove unused import
patricklatimer Feb 12, 2025
583a270
undo formatting change
patricklatimer Feb 12, 2025
556e512
remove python-versions pin
patricklatimer Feb 12, 2025
efdefc5
add future import for list annotations
patricklatimer Feb 13, 2025
0a15ab2
fix future import
patricklatimer Feb 13, 2025
7281aca
Merge pull request #4 from AllenNeuralDynamics/feat/threading
Poofjunior Feb 13, 2025
c68f87b
update wait-for-events example
Poofjunior Feb 21, 2025
de151be
remove extraneous call
Poofjunior Feb 21, 2025
e3c338d
Merge pull request #5 from AllenNeuralDynamics/feat/example_update
Poofjunior Feb 22, 2025
e86eb29
Convert project to uv
MicBoucinha Mar 19, 2025
0163e17
Define docstyle convention
MicBoucinha Mar 19, 2025
15ac05e
Update default vscode settings
ZegCricket Mar 19, 2025
efceffd
Add docs to the project
ZegCricket Mar 19, 2025
627b1db
Delete poetry.lock
ZegCricket Mar 19, 2025
23a2c08
Update .gitignore and README
ZegCricket Mar 19, 2025
c9a1615
Merge pull request #1 from fchampalimaud/feature/docs_init
MicBoucinha Mar 20, 2025
b121ab1
Chore: remove shebangs from example scripts
ZegCricket Mar 24, 2025
3f1b5f8
Cleanup unused code
MicBoucinha Mar 25, 2025
2e4f216
Remove ReadXXHarpMessage classes
MicBoucinha Mar 25, 2025
00217d4
Move base classes
MicBoucinha Mar 25, 2025
2716ce8
Formatting
MicBoucinha Mar 25, 2025
0f57b08
Update protocol link
MicBoucinha Mar 25, 2025
9b86a45
Convert usage of ReadXX classes to device related methods
MicBoucinha Mar 25, 2025
bcfcf3c
Remove ReadXX methods from HarpMessage
MicBoucinha Mar 25, 2025
f474503
Extract unrelated Enum members
MicBoucinha Mar 25, 2025
ab0a7da
Add read_S64 and read_U64 methods to Device
MicBoucinha Mar 25, 2025
0859612
Create write_XXX methods on Device
MicBoucinha Mar 25, 2025
a7f595c
Merge branch 'feature/refactor_messages' into develop
MicBoucinha Mar 25, 2025
472e1a5
Add dump parameter to Device's write methods
MicBoucinha Apr 2, 2025
904040d
Change default name and changed visibility of control registers methods
MicBoucinha Apr 2, 2025
4af5567
Refactor timeout assignment and correct payload string formatting
MicBoucinha Apr 2, 2025
a2b8cc0
Update current_device_names
MicBoucinha Apr 2, 2025
45ee965
Add support for device's serial number
MicBoucinha Apr 2, 2025
20c2c59
Remove unused method
MicBoucinha Apr 2, 2025
1aecf2a
Update README
MicBoucinha Apr 2, 2025
b9819aa
Update documentation dependencies
MicBoucinha Apr 2, 2025
2ca3e4f
Update mkdocs configuration
MicBoucinha Apr 2, 2025
fb78b31
Move examples to documentation folder
MicBoucinha Apr 2, 2025
4dd42e8
Update documentation
MicBoucinha Apr 2, 2025
8cd50ad
Add context manager support to Device class
MicBoucinha Apr 2, 2025
13924db
Chore: add pytest configs to vscode workspace settings
ZegCricket Apr 4, 2025
413f36c
Docs: separate examples in different pages
ZegCricket Apr 4, 2025
f0266cc
Docs: modify documentation organizational, functional and visual aspects
ZegCricket Apr 4, 2025
53b41a4
Docs: modify home page
ZegCricket Apr 4, 2025
b80d79b
Test: comment incorrect tests to fix in the future
ZegCricket Apr 4, 2025
d87c1ae
Docs: add documentation to HarpMessage and Device classes
ZegCricket Apr 4, 2025
56b9df3
Refactor: change base.py enums to IntEnums
ZegCricket Apr 4, 2025
c677429
Refactor: rename functions to follow a consistent naming pattern
ZegCricket Apr 4, 2025
74dd5c4
Refactor: move DeviceMode to base.py
ZegCricket Apr 4, 2025
df43bde
Refactor: make some class members private
ZegCricket Apr 4, 2025
27dc1c8
Refactor: modify way of sending write harp messages
ZegCricket Apr 4, 2025
355e90c
Refactor: misc changes
ZegCricket Apr 4, 2025
2adbdc3
Feature: add HarpMessage.create static method
ZegCricket Apr 6, 2025
152a28d
Docs: add comments to the remaining code
ZegCricket Apr 6, 2025
09e0dd6
Feature: add classes in base.py to root pyharp namespace
ZegCricket Apr 6, 2025
c7fea61
Feature: remove read_xx and write_xx Device methods
ZegCricket Apr 6, 2025
8f52e90
Docs: reorganize examples section
ZegCricket Apr 6, 2025
c853f05
Docs: add olfactometer example
ZegCricket Apr 6, 2025
5c77aa6
Docs: add pyharp core API to documentation
ZegCricket Apr 6, 2025
70d4bbf
Merge branch 'feature/update_docs' into develop
MicBoucinha Apr 9, 2025
299b4d0
Change dump file usage convention
MicBoucinha Apr 9, 2025
b924837
Change DeviceMode to OperationMode for official Harp documentation co…
MicBoucinha Apr 9, 2025
1d12633
Change return type of Device's send method
MicBoucinha Apr 9, 2025
98046e6
Update and add missing OperationControl methods
MicBoucinha Apr 9, 2025
9959cdd
Update docs links
MicBoucinha Apr 9, 2025
61c2562
Fix doc link
MicBoucinha Apr 9, 2025
d1ef6e0
Comment device tests
MicBoucinha Apr 9, 2025
4398024
Add pytest-cov dev dependency
MicBoucinha Apr 9, 2025
9c04d72
Add is_error to HarpMessage
MicBoucinha Apr 9, 2025
960ce9c
Read Timestamp entry for PayloadType
MicBoucinha Apr 9, 2025
bfcb9ec
Handle HarpMessage with arrays and timestamps
MicBoucinha Apr 16, 2025
7223e0c
Restore read and write methods from Device
MicBoucinha Apr 23, 2025
3f7922f
Remove dump from send method
MicBoucinha Apr 23, 2025
924997b
Add ClockConfig and TimestampOffset
MicBoucinha Apr 23, 2025
3c21927
Add OperationCtrl and ResetMode
MicBoucinha Apr 23, 2025
ec85295
Allow Port control
MicBoucinha Apr 23, 2025
be6f11c
Fix issue with payload property
MicBoucinha Apr 23, 2025
de5a799
Update payload_as_string
MicBoucinha Apr 23, 2025
542de32
Update CommonRegisters members name
MicBoucinha Apr 23, 2025
5796621
Update send method to receive HarpMessage
MicBoucinha Apr 23, 2025
6b69b65
Remove unused methods
MicBoucinha Apr 23, 2025
897ffd3
Fix bug with uninitialized fields and wrong property call
MicBoucinha Apr 23, 2025
9dfcf15
Fix bug on Device's send method
MicBoucinha Apr 30, 2025
2fd965f
Handle empty replies
MicBoucinha Apr 30, 2025
4e3ee84
Fix bug with str method
MicBoucinha Apr 30, 2025
f310406
Reformat
MicBoucinha May 20, 2025
721fcb4
Update pre-commit config
MicBoucinha May 20, 2025
d6a886a
Add monorepo-plugin to mkdocs
MicBoucinha May 20, 2025
0f7bb9f
Fix typo
MicBoucinha May 20, 2025
b977d7d
Test new module structure
MicBoucinha May 20, 2025
9e9a95a
Update project
MicBoucinha May 20, 2025
47c3feb
Merge branch 'feature/pyharp_namespace' into develop
MicBoucinha May 22, 2025
b8e4bed
Delete behavior driver
MicBoucinha May 22, 2025
9aedecf
Move device.py and harp_serial.py to communication folder
MicBoucinha May 22, 2025
2ff6bc2
Move core from docs to protocol
MicBoucinha May 22, 2025
1ae9aee
Update docs links with correct namespaces
MicBoucinha May 22, 2025
55f38d3
Remove duplicated extension from mkdocs config
MicBoucinha May 22, 2025
c1d1a59
Minor fix on example
MicBoucinha May 22, 2025
deef783
Update files to prevent circular imports
MicBoucinha May 23, 2025
74daef6
Update project related information for pushing it to PyPI
MicBoucinha Jun 12, 2025
60bff12
Change namespace to "harp"
MicBoucinha Jun 30, 2025
f50be32
Update minimum Python version
MicBoucinha Jun 30, 2025
3cf6d12
Add "include markdown plugin" to docs
MicBoucinha Jun 30, 2025
c8af5a1
Update version
MicBoucinha Jun 30, 2025
01b42cf
Add dependency to handle dataclasses on documentation generation
MicBoucinha Jul 1, 2025
7ec5518
Update mkdocs config
MicBoucinha Jul 1, 2025
a97fd0a
Update docs
MicBoucinha Jul 2, 2025
d760086
Add CurrentDriver to known device names
MicBoucinha Jul 2, 2025
aca830a
Reorder docs' TOC
MicBoucinha Jul 2, 2025
2113d59
Remove type annotation on Enum
MicBoucinha Jul 2, 2025
ece40f7
Update version
MicBoucinha Jul 2, 2025
3515020
Add github action to build and deploy docs
MicBoucinha Jul 3, 2025
47cfb1d
Update LICENSE
MicBoucinha Jul 18, 2025
39e3ca3
Rename communication namespace to 'serial'
MicBoucinha Aug 5, 2025
4d9a3a4
Remove unnecessary devices folder
MicBoucinha Aug 5, 2025
efa5e04
Fix issue with Visual_en flag
MicBoucinha Aug 27, 2025
d27c226
Fix documentation path for Device
MicBoucinha Aug 27, 2025
77607ae
Implement a Timeout handling strategy
MicBoucinha Aug 27, 2025
11c47df
Update payload handling taking into account the timeout strategy in s…
MicBoucinha Aug 27, 2025
a0be5e2
Reorganize project directory structure
MicBoucinha Aug 27, 2025
87a8b14
Create workspaces for harp-protocol and harp-serial
MicBoucinha Aug 27, 2025
9073f4c
Update docs
MicBoucinha Aug 27, 2025
8c07844
Chore: add pyrefly extension to `extensions.json`
ZegCricket Aug 27, 2025
ee5aa32
Chore: add script to run docs locally on Windows
ZegCricket Aug 27, 2025
594399a
Add harp reference epoch constant
ZegCricket Aug 27, 2025
93aa50c
Fix issues with types
ZegCricket Aug 27, 2025
2481ec1
Docs: fix imports from examples to take the new project structure int…
ZegCricket Aug 27, 2025
ea50e70
Refactor: simplify WriteHarpMessage handling of PayloadType
ZegCricket Sep 16, 2025
713c934
Chore: add VSCode setting that enables pyrefly to display type errors
ZegCricket Sep 16, 2025
36ec9ad
Removed custom message from exceptions
MicBoucinha Sep 16, 2025
3272e10
Pin harp-protocol version on harp-serial
MicBoucinha Sep 16, 2025
34de54d
Fix: raise HarpReadException for missing timestamp in ReplyHarpMessage
MicBoucinha Sep 16, 2025
a107ebb
Add LaserDriverController to device_names
MicBoucinha Sep 16, 2025
ed7388a
Refactor payload handling in HarpMessage to properly support Python 3.9
MicBoucinha Sep 16, 2025
fbd7d64
Add operation_ctrl methods to device
MicBoucinha Sep 18, 2025
af7e79f
Update documentation
MicBoucinha Sep 18, 2025
5ea52bb
Fix tests
MicBoucinha Sep 18, 2025
25f0445
Merge branch 'feature/workspaces' into develop
MicBoucinha Sep 18, 2025
d7a6a63
Remove unnecessary udev rules file
MicBoucinha Oct 8, 2025
d454897
Refactor HARP_VERSION to CORE_VERSION
MicBoucinha Oct 8, 2025
4162bff
Update documentation
MicBoucinha Oct 8, 2025
6e714ec
Refactor base.py enums for consistency and clarity
MicBoucinha Oct 8, 2025
9a440b2
Refactor HarpMessage to consolidate message creation
MicBoucinha Oct 9, 2025
ed8fca5
Remove HarpMessage.create static method
MicBoucinha Oct 9, 2025
78cce0e
Refactor HarpMessage to remove ReplyHarpMessage
MicBoucinha Oct 17, 2025
6f97c92
Refactor timeout variables
MicBoucinha Oct 17, 2025
1f24190
Rename HarpTimeoutError to HarpTimeoutException and add context to it
MicBoucinha Oct 17, 2025
36a8363
Update comment
MicBoucinha Oct 17, 2025
e97480c
Add HarpMessage context to Harp exceptions
MicBoucinha Oct 22, 2025
8e84b3a
Remove constraint when creating HarpMessage
MicBoucinha Oct 22, 2025
aa564c7
Change build system
MicBoucinha Oct 22, 2025
3d8d10d
Remove device_names
MicBoucinha Oct 22, 2025
ccdef2a
Handle potential serial connection errors
MicBoucinha Oct 22, 2025
c24c51f
Update minimum Python version
MicBoucinha Oct 22, 2025
e1025d5
Fix: write events to dump file
ZegCricket Oct 23, 2025
5676d38
Merge remote-tracking branch 'origin/feature/dump_events_to_file' int…
MicBoucinha Oct 23, 2025
1fbfb2d
Refactor to improve message reading and timeout handling in Device
MicBoucinha Oct 24, 2025
5f62673
Separate docs from dev dependencies
MicBoucinha Oct 24, 2025
c61184b
Bump version of packages
MicBoucinha Oct 24, 2025
7523b47
Update documentation
MicBoucinha Oct 24, 2025
ede6aa4
Merge branch 'feature/pr_review_changes' into develop
MicBoucinha Oct 24, 2025
6f5cde3
Update docs
MicBoucinha Nov 5, 2025
bbe437d
Linting
bruno-f-cruz Apr 26, 2026
1e7986e
Replace serial by device package
bruno-f-cruz Apr 26, 2026
4662050
Refactor protocol and register api
bruno-f-cruz Apr 26, 2026
39f97ab
Add tests for protocol
bruno-f-cruz Apr 26, 2026
20e5317
Add unit tests for register api
bruno-f-cruz Apr 26, 2026
1a70a59
Improve string visualization for Payload
bruno-f-cruz Apr 27, 2026
39b9904
Add small integration test
bruno-f-cruz Apr 27, 2026
c070cf8
Remove data type inference
bruno-f-cruz Apr 27, 2026
92cf83d
Ignore .vscode folder
bruno-f-cruz Apr 27, 2026
66987d1
Linting
bruno-f-cruz Apr 27, 2026
3d4cbd4
Remove unused type checking guards
bruno-f-cruz Apr 27, 2026
53c4e73
Improve type hinting
bruno-f-cruz Apr 27, 2026
bc1c0ea
Avoid accessing private attribute
bruno-f-cruz Apr 27, 2026
8e6f8dd
Make the mess uniform for now
bruno-f-cruz Apr 27, 2026
b622b71
Delete unused file
bruno-f-cruz Apr 29, 2026
2f8aec9
Raise error on returned messages with error bit flag
bruno-f-cruz Apr 29, 2026
ed599b3
Add timestamp to format
bruno-f-cruz Apr 30, 2026
2e6f5ed
Add example script and refactor payload classes for clarity and consi…
bruno-f-cruz Apr 30, 2026
a66372d
Add BitField types
bruno-f-cruz May 9, 2026
5040c55
Linting
bruno-f-cruz May 9, 2026
3a282c6
Move scripts and add benchmark
bruno-f-cruz May 10, 2026
9a9832d
Structured arrays can convert directly
bruno-f-cruz May 10, 2026
1b0b7dc
Pre-compute group-mask enums as a lookup table
bruno-f-cruz May 10, 2026
2aa8235
Refactor backend to allow twin classes for Scalar and Bulk types
bruno-f-cruz May 10, 2026
4ab1707
Simplify dtype logic but procedurally generating type from fields
bruno-f-cruz May 11, 2026
4a902b0
Refactor payload converters and register handling to unify scalar and…
bruno-f-cruz May 11, 2026
34a9115
Move framer away from protocol package
bruno-f-cruz May 11, 2026
3626eb6
Improve variable naming and documentation
bruno-f-cruz May 11, 2026
cd920ef
Remove redundant method and add doc string to register module
bruno-f-cruz May 11, 2026
2882178
Split scalar/array/struct payloads and type parse() return
bruno-f-cruz May 12, 2026
f5c4536
Add example of heterogenous register
bruno-f-cruz May 17, 2026
00bf9c7
Raise proper error
bruno-f-cruz May 17, 2026
ca4ec5d
Drop redundant code path
bruno-f-cruz May 17, 2026
40c4000
Raise error if timestamp is explicitly requested
bruno-f-cruz May 17, 2026
de96c17
Cache bit-field definition
bruno-f-cruz May 17, 2026
ed9ddc5
Create constants module and move tick value
bruno-f-cruz May 17, 2026
8acfdf0
Refactor to use sentinel type
bruno-f-cruz May 17, 2026
ee05e7b
Streamline checksum calculation
bruno-f-cruz May 17, 2026
d7dad55
Be opinionated on format typing
bruno-f-cruz May 17, 2026
9273314
Update register syntax
bruno-f-cruz May 17, 2026
05a2187
Use `dataclass_transform` for free type hint
bruno-f-cruz May 18, 2026
b437bdd
Test defaults
bruno-f-cruz May 18, 2026
3bcab95
Cleanup public api members
bruno-f-cruz May 18, 2026
6a17323
Generalize payload construction for all interface types
bruno-f-cruz Jun 14, 2026
afa9288
Linting
bruno-f-cruz Jun 14, 2026
9425aba
Fix type errors and examples
bruno-f-cruz Jun 16, 2026
653e98f
Simplify repr field collection
bruno-f-cruz Jun 23, 2026
959e717
Allow fields to also define a masked value
bruno-f-cruz Jun 23, 2026
473844d
Deprecate converter_registry
bruno-f-cruz Jun 24, 2026
3db7518
Deprecate converter_registry
bruno-f-cruz Jun 24, 2026
1d2e8e5
Add support for converters in AnonymousPayload
bruno-f-cruz Jun 24, 2026
c84f93e
Export `AnonymousPayload` from te public module
bruno-f-cruz Jun 24, 2026
2589295
Add support for HarpVersion and HarpVersionConverter
bruno-f-cruz Jun 25, 2026
a1f9a7a
Refactor device class to include core registers and decoupled from se…
bruno-f-cruz Jun 25, 2026
4ad9343
Decouple transport from device
bruno-f-cruz Jun 25, 2026
8068d72
Use automatically generated core register definition
bruno-f-cruz Jun 25, 2026
de78f56
Split serial from device package
bruno-f-cruz Jun 25, 2026
fd9780e
Add register map constant to device package
bruno-f-cruz Jun 25, 2026
0f0365a
Add data package
bruno-f-cruz Jun 25, 2026
58cbc55
Add minor changes to documentation
bruno-f-cruz Jun 26, 2026
8011bee
Remove BitField in favor of BitMask notation
bruno-f-cruz Jun 28, 2026
d97fab9
Remove the use of deferred annotations
bruno-f-cruz Jun 28, 2026
755f911
Linting
bruno-f-cruz Jun 28, 2026
02e0400
Fix example
bruno-f-cruz Jun 28, 2026
e681e7c
Merge pull request #6 from harp-tech/refactor-remove-bitmask-demux
bruno-f-cruz Jun 28, 2026
5716d53
Refactor method's names
bruno-f-cruz Jun 28, 2026
9231b27
Do not copy when converting to dataframe by default
bruno-f-cruz Jun 29, 2026
6bbe246
Add benchmark package
bruno-f-cruz Jul 1, 2026
6922908
Add converter for faster parsing
bruno-f-cruz Jul 1, 2026
1de2f43
Optionally print dataframes
bruno-f-cruz Jul 1, 2026
70d3db8
Add numpy broadcasting to HarpVersion conversion
bruno-f-cruz Jul 2, 2026
d7ed4b7
Lazily parse the timestamp
bruno-f-cruz Jul 2, 2026
fa6cc8e
Fix stale references
bruno-f-cruz Jul 17, 2026
68274c3
Refactor CICD and remove stale testing files
bruno-f-cruz Jul 17, 2026
70df2ee
Improve package metadata
bruno-f-cruz Jul 17, 2026
abf6a8b
Add codespell for CICD
bruno-f-cruz Jul 17, 2026
3ac77d5
Fix site name
bruno-f-cruz Jul 17, 2026
1f3e8e6
Fix type hints
bruno-f-cruz Jul 17, 2026
0da63ba
Add benchmark to CICD
bruno-f-cruz Jul 17, 2026
4329e1d
Add observer/observable pattern to device
bruno-f-cruz Jul 4, 2026
19e1f1c
Clear device subscriptions on close to prevent stale handlers
bruno-f-cruz Jul 4, 2026
e729912
Add examples for event handling
bruno-f-cruz Jul 17, 2026
47f9c53
Remove benchmarks from CICD
bruno-f-cruz Jul 17, 2026
de793a0
Add logo
bruno-f-cruz Jul 17, 2026
9a71d40
Use relative path
bruno-f-cruz Jul 17, 2026
af09088
Switch to setuptools-scm and trusted publishing
glopesdev Jul 24, 2026
2587039
Point the CI push trigger at main
glopesdev Jul 24, 2026
fa95371
Merge pull request #8 from harp-tech/packaging-and-release-ci
bruno-f-cruz Jul 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 144 additions & 0 deletions .github/workflows/harp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
name: harp

on:
pull_request:
push:
branches:
- main
release:
types: [published]
workflow_dispatch:

jobs:
# ---- Tests ----
tests:
name: Python ${{ matrix.python-version }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.11", "3.12", "3.13"]
fail-fast: false
steps:
- uses: actions/checkout@v7

- uses: astral-sh/setup-uv@v8.3.2
with:
enable-cache: true

- name: Install python dependencies
run: uv sync --group dev --python ${{ matrix.python-version }}

- name: Run codespell
run: uv run codespell

- name: Run ruff format
run: uv run ruff format --check

- name: Run ruff check
run: uv run ruff check

- name: Run pyright
run: uv run pyright

- name: Run pytest
run: uv run pytest --cov harp

- name: Build
run: uv build --all-packages

# ---- Release build ----
build-release:
runs-on: ubuntu-latest
name: Build release distributions
needs: tests
if: github.event_name == 'release' && github.event.action == 'published'

steps:
- uses: actions/checkout@v7

- uses: astral-sh/setup-uv@v8.3.2
with:
enable-cache: true

- name: Build
env:
SETUPTOOLS_SCM_PRETEND_VERSION: ${{ github.event.release.tag_name }}
run: uv build --all-packages

- name: Verify setuptools-scm applied the release tag
shell: bash
run: |
ls -1 dist/
if ls dist/*-0.0.0.tar.gz >/dev/null 2>&1; then
echo "::error::Built version 0.0.0, so setuptools-scm did not apply the tag. Check that every pyproject.toml still declares a tool.setuptools_scm table."
exit 1
fi

- name: Remove internal-only packages from dist
shell: bash
run: rm -f dist/harp_benchmarks-*

- name: Upload wheels as artifact
uses: actions/upload-artifact@v7
with:
name: dist
path: dist/

# ---- Publish to PyPI ----
publish-to-pypi:
runs-on: ubuntu-latest
name: Publish to PyPI
needs: build-release
environment: pypi
permissions:
# uv publish exchanges this token with PyPI trusted publishing.
id-token: write
# action-gh-release attaches the distributions to the release.
contents: write
steps:
- name: Download wheels artifact
uses: actions/download-artifact@v8
with:
name: dist
path: dist/

- uses: astral-sh/setup-uv@v8.3.2
with:
enable-cache: true

- name: Publish to PyPI
run: uv publish

- name: Upload wheels to GitHub release
uses: softprops/action-gh-release@v3
with:
files: dist/*

# ---- Docs ----
build-docs:
name: Build and deploy documentation to GitHub Pages
runs-on: ubuntu-latest
needs: build-release
if: github.event_name == 'release' && !github.event.release.prerelease
steps:
- name: Checkout
uses: actions/checkout@v7
with:
fetch-depth: 0

- name: Install uv
uses: astral-sh/setup-uv@v8.3.2
with:
enable-cache: true

- name: Install dependencies
run: uv sync --group docs

- name: Configure Git user
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"

- name: Build & Deploy docs
run: uv run mkdocs gh-deploy --force
186 changes: 180 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,180 @@
.idea/
pyharp.egg-info/
.python-version
__pycache__
tests/.pytest_cache
**/*.bin
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# UV
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
#uv.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
.pdm.toml
.pdm-python
.pdm-build/

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

# Ruff stuff:
.ruff_cache/

# PyPI configuration file
.pypirc

# vscode
.vscode/

# Internal benchmark artifacts (harp-benchmarks)
/benchmark/
3 changes: 3 additions & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
3.13
3.12
3.11
2 changes: 2 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
MIT License

Copyright (c) 2020 OEPS & Filipe Carvalho
Copyright (c) 2025 Hardware and Software Platform, Champalimaud Foundation
Comment thread
bruno-f-cruz marked this conversation as resolved.
Copyright (c) harp-tech and Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
Loading
Loading