Core SDK for OWI-Lab metadatabase: geometry and location data
Project description
OWI-metadatabase SDK
Core SDK for OWI-Lab metadatabase geometry and location workflows, with optional extras for soil, results, and SHM.
A modern Python namespace package providing tools for working with offshore wind turbine geometry and location data from the OWI-metadatabase. The core package stays focused on shared APIs and data access, while optional extras install the soil, results, and structural health monitoring extensions into the same owi.metadatabase namespace.
Features
- Geometry Module: Process offshore wind turbine geometries, components, and structures
- Locations Module: Handle geographic location and site data
- API Integration: Seamless connection to OWI-metadatabase API
- Extensible: Namespace package architecture supports deployed domain extensions
owi-metadatabase-soilowi-metadatabase-resultsowi-metadatabase-shmowi-metadatabase-ext-sdk-tplfor scaffolding new extensionsowi-metadatabase-fatigue(planned)
Installation
Quick Install
Using pip:
pip install owi-metadatabase
Using uv (recommended for development):
uv pip install owi-metadatabase
Install optional extras
Using pip:
pip install "owi-metadatabase[soil]"
pip install "owi-metadatabase[results]"
pip install "owi-metadatabase[shm]"
Using uv:
uv pip install "owi-metadatabase[soil]"
uv pip install "owi-metadatabase[results]"
uv pip install "owi-metadatabase[shm]"
Install multiple extras together when you need more than one extension:
pip install "owi-metadatabase[soil,results,shm]"
In zsh, keep extras in quotes because [ and ] are treated as glob characters.
Development Installation
For contributing to the package:
# Clone the repository
git clone https://github.com/OWI-Lab/owi-metadatabase-sdk.git
cd owi-metadatabase-sdk
# Install with uv (recommended)
uv sync --dev
# Or with pip
pip install -e ".[dev]"
Quick Start
from owi.metadatabase.geometry.io import GeometryAPI
from owi.metadatabase.locations.io import LocationsAPI
# Initialize API clients
geometry_api = GeometryAPI(API_key='your-api-key')
locations_api = LocationsAPI(API_key='your-api-key')
# Fetch turbine geometry
turbine = geometry_api.get_geometry_turbine(turbine_id=123)
# Get location data
location = locations_api.get_location(location_id=456)
See the How To Guide for more examples.
🔄 Migration from v0.10.x
If you're migrating from pwimetadatabase-preprocessor v0.10.x, see our Migration Guide.
Key Changes:
- Package name:
owi-metadatabase-sdk→owi-metadatabase - Import path:
owimetadatabase_preprocessor.*→owi.metadatabase.* - Removed modules:
fatigue,soil, andresults(available as package extensions) - Extension extras now available from the core package:
soil,results, andshm
Development
This project uses modern Python tooling:
- uv: Fast Python package manager
- invoke: Task automation
- ruff: Linting and formatting
- pytest: Testing with extensive doctest coverage
- Zensical: Documentation
Common Tasks
# Run tests and serve coverage report
uv run inv test
# Build documentation
uv run inv docs.build
# Serve documentation locally
uv run inv docs.serve
# Run code quality checks
uv run inv quality
Project Structure
src/owi/metadatabase/
├── __init__.py # Main package entry point
├── geometry/ # Geometry data processing
│ ├── io.py # GeometryAPI
│ ├── processing.py # OWT, OWTs classes
│ └── structures.py # Data structures
├── locations/ # Location data handling
│ └── io.py # LocationsAPI
└── _utils/ # Internal utilities
├── exceptions.py # Custom exceptions
└── utils.py # Helper functions
Extensibility
This package uses PEP 420 namespace packages, allowing modular extensions. Installed packages can extend the owi.metadatabase namespace side by side:
owi-metadatabase-soil: Soil data processingowi-metadatabase-results: Results querying, typed models, and plotting helpersowi-metadatabase-shm: Structural health monitoring queries, typed records, and upload workflowsowi-metadatabase-fatigue(planned): Fatigue analysis tools- Your extension: Create custom extensions using the namespace
All extensions work seamlessly together:
from owi.metadatabase.geometry.io import GeometryAPI
from owi.metadatabase.results import ResultsAPI
from owi.metadatabase.shm import ShmAPI
from owi.metadatabase.soil import SoilAPI
Documentation
- Core SDK docs: Geometry, locations, and shared architecture
- How-to guides: Installation, authentication, and query recipes
- Results extension docs: Results APIs, models, services, and notebooks
- SHM extension docs: Sensor and signal retrieval, typed services, and upload workflows
- Soil extension docs: Soil APIs, processing, and visualization
Contributing
We welcome contributions! Please see our Contributing Guide for details.
Quick Contribution Workflow
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes with tests and documentation
- Run quality checks:
uv run invoke quality.all - Run tests:
uv run invoke test.all - Commit your changes:
git commit -m 'feat: add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
License
This package is licensed under the GNU General Public License v3.0.
👥 Authors
owi-metadatabase is developed and maintained by the team at OWI-Lab.
Core Contributors:
- Pietro D'Antuono (@pietrodantuono)
- Arsen Melnikov (@arsmlnkv)
Acknowledgements
This package was developed as part of:
- ETF Smartlife (FOD165) project
- WILLOW (EUAR157) project
Project Status
| Aspect | Status |
|---|---|
| Version | |
| Python | |
| Tests | |
| Coverage | |
| Documentation | |
| License |
Related Projects
- OWI-Lab Website: Research lab website
- OWI-metadatabase: Online database
Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: pietro.dantuono@vub.be
Built with ❤️ and 🧠 by OWI-Lab
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file owi_metadatabase-0.1.7.tar.gz.
File metadata
- Download URL: owi_metadatabase-0.1.7.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29e79da487083bfc91516c6a22429572d4d428c7c4cb5752187636dc6dd0f294
|
|
| MD5 |
6f12e5e0f7accc5e22896c8557ca17b3
|
|
| BLAKE2b-256 |
cb05e9009d92e68935c473419422bb236941bc47a644a2f0997e54a9ad341993
|
Provenance
The following attestation bundles were made for owi_metadatabase-0.1.7.tar.gz:
Publisher:
publish.yml on OWI-Lab/owi-metadatabase-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
owi_metadatabase-0.1.7.tar.gz -
Subject digest:
29e79da487083bfc91516c6a22429572d4d428c7c4cb5752187636dc6dd0f294 - Sigstore transparency entry: 1203592732
- Sigstore integration time:
-
Permalink:
OWI-Lab/owi-metadatabase-sdk@ac4fa0dc094db4c83380b72b60dc6277679ccf05 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/OWI-Lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ac4fa0dc094db4c83380b72b60dc6277679ccf05 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file owi_metadatabase-0.1.7-py3-none-any.whl.
File metadata
- Download URL: owi_metadatabase-0.1.7-py3-none-any.whl
- Upload date:
- Size: 64.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2fd10d0f5a867b3a4468fb745ac875395f59e12b9c8766da1063b066cda4ac1a
|
|
| MD5 |
d386eae71efda619997ad872175956a9
|
|
| BLAKE2b-256 |
9ee70b1b42fdadcf69c59fd9ccd20dd75b2e6465d5db64f95009993ac587c59e
|
Provenance
The following attestation bundles were made for owi_metadatabase-0.1.7-py3-none-any.whl:
Publisher:
publish.yml on OWI-Lab/owi-metadatabase-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
owi_metadatabase-0.1.7-py3-none-any.whl -
Subject digest:
2fd10d0f5a867b3a4468fb745ac875395f59e12b9c8766da1063b066cda4ac1a - Sigstore transparency entry: 1203592733
- Sigstore integration time:
-
Permalink:
OWI-Lab/owi-metadatabase-sdk@ac4fa0dc094db4c83380b72b60dc6277679ccf05 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/OWI-Lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ac4fa0dc094db4c83380b72b60dc6277679ccf05 -
Trigger Event:
workflow_dispatch
-
Statement type: