diff --git a/.gitignore b/.gitignore index c36f24283b..02657eb0fa 100644 --- a/.gitignore +++ b/.gitignore @@ -112,3 +112,4 @@ messages.mo docker/requirements-local.txt cache/ +docker/*local* diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..adb629855a --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,198 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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. + +[build-system] +requires = ["setuptools>=40.9.0", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "apache-superset" +description = "A modern, enterprise-ready business intelligence web application" +readme = "README.md" +dynamic = ["version", "scripts", "entry-points", "license", "requires-python"] +authors = [ + { name = "Apache Software Foundation", email = "dev@superset.apache.org" }, +] +classifiers = [ + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", +] +dependencies = [ + "backoff>=1.8.0", + "celery>=5.3.6, <6.0.0", + "click>=8.0.3", + "click-option-group", + "colorama", + "croniter>=0.3.28", + "cron-descriptor", + "cryptography>=42.0.4, <43.0.0", + "deprecation>=2.1.0, <2.2.0", + "flask>=2.2.5, <3.0.0", + "flask-appbuilder>=4.4.1, <5.0.0", + "flask-caching>=2.1.0, <3", + "flask-compress>=1.13, <2.0", + "flask-talisman>=1.0.0, <2.0", + "flask-login>=0.6.0, < 1.0", + "flask-migrate>=3.1.0, <4.0", + "flask-session>=0.4.0, <1.0", + "flask-wtf>=1.1.0, <2.0", + "func_timeout", + "geopy", + "gunicorn>=21.2.0, <22.0; sys_platform != 'win32'", + "hashids>=1.3.1, <2", + "holidays>=0.25, <0.26", + "humanize", + "importlib_metadata", + "isodate", + "Mako>=1.2.2", + "markdown>=3.0", + "msgpack>=1.0.0, <1.1", + "nh3>=0.2.11, <0.3", + "numpy==1.23.5", + "packaging", + "pandas[performance]>=2.0.3, <2.1", + "parsedatetime", + "paramiko>=3.4.0", + "pgsanity", + "polyline>=2.0.0, <3.0", + "pyparsing>=3.0.6, <4", + "python-dateutil", + "python-dotenv", + "python-geohash", + "pyarrow>=14.0.1, <15", + "pyyaml>=6.0.0, <7.0.0", + "PyJWT>=2.4.0, <3.0", + "redis>=4.6.0, <5.0", + "selenium>=3.141.0, <4.10.0", + "shillelagh[gsheetsapi]>=1.2.10, <2.0", + "shortid", + "sshtunnel>=0.4.0, <0.5", + "simplejson>=3.15.0", + "slack_sdk>=3.19.0, <4", + "sqlalchemy>=1.4, <2", + "sqlalchemy-utils>=0.38.3, <0.39", + "sqlglot>=23.0.2,<24", + "sqlparse>=0.4.4, <0.5", + "tabulate>=0.8.9, <0.9", + "typing-extensions>=4, <5", + "waitress; sys_platform == 'win32'", + "wtforms>=2.3.3, <4", + "wtforms-json", + "xlsxwriter>=3.0.7, <3.1", +] + +[project.optional-dependencies] + +athena = ["pyathena[pandas]>=2, <3"] +aurora-data-api = ["preset-sqlalchemy-aurora-data-api>=0.2.8,<0.3"] +bigquery = [ + "pandas-gbq>=0.19.1", + "sqlalchemy-bigquery>=1.6.1", + "google-cloud-bigquery>=3.10.0", +] +clickhouse = ["clickhouse-connect>=0.5.14, <1.0"] +cockroachdb = ["cockroachdb>=0.3.5, <0.4"] +cors = ["flask-cors>=2.0.0"] +crate = ["crate[sqlalchemy]>=0.26.0, <0.27"] +databend = ["databend-sqlalchemy>=0.3.2, <1.0"] +databricks = [ + "databricks-sql-connector>=2.0.2, <3", + "sqlalchemy-databricks>=0.2.0", +] +db2 = ["ibm-db-sa>0.3.8, <=0.4.0"] +dremio = ["sqlalchemy-dremio>=1.1.5, <1.3"] +drill = ["sqlalchemy-drill>=1.1.4, <2"] +druid = ["pydruid>=0.6.5,<0.7"] +duckdb = ["duckdb-engine>=0.9.5, <0.10"] +dynamodb = ["pydynamodb>=0.4.2"] +solr = ["sqlalchemy-solr >= 0.2.0"] +elasticsearch = ["elasticsearch-dbapi>=0.2.9, <0.3.0"] +exasol = ["sqlalchemy-exasol >= 2.4.0, <3.0"] +excel = ["xlrd>=1.2.0, <1.3"] +firebird = ["sqlalchemy-firebird>=0.7.0, <0.8"] +firebolt = ["firebolt-sqlalchemy>=1.0.0, <2"] +gevent = ["gevent>=23.9.1"] +gsheets = ["shillelagh[gsheetsapi]>=1.2.10, <2"] +hana = ["hdbcli==2.4.162", "sqlalchemy_hana==0.4.0"] +hive = [ + "pyhive[hive]>=0.6.5;python_version<'3.11'", + "pyhive[hive_pure_sasl]>=0.7.0", + "tableschema", + "thrift>=0.14.1, <1.0.0", +] +impala = ["impyla>0.16.2, <0.17"] +kusto = ["sqlalchemy-kusto>=2.0.0, <3"] +kylin = ["kylinpy>=2.8.1, <2.9"] +mssql = ["pymssql>=2.2.8, <3"] +mysql = ["mysqlclient>=2.1.0, <3"] +ocient = [ + "sqlalchemy-ocient>=1.0.0", + "pyocient>=1.0.15, <2", + "shapely", + "geojson", +] +oracle = ["cx-Oracle>8.0.0, <8.1"] +pinot = ["pinotdb>=0.3.3, <0.4"] +playwright = ["playwright>=1.37.0, <2"] +postgres = ["psycopg2-binary==2.9.6"] +presto = ["pyhive[presto]>=0.6.5"] +trino = ["trino>=0.328.0"] +prophet = ["prophet>=1.1.5, <2"] +redshift = ["sqlalchemy-redshift>=0.8.1, <0.9"] +rockset = ["rockset-sqlalchemy>=0.0.1, <1"] +shillelagh = ["shillelagh[all]>=1.2.10, <2"] +snowflake = ["snowflake-sqlalchemy>=1.2.4, <2"] +spark = [ + "pyhive[hive]>=0.6.5;python_version<'3.11'", + "pyhive[hive_pure_sasl]>=0.7", + "tableschema", + "thrift>=0.14.1, <1", +] +teradata = ["teradatasql>=16.20.0.23"] +thumbnails = ["Pillow>=10.0.1, <11"] +vertica = ["sqlalchemy-vertica-python>=0.5.9, < 0.6"] +netezza = ["nzalchemy>=11.0.2"] +starrocks = ["starrocks>=1.0.0"] +doris = ["pydoris>=1.0.0, <2.0.0"] +development = [ + "docker", + "flask-testing", + "freezegun", + "greenlet>=2.0.2", + "grpcio>=1.55.3", + "ipython", + "openapi-spec-validator", + "parameterized", + "pip-compile-multi", + "pre-commit", + "progress>=1.5,<2", + "pyfakefs", + "pyinstrument>=4.0.2,<5", + "pylint", + "pytest", + "pytest-cov", + "pytest-mock", + "python-ldap>=3.4.4", + "sqloxide", + "statsd", + "tox", +] + +[project.urls] +homepage = "https://superset.apache.org/" +documentation = "https://superset.apache.org/docs/intro" diff --git a/requirements/base.txt b/requirements/base.txt index f5318071b3..824c35c552 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -147,9 +147,7 @@ geopy==2.4.1 google-auth==2.27.0 # via shillelagh greenlet==3.0.3 - # via - # shillelagh - # sqlalchemy + # via shillelagh gunicorn==21.2.0 # via apache-superset hashids==1.3.1 diff --git a/requirements/development.in b/requirements/development.in index 9bad1212b8..6b59c45f32 100644 --- a/requirements/development.in +++ b/requirements/development.in @@ -17,26 +17,4 @@ # under the License. # -r base.in --e .[bigquery,cors,druid,gevent,gsheets,hive,mysql,playwright,postgres,presto,prophet,trino,thumbnails] - -docker -flask-testing -freezegun -greenlet>=2.0.2 -grpcio>=1.55.3 -ipython -openapi-spec-validator -parameterized -pip-compile-multi -pre-commit -progress>=1.5,<2 -pyfakefs -pyinstrument>=4.0.2,<5 -pylint -pytest -pytest-cov -pytest-mock -python-ldap>=3.4.4 -sqloxide -statsd -tox +-e .[development,bigquery,cors,druid,gevent,gsheets,hive,mysql,playwright,postgres,presto,prophet,trino,thumbnails] diff --git a/requirements/development.txt b/requirements/development.txt index 457b1701cd..dde4f4f50d 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -1,4 +1,4 @@ -# SHA1:3ba2a85b7f1506a7fd0c2bba84ec741dbbaf8254 +# SHA1:c186006a3f82c8775e1039f37c52309f6c858197 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -53,7 +53,7 @@ dill==0.3.6 distlib==0.3.6 # via virtualenv docker==6.1.1 - # via -r requirements/development.in + # via apache-superset et-xmlfile==1.1.0 # via openpyxl executing==1.2.0 @@ -65,11 +65,11 @@ filelock==3.12.2 flask-cors==4.0.0 # via apache-superset flask-testing==0.8.1 - # via -r requirements/development.in + # via apache-superset fonttools==4.43.0 # via matplotlib freezegun==1.2.2 - # via -r requirements/development.in + # via apache-superset future==0.18.3 # via pyhive gevent==24.2.1 @@ -77,6 +77,7 @@ gevent==24.2.1 google-api-core[grpc]==2.11.0 # via # google-cloud-bigquery + # google-cloud-bigquery-storage # google-cloud-core # pandas-gbq # sqlalchemy-bigquery @@ -89,6 +90,8 @@ google-cloud-bigquery==3.20.0 # apache-superset # pandas-gbq # sqlalchemy-bigquery +google-cloud-bigquery-storage==2.19.1 + # via pandas-gbq google-cloud-core==2.3.2 # via google-cloud-bigquery google-crc32c==1.5.0 @@ -101,7 +104,7 @@ googleapis-common-protos==1.59.0 # grpcio-status grpcio==1.60.1 # via - # -r requirements/development.in + # apache-superset # google-api-core # grpcio-status grpcio-status==1.60.1 @@ -113,7 +116,7 @@ ijson==3.2.0.post0 iniconfig==2.0.0 # via pytest ipython==8.12.2 - # via -r requirements/development.in + # via apache-superset isort==5.12.0 # via pylint jedi==0.18.2 @@ -149,13 +152,13 @@ oauthlib==3.2.2 openapi-schema-validator==0.4.4 # via openapi-spec-validator openapi-spec-validator==0.5.6 - # via -r requirements/development.in + # via apache-superset openpyxl==3.1.2 # via dataflows-tabulator -pandas-gbq==0.22.0 +pandas-gbq==0.19.1 # via apache-superset parameterized==0.9.0 - # via -r requirements/development.in + # via apache-superset parso==0.8.3 # via jedi pathable==0.4.3 @@ -169,7 +172,7 @@ pillow==10.2.0 # apache-superset # matplotlib pip-compile-multi==2.6.3 - # via -r requirements/development.in + # via apache-superset pip-tools==7.3.0 # via pip-compile-multi playwright==1.42.0 @@ -179,26 +182,26 @@ pluggy==1.2.0 # pytest # tox pre-commit==3.3.3 - # via -r requirements/development.in + # via apache-superset progress==1.6 - # via -r requirements/development.in + # via apache-superset prophet==1.1.5 # via apache-superset +proto-plus==1.22.2 + # via google-cloud-bigquery-storage protobuf==4.23.0 # via # google-api-core + # google-cloud-bigquery-storage # googleapis-common-protos # grpcio-status + # proto-plus psycopg2-binary==2.9.6 # via apache-superset ptyprocess==0.7.0 # via pexpect pure-eval==0.2.2 # via stack-data -pure-sasl==0.6.2 - # via - # pyhive - # thrift-sasl pydata-google-auth==1.7.0 # via pandas-gbq pydruid==0.6.6 @@ -206,28 +209,28 @@ pydruid==0.6.6 pyee==11.0.1 # via playwright pyfakefs==5.2.2 - # via -r requirements/development.in -pyhive[hive_pure_sasl]==0.7.0 + # via apache-superset +pyhive[presto]==0.7.0 # via apache-superset pyinstrument==4.4.0 - # via -r requirements/development.in + # via apache-superset pylint==2.17.7 - # via -r requirements/development.in + # via apache-superset pyproject-api==1.5.2 # via tox pyproject-hooks==1.0.0 # via build pytest==7.3.1 # via - # -r requirements/development.in + # apache-superset # pytest-cov # pytest-mock pytest-cov==4.0.0 - # via -r requirements/development.in + # via apache-superset pytest-mock==3.10.0 - # via -r requirements/development.in + # via apache-superset python-ldap==3.4.4 - # via -r requirements/development.in + # via apache-superset pytz-deprecation-shim==0.1.0.post0 # via tzlocal requests-oauthlib==1.3.1 @@ -241,20 +244,15 @@ s3transfer==0.6.1 sqlalchemy-bigquery==1.10.0 # via apache-superset sqloxide==0.1.33 - # via -r requirements/development.in + # via apache-superset stack-data==0.6.2 # via ipython statsd==4.0.1 - # via -r requirements/development.in + # via apache-superset tableschema==1.20.10 # via apache-superset -thrift==0.20.0 - # via - # apache-superset - # pyhive - # thrift-sasl -thrift-sasl==0.4.3 - # via pyhive +thrift==0.16.0 + # via apache-superset tomli==2.0.1 # via # build @@ -270,7 +268,7 @@ tomlkit==0.11.8 toposort==1.10 # via pip-compile-multi tox==4.6.4 - # via -r requirements/development.in + # via apache-superset tqdm==4.65.0 # via # cmdstanpy diff --git a/setup.py b/setup.py index 0db1afdb34..47502c0823 100644 --- a/setup.py +++ b/setup.py @@ -50,6 +50,9 @@ VERSION_INFO_FILE = os.path.join(BASE_DIR, "superset", "static", "version_info.j with open(VERSION_INFO_FILE, "w") as version_file: json.dump(version_info, version_file) +# translating 'no version' from npm to pypi to prevent warning msg +version_string = version_string.replace("-dev", ".dev0") + setup( name="apache-superset", description="A modern, enterprise-ready business intelligence web application", @@ -72,150 +75,6 @@ setup( "superset=superset.extensions.metadb:SupersetShillelaghAdapter" ], }, - install_requires=[ - "backoff>=1.8.0", - "celery>=5.3.6, <6.0.0", - "click>=8.0.3", - "click-option-group", - "colorama", - "croniter>=0.3.28", - "cron-descriptor", - "cryptography>=42.0.4, <43.0.0", - "deprecation>=2.1.0, <2.2.0", - "flask>=2.2.5, <3.0.0", - "flask-appbuilder>=4.4.1, <5.0.0", - "flask-caching>=2.1.0, <3", - "flask-compress>=1.13, <2.0", - "flask-talisman>=1.0.0, <2.0", - "flask-login>=0.6.0, < 1.0", - "flask-migrate>=3.1.0, <4.0", - "flask-session>=0.4.0, <1.0", - "flask-wtf>=1.1.0, <2.0", - "func_timeout", - "geopy", - "gunicorn>=21.2.0, <22.0; sys_platform != 'win32'", - "hashids>=1.3.1, <2", - "holidays>=0.25, <0.26", - "humanize", - "importlib_metadata", - "isodate", - "Mako>=1.2.2", - "markdown>=3.0", - "msgpack>=1.0.0, <1.1", - "nh3>=0.2.11, <0.3", - "numpy==1.23.5", - "packaging", - "pandas[performance]>=2.0.3, <2.1", - "parsedatetime", - "paramiko>=3.4.0", - "pgsanity", - "polyline>=2.0.0, <3.0", - "pyparsing>=3.0.6, <4", - "python-dateutil", - "python-dotenv", - "python-geohash", - "pyarrow>=14.0.1, <15", - "pyyaml>=6.0.0, <7.0.0", - "PyJWT>=2.4.0, <3.0", - "redis>=4.6.0, <5.0", - "selenium>=3.141.0, <4.10.0", - "shillelagh[gsheetsapi]>=1.2.10, <2.0", - "shortid", - "sshtunnel>=0.4.0, <0.5", - "simplejson>=3.15.0", - "slack_sdk>=3.19.0, <4", - "sqlalchemy>=1.4, <2", - "sqlalchemy-utils>=0.38.3, <0.39", - "sqlglot>=23.0.2,<24", - "sqlparse>=0.4.4, <0.5", - "tabulate>=0.8.9, <0.9", - "typing-extensions>=4, <5", - "waitress; sys_platform == 'win32'", - "wtforms>=2.3.3, <4", - "wtforms-json", - "xlsxwriter>=3.0.7, <3.1", - ], - extras_require={ - "athena": ["pyathena[pandas]>=2, <3"], - "aurora-data-api": ["preset-sqlalchemy-aurora-data-api>=0.2.8,<0.3"], - "bigquery": [ - "pandas-gbq>=0.19.1", - "sqlalchemy-bigquery>=1.6.1", - "google-cloud-bigquery>=3.10.0", - ], - "clickhouse": ["clickhouse-connect>=0.5.14, <1.0"], - "cockroachdb": ["cockroachdb>=0.3.5, <0.4"], - "cors": ["flask-cors>=2.0.0"], - "crate": ["crate[sqlalchemy]>=0.26.0, <0.27"], - "databend": ["databend-sqlalchemy>=0.3.2, <1.0"], - "databricks": [ - "databricks-sql-connector>=2.0.2, <3", - "sqlalchemy-databricks>=0.2.0", - ], - "db2": ["ibm-db-sa>0.3.8, <=0.4.0"], - "dremio": ["sqlalchemy-dremio>=1.1.5, <1.3"], - "drill": ["sqlalchemy-drill>=1.1.4, <2"], - "druid": ["pydruid>=0.6.5,<0.7"], - "duckdb": ["duckdb-engine>=0.9.5, <0.10"], - "dynamodb": ["pydynamodb>=0.4.2"], - "solr": ["sqlalchemy-solr >= 0.2.0"], - "elasticsearch": ["elasticsearch-dbapi>=0.2.9, <0.3.0"], - "exasol": ["sqlalchemy-exasol >= 2.4.0, <3.0"], - "excel": ["xlrd>=1.2.0, <1.3"], - "firebird": ["sqlalchemy-firebird>=0.7.0, <0.8"], - "firebolt": ["firebolt-sqlalchemy>=1.0.0, <2"], - "gevent": ["gevent>=23.9.1"], - "gsheets": ["shillelagh[gsheetsapi]>=1.2.10, <2"], - "hana": ["hdbcli==2.4.162", "sqlalchemy_hana==0.4.0"], - "hive": [ - "pyhive[hive]>=0.6.5;python_version<'3.11'", - "pyhive[hive_pure_sasl]>=0.7.0", - "tableschema", - "thrift>=0.14.1, <1.0.0", - ], - "impala": ["impyla>0.16.2, <0.17"], - "kusto": ["sqlalchemy-kusto>=2.0.0, <3"], - "kylin": ["kylinpy>=2.8.1, <2.9"], - "mssql": ["pymssql>=2.2.8, <3"], - "mysql": ["mysqlclient>=2.1.0, <3"], - "ocient": [ - "sqlalchemy-ocient>=1.0.0", - "pyocient>=1.0.15, <2", - "shapely", - "geojson", - ], - "oracle": ["cx-Oracle>8.0.0, <8.1"], - "pinot": ["pinotdb>=0.3.3, <0.4"], - "playwright": ["playwright>=1.37.0, <2"], - "postgres": ["psycopg2-binary==2.9.6"], - "presto": ["pyhive[presto]>=0.6.5"], - "trino": ["trino>=0.328.0"], - "prophet": ["prophet>=1.1.5, <2"], - "redshift": ["sqlalchemy-redshift>=0.8.1, <0.9"], - "rockset": ["rockset-sqlalchemy>=0.0.1, <1"], - "shillelagh": ["shillelagh[all]>=1.2.10, <2"], - "snowflake": ["snowflake-sqlalchemy>=1.2.4, <2"], - "spark": [ - "pyhive[hive]>=0.6.5;python_version<'3.11'", - "pyhive[hive_pure_sasl]>=0.7", - "tableschema", - "thrift>=0.14.1, <1", - ], - "teradata": ["teradatasql>=16.20.0.23"], - "thumbnails": ["Pillow>=10.0.1, <11"], - "vertica": ["sqlalchemy-vertica-python>=0.5.9, < 0.6"], - "netezza": ["nzalchemy>=11.0.2"], - "starrocks": ["starrocks>=1.0.0"], - "doris": ["pydoris>=1.0.0, <2.0.0"], - }, python_requires="~=3.9", - author="Apache Software Foundation", - author_email="dev@superset.apache.org", - url="https://superset.apache.org/", download_url="https://www.apache.org/dist/superset/" + version_string, - classifiers=[ - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - ], )