Skip to main content

metldata - A framework for handling metadata based on ETL, CQRS, and event sourcing.

Project description

tests Coverage Status

metldata

A framework for handling metadata based on ETL, CQRS, and event sourcing.

Documentation:

An extensive documentation can be found here (coming soon).

Quick Start

Installation

We recommend using the provided Docker container.

A pre-build version is available at docker hub:

# Please feel free to choose the version as needed:
docker pull ghga/metldata:<version>

Or you can build the container yourself from the ./Dockerfile:

# Execute in the repo's root dir:
# (Please feel free to adapt the name/tag.)
docker build -t ghga/metldata:<version> .

For production-ready deployment, we recommend using Kubernetes, however, for simple use cases, you could execute the service using docker on a single server:

# The entrypoint is preconfigured:
docker run -p 8080:8080 ghga/metldata:<version>

If you prefer not to use containers, you may install the service from source:

# Execute in the repo's root dir:
pip install .

# to run the service:
metldata

Configuration:

The ./example-config.yaml gives an overview of the available configuration options. Please adapt it and choose one of the following options for injecting it into the service:

  • specify the path to via the METLDATA_CONFIG_YAML env variable
  • rename it to .metldata.yaml and place it into one of the following locations:
    • the current working directory were you are execute the service (on unix: ./.metldata.yaml)
    • your home directory (on unix: ~/.metldata.yaml)

The config yaml will be automatically parsed by the service.

Important: If you are using containers, the locations refer to paths within the container.

All parameters mentioned in the ./example-config.yaml could also be set using environment variables or file secrets.

For naming the environment variables, just prefix the parameter name with METLDATA_, e.g. for the host set an environment variable named METLDATA_HOST (you may use both upper or lower cases, however, it is standard to define all env variables in upper cases).

To using file secrets please refer to the corresponding section of the pydantic documentation.

Development

For setting up the development environment, we rely on the devcontainer feature of vscode in combination with Docker Compose.

To use it, you have to have Docker Compose as well as vscode with its "Remote - Containers" extension (ms-vscode-remote.remote-containers) installed. Then open this repository in vscode and run the command Remote-Containers: Reopen in Container from the vscode "Command Palette".

This will give you a full-fledged, pre-configured development environment including:

  • infrastructural dependencies of the service (databases, etc.)
  • all relevant vscode extensions pre-installed
  • pre-configured linting and auto-formating
  • a pre-configured debugger
  • automatic license-header insertion

Moreover, inside the devcontainer, there are two convenience commands available (please type them in the integrated terminal of vscode):

  • dev_install - install the service with all development dependencies, installs pre-commit, and applies any migration scripts to the test database (please run that if you are starting the devcontainer for the first time or if you added any python dependencies to the ./setup.cfg)
  • dev_launcher - starts the service with the development config yaml (located in the ./.devcontainer/ dir)

If you prefer not to use vscode, you could get a similar setup (without the editor specific features) by running the following commands:

# Execute in the repo's root dir:
cd ./.devcontainer

# build and run the environment with docker-compose
docker-compose up

# attach to the main container:
# (you can open multiple shell sessions like this)
docker exec -it devcontainer_app_1 /bin/bash

License

This repository is free to use and modify according to the Apache 2.0 License.

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

metldata-0.1.0.tar.gz (40.1 kB view details)

Uploaded Source

Built Distribution

metldata-0.1.0-py3-none-any.whl (88.2 kB view details)

Uploaded Python 3

File details

Details for the file metldata-0.1.0.tar.gz.

File metadata

  • Download URL: metldata-0.1.0.tar.gz
  • Upload date:
  • Size: 40.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for metldata-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cb26beb08c394956ae9842a2807b161ea5545d739e39b2fd25e8397c1b03235e
MD5 ba78235852e338d98d8b0176f6ca1c4e
BLAKE2b-256 e3eae8099fd10d2cebb29156f68270527b8ed7f709e04cab4c63a21642dc5cdf

See more details on using hashes here.

File details

Details for the file metldata-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: metldata-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 88.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for metldata-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 64874cec7ca14495340936abd57a5ead4fefcfd2f6aa529a1946ed639ef12c81
MD5 3ea401fc98bbee56ed79b033ece76a15
BLAKE2b-256 a754ef113185cbf401b627518d02281865b1628c03f5fa5ba3784d098340bc54

See more details on using hashes here.

Supported by

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