142 lines
4.1 KiB
Python

import os
import pathlib
import setuptools
package_metadata: dict = {}
with open("./src/datahub_gx_plugin/_version.py") as fp:
exec(fp.read(), package_metadata)
def get_long_description():
root = os.path.dirname(__file__)
return pathlib.Path(os.path.join(root, "README.md")).read_text()
rest_common = {"requests", "requests_file"}
_version: str = package_metadata["__version__"]
_self_pin = (
f"=={_version}"
if not (_version.endswith(("dev0", "dev1")) or "docker" in _version)
else ""
)
base_requirements = {
# Actual dependencies.
# This is temporary lower bound that we're open to loosening/tightening as requirements show up
"sqlalchemy>=1.4.39, <2",
# GE added handling for higher version of jinja2 in version 0.15.12
# https://github.com/great-expectations/great_expectations/pull/5382/files
# TODO: support GX 0.18.0
"great-expectations>=0.15.12, <1.0.0",
# datahub does not depend on traitlets directly but great expectations does.
# https://github.com/ipython/traitlets/issues/741
"traitlets<5.2.2",
*rest_common,
f"acryl-datahub[datahub-rest,sql-parser]{_self_pin}",
}
mypy_stubs = {
"types-dataclasses",
"sqlalchemy-stubs",
"types-setuptools",
"types-six",
"types-python-dateutil",
"types-requests",
"types-toml",
"types-PyYAML",
"types-freezegun",
"types-cachetools",
# versions 0.1.13 and 0.1.14 seem to have issues
"types-click==0.1.12",
"types-tabulate",
# avrogen package requires this
"types-pytz",
}
base_dev_requirements = {
*base_requirements,
*mypy_stubs,
"coverage>=5.1",
"ruff==0.11.7",
"mypy==1.14.1",
# pydantic 1.8.2 is incompatible with mypy 0.910.
# See https://github.com/samuelcolvin/pydantic/pull/3175#issuecomment-995382910.
"pydantic>=1.10.0,!=1.10.3",
"pytest>=6.2.2",
"pytest-asyncio>=0.16.0",
"pytest-cov>=2.8.1",
"tox",
# Missing numpy requirement in 8.0.0
"deepdiff!=8.0.0",
"requests-mock",
"freezegun",
"jsonpickle",
"build",
"twine",
"packaging",
}
dev_requirements = {
*base_dev_requirements,
}
integration_test_requirements = {
*dev_requirements,
"psycopg2-binary",
"pyspark",
f"acryl-datahub[testing-utils]{_self_pin}",
"pytest-docker>=1.1.0",
}
entry_points = {
"gx.plugins": "acryl-datahub-gx-plugin = datahub_gx_plugin.action:DataHubValidationAction"
}
setuptools.setup(
# Package metadata.
name=package_metadata["__package_name__"],
version=package_metadata["__version__"],
url="https://docs.datahub.com/",
project_urls={
"Documentation": "https://docs.datahub.com/docs/",
"Source": "https://github.com/datahub-project/datahub",
"Changelog": "https://github.com/datahub-project/datahub/releases",
},
license="Apache License 2.0",
description="Datahub GX plugin to capture executions and send to Datahub",
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",
"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"),
entry_points=entry_points,
# Dependencies.
install_requires=list(base_requirements),
extras_require={
"ignore": [], # This is a dummy extra to allow for trailing commas in the list.
"dev": list(dev_requirements),
"integration-tests": list(integration_test_requirements),
},
)