Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions src/sentry/runner/importer.py
Original file line number Diff line number Diff line change
@@ -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))
Expand All @@ -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" % six.text_type(self), file=file, fg="red")


class Importer(object):
Expand Down Expand Up @@ -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.
Expand All @@ -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
Expand Down
11 changes: 11 additions & 0 deletions src/sentry/utils/compat/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)