Core SDK for OWI-Lab metadatabase: geometry and location data
Project description
OWI-metadatabase SDK
Core SDK for OWI-Lab metadatabase: geometry and location data processing.
A modern Python namespace package providing tools for working with offshore wind turbine geometry and location data from the OWI-metadatabase. Built with extensibility in mind using PEP 420 namespace packages.
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 future extensions
- Template for future package extensions: Copier template soon available on GitHub
owi-metadatabase-soil,owi-metadatabase-fatigue(planned)owi-metadatabase-results(planned)
Installation
Quick Install
Using pip:
pip install owi-metadatabase
Using uv (recommended for development):
uv pip install owi-metadatabase
Install With Soil Extension
Using pip:
pip install "owi-metadatabase[soil]"
Using uv:
uv pip install "owi-metadatabase[soil]"
In zsh, keep the extra 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 Quick Start 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) Importable via:from owi.metadatabase.fatigue import FatigueAPI(when available)
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
- MkDocs Material: Documentation
Common Tasks
# Run tests
uv run invoke test.all
# Build documentation
uv run invoke docs.build
# Serve documentation locally
uv run invoke docs.serve
# Run code quality checks
uv run invoke quality.all
# Format code
uv run invoke quality.format
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. Future packages will extend the owi.metadatabase namespace:
owi-metadatabase-fatigue(planned): Fatigue analysis toolsowi-metadatabase-soil: Soil data processing- Your extension: Create custom extensions using the namespace
All extensions work seamlessly together:
from owi.metadatabase.geometry import GeometryAPI # Base
from owi.metadatabase.fatigue import FatigueAPI # Extension
from owi.metadatabase.soil import SoilAPI # Extension
Documentation
- Getting Started: Installation and quick start
- User Guide: Comprehensive usage guide
- API Reference: Complete API documentation
- Examples: Jupyter notebooks and code examples
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.2.tar.gz.
File metadata
- Download URL: owi_metadatabase-0.1.2.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 |
0ddeb1f25e7b4b3c2c8c89a54afaa8044d8543545bbf2421296435ef1170ed97
|
|
| MD5 |
f6d76b01bdf977898321bdc4903d34d7
|
|
| BLAKE2b-256 |
d8bf8c6dae81e65a2beeb14a7585383f6147ad738be13808764324f8e229b256
|
Provenance
The following attestation bundles were made for owi_metadatabase-0.1.2.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.2.tar.gz -
Subject digest:
0ddeb1f25e7b4b3c2c8c89a54afaa8044d8543545bbf2421296435ef1170ed97 - Sigstore transparency entry: 1136444869
- Sigstore integration time:
-
Permalink:
OWI-Lab/owi-metadatabase-sdk@aac3c9b71eed91756b6185b229b292a71d7c2404 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/OWI-Lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@aac3c9b71eed91756b6185b229b292a71d7c2404 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file owi_metadatabase-0.1.2-py3-none-any.whl.
File metadata
- Download URL: owi_metadatabase-0.1.2-py3-none-any.whl
- Upload date:
- Size: 63.6 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 |
e31eb55479970c436d17f5fca8bcd2d44400650cbf502ea868fadc98f1dfd50a
|
|
| MD5 |
5f5cc2b5bc8c18578b11eb1d69d6c173
|
|
| BLAKE2b-256 |
b084a5987ec0e693275bc8b3e3f9aec0127f349eede2de2195dc8b921bb343d4
|
Provenance
The following attestation bundles were made for owi_metadatabase-0.1.2-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.2-py3-none-any.whl -
Subject digest:
e31eb55479970c436d17f5fca8bcd2d44400650cbf502ea868fadc98f1dfd50a - Sigstore transparency entry: 1136444968
- Sigstore integration time:
-
Permalink:
OWI-Lab/owi-metadatabase-sdk@aac3c9b71eed91756b6185b229b292a71d7c2404 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/OWI-Lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@aac3c9b71eed91756b6185b229b292a71d7c2404 -
Trigger Event:
workflow_dispatch
-
Statement type: