Skip to main content

Open Data Discovery Resource Name Generator

Project description

PyPI version

Open Data Discovery Resource Name Generator

Helps generate oddrn for data sources.

Requirements

  • Python >= 3.7

Installation

poetry add oddrn-generator
# or
pip install oddrn-generator

Usage and configuration

Available generators

DataSource Generator class name
cassandra CassandraGenerator
postgresql PostgresqlGenerator
mysql MysqlGenerator
glue GlueGenerator
s3 S3Generator
kafka KafkaGenerator
kafkaconnect KafkaConnectGenerator
snowflake SnowflakeGenerator
airflow AirflowGenerator
hive HiveGenerator
dynamodb DynamodbGenerator
odbc OdbcGenerator
mssql MssqlGenerator
oracle OracleGenerator
redshift RedshiftGenerator
clickhouse ClickHouseGenerator
athena AthenaGenerator
quicksight QuicksightGenerator
dbt DbtGenerator
prefect PrefectGenerator
tableau TableauGenerator
neo4j Neo4jGenerator
mongodb MongoGenerator
vertica VerticaGenerator
CubeJs CubeJsGenerator
superset SupersetGenerator
Presto PrestoGenerator
Trino TrinoGenerator
dms DmsGenerator
powerbi PowerBiGenerator

Generator properties

  • base_oddrn - Get base oddrn (without path)
  • available_paths - Get all available path of generator

Generator methods

  • get_oddrn_by_path(path_name, new_value=None) - Get oddrn string by path. You also can set value for this path using ' new_value' param
  • set_oddrn_paths(**kwargs) - Set or update values of oddrn path
  • get_data_source_oddrn() - Get data source oddrn

Generator parameters:

  • host_settings: str - optional. Hostname configuration
  • cloud_settings: dict - optional. Cloud configuration
  • **kwargs - path's name and values

Example usage

# postgresql
from oddrn_generator import PostgresqlGenerator

oddrn_gen = PostgresqlGenerator(
    host_settings='my.host.com:5432',
    schemas='schema_name', databases='database_name', tables='table_name'
)

oddrn_gen.base_oddrn
# //postgresql/host/my.host.com:5432
oddrn_gen.available_paths
# ('schemas', 'databases', 'tables', 'columns')

oddrn_gen.get_data_source_oddrn()
# //postgresql/host/my.host.com:5432/schemas/schema_name/databases/database_name

oddrn_gen.get_oddrn_by_path("schemas")
# //postgresql/host/my.host.com:5432/schemas/schema_name

oddrn_gen.get_oddrn_by_path("databases")
# //postgresql/host/my.host.com:5432/schemas/schema_name/databases/database_name

oddrn_gen.get_oddrn_by_path("tables")
# //postgresql/host/my.host.com:5432/schemas/schema_name/databases/database_name/tables/table_name

# you can set or change path:
oddrn_gen.set_oddrn_paths(tables='another_table_name', columns='new_column_name')
oddrn_gen.get_oddrn_by_path("columns")
# //postgresql/host/my.host.com:5432/schemas/schema_name/databases/database_name/tables/another_table_name/columns/new_column_name

# you can get path wih new values:
oddrn_gen.get_oddrn_by_path("columns", new_value="another_new_column_name")
# //postgresql/host/my.host.com:5432/schemas/schema_name/databases/database_name/tables/another_table_name/columns/another_new_column_name


# glue
from oddrn_generator import GlueGenerator

oddrn_gen = GlueGenerator(
    cloud_settings={'account': 'acc_id', 'region': 'reg_id'},
    databases='database_name', tables='table_name', columns='column_name',
    jobs='job_name', runs='run_name', owners='owner_name'
)

oddrn_gen.available_paths
# ('databases', 'tables', 'columns', 'owners', 'jobs', 'runs')

oddrn_gen.get_oddrn_by_path("databases")
# //glue/cloud/aws/account/acc_id/region/reg_id/databases/database_name

oddrn_gen.get_oddrn_by_path("tables")
# //glue/cloud/aws/account/acc_id/region/reg_id/databases/database_name/tables/table_name'

oddrn_gen.get_oddrn_by_path("columns")
# //glue/cloud/aws/account/acc_id/region/reg_id/databases/database_name/tables/table_name/columns/column_name

oddrn_gen.get_oddrn_by_path("jobs")
# //glue/cloud/aws/account/acc_id/region/reg_id/jobs/job_name

oddrn_gen.get_oddrn_by_path("runs")
# //glue/cloud/aws/account/acc_id/region/reg_id/jobs/job_name/runs/run_name

oddrn_gen.get_oddrn_by_path("owners")
# //glue/cloud/aws/account/acc_id/region/reg_id/owners/owner_name

Exceptions

  • WrongPathOrderException - raises when trying set path that depends on another path
from oddrn_generator import PostgresqlGenerator

oddrn_gen = PostgresqlGenerator(
    host_settings='my.host.com:5432',
    schemas='schema_name', databases='database_name',
    columns='column_without_table'
)
# WrongPathOrderException: 'columns' can not be without 'tables' attribute
  • EmptyPathValueException - raises when trying to get a path that is not set up
from oddrn_generator import PostgresqlGenerator

oddrn_gen = PostgresqlGenerator(
    host_settings='my.host.com:5432', schemas='schema_name', databases='database_name',
)
oddrn_gen.get_oddrn_by_path("tables")

# EmptyPathValueException: Path 'tables' is not set up
  • PathDoestExistException - raises when trying to get not existing oddrn path
from oddrn_generator import PostgresqlGenerator

oddrn_gen = PostgresqlGenerator(
    host_settings='my.host.com:5432', schemas='schema_name', databases='database_name',
)
oddrn_gen.get_oddrn_by_path("jobs")

# PathDoestExistException: Path 'jobs' doesn't exist in generator

Development

#Install dependencies
poetry install

#Activate shell
poetry shell

# Run tests
python run pytest

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oddrn_generator-0.1.64.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

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

oddrn_generator-0.1.64-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file oddrn_generator-0.1.64.tar.gz.

File metadata

  • Download URL: oddrn_generator-0.1.64.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.9.1 Linux/5.15.0-1031-azure

File hashes

Hashes for oddrn_generator-0.1.64.tar.gz
Algorithm Hash digest
SHA256 b1464238fb511c3596a31e93505dded15efe0daf91689388465d410ed12611eb
MD5 af91676731fdeb2bace8b613ddbe1d7f
BLAKE2b-256 b34ed0725df72971e2c6f165fa5d30f16b33cc76ecaf9f5acba05ad8b0e204da

See more details on using hashes here.

File details

Details for the file oddrn_generator-0.1.64-py3-none-any.whl.

File metadata

  • Download URL: oddrn_generator-0.1.64-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.9.1 Linux/5.15.0-1031-azure

File hashes

Hashes for oddrn_generator-0.1.64-py3-none-any.whl
Algorithm Hash digest
SHA256 4ceaf080cffe2afb2563aadfca9c17eb2b8626c3ea0ad0e6f1ac0f33eef5b68d
MD5 5328597e640df75cc9e5e197fa7239b1
BLAKE2b-256 326eab397d5013325d4ab8213f6f014cc6de63dad1b687babd359b13dc2ce80e

See more details on using hashes here.

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