Skip to main content

Core SDK for OWI-Lab metadatabase: geometry and location data

Project description

OWI-metadatabase SDK

version python versions license pytest lint issues DOI Coverage Documentation

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.

📚 Read the Documentation

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-sdkowi-metadatabase
  • Import path: owimetadatabase_preprocessor.*owi.metadatabase.*
  • Removed modules: fatigue, soil, and results (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 tools
  • owi-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

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

Related Projects

Support


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

owi_metadatabase-0.1.1.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

owi_metadatabase-0.1.1-py3-none-any.whl (63.6 kB view details)

Uploaded Python 3

File details

Details for the file owi_metadatabase-0.1.1.tar.gz.

File metadata

  • Download URL: owi_metadatabase-0.1.1.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

Hashes for owi_metadatabase-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ce14a10b9cc30309b5b2236e7788d5857e6c73fd06393de7e903eba32f7a1b18
MD5 d169193425255e760b7ab0ab9b777093
BLAKE2b-256 69a2672c0e2acbb358883db20358fff3e2d21fdb91233c1337b4af3aa5c2369d

See more details on using hashes here.

Provenance

The following attestation bundles were made for owi_metadatabase-0.1.1.tar.gz:

Publisher: publish.yml on OWI-Lab/owi-metadatabase-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file owi_metadatabase-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for owi_metadatabase-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 021b400092e6aaf216ad020e9e8ae448f5b67e1b2e380eb48fac0f4c59e61d31
MD5 fe33abf1e8d01861e849109ed6c39854
BLAKE2b-256 74680c3990c8492dbb02d93e8853e7401e57901ea72b06e05b7fd50e83b5df47

See more details on using hashes here.

Provenance

The following attestation bundles were made for owi_metadatabase-0.1.1-py3-none-any.whl:

Publisher: publish.yml on OWI-Lab/owi-metadatabase-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page