mirror of
https://github.com/datahub-project/datahub.git
synced 2025-06-27 05:03:31 +00:00
249 lines
7.3 KiB
Python
249 lines
7.3 KiB
Python
# Copyright 2021 Acryl Data, Inc.
|
|
#
|
|
# 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
|
|
#
|
|
# 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.
|
|
|
|
import os
|
|
from typing import Dict, Set
|
|
|
|
import setuptools
|
|
|
|
package_metadata: dict = {}
|
|
with open("./src/datahub_actions/_version.py") as fp:
|
|
exec(fp.read(), package_metadata)
|
|
|
|
|
|
def get_long_description():
|
|
root = os.path.dirname(__file__)
|
|
with open(os.path.join(root, "README.md")) as f:
|
|
description = f.read()
|
|
|
|
return description
|
|
|
|
|
|
acryl_datahub_min_version = os.environ.get("ACRYL_DATAHUB_MIN_VERSION") or "1.0.0"
|
|
|
|
lint_requirements = {
|
|
# This is pinned only to avoid spurious errors in CI.
|
|
# We should make an effort to keep it up to date.
|
|
"ruff==0.9.7",
|
|
"mypy==1.10.1",
|
|
}
|
|
|
|
base_requirements = {
|
|
*lint_requirements,
|
|
f"acryl-datahub[datahub-kafka]>={acryl_datahub_min_version}",
|
|
# Compatibility.
|
|
"typing_extensions>=3.7.4; python_version < '3.8'",
|
|
"mypy_extensions>=0.4.3",
|
|
# Actual dependencies.
|
|
"typing-inspect",
|
|
"pydantic<2",
|
|
"dictdiffer",
|
|
"ratelimit",
|
|
}
|
|
|
|
framework_common = {
|
|
"click>=6.0.0",
|
|
"click-default-group",
|
|
"prometheus-client",
|
|
"PyYAML",
|
|
"toml>=0.10.0",
|
|
"entrypoints",
|
|
"python-dateutil>=2.8.0",
|
|
"stackprinter",
|
|
"progressbar2",
|
|
"tenacity",
|
|
}
|
|
|
|
aws_common = {
|
|
# AWS Python SDK
|
|
"boto3",
|
|
# Deal with a version incompatibility between botocore (used by boto3) and urllib3.
|
|
# See https://github.com/boto/botocore/pull/2563.
|
|
"botocore!=1.23.0",
|
|
}
|
|
|
|
# Note: for all of these, framework_common will be added.
|
|
plugins: Dict[str, Set[str]] = {
|
|
# Source Plugins
|
|
"kafka": {
|
|
"confluent-kafka[schemaregistry]",
|
|
},
|
|
# Action Plugins
|
|
"executor": {
|
|
"acryl-executor==0.1.2",
|
|
},
|
|
"slack": {
|
|
"slack-bolt>=1.15.5",
|
|
},
|
|
"teams": {
|
|
"pymsteams >=0.2.2",
|
|
},
|
|
"tag_propagation": set(),
|
|
"term_propagation": set(),
|
|
"snowflake_tag_propagation": {
|
|
f"acryl-datahub[snowflake]>={acryl_datahub_min_version}"
|
|
},
|
|
"doc_propagation": set(),
|
|
# Transformer Plugins (None yet)
|
|
}
|
|
|
|
mypy_stubs = {
|
|
"types-pytz",
|
|
"types-dataclasses",
|
|
"sqlalchemy-stubs",
|
|
"types-setuptools",
|
|
"types-six",
|
|
"types-python-dateutil",
|
|
"types-requests",
|
|
"types-toml",
|
|
"types-PyMySQL",
|
|
"types-PyYAML",
|
|
"types-freezegun",
|
|
"types-cachetools",
|
|
# versions 0.1.13 and 0.1.14 seem to have issues
|
|
"types-click==0.1.12",
|
|
"boto3-stubs[s3,glue,sagemaker]",
|
|
}
|
|
|
|
base_dev_requirements = {
|
|
*base_requirements,
|
|
*framework_common,
|
|
*mypy_stubs,
|
|
"coverage>=5.1",
|
|
"pytest>=6.2.2",
|
|
"pytest-cov>=2.8.1",
|
|
"pytest-dependency>=0.5.1",
|
|
"pytest-docker>=0.10.3",
|
|
"tox",
|
|
"deepdiff",
|
|
"requests-mock",
|
|
"freezegun",
|
|
"jsonpickle",
|
|
"build",
|
|
"twine",
|
|
*list(
|
|
dependency
|
|
for plugin in [
|
|
"kafka",
|
|
"executor",
|
|
"slack",
|
|
"teams",
|
|
"tag_propagation",
|
|
"term_propagation",
|
|
"snowflake_tag_propagation",
|
|
"doc_propagation",
|
|
]
|
|
for dependency in plugins[plugin]
|
|
),
|
|
}
|
|
|
|
dev_requirements = {
|
|
*base_dev_requirements,
|
|
}
|
|
|
|
full_test_dev_requirements = {
|
|
*list(
|
|
dependency
|
|
for plugin in [
|
|
"kafka",
|
|
"executor",
|
|
"slack",
|
|
"teams",
|
|
"tag_propagation",
|
|
"term_propagation",
|
|
"snowflake_tag_propagation",
|
|
"doc_propagation",
|
|
]
|
|
for dependency in plugins[plugin]
|
|
),
|
|
}
|
|
|
|
entry_points = {
|
|
"console_scripts": ["datahub-actions = datahub_actions.entrypoints:main"],
|
|
"datahub_actions.action.plugins": [
|
|
"executor = datahub_actions.plugin.action.execution.executor_action:ExecutorAction",
|
|
"slack = datahub_actions.plugin.action.slack.slack:SlackNotificationAction",
|
|
"teams = datahub_actions.plugin.action.teams.teams:TeamsNotificationAction",
|
|
"metadata_change_sync = datahub_actions.plugin.action.metadata_change_sync.metadata_change_sync:MetadataChangeSyncAction",
|
|
"tag_propagation = datahub_actions.plugin.action.tag.tag_propagation_action:TagPropagationAction",
|
|
"term_propagation = datahub_actions.plugin.action.term.term_propagation_action:TermPropagationAction",
|
|
"snowflake_tag_propagation = datahub_actions.plugin.action.snowflake.tag_propagator:SnowflakeTagPropagatorAction",
|
|
"doc_propagation = datahub_actions.plugin.action.propagation.docs.propagation_action:DocPropagationAction",
|
|
],
|
|
"datahub_actions.transformer.plugins": [],
|
|
"datahub_actions.source.plugins": [],
|
|
}
|
|
|
|
|
|
setuptools.setup(
|
|
# Package metadata.
|
|
name=package_metadata["__package_name__"],
|
|
version=package_metadata["__version__"],
|
|
url="https://datahubproject.io/",
|
|
project_urls={
|
|
"Documentation": "https://datahubproject.io/docs/actions",
|
|
"Source": "https://github.com/acryldata/datahub-actions",
|
|
"Changelog": "https://github.com/acryldata/datahub-actions/releases",
|
|
},
|
|
license="Apache License 2.0",
|
|
description="An action framework to work with DataHub real time changes.",
|
|
long_description=get_long_description(),
|
|
long_description_content_type="text/markdown",
|
|
classifiers=[
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3 :: Only",
|
|
"Programming Language :: Python :: 3.7",
|
|
"Programming Language :: Python :: 3.8",
|
|
"Programming Language :: Python :: 3.9",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: Information Technology",
|
|
"Intended Audience :: System Administrators",
|
|
"License :: OSI Approved",
|
|
"License :: OSI Approved :: Apache Software License",
|
|
"Operating System :: Unix",
|
|
"Operating System :: POSIX :: Linux",
|
|
"Environment :: Console",
|
|
"Environment :: MacOS X",
|
|
"Topic :: Software Development",
|
|
],
|
|
# Package info.
|
|
zip_safe=False,
|
|
python_requires=">=3.8",
|
|
package_dir={"": "src"},
|
|
packages=setuptools.find_namespace_packages(where="./src"),
|
|
package_data={
|
|
"datahub_actions": ["py.typed"],
|
|
},
|
|
entry_points=entry_points,
|
|
# Dependencies.
|
|
install_requires=list(base_requirements | framework_common),
|
|
extras_require={
|
|
"base": list(framework_common),
|
|
**{
|
|
plugin: list(framework_common | dependencies)
|
|
for (plugin, dependencies) in plugins.items()
|
|
},
|
|
"all": list(
|
|
framework_common.union(
|
|
*[requirements for plugin, requirements in plugins.items()]
|
|
)
|
|
),
|
|
"dev": list(dev_requirements),
|
|
"integration-tests": list(full_test_dev_requirements),
|
|
},
|
|
)
|