2021-12-01 12:46:28 +05:30
|
|
|
# Copyright 2021 Collate
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
2021-08-02 15:08:30 +05:30
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
|
2021-08-01 14:27:44 -07:00
|
|
|
import os
|
2021-10-26 21:44:24 +05:30
|
|
|
from typing import Dict, Set
|
2021-08-01 14:27:44 -07:00
|
|
|
|
2021-10-26 21:44:24 +05:30
|
|
|
from setuptools import find_namespace_packages, setup
|
2021-08-01 14:27:44 -07:00
|
|
|
|
|
|
|
|
|
|
|
def get_long_description():
|
|
|
|
root = os.path.dirname(__file__)
|
2021-08-13 01:40:56 +05:30
|
|
|
with open(os.path.join(root, "README.md")) as f:
|
2021-08-01 14:27:44 -07:00
|
|
|
description = f.read()
|
|
|
|
return description
|
|
|
|
|
|
|
|
|
|
|
|
base_requirements = {
|
|
|
|
"commonregex",
|
2021-08-14 00:58:21 +05:30
|
|
|
"idna<3,>=2.5",
|
2021-08-01 14:27:44 -07:00
|
|
|
"mypy_extensions>=0.4.3",
|
|
|
|
"typing-inspect",
|
2022-11-13 11:59:43 +01:00
|
|
|
"pydantic~=1.9.0",
|
|
|
|
"email-validator>=1.0.3",
|
2021-08-01 14:27:44 -07:00
|
|
|
"google>=3.0.0",
|
|
|
|
"google-auth>=1.33.0",
|
|
|
|
"python-dateutil>=2.8.1",
|
|
|
|
"wheel~=0.36.2",
|
|
|
|
"python-jose==3.3.0",
|
2022-02-28 17:11:18 +01:00
|
|
|
"sqlalchemy>=1.4.0",
|
2022-03-28 08:33:02 +02:00
|
|
|
"requests>=2.23",
|
2021-12-14 11:28:57 -08:00
|
|
|
"cryptography",
|
2022-02-18 12:50:55 +05:30
|
|
|
"Jinja2>=2.11.3",
|
2021-10-26 21:44:24 +05:30
|
|
|
"PyYAML",
|
2022-01-26 16:45:28 +05:30
|
|
|
"jsonschema",
|
2022-10-24 17:22:22 +02:00
|
|
|
"sqllineage==1.3.7",
|
2022-05-23 09:51:34 +02:00
|
|
|
"antlr4-python3-runtime==4.9.2",
|
2022-07-19 14:51:44 +02:00
|
|
|
"boto3~=1.19.12",
|
|
|
|
"botocore==1.22.12",
|
2022-05-18 10:55:39 +05:30
|
|
|
# compatibility requirements for 3.7
|
|
|
|
"typing-compat~=0.1.0",
|
2022-10-21 09:41:43 +02:00
|
|
|
"importlib-metadata~=4.12.0", # From airflow constraints
|
2022-08-04 07:22:47 -07:00
|
|
|
"croniter~=1.3.0",
|
2021-09-19 13:59:14 +05:30
|
|
|
}
|
|
|
|
|
2021-09-27 08:43:38 -07:00
|
|
|
|
2021-08-01 14:27:44 -07:00
|
|
|
plugins: Dict[str, Set[str]] = {
|
2022-05-25 08:35:16 +02:00
|
|
|
"airflow": {
|
2022-07-28 14:46:25 +02:00
|
|
|
"apache-airflow==2.3.3"
|
2022-05-25 08:35:16 +02:00
|
|
|
}, # Same as ingestion container. For development.
|
2022-03-28 08:33:02 +02:00
|
|
|
"airflow-container-1.10.15": {"markupsafe==2.0.1 ", "requests==2.23.0"},
|
2021-11-20 14:08:27 -08:00
|
|
|
"amundsen": {"neo4j~=4.4.0"},
|
2021-08-13 02:03:39 +05:30
|
|
|
"athena": {"PyAthena[SQLAlchemy]"},
|
2022-03-01 11:50:14 +05:30
|
|
|
"atlas": {},
|
2022-02-17 09:23:07 +05:30
|
|
|
"azuresql": {"pyodbc"},
|
2022-02-07 00:06:10 +05:30
|
|
|
"bigquery": {
|
2022-05-18 00:01:20 +05:30
|
|
|
"sqlalchemy-bigquery>=1.2.2",
|
2022-02-07 00:06:10 +05:30
|
|
|
"pyarrow~=6.0.1",
|
|
|
|
"google-cloud-datacatalog==3.6.2",
|
|
|
|
},
|
2022-02-24 21:58:40 +05:30
|
|
|
"bigquery-usage": {"google-cloud-logging", "cachetools"},
|
2022-01-14 10:09:46 +05:30
|
|
|
"docker": {"python_on_whales==0.34.0"},
|
2022-10-27 01:14:51 +11:00
|
|
|
"backup": {"boto3~=1.19.12", "azure-identity", "azure-storage-blob"},
|
2022-09-23 17:46:40 +05:30
|
|
|
"dagster": {"pymysql>=1.0.2", "psycopg2-binary", "GeoAlchemy2", "dagster_graphql"},
|
2022-06-15 12:27:21 +05:30
|
|
|
"datalake": {
|
|
|
|
"google-cloud-storage==1.43.0",
|
|
|
|
"pandas==1.3.5",
|
|
|
|
"gcsfs==2022.5.0",
|
|
|
|
"s3fs==0.4.2",
|
|
|
|
"pyarrow==6.0.1",
|
|
|
|
"boto3~=1.19.12",
|
|
|
|
},
|
2022-05-03 15:13:46 +05:30
|
|
|
"dbt": {"google-cloud", "boto3", "google-cloud-storage==1.43.0"},
|
2021-11-29 10:59:15 -08:00
|
|
|
"druid": {"pydruid>=0.6.2"},
|
2022-08-09 12:36:16 +05:30
|
|
|
"elasticsearch": {"elasticsearch==7.13.1", "requests-aws4auth==1.1.2"},
|
2021-11-10 20:58:13 +05:30
|
|
|
"glue": {"boto3~=1.19.12"},
|
2022-02-08 00:22:11 +05:30
|
|
|
"dynamodb": {"boto3~=1.19.12"},
|
2022-11-03 22:49:20 +05:30
|
|
|
"sagemaker": {"boto3~=1.19.12"},
|
2021-10-26 21:44:24 +05:30
|
|
|
"hive": {
|
2022-09-21 07:50:17 +05:30
|
|
|
"pyhive~=0.6.5",
|
2021-10-26 21:44:24 +05:30
|
|
|
"thrift~=0.13.0",
|
|
|
|
"sasl==0.3.1",
|
|
|
|
"thrift-sasl==0.4.3",
|
2022-01-18 20:25:43 -08:00
|
|
|
"presto-types-parser==0.0.2",
|
2021-10-26 21:44:24 +05:30
|
|
|
},
|
2022-11-11 16:35:09 +05:30
|
|
|
"kafka": {
|
|
|
|
"confluent_kafka==1.8.2",
|
|
|
|
"fastavro>=1.2.0",
|
|
|
|
"avro-python3",
|
|
|
|
"avro",
|
|
|
|
"grpcio-tools",
|
|
|
|
"protobuf",
|
|
|
|
},
|
2022-11-02 16:12:45 +05:30
|
|
|
"kinesis": {"boto3~=1.19.12"},
|
2022-11-11 16:35:09 +05:30
|
|
|
"redpanda": {
|
|
|
|
"confluent_kafka==1.8.2",
|
|
|
|
"fastavro>=1.2.0",
|
|
|
|
"avro-python3",
|
|
|
|
"avro",
|
|
|
|
"grpcio-tools",
|
|
|
|
"protobuf",
|
|
|
|
},
|
2021-08-01 14:27:44 -07:00
|
|
|
"ldap-users": {"ldap3==2.9.1"},
|
2022-06-13 08:07:04 +02:00
|
|
|
"looker": {"looker-sdk>=22.4.0"},
|
2021-08-13 02:03:39 +05:30
|
|
|
"mssql": {"sqlalchemy-pytds>=0.3"},
|
2022-11-14 13:10:41 +05:30
|
|
|
"pymssql": {"pymssql==2.2.5"},
|
2021-08-13 02:03:39 +05:30
|
|
|
"mssql-odbc": {"pyodbc"},
|
|
|
|
"mysql": {"pymysql>=1.0.2"},
|
2022-08-05 10:28:04 +05:30
|
|
|
"oracle": {"cx_Oracle", "oracledb==1.0.3"},
|
2022-06-01 14:06:12 +05:30
|
|
|
"powerbi": {"msal==1.17.0"},
|
2021-08-18 00:41:24 -07:00
|
|
|
"presto": {"pyhive~=0.6.3"},
|
2022-04-01 20:12:03 +01:00
|
|
|
"trino": {"trino[sqlalchemy]"},
|
2021-08-13 02:03:39 +05:30
|
|
|
"postgres": {"pymysql>=1.0.2", "psycopg2-binary", "GeoAlchemy2"},
|
2022-03-06 09:00:58 +01:00
|
|
|
"redash": {"redash-toolbelt==0.1.8"},
|
2022-01-18 20:25:43 -08:00
|
|
|
"redshift": {"sqlalchemy-redshift==0.8.9", "psycopg2-binary", "GeoAlchemy2"},
|
2021-10-26 21:44:24 +05:30
|
|
|
"redshift-usage": {
|
2022-01-11 14:58:03 +05:30
|
|
|
"sqlalchemy-redshift==0.8.9",
|
2021-10-26 21:44:24 +05:30
|
|
|
"psycopg2-binary",
|
|
|
|
"GeoAlchemy2",
|
|
|
|
},
|
2022-10-21 09:41:43 +02:00
|
|
|
"snowflake": {"snowflake-sqlalchemy~=1.4.3"},
|
|
|
|
"snowflake-usage": {"snowflake-sqlalchemy~=1.4.3"},
|
2021-12-06 23:52:27 +05:30
|
|
|
"sample-entity": {"faker~=8.1.1"},
|
2021-09-09 22:11:19 -07:00
|
|
|
"superset": {},
|
2022-02-08 23:02:56 +05:30
|
|
|
"tableau": {"tableau-api-lib==0.1.29"},
|
2021-09-27 08:43:38 -07:00
|
|
|
"vertica": {"sqlalchemy-vertica[vertica-python]>=0.0.5"},
|
2022-06-05 21:37:09 -07:00
|
|
|
"webhook-server": {},
|
2021-11-21 13:06:53 +01:00
|
|
|
"salesforce": {"simple_salesforce~=1.11.4"},
|
|
|
|
"okta": {"okta~=2.3.0"},
|
2022-06-28 14:58:38 +02:00
|
|
|
"mlflow": {"mlflow-skinny~=1.26.1"},
|
2022-01-10 09:36:08 +01:00
|
|
|
"sklearn": {"scikit-learn==1.0.2"},
|
2022-02-08 23:02:56 +05:30
|
|
|
"db2": {"ibm-db-sa==0.3.7"},
|
2022-02-26 21:48:49 +05:30
|
|
|
"clickhouse": {"clickhouse-driver==0.2.3", "clickhouse-sqlalchemy==0.2.0"},
|
2022-02-17 11:22:13 +05:30
|
|
|
"databricks": {"sqlalchemy-databricks==0.1.0"},
|
2022-02-16 10:41:46 +05:30
|
|
|
"singlestore": {"pymysql>=1.0.2"},
|
2022-03-01 01:14:28 +05:30
|
|
|
"azure-sso": {"msal~=1.17.0"},
|
2022-07-24 18:49:15 +02:00
|
|
|
"deltalake": {"delta-spark~=2.0.0"},
|
2022-05-26 15:16:03 +02:00
|
|
|
"great-expectations": {"great-expectations~=0.15.0"},
|
2022-05-11 14:43:28 +05:30
|
|
|
"pinotdb": {"pinotdb~=0.3.11"},
|
2022-08-26 21:50:01 +02:00
|
|
|
"nifi": {},
|
2022-10-13 10:55:48 +05:30
|
|
|
"domo": {"pydomo~=0.3.0.5"},
|
2021-08-01 14:27:44 -07:00
|
|
|
}
|
2022-01-07 10:28:38 +01:00
|
|
|
dev = {
|
2022-11-02 10:31:44 +01:00
|
|
|
"datamodel-code-generator==0.13.4",
|
2022-05-18 10:55:39 +05:30
|
|
|
"black==22.3.0",
|
|
|
|
"pycln==1.3.2",
|
2022-01-07 10:28:38 +01:00
|
|
|
"docker",
|
|
|
|
"google-cloud-storage==1.43.0",
|
|
|
|
"twine",
|
|
|
|
}
|
|
|
|
test = {
|
2022-09-14 18:40:06 +05:30
|
|
|
"isort==5.10.1",
|
2022-01-07 10:28:38 +01:00
|
|
|
"pre-commit",
|
|
|
|
"pylint",
|
2022-02-06 23:41:56 +01:00
|
|
|
"pytest==7.0.0",
|
2022-01-07 10:28:38 +01:00
|
|
|
"pytest-cov",
|
2022-10-10 11:36:20 +02:00
|
|
|
"pytest-order",
|
2022-01-07 10:28:38 +01:00
|
|
|
"faker",
|
|
|
|
"coverage",
|
2022-01-10 09:36:08 +01:00
|
|
|
# sklearn integration
|
|
|
|
"scikit-learn==1.0.2",
|
|
|
|
"pandas==1.3.5",
|
2022-05-26 15:16:03 +02:00
|
|
|
# great_expectations tests
|
|
|
|
"great-expectations~=0.15.0",
|
2022-07-14 15:07:39 +02:00
|
|
|
# Airflow tests
|
2022-07-28 14:46:25 +02:00
|
|
|
"apache-airflow==2.3.3",
|
2022-11-07 17:08:20 +01:00
|
|
|
# Domo test
|
|
|
|
"pydomo~=0.3.0.5",
|
2022-11-02 16:12:45 +05:30
|
|
|
# mock boto3 functions
|
|
|
|
"moto==4.0.8",
|
2022-11-10 10:54:31 +01:00
|
|
|
# amundsen
|
|
|
|
"neo4j~=4.4.0",
|
2022-01-07 10:28:38 +01:00
|
|
|
}
|
2021-08-01 14:27:44 -07:00
|
|
|
|
|
|
|
build_options = {"includes": ["_cffi_backend"]}
|
|
|
|
setup(
|
2021-08-13 01:40:56 +05:30
|
|
|
name="openmetadata-ingestion",
|
2022-09-09 01:25:41 +05:30
|
|
|
version="0.13.0.dev0",
|
2021-08-13 01:40:56 +05:30
|
|
|
url="https://open-metadata.org/",
|
|
|
|
author="OpenMetadata Committers",
|
2021-08-01 14:27:44 -07:00
|
|
|
license="Apache License 2.0",
|
2021-08-13 01:40:56 +05:30
|
|
|
description="Ingestion Framework for OpenMetadata",
|
|
|
|
long_description=get_long_description(),
|
2021-08-01 14:27:44 -07:00
|
|
|
long_description_content_type="text/markdown",
|
2022-05-18 00:01:20 +05:30
|
|
|
python_requires=">=3.7",
|
2021-08-01 14:27:44 -07:00
|
|
|
options={"build_exe": build_options},
|
|
|
|
package_dir={"": "src"},
|
2022-09-19 17:00:00 +02:00
|
|
|
package_data={"metadata.examples": ["workflows/*.yaml"]},
|
2021-08-13 01:40:56 +05:30
|
|
|
zip_safe=False,
|
2021-10-26 21:44:24 +05:30
|
|
|
dependency_links=[],
|
2021-08-13 01:40:56 +05:30
|
|
|
project_urls={
|
|
|
|
"Documentation": "https://docs.open-metadata.org/",
|
|
|
|
"Source": "https://github.com/open-metadata/OpenMetadata",
|
|
|
|
},
|
2021-10-26 21:44:24 +05:30
|
|
|
packages=find_namespace_packages(where="./src", exclude=["tests*"]),
|
2022-08-23 18:06:58 +05:30
|
|
|
namespace_package=["metadata"],
|
2021-08-01 14:27:44 -07:00
|
|
|
entry_points={
|
|
|
|
"console_scripts": ["metadata = metadata.cmd:metadata"],
|
2021-10-26 21:44:24 +05:30
|
|
|
"apache_airflow_provider": [
|
|
|
|
"provider_info = airflow_provider_openmetadata:get_provider_config"
|
|
|
|
],
|
2021-08-01 14:27:44 -07:00
|
|
|
},
|
|
|
|
install_requires=list(base_requirements),
|
|
|
|
extras_require={
|
|
|
|
"base": list(base_requirements),
|
2022-01-07 10:28:38 +01:00
|
|
|
"dev": list(dev),
|
|
|
|
"test": list(test),
|
2022-11-15 05:44:25 +01:00
|
|
|
"data-insight": list(plugins["elasticsearch"]),
|
2021-10-26 21:44:24 +05:30
|
|
|
**{plugin: list(dependencies) for (plugin, dependencies) in plugins.items()},
|
2021-09-12 00:16:10 +05:30
|
|
|
"all": list(
|
|
|
|
base_requirements.union(
|
2022-03-03 14:55:40 +05:30
|
|
|
*[
|
|
|
|
requirements
|
|
|
|
for plugin, requirements in plugins.items()
|
2022-05-26 15:16:03 +02:00
|
|
|
if plugin
|
|
|
|
not in {
|
|
|
|
"airflow",
|
|
|
|
"airflow-container-1.10.15",
|
|
|
|
"db2",
|
|
|
|
"great-expectations",
|
|
|
|
}
|
2022-03-03 14:55:40 +05:30
|
|
|
]
|
2021-09-12 00:16:10 +05:30
|
|
|
)
|
2021-10-26 21:44:24 +05:30
|
|
|
),
|
|
|
|
},
|
2021-08-01 14:27:44 -07:00
|
|
|
)
|