from sf.lib.orderedattrdict import OrderedAttrDict


class Parameters(OrderedAttrDict):
    pass


class ParameterValues(OrderedAttrDict):
    pass


class Parameter(object):

    def __init__(self, default=None, label=None):
        self.default = default
        self.label = label


class Integer(Parameter):

    def __init__(self, default=None, label=None, range=None, step=1):
        super(Integer, self).__init__(default, label)
        self.range = range
        self.step = step


class PathList(Parameter):

    def __init__(self, default=None, label=None):
        default = default if default is not None else []
        super().__init__(default, label)


class String(Parameter):

    def __init__(self, default=None, label=None, choices=None):
        super(String, self).__init__(default, label)
        self.choices = choices

from collections import OrderedDict

from sf.lib.orderedattrdict import OrderedAttrDict


class Parameters(OrderedAttrDict):
    pass


class ParameterValues(OrderedAttrDict):
    pass


class Parameter(object):

    def __init__(self, default=None, label=None):
        self.default = default
        self.label = label


class Integer(Parameter):

    def __init__(self, default=None, label=None, range=None, step=1):
        super(Integer, self).__init__(default, label)
        self.range = range
        self.step = step


class KeyValuePairs(Parameter):

    def __init__(self, default=None, label=None):
        default = default if default is not None else OrderedDict()
        super().__init__(default, label)


class PathList(Parameter):

    def __init__(self, default=None, label=None):
        default = default if default is not None else []
        super().__init__(default, label)


class String(Parameter):

    def __init__(self, default=None, label=None, choices=None):
        super(String, self).__init__(default, label)
        self.choices = choices

Add a key/value pairs parameter type
Add a key/value pairs parameter type

+ from collections import OrderedDict
+ 
  from sf.lib.orderedattrdict import OrderedAttrDict
  
  
  class Parameters(OrderedAttrDict):
      pass
  
  
  class ParameterValues(OrderedAttrDict):
      pass
  
  
  class Parameter(object):
  
      def __init__(self, default=None, label=None):
          self.default = default
          self.label = label
  
  
  class Integer(Parameter):
  
      def __init__(self, default=None, label=None, range=None, step=1):
          super(Integer, self).__init__(default, label)
          self.range = range
          self.step = step
  
  
+ class KeyValuePairs(Parameter):
+ 
+     def __init__(self, default=None, label=None):
+         default = default if default is not None else OrderedDict()
+         super().__init__(default, label)
+ 
+ 
  class PathList(Parameter):
  
      def __init__(self, default=None, label=None):
          default = default if default is not None else []
          super().__init__(default, label)
  
  
  class String(Parameter):
  
      def __init__(self, default=None, label=None, choices=None):
          super(String, self).__init__(default, label)
          self.choices = choices
  
Add a key/value pairs parameter type
## Code Before:
from sf.lib.orderedattrdict import OrderedAttrDict


class Parameters(OrderedAttrDict):
    pass


class ParameterValues(OrderedAttrDict):
    pass


class Parameter(object):

    def __init__(self, default=None, label=None):
        self.default = default
        self.label = label


class Integer(Parameter):

    def __init__(self, default=None, label=None, range=None, step=1):
        super(Integer, self).__init__(default, label)
        self.range = range
        self.step = step


class PathList(Parameter):

    def __init__(self, default=None, label=None):
        default = default if default is not None else []
        super().__init__(default, label)


class String(Parameter):

    def __init__(self, default=None, label=None, choices=None):
        super(String, self).__init__(default, label)
        self.choices = choices

## Instruction:
Add a key/value pairs parameter type
## Code After:
from collections import OrderedDict

from sf.lib.orderedattrdict import OrderedAttrDict


class Parameters(OrderedAttrDict):
    pass


class ParameterValues(OrderedAttrDict):
    pass


class Parameter(object):

    def __init__(self, default=None, label=None):
        self.default = default
        self.label = label


class Integer(Parameter):

    def __init__(self, default=None, label=None, range=None, step=1):
        super(Integer, self).__init__(default, label)
        self.range = range
        self.step = step


class KeyValuePairs(Parameter):

    def __init__(self, default=None, label=None):
        default = default if default is not None else OrderedDict()
        super().__init__(default, label)


class PathList(Parameter):

    def __init__(self, default=None, label=None):
        default = default if default is not None else []
        super().__init__(default, label)


class String(Parameter):

    def __init__(self, default=None, label=None, choices=None):
        super(String, self).__init__(default, label)
        self.choices = choices
