This is an automated email from the ASF dual-hosted git repository.

kaxilnaik pushed a commit to branch v1-10-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 5fd52b8e4d05456f392758171eb58ac3a19c5817
Author: James Timmins <[email protected]>
AuthorDate: Fri Jun 5 10:39:28 2020 -0700

    Add 3.8 to the test matrices (#8836)
    
    (cherry picked from commit 5918efc86a2217caa641a6ada289eee1c21407f8)
---
 .github/workflows/ci.yml                           | 14 +++---
 BREEZE.rst                                         | 14 +++---
 Dockerfile.ci                                      |  1 +
 README.md                                          |  6 +--
 breeze                                             |  4 +-
 breeze-complete                                    |  2 +-
 requirements/requirements-python2.7.txt            |  4 +-
 requirements/requirements-python3.5.txt            |  4 +-
 ...ts-python3.5.txt => requirements-python3.8.txt} | 50 +++++++++++-----------
 requirements/setup-2.7.md5                         |  2 +-
 requirements/setup-3.5.md5                         |  2 +-
 requirements/setup-3.6.md5                         |  2 +-
 requirements/setup-3.7.md5                         |  2 +-
 requirements/setup-3.8.md5                         |  1 +
 setup.py                                           | 10 +++--
 .../operators/test_mssql_to_gcs_operator.py        |  7 ++-
 16 files changed, 66 insertions(+), 59 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index bc86961..d091d2e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -93,7 +93,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python-version: [2.7, 3.5, 3.6, 3.7]
+        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
     env:
       PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
       CI_JOB_TYPE: "Prod image"
@@ -179,7 +179,7 @@ ${{ 
hashFiles('requirements/requirements-python${{matrix.python-version}}.txt')
     needs: [static-checks, pyfiles]
     strategy:
       matrix:
-        python-version: [2.7, 3.5, 3.6, 3.7]
+        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
         postgres-version: [9.6, 10]
         test-type: [Core, Integration]
       fail-fast: false
@@ -211,7 +211,7 @@ ${{ 
hashFiles('requirements/requirements-python${{matrix.python-version}}.txt')
     needs: [static-checks, pyfiles]
     strategy:
       matrix:
-        python-version: [2.7, 3.5, 3.6, 3.7]
+        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
         mysql-version: [5.6, 5.7]
         test-type: [Core, Integration]
       fail-fast: false
@@ -243,7 +243,7 @@ ${{ 
hashFiles('requirements/requirements-python${{matrix.python-version}}.txt')
     needs: [static-checks, pyfiles]
     strategy:
       matrix:
-        python-version: [2.7, 3.5, 3.6, 3.7]
+        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
         test-type: [Core, Integration]
       fail-fast: false
     env:
@@ -303,7 +303,7 @@ ${{ 
hashFiles('requirements/requirements-python${{matrix.python-version}}.txt')
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python-version: [2.7, 3.5, 3.6, 3.7]
+        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
       fail-fast: false
     env:
       PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
@@ -334,7 +334,7 @@ ${{ 
hashFiles('requirements/requirements-python${{matrix.python-version}}.txt')
     if: github.ref == 'refs/heads/master' && github.event_name != 'schedule'
     strategy:
       matrix:
-        python-version: [2.7, 3.5, 3.6, 3.7]
+        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
     env:
       PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
       CI_JOB_TYPE: "Prod image"
@@ -364,7 +364,7 @@ ${{ 
hashFiles('requirements/requirements-python${{matrix.python-version}}.txt')
       github.event_name != 'schedule'
     strategy:
       matrix:
-        python-version: [2.7, 3.5, 3.6, 3.7]
+        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
     env:
       PULL_PYTHON_BASE_IMAGES_FROM_CACHE: "false"
       PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }}
diff --git a/BREEZE.rst b/BREEZE.rst
index ee0ff01..9d2d719 100644
--- a/BREEZE.rst
+++ b/BREEZE.rst
@@ -802,7 +802,7 @@ This is the current syntax for  `./breeze <./breeze>`_:
 
           One of:
 
-                 2.7 3.5 3.6 3.7
+                 2.7 3.5 3.6 3.7 3.8
 
   -a, --install-airflow-version <INSTALL_AIRFLOW_VERSION>
           If specified, installs Airflow directly from PIP released version. 
This happens at
@@ -922,7 +922,7 @@ This is the current syntax for  `./breeze <./breeze>`_:
 
           One of:
 
-                 2.7 3.5 3.6 3.7
+                 2.7 3.5 3.6 3.7 3.8
 
   -I, --production-image
           Use production image for entering the environment and builds (not 
for tests).
@@ -968,7 +968,7 @@ This is the current syntax for  `./breeze <./breeze>`_:
 
           One of:
 
-                 2.7 3.5 3.6 3.7
+                 2.7 3.5 3.6 3.7 3.8
 
   -v, --verbose
           Show verbose information about executed commands (enabled by default 
for running test).
@@ -1047,7 +1047,7 @@ This is the current syntax for  `./breeze <./breeze>`_:
 
           One of:
 
-                 2.7 3.5 3.6 3.7
+                 2.7 3.5 3.6 3.7 3.8
 
 
   
####################################################################################################
@@ -1136,7 +1136,7 @@ This is the current syntax for  `./breeze <./breeze>`_:
 
           One of:
 
-                 2.7 3.5 3.6 3.7
+                 2.7 3.5 3.6 3.7 3.8
 
   -b, --backend <BACKEND>
           Backend to use for tests - it determines which database is used.
@@ -1186,7 +1186,7 @@ This is the current syntax for  `./breeze <./breeze>`_:
 
           One of:
 
-                 2.7 3.5 3.6 3.7
+                 2.7 3.5 3.6 3.7 3.8
 
   -F, --force-build-images
           Forces building of the local docker images. The images are rebuilt
@@ -1351,7 +1351,7 @@ This is the current syntax for  `./breeze <./breeze>`_:
 
           One of:
 
-                 2.7 3.5 3.6 3.7
+                 2.7 3.5 3.6 3.7 3.8
 
   
****************************************************************************************************
    Choose backend to run for Airflow
diff --git a/Dockerfile.ci b/Dockerfile.ci
index f4ba142..2b2157a 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -228,6 +228,7 @@ RUN pip install \
         --constraint 
"https://raw.githubusercontent.com/${AIRFLOW_REPO}/${AIRFLOW_BRANCH}/requirements/requirements-python${PYTHON_MAJOR_MINOR_VERSION}.txt";
 \
     && pip uninstall --yes apache-airflow;
 
+
 # Link dumb-init for backwards compatibility (so that older images also work)
 RUN ln -sf /usr/bin/dumb-init /usr/local/bin/dumb-init
 
diff --git a/README.md b/README.md
index 0c0aa7c..d5883bf 100644
--- a/README.md
+++ b/README.md
@@ -61,7 +61,7 @@ Apache Airflow is tested with:
 
 ### Master version (2.0.0dev)
 
-* Python versions: 3.6, 3.7
+* Python versions: 3.6, 3.7, 3.8
 * Postgres DB: 9.6, 10
 * MySQL DB: 5.7
 * Sqlite - latest stable (it is used mainly for development purpose)
@@ -69,7 +69,7 @@ Apache Airflow is tested with:
 
 ### Stable version (1.10.10)
 
-* Python versions: 2.7, 3.5, 3.6, 3.7
+* Python versions: 2.7, 3.5, 3.6, 3.7, 3.8
 * Postgres DB: 9.6, 10
 * MySQL DB: 5.6, 5.7
 * Sqlite - latest stable (it is used mainly for development purpose)
@@ -100,7 +100,7 @@ produce unusable Airflow installation.
 
 In order to have repeatable installation, however, starting from **Airflow 
1.10.10** we also keep a set of
 "known-to-be-working" requirement files in the `requirements` folder. Those 
"known-to-be-working"
-requirements are per major/minor python version (3.6/3.7). You can use them as 
constraint files
+requirements are per major/minor python version (3.6/3.7/3.8). You can use 
them as constraint files
 when installing Airflow from PyPI. Note that you have to specify correct 
Airflow version and python versions
 in the URL.
 
diff --git a/breeze b/breeze
index 16826bc..4321c49 100755
--- a/breeze
+++ b/breeze
@@ -68,7 +68,7 @@ function setup_default_breeze_variables() {
     # We have different versions of images depending on the python version 
used. We keep up with the
     # Latest patch-level changes in Python (this is done automatically during 
CI builds) so we have
     # To only take into account MAJOR and MINOR version of python. This 
variable keeps the major/minor
-    # version of python in X.Y format (2.7, 3.5, 3.6, 3.7 etc).
+    # version of python in X.Y format (2.7, 3.5, 3.6, 3.7, 3.8 etc).
     export 
PYTHON_MAJOR_MINOR_VERSION="${PYTHON_MAJOR_MINOR_VERSION:=$(read_from_file 
PYTHON_MAJOR_MINOR_VERSION)}"
 
     # When we generate documentation for README files, we want to force the 
width of terminal so that
@@ -197,7 +197,7 @@ function initialize_virtualenv() {
             if [[ ${SYSTEM} == "Darwin" ]]; then
                 echo "  brew install sqlite mysql postgresql openssl"
             else
-                echo "  sudo apt install build-essentials python3.6-dev 
python3.7-dev python-dev openssl \\"
+                echo "  sudo apt install build-essentials python3.6-dev 
python3.7-dev python3.8-dev python-dev openssl \\"
                 echo "              sqlite sqlite-dev 
default-libmysqlclient-dev libmysqld-dev postgresql"
             fi
             echo
diff --git a/breeze-complete b/breeze-complete
index a3cc1eb..d9227a5 100644
--- a/breeze-complete
+++ b/breeze-complete
@@ -17,7 +17,7 @@
 # specific language governing permissions and limitations
 # under the License.
 
-_BREEZE_ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS="2.7 3.5 3.6 3.7"
+_BREEZE_ALLOWED_PYTHON_MAJOR_MINOR_VERSIONS="2.7 3.5 3.6 3.7 3.8"
 _BREEZE_ALLOWED_BACKENDS="sqlite mysql postgres"
 _BREEZE_ALLOWED_INTEGRATIONS="cassandra kerberos mongo openldap rabbitmq redis"
 _BREEZE_ALLOWED_KUBERNETES_MODES="image git"
diff --git a/requirements/requirements-python2.7.txt 
b/requirements/requirements-python2.7.txt
index 314c660..e1d8154 100644
--- a/requirements/requirements-python2.7.txt
+++ b/requirements/requirements-python2.7.txt
@@ -69,9 +69,9 @@ beautifulsoup4==4.7.1
 billiard==3.6.3.0
 bleach==3.1.5
 blinker==1.4
-boto3==1.14.13
+boto3==1.14.14
 boto==2.49.0
-botocore==1.17.13
+botocore==1.17.14
 cached-property==1.5.1
 cachetools==3.1.1
 cassandra-driver==3.20.2
diff --git a/requirements/requirements-python3.5.txt 
b/requirements/requirements-python3.5.txt
index 9cc708b..20c9b75 100644
--- a/requirements/requirements-python3.5.txt
+++ b/requirements/requirements-python3.5.txt
@@ -60,9 +60,9 @@ bcrypt==3.1.7
 beautifulsoup4==4.7.1
 billiard==3.6.3.0
 blinker==1.4
-boto3==1.14.13
+boto3==1.14.14
 boto==2.49.0
-botocore==1.17.13
+botocore==1.17.14
 cached-property==1.5.1
 cachetools==4.1.1
 cassandra-driver==3.20.2
diff --git a/requirements/requirements-python3.5.txt 
b/requirements/requirements-python3.8.txt
similarity index 92%
copy from requirements/requirements-python3.5.txt
copy to requirements/requirements-python3.8.txt
index 9cc708b..56f161d 100644
--- a/requirements/requirements-python3.5.txt
+++ b/requirements/requirements-python3.8.txt
@@ -1,8 +1,8 @@
 # Editable install with no version control (apache-airflow==1.10.10)
 Babel==2.8.0
 Flask-Admin==1.5.4
-Flask-AppBuilder==1.13.1
-Flask-Babel==0.12.2
+Flask-AppBuilder==2.3.4
+Flask-Babel==1.0.0
 Flask-Bcrypt==0.7.1
 Flask-Caching==1.3.3
 Flask-JWT-Extended==3.24.1
@@ -24,6 +24,7 @@ PySmbClient==0.1.5
 PyYAML==5.3.1
 Pygments==2.6.1
 SQLAlchemy-JSONField==0.9.0
+SQLAlchemy-Utils==0.36.6
 SQLAlchemy==1.3.18
 Sphinx==3.1.1
 Unidecode==1.1.1
@@ -36,12 +37,12 @@ amqp==2.6.0
 analytics-python==1.2.9
 ansiwrap==0.8.4
 apipkg==1.5
-apispec==3.3.1
+apispec==1.3.3
 appdirs==1.4.4
 argcomplete==1.11.1
 asn1crypto==1.3.0
-aspy.yaml==1.3.0
 astroid==2.4.2
+async-generator==1.10
 atlasclient==1.0.0
 attrs==19.3.0
 aws-sam-translator==1.25.0
@@ -59,10 +60,11 @@ backcall==0.2.0
 bcrypt==3.1.7
 beautifulsoup4==4.7.1
 billiard==3.6.3.0
+black==19.10b0
 blinker==1.4
-boto3==1.14.13
+boto3==1.14.14
 boto==2.49.0
-botocore==1.17.13
+botocore==1.17.14
 cached-property==1.5.1
 cachetools==4.1.1
 cassandra-driver==3.20.2
@@ -70,7 +72,7 @@ cattrs==1.0.0
 celery==4.4.6
 certifi==2020.6.20
 cffi==1.14.0
-cfgv==2.0.1
+cfgv==3.1.0
 cfn-lint==0.33.2
 cgroupspy==0.1.6
 chardet==3.0.4
@@ -145,14 +147,12 @@ humanize==0.5.1
 hvac==0.10.4
 identify==1.4.20
 idna==2.10
-ijson==2.6.1
 imagesize==1.2.0
 importlib-metadata==1.7.0
-importlib-resources==2.0.1
 inflection==0.5.0
 ipdb==0.13.3
 ipython-genutils==0.2.0
-ipython==7.9.0
+ipython==7.16.1
 iso8601==0.1.12
 isodate==0.6.0
 itsdangerous==1.1.0
@@ -174,10 +174,10 @@ lazy-object-proxy==1.5.0
 ldap3==2.7
 lockfile==0.12.2
 marshmallow-enum==1.5.1
-marshmallow-sqlalchemy==0.18.0
-marshmallow==2.19.5
+marshmallow-sqlalchemy==0.23.1
+marshmallow==2.21.0
 mccabe==0.6.1
-mock==3.0.5
+mock==4.0.2
 mongomock==3.19.0
 more-itertools==8.4.0
 moto==1.3.14
@@ -188,23 +188,23 @@ mypy-extensions==0.4.3
 mypy==0.720
 mysqlclient==1.3.14
 natsort==7.0.1
-nbclient==0.1.0
+nbclient==0.4.0
 nbformat==5.0.7
+nest-asyncio==1.3.3
 networkx==2.4
 nodeenv==1.4.0
 nteract-scrapbook==0.4.1
 ntlm-auth==1.5.0
-numpy==1.18.5
+numpy==1.19.0
 oauthlib==3.1.0
 oscrypto==1.2.0
 packaging==20.4
 pandas-gbq==0.13.2
-pandas==0.25.3
-papermill==2.0.0
+pandas==1.0.5
+papermill==2.1.2
 parameterized==0.7.4
 paramiko==2.7.1
 parso==0.7.0
-pathlib2==2.3.5
 pathspec==0.8.0
 pbr==5.4.5
 pendulum==1.4.4
@@ -212,10 +212,10 @@ pexpect==4.8.0
 pickleshare==0.7.5
 pinotdb==0.1.1
 pluggy==0.13.1
-pre-commit==1.21.0
+pre-commit==2.5.1
 presto-python-client==0.7.0
-prison==0.1.0
-prompt-toolkit==2.0.10
+prison==0.1.3
+prompt-toolkit==3.0.5
 protobuf==3.12.2
 psutil==5.7.0
 psycopg2-binary==2.8.5
@@ -233,7 +233,6 @@ pydruid==0.5.8
 pyflakes==2.2.0
 pykerberos==1.2.1
 pymongo==3.10.1
-pymssql==2.1.4
 pyparsing==2.4.7
 pyrsistent==0.16.0
 pysftp==0.2.9
@@ -259,6 +258,7 @@ pywinrm==0.4.1
 pyzmq==19.0.1
 qds-sdk==1.16.0
 redis==3.5.3
+regex==2020.6.8
 requests-futures==0.9.4
 requests-kerberos==0.12.0
 requests-mock==1.8.0
@@ -282,6 +282,7 @@ snowflake-sqlalchemy==1.2.3
 soupsieve==2.0.1
 sphinx-argparse==0.2.5
 sphinx-autoapi==1.0.0
+sphinx-copybutton==0.2.12
 sphinx-jinja==1.1.1
 sphinx-rtd-theme==0.5.0
 sphinxcontrib-applehelp==1.0.2
@@ -297,19 +298,16 @@ sshpubkeys==3.1.0
 sshtunnel==0.1.5
 tabulate==0.8.7
 tenacity==4.12.0
-termcolor==1.1.0
 text-unidecode==1.3
 textwrap3==0.9.2
 thrift-sasl==0.4.2
 thrift==0.13.0
-tokenize-rt==3.2.0
 toml==0.10.1
 tornado==5.1.1
 tqdm==4.47.0
 traitlets==4.3.3
 typed-ast==1.4.1
 typing-extensions==3.7.4.2
-typing==3.7.4.1
 tzlocal==1.5.1
 unicodecsv==0.14.1
 uritemplate==3.0.1
@@ -323,5 +321,5 @@ wrapt==1.12.1
 xmltodict==0.12.0
 yamllint==1.23.0
 zdesk==2.7.1
-zipp==1.2.0
+zipp==3.1.0
 zope.deprecation==4.4.0
diff --git a/requirements/setup-2.7.md5 b/requirements/setup-2.7.md5
index 02fe09a..7cb2b1c 100644
--- a/requirements/setup-2.7.md5
+++ b/requirements/setup-2.7.md5
@@ -1 +1 @@
-f86f24b093d55ecc490bb77e74b332eb  /opt/airflow/setup.py
+9688bea64971365f2ab7771658b1fc80  /opt/airflow/setup.py
diff --git a/requirements/setup-3.5.md5 b/requirements/setup-3.5.md5
index 02fe09a..7cb2b1c 100644
--- a/requirements/setup-3.5.md5
+++ b/requirements/setup-3.5.md5
@@ -1 +1 @@
-f86f24b093d55ecc490bb77e74b332eb  /opt/airflow/setup.py
+9688bea64971365f2ab7771658b1fc80  /opt/airflow/setup.py
diff --git a/requirements/setup-3.6.md5 b/requirements/setup-3.6.md5
index 02fe09a..7cb2b1c 100644
--- a/requirements/setup-3.6.md5
+++ b/requirements/setup-3.6.md5
@@ -1 +1 @@
-f86f24b093d55ecc490bb77e74b332eb  /opt/airflow/setup.py
+9688bea64971365f2ab7771658b1fc80  /opt/airflow/setup.py
diff --git a/requirements/setup-3.7.md5 b/requirements/setup-3.7.md5
index 02fe09a..7cb2b1c 100644
--- a/requirements/setup-3.7.md5
+++ b/requirements/setup-3.7.md5
@@ -1 +1 @@
-f86f24b093d55ecc490bb77e74b332eb  /opt/airflow/setup.py
+9688bea64971365f2ab7771658b1fc80  /opt/airflow/setup.py
diff --git a/requirements/setup-3.8.md5 b/requirements/setup-3.8.md5
new file mode 100644
index 0000000..7cb2b1c
--- /dev/null
+++ b/requirements/setup-3.8.md5
@@ -0,0 +1 @@
+9688bea64971365f2ab7771658b1fc80  /opt/airflow/setup.py
diff --git a/setup.py b/setup.py
index 3c6defc..fc14c3c 100644
--- a/setup.py
+++ b/setup.py
@@ -36,6 +36,7 @@ logger = logging.getLogger(__name__)
 version = imp.load_source('airflow.version', os.path.join('airflow', 
'version.py')).version  # type: ignore
 
 PY3 = sys.version_info[0] == 3
+PY38 = PY3 and sys.version_info[1] >= 8
 
 my_dir = dirname(__file__)
 
@@ -184,7 +185,7 @@ aws = [
     'boto3~=1.10',
 ]
 azure_blob_storage = [
-    'azure-storage>=0.34.0,<0.37.0',
+    'azure-storage>=0.34.0, <0.37.0',
     'azure-storage-blob<12.0',
 ]
 azure_container_instances = [
@@ -456,8 +457,10 @@ devel_all = (all_dbs + atlas + aws +
 
 # Snakebite is not Python 3 compatible :'(
 if PY3:
-    devel_all = [package for package in devel_all if package not in
-                 ['snakebite>=2.7.8', 'snakebite[kerberos]>=2.7.8']]
+    package_to_excludes = ['snakebite>=2.7.8', 'snakebite[kerberos]>=2.7.8']
+    if PY38:
+        package_to_excludes.extend(['pymssql~=2.1.1'])
+    devel_all = [package for package in devel_all if package not in 
package_to_excludes]
     devel_ci = devel_all
 else:
     devel_ci = devel_all + ['unittest2']
@@ -642,6 +645,7 @@ def do_setup():
             'Programming Language :: Python :: 3.5',
             'Programming Language :: Python :: 3.6',
             'Programming Language :: Python :: 3.7',
+            'Programming Language :: Python :: 3.8',
             'Topic :: System :: Monitoring',
         ],
         author='Apache Software Foundation',
diff --git a/tests/contrib/operators/test_mssql_to_gcs_operator.py 
b/tests/contrib/operators/test_mssql_to_gcs_operator.py
index 19ef774..27d7bad 100644
--- a/tests/contrib/operators/test_mssql_to_gcs_operator.py
+++ b/tests/contrib/operators/test_mssql_to_gcs_operator.py
@@ -20,11 +20,13 @@
 import sys
 import unittest
 
-from airflow.contrib.operators.mssql_to_gcs import \
-    MsSqlToGoogleCloudStorageOperator
 from tests.compat import mock
 
 PY3 = sys.version_info[0] == 3
+PY38 = PY3 and sys.version_info[1] >= 8
+
+if not PY38:
+    from airflow.contrib.operators.mssql_to_gcs import 
MsSqlToGoogleCloudStorageOperator
 
 TASK_ID = 'test-mssql-to-gcs'
 MSSQL_CONN_ID = 'mssql_conn_test'
@@ -54,6 +56,7 @@ SCHEMA_JSON = [
 ]
 
 
[email protected](PY38, "Mssql package not available when Python >= 3.8.")
 class MsSqlToGoogleCloudStorageOperatorTest(unittest.TestCase):
 
     def test_init(self):

Reply via email to