Skip to content

Commit

Permalink
Make PresetDefinition a namedtuple
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Nicholas Schrock committed Aug 8, 2019
1 parent 3f37737 commit a69746a
Showing 1 changed file with 11 additions and 7 deletions.
18 changes: 11 additions & 7 deletions 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
Expand All @@ -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:
Expand Down Expand Up @@ -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)

0 comments on commit a69746a

Please sign in to comment.