Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
176305f
feat: working implementation of merged query
eywalker May 20, 2025
9724d9c
refactor: clean up
eywalker May 20, 2025
a348cf4
fix: handling of colliding name in pathset
eywalker May 20, 2025
2700b1f
refactor: use absolute import
eywalker May 20, 2025
cb8f46a
refactor: provide graph tracker as a concrete type
eywalker May 20, 2025
c598b51
fix: use absolute import and new tracker superclass
eywalker May 20, 2025
3b0df89
fix: path import
eywalker May 23, 2025
7182049
feat: set up testing framework
eywalker May 24, 2025
41e1416
chore: use log instead of print
eywalker May 24, 2025
63e1c91
refactor: update usage pattern for cachestream
eywalker May 24, 2025
56e57c8
feat: add basic test for hashing
eywalker May 24, 2025
b697759
test: add additional test for hashing consistency and stability
eywalker May 24, 2025
361acbe
test: add more comprehensive hash testing
eywalker May 24, 2025
5ae6544
test: add github action
eywalker May 24, 2025
d4df31e
fix: escape version number
eywalker May 24, 2025
d0222b6
fix: add missing dependency
eywalker May 24, 2025
bff9ceb
fix: add missing dependency for typing
eywalker May 24, 2025
1f47d50
fix: add matplotlib
eywalker May 24, 2025
295931b
fix: simplify gha test
eywalker May 24, 2025
092335b
build: update dependency specifications
eywalker May 24, 2025
579ef9c
test: configure testing
eywalker May 25, 2025
2a70c00
refactor: turn hashing into a subpackage
eywalker May 25, 2025
7aeb77d
test: update testing to reflect change in hashing subpackage
eywalker May 25, 2025
ef24843
ci: test python 3.10
eywalker May 25, 2025
858e9aa
ci: include python 3.9
eywalker May 25, 2025
815c68f
ci: require 3.10 or above
eywalker May 25, 2025
54f63ed
ci: add codecov integration
eywalker May 25, 2025
2f01852
refactor: apply ruff
eywalker May 25, 2025
255a509
refactor: remove unused import
eywalker May 25, 2025
a0d23af
doc: add docstring to find_noncolliding_name
eywalker May 25, 2025
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
38 changes: 38 additions & 0 deletions .github/workflows/run-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Run Tests

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch: # Allows manual triggering

jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12"]

steps:
- uses: actions/checkout@v3

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -e ".[test]"

- name: Run tests
run: |
pytest -v --cov=src --cov-report=term-missing --cov-report=xml

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}

2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Ignore example dataset storage generated in tutorial
pod_data/
**/pod_data/

# Autogenerated version file
_version.py
Expand Down
29 changes: 29 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,31 @@
# orcabridge
Prototype of Orcapod as implemented in Python with functions

## Continuous Integration

This project uses GitHub Actions for continuous integration:

- **Run Tests**: A workflow that runs tests on Ubuntu with multiple Python versions.

### Running Tests Locally

To run tests locally:

```bash
# Install the package with test dependencies
pip install -e ".[test]"

# Run tests with coverage
pytest -v --cov=src --cov-report=term-missing
```

### Development Setup

For development, you can install all optional dependencies:

```bash
# Install all development dependencies
pip install -e ".[test,dev]"
# or
pip install -r requirements-dev.txt
```
23 changes: 14 additions & 9 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,17 @@ build-backend = "setuptools.build_meta"

[project]
name = "orcabridge"
description = "Prototype Oracapod Pipeline implementation in Python"
dynamic = ["version", "dependencies"]
description = "Function-based Oracapod Pipeline implementation in Python"
dynamic = ["version"]
dependencies = [
"numpy",
"xxhash",
"networkx",
"matplotlib",
"typing_extensions",
]
readme = "README.md"
requires-python = ">=3.9"
requires-python = ">=3.10"
license = { text = "MIT License" }
classifiers = [
"Programming Language :: Python :: 3",
Expand All @@ -18,14 +25,12 @@ classifiers = [
[project.urls]
Homepage = "https://github.com/walkerlab/orcabridge"

[project.optional-dependencies]
test = ["pytest>=7.4.0", "pytest-cov>=4.1.0"]
dev = ["black>=23.0.0", "flake8>=6.0.0", "isort>=5.12.0", "orcabridge[test]"]

[tool.setuptools.packages.find]
where = ["src"]

[tool.setuptools_scm]
version_file = "src/orcabridge/_version.py"

[tool.setuptools.dynamic]
dependencies = { file = ["requirements.txt"] }

[tool.black]
line-length = 80
6 changes: 6 additions & 0 deletions pytest.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[pytest]
testpaths = tests
python_files = test_*.py
python_classes = Test*
python_functions = test_*
addopts = -v --cov=src --cov-report=term-missing --cov-report=html --cov-report=xml
2 changes: 0 additions & 2 deletions requirements.txt

This file was deleted.

20 changes: 11 additions & 9 deletions src/orcabridge/__init__.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
from .tracker import Tracker

DEFAULT_TRACKER = Tracker()
DEFAULT_TRACKER.activate()

# make modules and subpackages available
from . import hashing
from . import pod
from . import mapper
from . import stream
from . import source
from . import store
from .mapper import MapTags, MapPackets, Join, tag, packet
from .pod import FunctionPod, function_pod
from .source import GlobSource
from .store import DirDataStore, SafeDirDataStore



DEFAULT_TRACKER = Tracker()
DEFAULT_TRACKER.activate()


__all__ = [
"hashing",
Expand All @@ -30,9 +35,6 @@
"DirDataStore",
"SafeDirDataStore",
"DEFAULT_TRACKER",
"SyncStreamFromLists",
]

from .mapper import MapTags, MapPackets, Join, tag, packet
from .pod import FunctionPod, function_pod
from .source import GlobSource
from .store import DirDataStore, SafeDirDataStore
Loading