From a69746a16857bb1218e4c1b0e617e4b74a4c2d05 Mon Sep 17 00:00:00 2001 From: Nicholas Schrock Date: Thu, 8 Aug 2019 08:20:46 -0700 Subject: [PATCH] Make PresetDefinition a namedtuple Summary: In the spirit of practicing what one preches, make PresetDefinition immutable. Test Plan: buildkite Reviewers: max, sashank Reviewed By: max Differential Revision: https://dagster.phacility.com/D781 --- .../dagster/dagster/core/definitions/preset.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/python_modules/dagster/dagster/core/definitions/preset.py b/python_modules/dagster/dagster/core/definitions/preset.py index c5d816c2a209..fe6e5d85fcc1 100644 --- a/python_modules/dagster/dagster/core/definitions/preset.py +++ b/python_modules/dagster/dagster/core/definitions/preset.py @@ -1,5 +1,6 @@ -import os +from collections import namedtuple from glob import glob +import os import six import yaml @@ -10,7 +11,7 @@ from .mode import DEFAULT_MODE_NAME -class PresetDefinition: +class PresetDefinition(namedtuple('_PresetDefinition', 'name environment_dict solid_subset mode')): '''Defines a preset configuration that a pipeline can execute in. Presets can be used in Dagit to load the predefined configuration in to the tool, or in a script or test as follows: @@ -64,11 +65,14 @@ def from_files(name, environment_files=None, solid_subset=None, mode=None): return PresetDefinition(name, merged, solid_subset, mode) - def __init__(self, name, environment_dict=None, solid_subset=None, mode=None): - self.name = check.str_param(name, 'name') - self.environment_dict = check.opt_dict_param(environment_dict, 'environment_dict') - self.solid_subset = check.opt_nullable_list_param(solid_subset, 'solid_subset', of_type=str) - self.mode = check.opt_str_param(mode, 'mode', DEFAULT_MODE_NAME) + def __new__(cls, name, environment_dict=None, solid_subset=None, mode=None): + return super(PresetDefinition, cls).__new__( + cls, + name=check.str_param(name, 'name'), + environment_dict=check.opt_dict_param(environment_dict, 'environment_dict'), + solid_subset=check.opt_nullable_list_param(solid_subset, 'solid_subset', of_type=str), + mode=check.opt_str_param(mode, 'mode', DEFAULT_MODE_NAME), + ) def get_environment_yaml(self): return yaml.dump(self.environment_dict, default_flow_style=False)