Wtf, python evaluates default arguments at the moment of their definition O_o

This commit is contained in:
Marcin Kulik
2013-10-04 18:02:44 +02:00
parent e9270926f7
commit 1f8c47c61b
7 changed files with 15 additions and 15 deletions

Binary file not shown.

View File

@@ -8,16 +8,15 @@ from confirmator import Confirmator
class RecordCommand(object): class RecordCommand(object):
def __init__(self, api_url, user_token, cmd, title, skip_confirmation, def __init__(self, api_url, user_token, cmd, title, skip_confirmation,
recorder=Recorder(), uploader=Uploader(), recorder=None, uploader=None, confirmator=None):
confirmator=Confirmator()):
self.api_url = api_url self.api_url = api_url
self.user_token = user_token self.user_token = user_token
self.cmd = cmd self.cmd = cmd
self.title = title self.title = title
self.skip_confirmation = skip_confirmation self.skip_confirmation = skip_confirmation
self.recorder = recorder self.recorder = recorder if recorder is not None else Recorder()
self.uploader = uploader self.uploader = uploader if uploader is not None else Uploader()
self.confirmator = confirmator self.confirmator = confirmator if confirmator is not None else Confirmator()
def execute(self): def execute(self):
asciicast = self._record_asciicast() asciicast = self._record_asciicast()

View File

@@ -8,9 +8,9 @@ DEFAULT_API_URL = 'http://asciinema.org'
class Config: class Config:
def __init__(self, path=DEFAULT_CONFIG_FILE_PATH, overrides=os.environ): def __init__(self, path=DEFAULT_CONFIG_FILE_PATH, overrides=None):
self.path = os.path.expanduser(path) self.path = os.path.expanduser(path)
self.overrides = overrides self.overrides = overrides if overrides is not None else os.environ
self._parse_config_file() self._parse_config_file()

View File

@@ -14,8 +14,9 @@ from stdout import Stdout
class PtyRecorder(object): class PtyRecorder(object):
def record_command(self, command, output=Stdout()): def record_command(self, command, output=None):
command = shlex.split(command) command = shlex.split(command)
output = output if output is not None else Stdout()
master_fd = None master_fd = None
def _set_pty_size(): def _set_pty_size():

View File

@@ -7,9 +7,9 @@ from pty_recorder import PtyRecorder
class Recorder(object): class Recorder(object):
def __init__(self, pty_recorder=PtyRecorder(), env=os.environ): def __init__(self, pty_recorder=None, env=None):
self.pty_recorder = pty_recorder self.pty_recorder = pty_recorder if pty_recorder is not None else PtyRecorder()
self.env = env self.env = env if env is not None else os.environ
def record(self, cmd, title): def record(self, cmd, title):
duration, stdout = timer.timeit(self.pty_recorder.record_command, duration, stdout = timer.timeit(self.pty_recorder.record_command,

View File

@@ -17,9 +17,9 @@ class StdoutTiming(object):
class Stdout(object): class Stdout(object):
def __init__(self, timing=StdoutTiming()): def __init__(self, timing=None):
self._data = StringIO.StringIO() self._data = StringIO.StringIO()
self._timing = timing self._timing = timing if timing is not None else StdoutTiming()
self._start_timing() self._start_timing()

View File

@@ -13,8 +13,8 @@ class File(object):
class Uploader(object): class Uploader(object):
def __init__(self, http_adapter=UrllibHttpAdapter()): def __init__(self, http_adapter=None):
self.http_adapter = http_adapter self.http_adapter = http_adapter if http_adapter is not None else UrllibHttpAdapter()
def upload(self, api_url, user_token, asciicast): def upload(self, api_url, user_token, asciicast):
url = '%s/api/asciicasts' % api_url url = '%s/api/asciicasts' % api_url