Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Closed
Changes from 1 commit
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
0d37a6f
feat: init commit for pysof
doug-helios Sep 11, 2025
2e095c3
feat: add tentative items to roadmap
doug-helios Sep 11, 2025
e00bfcf
feat/uv: complete MVP packaging docs and setup (#3)
doug-helios Sep 11, 2025
78940cf
feat: first iteration of bindings (#4)
doug-helios Sep 12, 2025
f164a6e
feat: add new test coverage for error handling (#5)
doug-helios Sep 12, 2025
e9b23f8
feat: add pipe and script to build wheels locally (#6)
doug-helios Sep 12, 2025
442f8d4
feat: enable wheel artifact (#7)
doug-helios Sep 13, 2025
9186222
fix: change cd trigger, add env for rust
doug-helios Sep 13, 2025
c90734d
fix: trim scope of branches
doug-helios Sep 13, 2025
27c1d8f
fix: tweak py cd pipe
doug-helios Sep 13, 2025
21997e4
fix: format the lib for pysof
doug-helios Sep 13, 2025
c7b0e6f
fix: update the security and update lingering
doug-helios Sep 13, 2025
bffbf22
fix: fuse py-ci into ci
doug-helios Sep 13, 2025
eac3c20
fix: rust linter issues
doug-helios Sep 13, 2025
ad5b5ae
fix: fmt rust issue
doug-helios Sep 13, 2025
1f61e11
fix: fuse py-cd into cd
doug-helios Sep 13, 2025
788c217
fix: cd pipe python section
doug-helios Sep 13, 2025
59bde7c
fix: complete the coverage of the bindings
doug-helios Sep 14, 2025
1c7bb0b
tech debt: add integration test for pysof crate,split python tests
doug-helios Sep 14, 2025
506b64c
fix: fmt and clippy issues
doug-helios Sep 14, 2025
b3b8f20
fix: update clippy test
doug-helios Sep 14, 2025
e7fc86b
Hotfix/support all engines (#9)
doug-helios Sep 15, 2025
38b9078
fix: add pyo3 coverage for the bindings
dougc95 Sep 15, 2025
b6d8363
fix: test content type
dougc95 Sep 15, 2025
d449c2e
refactor: remove conditional Python CI job execution based on file ch…
doug-helios Sep 16, 2025
6614dca
docs: add pysof Python bindings crate to project overview
doug-helios Sep 16, 2025
9697325
chore: remove test package comment from python-tests init file
doug-helios Sep 16, 2025
86a4c3e
refactor: remove Python wheels build workflow and simplify CD pipeline
doug-helios Sep 16, 2025
c6de909
docs: remove roadmap section from pysof README
doug-helios Sep 16, 2025
40380e9
docs: update GitHub release URL to use correct organization name
doug-helios Sep 16, 2025
6e95de8
ci: add wheel artifact upload step for pysof binary builds
doug-helios Sep 16, 2025
1364edc
chore: exclude pysof crate from default workspace build to remove Pyt…
doug-helios Sep 16, 2025
0fbd8b6
chore: standardize dependency versions using workspace inheritance fo…
doug-helios Sep 17, 2025
0004653
fix mergin conflicts
doug-helios Sep 17, 2025
50ff1bb
style: format code with rustfmt and organize imports
doug-helios Sep 17, 2025
4db5399
fix: box bundle entry resources to avoid stack overflow with large FH…
doug-helios Sep 17, 2025
23a8976
chore: pin serde dependencies and use workspace inheritance for share…
doug-helios Sep 17, 2025
f049334
feat: add source-related error types and tests to Python bindings
doug-helios Sep 17, 2025
5eafb82
feat: add catch-all pattern for future SofError variants in Python er…
doug-helios Sep 17, 2025
948402a
Merge branch 'main' of github.com:HeliosSoftware/hfs into epic/pysof
doug-helios Sep 18, 2025
ecbe1d9
feat: add python-wheels deployment option to CD workflow and remove w…
doug-helios Sep 18, 2025
a2610d1
refactor: alphabetically sort error class imports in pysof module for…
doug-helios Sep 18, 2025
de0042a
ci: install patchelf dependency for python wheel builds
doug-helios Sep 18, 2025
dc9fcad
fix: remove redundant Default impl in favor of direct new() constructor
doug-helios Sep 18, 2025
7d7798e
chore: upgrade actions/cache to v4 and replace actions-rs/toolchain w…
doug-helios Sep 18, 2025
6f90401
Merge branch 'main' into epic/pysof
smunini Sep 30, 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
Prev Previous commit
Next Next commit
feat: add tentative items to roadmap
  • Loading branch information
doug-helios committed Sep 11, 2025
commit 2e095c396ff7d83e48bdc34508a2e095c4d0cbb2
61 changes: 55 additions & 6 deletions crates/pysof/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ Python wrapper for the Helios SOF (SQL on FHIR) toolkit.
This is an initial scaffolding for the Python package. In a future iteration we will expose the Rust `sof` crate APIs to Python (likely via PyO3 + maturin). For now, this package provides a project layout and tooling configured for Python 3.11 with uv.

## Requirements

- Python 3.11
- uv (package and environment manager)

Expand Down Expand Up @@ -38,6 +39,7 @@ crates/pysof/
## Roadmap / TODO

- v0 (MVP: packaging and docs)

- [x] Package skeleton with src layout
- [x] `pyproject.toml` targeting Python 3.11
- [x] README with quickstart, layout, roadmap
Expand All @@ -48,19 +50,66 @@ crates/pysof/
- [ ] Add CI workflow for Python 3.11: lint + tests

- v1 (Rust bindings and wheels)

- [ ] Introduce PyO3 bindings to call Rust `sof` library
- [ ] Switch build backend to `maturin` (PEP 621) for extension builds
- [ ] Expose `run_view_definition(view: dict, bundle: dict, format: str) -> bytes`
- [ ] Map content types: `csv`, `csv_with_header`, `json`, `ndjson`
- [ ] Map errors to Python exceptions (`SofError` hierarchy)
- [ ] **Core API Functions:**
- [ ] Expose `run_view_definition(view: dict, bundle: dict, format: str) -> bytes`
- [ ] Expose `run_view_definition_with_options(view: dict, bundle: dict, format: str, *, since: str = None, limit: int = None, page: int = None) -> bytes`
- [ ] **Content Type Support:** Map content types: `csv`, `csv_with_header`, `json`, `ndjson`
- [ ] **FHIR Version Support:**
- [ ] Add optional `fhir_version` parameter (default: "R4")
- [ ] Support R4, R4B, R5, R6 versions based on Rust feature compilation
- [ ] Add version compatibility validation
- [ ] **Comprehensive Error Handling:** Map Rust errors to Python exceptions:
- [ ] `InvalidViewDefinitionError` (from `SofError::InvalidViewDefinition`)
- [ ] `FhirPathError` (from `SofError::FhirPathError`)
- [ ] `SerializationError` (from `SofError::SerializationError`)
- [ ] `UnsupportedContentTypeError` (from `SofError::UnsupportedContentType`)
- [ ] `CsvError` (from `SofError::CsvError`)
- [ ] `IoError` (from `SofError::IoError`)
- [ ] Base `SofError` exception class hierarchy
- [ ] **Utility Functions:**
- [ ] `validate_view_definition(view: dict) -> bool` - Pre-validate ViewDefinition structure
- [ ] `validate_bundle(bundle: dict) -> bool` - Pre-validate Bundle structure
- [ ] `parse_content_type(mime_type: str) -> str` - Parse MIME types to format strings
- [ ] `get_supported_fhir_versions() -> List[str]` - List available FHIR versions
- [ ] Add wheel builds for Windows, macOS (x86_64, arm64), Linux (manylinux/musllinux)
- [ ] Add integration tests mirroring Rust crate examples
- [ ] Provide examples: in-memory, file-based, stdin/stdout-like workflows

- Future
- [ ] Enable Parquet support when available in `sof`
- [ ] Optional async client wrappers for `sof-server` HTTP endpoints
- v2 (Advanced features and optimization)

- [ ] Enable Parquet support when available in `sof` crate
- [ ] **Streaming Support:**
- [ ] Add streaming API for large datasets with NDJSON output
- [ ] Memory-efficient processing for large bundles
- [ ] **Async Support:**
- [ ] Async variants of core functions when Rust crate adds async support
- [ ] Integration with asyncio for concurrent processing
- [ ] **Performance Optimization:**
- [ ] Batch processing utilities for multiple ViewDefinitions
- [ ] Caching mechanisms for repeated transformations
- [ ] **Enhanced Validation:**
- [ ] Schema validation against FHIR specification
- [ ] FHIRPath expression syntax validation
- [ ] ViewDefinition linting and optimization suggestions

- Future (Server integration and ecosystem)
- [ ] **HTTP Client Integration:**
- [ ] Optional async client wrappers for `sof-server` HTTP endpoints
- [ ] Connection pooling and retry logic
- [ ] Authentication and authorization support
- [ ] **Ecosystem Integration:**
- [ ] Pandas DataFrame output format support
- [ ] Apache Arrow integration for columnar data
- [ ] Integration with popular FHIR Python libraries
- [ ] **Developer Experience:**
- [ ] Interactive Jupyter notebook examples
- [ ] VS Code extension for ViewDefinition editing
- [ ] CLI tool (`pysof-cli`) mirroring Rust `sof-cli` functionality
- [ ] Prebuilt wheels for additional Python versions (3.12+) as demand dictates

## License

This package inherits the license from the repository root.