# Buggy code
def load_flow(self, f):
    """
    Loads a flow
    """
    if isinstance(f, models.HTTPFlow):
        if self.server and self.options.mode == "reverse":
            f.request.host = self.server.config.upstream_server.address.host
            f.request.port = self.server.config.upstream_server.address.port
            f.request.scheme = self.server.config.upstream_server.scheme

        f.reply = controller.DummyReply()
        if f.request:
            self.request(f)
        if f.response:
            self.responseheaders(f)
            self.response(f)
        if f.error:
            self.error(f)
    elif isinstance(f, models.TCPFlow):
        messages = f.messages
        f.messages = []
        f.reply = controller.DummyReply()
        self.tcp_open(f)
        while messages:
            f.messages.append(messages.pop(0))
            self.tcp_message(f)
        if f.error:
            self.tcp_error(f)
        self.tcp_close(f)
    else:
        raise NotImplementedError()


# Traceback (AttributeError)
user@user-ubuntu:~$ mitmproxy
Traceback (most recent call last):
File "/media/sf_git/mitmproxy/mitmproxy/console/master.py", line 317, in run_script_once
s = script.Script(command)
AttributeError: module 'mitmproxy.script' has no attribute 'Script'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/media/sf_git/mitmproxy/mitmproxy/console/master.py", line 498, in run
self.loop.run()
File "/usr/local/lib/python3.5/dist-packages/urwid/main_loop.py", line 278, in run
self._run()
File "/usr/local/lib/python3.5/dist-packages/urwid/main_loop.py", line 376, in _run
self.event_loop.run()
File "/usr/local/lib/python3.5/dist-packages/urwid/main_loop.py", line 682, in run
self._loop()
File "/usr/local/lib/python3.5/dist-packages/urwid/main_loop.py", line 719, in _loop
self._watch_files[fd]()
File "/usr/local/lib/python3.5/dist-packages/urwid/raw_display.py", line 393, in <lambda>
event_loop, callback, self.get_available_raw_input())
File "/usr/local/lib/python3.5/dist-packages/urwid/raw_display.py", line 493, in parse_input
callback(processed, processed_codes)
File "/usr/local/lib/python3.5/dist-packages/urwid/main_loop.py", line 403, in _update
self.process_input(keys)
File "/usr/local/lib/python3.5/dist-packages/urwid/main_loop.py", line 503, in process_input
k = self._topmost_widget.keypress(self.screen_size, k)
File "/media/sf_git/mitmproxy/mitmproxy/console/window.py", line 42, in keypress
k = super(self.__class__, self).keypress(size, k)
File "/usr/local/lib/python3.5/dist-packages/urwid/container.py", line 1116, in keypress
return self.footer.keypress((maxcol,),key)
File "/media/sf_git/mitmproxy/mitmproxy/console/statusbar.py", line 134, in keypress
return self.master.ab.keypress(*args, **kwargs)
File "/media/sf_git/mitmproxy/mitmproxy/console/statusbar.py", line 89, in keypress
self.prompt_execute(self._w.get_edit_text())
File "/media/sf_git/mitmproxy/mitmproxy/console/statusbar.py", line 112, in prompt_execute
msg = p(txt, *args)
File "/media/sf_git/mitmproxy/mitmproxy/console/master.py", line 319, in run_script_once
except script.ScriptException as e:
AttributeError: module 'mitmproxy.script' has no attribute 'ScriptException'

# Fixed code
def load_flow(self, f):
    """
    Loads a flow
    """
    if isinstance(f, models.HTTPFlow):
        if self.server and self.options.mode == "reverse":
            f.request.host = self.server.config.upstream_server.address.host
            f.request.port = self.server.config.upstream_server.address.port
            f.request.scheme = self.server.config.upstream_server.scheme
    f.reply = controller.DummyReply()
    for e, o in event_sequence(f):
        getattr(self, e)(o)