From bbf70bf21c4a477a4575d33c337cfe453485f45e Mon Sep 17 00:00:00 2001 From: Mike Liu Date: Mon, 11 Jun 2018 12:28:11 -0400 Subject: [PATCH] Fix using mutable default arguments. According to http://docs.python-guide.org/en/latest/writing/gotchas/#mutable-default-arguments using mutable default arguments is not a good practice since it doesn't perform intuitively. For example lists and dictionaries as default arguments are initialized ONCE instead of on each invocation of the function. --- moto/ssm/models.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/moto/ssm/models.py b/moto/ssm/models.py index 688cffcd5..f839e2e14 100644 --- a/moto/ssm/models.py +++ b/moto/ssm/models.py @@ -64,10 +64,22 @@ MAX_TIMEOUT_SECONDS = 3600 class Command(BaseModel): def __init__(self, comment='', document_name='', timeout_seconds=MAX_TIMEOUT_SECONDS, - instance_ids=[], max_concurrency='', max_errors='', - notification_config={}, output_s3_bucket_name='', - output_s3_key_prefix='', output_s3_region='', parameters={}, - service_role_arn='', targets=[]): + instance_ids=None, max_concurrency='', max_errors='', + notification_config=None, output_s3_bucket_name='', + output_s3_key_prefix='', output_s3_region='', parameters=None, + service_role_arn='', targets=None): + + if instance_ids is None: + instance_ids = [] + + if notification_config is None: + notification_config = {} + + if parameters is None: + parameters = {} + + if targets is None: + targets = [] self.error_count = 0 self.completed_count = len(instance_ids)