From a786d06a92b51818e68de2a9bdc18b8c7735e6da Mon Sep 17 00:00:00 2001 From: Burak Yigit Kaya Date: Sat, 3 Oct 2020 02:44:44 +0300 Subject: [PATCH 1/3] py3(runner): Make runner Py3 compatible Backported from #21126 --- requirements-base.txt | 2 +- src/sentry/runner/importer.py | 12 +++++++----- src/sentry/utils/compat/__init__.py | 11 +++++++++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/requirements-base.txt b/requirements-base.txt index 7b759a43dd5c74..4e2d5044412529 100644 --- a/requirements-base.txt +++ b/requirements-base.txt @@ -2,7 +2,7 @@ beautifulsoup4>=4.7.1,<4.8 boto3>=1.4.1,<1.4.6 botocore<1.5.71 celery==4.4.7 -click>=5.0,<7.0 +click==7.1.2 confluent-kafka==1.5.0 croniter>=0.3.34,<0.4.0 datadog>=0.15.0,<0.31.0 diff --git a/src/sentry/runner/importer.py b/src/sentry/runner/importer.py index 35c9187592f17e..956fc26ab57bde 100644 --- a/src/sentry/runner/importer.py +++ b/src/sentry/runner/importer.py @@ -1,11 +1,13 @@ from __future__ import absolute_import, print_function -import imp +import io import six import sys import click +from sentry.utils.compat import new_module + def install(name, config_path, default_settings, callback=None): sys.meta_path.append(Importer(name, config_path, default_settings, callback)) @@ -17,7 +19,7 @@ def show(self, file=None): from click._compat import get_text_stderr file = get_text_stderr() - click.secho("!! Configuration error: %s" % self.format_message(), file=file, fg="red") + click.secho("!! Configuration error: %s" % str(self), file=file, fg="red") class Importer(object): @@ -66,7 +68,7 @@ def _load_module(self, fullname): else: default_settings_mod = None - settings_mod = imp.new_module(self.name) + settings_mod = new_module(self.name) # Django doesn't play too nice without the config file living as a real # file, so let's fake it. @@ -85,11 +87,11 @@ def _load_module(self, fullname): def load_settings(mod_or_filename, settings, silent=False): if isinstance(mod_or_filename, six.string_types): - conf = imp.new_module("temp_config") + conf = new_module("temp_config") conf.__file__ = mod_or_filename try: - with open(mod_or_filename) as source_file: + with io.open(mod_or_filename, mode="rb") as source_file: six.exec_(source_file.read(), conf.__dict__) except IOError as e: import errno diff --git a/src/sentry/utils/compat/__init__.py b/src/sentry/utils/compat/__init__.py index eae3ea688151e5..deb11826238df2 100644 --- a/src/sentry/utils/compat/__init__.py +++ b/src/sentry/utils/compat/__init__.py @@ -53,6 +53,12 @@ def implements_bool(cls): from binascii import crc32 + import imp + + def new_module(name): + return imp.new_module(name) + + else: implements_to_string = _identity implements_iterator = _identity @@ -78,3 +84,8 @@ def implements_bool(cls): def crc32(*args): rt = _crc32(*args) return rt - ((rt & 0x80000000) << 1) + + import types + + def new_module(name): + return types.ModuleType(name) From 3d4c78d914ee9e157ddae0094a6016a925de6366 Mon Sep 17 00:00:00 2001 From: Burak Yigit Kaya Date: Sat, 3 Oct 2020 03:11:55 +0300 Subject: [PATCH 2/3] revert click upgrade --- requirements-base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-base.txt b/requirements-base.txt index 4e2d5044412529..7b759a43dd5c74 100644 --- a/requirements-base.txt +++ b/requirements-base.txt @@ -2,7 +2,7 @@ beautifulsoup4>=4.7.1,<4.8 boto3>=1.4.1,<1.4.6 botocore<1.5.71 celery==4.4.7 -click==7.1.2 +click>=5.0,<7.0 confluent-kafka==1.5.0 croniter>=0.3.34,<0.4.0 datadog>=0.15.0,<0.31.0 From ebd794444e7483888c2dd88de52e62098074b5b5 Mon Sep 17 00:00:00 2001 From: Burak Yigit Kaya Date: Sat, 3 Oct 2020 03:14:32 +0300 Subject: [PATCH 3/3] lint --- src/sentry/runner/importer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sentry/runner/importer.py b/src/sentry/runner/importer.py index 956fc26ab57bde..bb655252458d38 100644 --- a/src/sentry/runner/importer.py +++ b/src/sentry/runner/importer.py @@ -19,7 +19,7 @@ def show(self, file=None): from click._compat import get_text_stderr file = get_text_stderr() - click.secho("!! Configuration error: %s" % str(self), file=file, fg="red") + click.secho("!! Configuration error: %s" % six.text_type(self), file=file, fg="red") class Importer(object):