diff --git a/.github/workflows/zulip-ci.yml b/.github/workflows/zulip-ci.yml index 9f3eea647a..c6f215b8a1 100644 --- a/.github/workflows/zulip-ci.yml +++ b/.github/workflows/zulip-ci.yml @@ -217,7 +217,7 @@ jobs: - name: Test locked requirements if: ${{ matrix.os == 'jammy' }} run: | - . /srv/zulip-py3-venv/bin/activate && \ + source tools/ci/activate-venv ./tools/test-locked-requirements - name: Upload coverage reports diff --git a/tools/ci/activate-venv b/tools/ci/activate-venv index dcaff5ea72..50e18883cd 100644 --- a/tools/ci/activate-venv +++ b/tools/ci/activate-venv @@ -1,4 +1,6 @@ #!/usr/bin/env bash +ZULIP_PATH="$(dirname "${BASH_SOURCE[0]}")/../.." source /srv/zulip-py3-venv/bin/activate +source "$ZULIP_PATH"/tools/python-warnings.bash echo "Using $VIRTUAL_ENV" diff --git a/tools/ci/setup-backend b/tools/ci/setup-backend index 48777fe336..9e39a56cf9 100755 --- a/tools/ci/setup-backend +++ b/tools/ci/setup-backend @@ -2,6 +2,9 @@ set -e set -x +ZULIP_PATH="$(dirname "${BASH_SOURCE[0]}")/../.." +. "$ZULIP_PATH/tools/python-warnings.bash" + # This is just a thin wrapper around provision. # Provisioning may fail due to many issues but most of the times a network # connection issue is the reason. So we are going to retry entire provisioning diff --git a/tools/python-warnings.bash b/tools/python-warnings.bash new file mode 100644 index 0000000000..80a116641e --- /dev/null +++ b/tools/python-warnings.bash @@ -0,0 +1,81 @@ +# shellcheck shell=bash + +export PYTHONWARNINGS=error + +PYTHONWARNINGS+=',ignore::ResourceWarning' + +# https://github.com/disqus/django-bitfield/pull/135 +PYTHONWARNINGS+=',default:Attribute s is deprecated and will be removed in Python 3.14; use value instead:DeprecationWarning:__main__' + +# https://github.com/jaysonsantos/python-binary-memcached/pull/257 +PYTHONWARNINGS+=',ignore:urllib.parse.splitport() is deprecated as of 3.8:DeprecationWarning:bmemcached.protocol' + +# https://github.com/boto/botocore/pull/3239 +PYTHONWARNINGS+=',ignore:datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version.:DeprecationWarning:botocore.auth' + +# https://bugs.launchpad.net/beautifulsoup/+bug/2076897 +PYTHONWARNINGS+=',ignore:The '\''strip_cdata'\'' option of HTMLParser() has never done anything and will eventually be removed.:DeprecationWarning:bs4.builder._lxml' + +# https://github.com/fabfuel/circuitbreaker/pull/63 +PYTHONWARNINGS+=',ignore:datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version.:DeprecationWarning:circuitbreaker' + +# This gets triggered due to our do_patch_activate_script +PYTHONWARNINGS+=',default:Attempting to work in a virtualenv.:UserWarning:IPython.core.interactiveshell' + +# https://github.com/SAML-Toolkits/python3-saml/pull/420 +PYTHONWARNINGS+=',ignore:datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version.:DeprecationWarning:onelogin.saml2.utils' +PYTHONWARNINGS+=',ignore:datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version.:DeprecationWarning:onelogin.saml2.utils' + +# Probably due to ancient pip +PYTHONWARNINGS+=',default:DEPRECATION::pip._internal.models.link' +PYTHONWARNINGS+=',default:Unimplemented abstract methods:DeprecationWarning:pip._internal.metadata.importlib._dists' +PYTHONWARNINGS+=',default:module '\''sre_constants'\'' is deprecated:DeprecationWarning:pip._vendor.pyparsing' +PYTHONWARNINGS+=',default:Creating a LegacyVersion has been deprecated and will be removed in the next major release:DeprecationWarning:pip._vendor.packaging.version' +PYTHONWARNINGS+=',default:'\''cgi'\'' is deprecated and slated for removal in Python 3.13:DeprecationWarning:pip._internal.index.collector' +PYTHONWARNINGS+=',default:path is deprecated.:DeprecationWarning:pip._vendor.certifi.core' +PYTHONWARNINGS+=',default:ssl.PROTOCOL_TLS is deprecated:DeprecationWarning:pip._vendor.urllib3.util.ssl_' +PYTHONWARNINGS+=',default:Creating a LegacyVersion has been deprecated and will be removed in the next major release:DeprecationWarning:pip._vendor.packaging.specifiers' +PYTHONWARNINGS+=',default:path is deprecated.:DeprecationWarning:pip._vendor.pep517.wrappers' +PYTHONWARNINGS+=',default:The distutils package is deprecated and slated for removal in Python 3.12.:DeprecationWarning:pip._internal.locations' +PYTHONWARNINGS+=',default:The distutils.sysconfig module is deprecated:DeprecationWarning:pip._internal.locations' +PYTHONWARNINGS+=',default:ssl.match_hostname() is deprecated:DeprecationWarning:pip._vendor.urllib3.connection' +PYTHONWARNINGS+=',default:The distutils package is deprecated and slated for removal in Python 3.12.:DeprecationWarning:pip._internal.locations._distutils' +PYTHONWARNINGS+=',default:The distutils.sysconfig module is deprecated:DeprecationWarning:distutils.command.install' +PYTHONWARNINGS+=',default:The distutils package is deprecated and slated for removal in Python 3.12.:DeprecationWarning:pip._internal.cli.cmdoptions' + +# https://github.com/python-openapi/openapi-core/issues/931 +PYTHONWARNINGS+=',ignore::DeprecationWarning:openapi_core.validation.request.validators' + +# pkg_resources deprecation +PYTHONWARNINGS+=',default:pkg_resources is deprecated as an API.:DeprecationWarning' +PYTHONWARNINGS+=',default:Deprecated call to `pkg_resources.declare_namespace(:DeprecationWarning:pkg_resources' + +# https://github.com/seb-m/pyinotify/issues/204 +PYTHONWARNINGS+=',ignore:The asyncore module is deprecated and will be removed in Python 3.12.:DeprecationWarning:pyinotify' + +# Semgrep still supports Python 3.8 +PYTHONWARNINGS+=',ignore:path is deprecated.:DeprecationWarning:semgrep.semgrep_core' + +# Various warnings from setuptools +PYTHONWARNINGS+=',default:bdist_wheel.universal is deprecated:UserWarning' +PYTHONWARNINGS+=',ignore:setup.py install is deprecated.:UserWarning' +PYTHONWARNINGS+=',default:Unknown distribution option:UserWarning' +PYTHONWARNINGS+=',default:setuptools.installer and fetch_build_eggs are deprecated.:UserWarning' +PYTHONWARNINGS+=',default:The '\''wheel'\'' package is no longer the canonical location of the '\''bdist_wheel'\'' command:DeprecationWarning:wheel.bdist_wheel' +PYTHONWARNINGS+=',default:Package '\''integrations.:UserWarning' +PYTHONWARNINGS+=',default:Package '\''zulip.:UserWarning' +PYTHONWARNINGS+=',default:Could not find libsqlite3:UserWarning' + +# https://github.com/scrapy/scrapy/issues/3288 +PYTHONWARNINGS+=',ignore:Passing method to twisted.internet.ssl.CertificateOptions was deprecated in Twisted 17.1.0.:DeprecationWarning:scrapy.core.downloader.contextfactory' + +# https://github.com/scrapy/scrapy/issues/6450 +PYTHONWARNINGS+=',ignore:twisted.web.http.HTTPClient was deprecated in Twisted 24.7.0:DeprecationWarning:scrapy.core.downloader.webclient' + +# https://github.com/adamchainz/time-machine/pull/486 +PYTHONWARNINGS+=',ignore:datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version.:DeprecationWarning:time_machine' + +# https://github.com/zulip/python-zulip-api/pull/833 +PYTHONWARNINGS+=',default:distro.linux_distribution() is deprecated.:DeprecationWarning:zulip' + +export SQLALCHEMY_WARN_20=1