Skip to main content

OWI-metadatabase SDK

version python versions license pytest lint issues DOI Coverage Documentation

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.

📚 Read the Documentation

Features

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, and results (available as package extensions)
  • Extension extras now available from the core package: soil, results, and shm

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 processing
  • owi-metadatabase-results: Results querying, typed models, and plotting helpers
  • owi-metadatabase-shm: Structural health monitoring queries, typed records, and upload workflows
  • owi-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

Contributing

We welcome contributions! Please see our Contributing Guide for details.

Quick Contribution Workflow

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes with tests and documentation
  4. Run quality checks: uv run invoke quality.all
  5. Run tests: uv run invoke test.all
  6. Commit your changes: git commit -m 'feat: add amazing feature'
  7. Push to the branch: git push origin feature/amazing-feature
  8. 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:

Acknowledgements

This package was developed as part of:

  • ETF Smartlife (FOD165) project
  • WILLOW (EUAR157) project

Project Status

Aspect Status
Version PyPI Version
Python Python Versions
Tests Test Status
Coverage Coverage
Documentation Docs
License License

Support


Built with ❤️ and 🧠 by OWI-Lab

Metadata

Release files for owi-metadatabase 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for owi-metadatabase 0.1.7
File Size Uploaded
owi_metadatabase-0.1.7.tar.gz 1.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for owi-metadatabase 0.1.7
File Interpreter ABI Platform
owi_metadatabase-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 1.3 MB

Release files / owi_metadatabase-0.1.7.tar.gz

Download URL owi_metadatabase-0.1.7.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
29e79da487083bfc91516c6a22429572d4d428c7c4cb5752187636dc6dd0f294
BLAKE2b-256 checksum
How to use checksums
cb05e9009d92e68935c473419422bb236941bc47a644a2f0997e54a9ad341993
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 31, 2026.

Transparency log

Release files / owi_metadatabase-0.1.7-py3-none-any.whl

Download URL owi_metadatabase-0.1.7-py3-none-any.whl
Size 64.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2fd10d0f5a867b3a4468fb745ac875395f59e12b9c8766da1063b066cda4ac1a
BLAKE2b-256 checksum
How to use checksums
9ee70b1b42fdadcf69c59fd9ccd20dd75b2e6465d5db64f95009993ac587c59e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 31, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page