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):
def __init__(self, api_url, user_token, cmd, title, skip_confirmation,
recorder=Recorder(), uploader=Uploader(),
confirmator=Confirmator()):
recorder=None, uploader=None, confirmator=None):
self.api_url = api_url
self.user_token = user_token
self.cmd = cmd
self.title = title
self.skip_confirmation = skip_confirmation
self.recorder = recorder
self.uploader = uploader
self.confirmator = confirmator
self.recorder = recorder if recorder is not None else Recorder()
self.uploader = uploader if uploader is not None else Uploader()
self.confirmator = confirmator if confirmator is not None else Confirmator()
def execute(self):
asciicast = self._record_asciicast()

View File

@@ -8,9 +8,9 @@ DEFAULT_API_URL = 'http://asciinema.org'
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.overrides = overrides
self.overrides = overrides if overrides is not None else os.environ
self._parse_config_file()

View File

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

View File

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

View File

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

View File

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