Skip to main content

Open Data Discovery Models

Project description

PyPI version

OpenDataDiscovery Models package

Has some useful tools for working with OpenDataDiscovery. Such as:

  1. Generated Python models from OpenDataDiscovery specification.
  2. API Client for working with OpenDataDiscovery.
  3. API for manual discovering data entities.

Installation

pip install odd-models

Models using example

odd-models.models package provides automatically generated Python model by OpenDataDiscovery specification. It can be used for creating data entities for uploading them into the Platform.

Code example (full code):

from oddrn_generator import PostgresqlGenerator
from odd_models.models import DataEntity, DataSet, DataSetField, DataSetFieldType, DataEntityType, Type, MetadataExtension
generator = PostgresqlGenerator(host_settings="localhost", databases="my_database", schemas="public")
DataEntity(
    oddrn=generator.get_oddrn_by_path("tables", "my_table"),
    name="my_table",
    type=DataEntityType.TABLE,
    metadata=[MetadataExtension(schema_url="https://example.com/schema.json", metadata={"env": "DEV"})],
    dataset=DataSet(
        field_list=[
            DataSetField(
                oddrn=generator.get_oddrn_by_path("tables_columns", "name"),
                name="name",
                type=DataSetFieldType(
                    type=Type.TYPE_STRING,
                    logical_type='str',
                    is_nullable=False
                ),
            )
        ]
    )
)

HTTP Client for OpenDataDiscovery


odd-models.client package provides API client for OpenDataDiscovery API. Client provides an API for working with OpenDataDiscovery Platform. It has various methods for working with data sources, data entities, management etc.

Code example(full code):

from examples.postgres_models import data_entity_list, generator
from odd_models.api_client.v2.odd_api_client import Client

client = Client(host="http://localhost:8080")
client.auth(name="postgres", description="Token for dev AWS account data sources")

client.create_data_source(
    data_source_oddrn=generator.get_data_source_oddrn(),
    data_source_name="Postgres data source",
)
client.ingest_data_entity_list(data_entities=data_entity_list)

Manual Discovery API


When there is no programmatic way to discover data sources and data entities, odd-models.discovery package provides API for manual discovery of data sources and data entities.

Code example(full code):

from odd_models.discovery import DataSource
from odd_models.discovery.data_assets import AWSLambda, S3Artifact
from odd_models.discovery.data_assets.data_asset_list import DataAssetsList

with DataSource("//cloud/aws/dev") as data_source:
    validation_lambda = AWSLambda.from_params(
        region="eu-central-1", account="0123456789", function_name="validation"
    )
    input_artifact = S3Artifact.from_url("s3://bucket/folder/test_data.csv")

    results = S3Artifact.from_url("s3://bucket/folder/test_result.csv")
    metrics = S3Artifact.from_url("s3://bucket/folder/test_metrics.json")

    input_artifact >> validation_lambda >> DataAssetsList([results, metrics])

    data_source.add_data_asset(validation_lambda)

Development

Installation

# Install dependencies
poetry install

# Activate virtual environment
poetry shell

Generating models

# Generate models. Will generate models pydantic into odd_models/models
make generate_models

# Generate api client. Will generate api client into odd_models/api_client
make generate_client

Tests

pytest .

Docker build

docker build -t odd-models .

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

odd_models-2.0.36.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

odd_models-2.0.36-py3-none-any.whl (27.5 kB view details)

Uploaded Python 3

File details

Details for the file odd_models-2.0.36.tar.gz.

File metadata

  • Download URL: odd_models-2.0.36.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.9.16 Linux/6.2.0-1016-azure

File hashes

Hashes for odd_models-2.0.36.tar.gz
Algorithm Hash digest
SHA256 c392c8f60f109c1119d625cea120ae6fffb18b477cf6e89b9e43c9d61af7ba5b
MD5 ca3d4687a079c668c9f3a8e311f68c07
BLAKE2b-256 c3e375d1f9b89a3d02b773d4b5584394f1fcc9deb5d8d4a8a7892a54a35a3e58

See more details on using hashes here.

File details

Details for the file odd_models-2.0.36-py3-none-any.whl.

File metadata

  • Download URL: odd_models-2.0.36-py3-none-any.whl
  • Upload date:
  • Size: 27.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.9.16 Linux/6.2.0-1016-azure

File hashes

Hashes for odd_models-2.0.36-py3-none-any.whl
Algorithm Hash digest
SHA256 fb61029ccfb1b99c69816ab74ed96fb0d92a56f31729e93b081cad10d076dc13
MD5 f1dd223ac41bb1f0eca816e409dec1f5
BLAKE2b-256 f35ac959afff8c919381b8bc30c595382bbc824e707fe373b3e50d0b8576132a

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