diff options
Diffstat (limited to 'ricky')
| -rw-r--r-- | ricky/imgradient/params.py | 29 | ||||
| -rw-r--r-- | ricky/param/__init__.py | 15 | ||||
| -rw-r--r-- | ricky/param/bool.py | 17 | ||||
| -rw-r--r-- | ricky/param/constrainednumber.py | 24 | ||||
| -rw-r--r-- | ricky/param/enum.py | 33 | ||||
| -rw-r--r-- | ricky/param/username.py | 3 | ||||
| -rw-r--r-- | ricky/params.py | 5 |
7 files changed, 88 insertions, 38 deletions
diff --git a/ricky/imgradient/params.py b/ricky/imgradient/params.py index 8afbc2d..48e25f5 100644 --- a/ricky/imgradient/params.py +++ b/ricky/imgradient/params.py @@ -6,7 +6,7 @@ from ricky.param.bool import Bool from ricky.param.color import Color -_HALFTONE_OPTIONS = ( +_HALFTONE_OPTIONS = [ "", "checkeredfade", "etchedtransition", @@ -14,9 +14,9 @@ _HALFTONE_OPTIONS = ( "smallerdots1", "smallerdots2", "flatstripes", -) +] -_BEVEL_OPTIONS = ( +_BEVEL_OPTIONS = [ "", "flatout", "flatinner", @@ -25,15 +25,15 @@ _BEVEL_OPTIONS = ( "bigouter", "dramaticflatout", "dramaticflatinner", -) +] -_FILETYPE_OPTIONS = ( +_FILETYPE_OPTIONS = [ "png", "jpg", "gif", -) +] -_GRADIENTTYPE_OPTIONS = ( +_GRADIENTTYPE_OPTIONS = [ "canvas", "gradient", "radial", @@ -42,7 +42,7 @@ _GRADIENTTYPE_OPTIONS = ( "gradientwash", "mirrored", "noise", -) +] class Params(_Params): @@ -52,12 +52,14 @@ class Params(_Params): ConstrainedNumber( name="width", required=True, + enforce_int=True, min=10, max=800 ), ConstrainedNumber( name="height", required=True, + enforce_int=True, min=10, max=800 ), @@ -66,6 +68,7 @@ class Params(_Params): Enum( name="filetype", required=False, + options=_FILETYPE_OPTIONS ), Enum( name="gradienttype", @@ -85,60 +88,70 @@ class Params(_Params): ConstrainedNumber( name="stripenumber", required=False, + enforce_int=True, min=0, max=400 ), ConstrainedNumber( name="stripeintensity", required=False, + enforce_int=True, min=0, max=5000 ), ConstrainedNumber( name="blurriness", required=False, + enforce_int=True, min=0, max=200 ), ConstrainedNumber( name="contrast", required=False, + enforce_int=True, min=0, max=200 ), ConstrainedNumber( name="brightness", required=False, + enforce_int=True, min=0, max=200 ), ConstrainedNumber( name="saturation", required=False, + enforce_int=True, min=0, max=200 ), ConstrainedNumber( name="hue", required=False, + enforce_int=True, min=0, max=200 ), ConstrainedNumber( name="percentbeveled", required=False, + enforce_int=True, min=0, max=100 ), ConstrainedNumber( name="rotate", required=False, + enforce_int=True, min=0, max=360 ), ConstrainedNumber( name="tilt", required=False, + enforce_int=True, min=0, max=360 ), diff --git a/ricky/param/__init__.py b/ricky/param/__init__.py index e458963..6573c86 100644 --- a/ricky/param/__init__.py +++ b/ricky/param/__init__.py @@ -12,17 +12,19 @@ class Param(object): self._value_default = None self.name = name self.required = required + self.set_by_user = set_by_user + self._value_default = kwargs.get("default") or None if self.value is not None and \ kwargs.get("value") is not None: self._value = kwargs.get("value") else: - self._value = None + self._value = self._value_default or None # maybe FIXME if not hasattr(self, "set_by_user"): self.set_by_user = set_by_user def __str__(self): - return pprint.pformat(vars(self)) + return pprint.pformat(vars(self)) # FIXME needs to be more explicit def value_get(self): if self.set_by_user == 1: @@ -34,8 +36,13 @@ class Param(object): value = property(value_get, value_set) - def default(self, value): - self._value_default = value + def default_set(self, value): + raise ValueError("Default must be set at instantiation") + + def default_get(self, value): + return self._value_default + + default = property(default_set, default_get) def randomize(self): pass diff --git a/ricky/param/bool.py b/ricky/param/bool.py index b95f1f1..961912e 100644 --- a/ricky/param/bool.py +++ b/ricky/param/bool.py @@ -17,15 +17,16 @@ class Bool(Param): value = property(value_get, value_set) def _bool_correct(self, value): - if any in [ - re.match(r'(true|1)', value, re.IGNORECASE), - value == 1, - ]: + value = str(value) + if any([ + re.match(r'(true|1)', value, re.IGNORECASE), + value == 1 + ]): value = True - elif any in [ - re.match(r'(false|0)', value, re.IGNORECASE), - value == 0, - ]: + elif any([ + re.match(r'(false|0)', value, re.IGNORECASE), + value == 0 + ]): value = False else: raise ValueError("Bad Value for Bool %s" % value) diff --git a/ricky/param/constrainednumber.py b/ricky/param/constrainednumber.py index b07ddd4..d94b6ee 100644 --- a/ricky/param/constrainednumber.py +++ b/ricky/param/constrainednumber.py @@ -6,17 +6,15 @@ DEFAULT_RAND_MIN = -1000 class ConstrainedNumber(Param): def __init__(self, **kwargs): - self.range_min = kwargs.get('min') - self.range_max = kwargs.get('max') + self.range_min = kwargs.get('min', DEFAULT_RAND_MIN) + self.range_max = kwargs.get('max', DEFAULT_RAND_MAX) self.forbidden = kwargs.get('forbidden') self.forbidden_range_min = kwargs.get('forbidden_range_min') self.forbidden_range_max = kwargs.get('forbidden_range_max') - self.assert_int = kwargs.get('assert_int') - if kwargs.get("default") is not None: - self._default = kwargs.get("default") - else: + self.enforce_int = kwargs.get('enforce_int') + if "default" not in kwargs: self.randomize() - self._default = self._value + kwargs["default"] = self._value super(ConstrainedNumber, self).__init__(**kwargs) @property @@ -26,8 +24,8 @@ class ConstrainedNumber(Param): @value.setter def value(self, value): if value is not None and ( - self._value < self.range_min or - self._value > self.range_max + value < self.range_min or + value > self.range_max ): raise ValueError( "Value must be between %s and %s\n" % ( @@ -50,7 +48,7 @@ class ConstrainedNumber(Param): "In forbidden range: Value %s is above %s" % (value, self.forbidden_range_min) ) - if self.assert_int and type(value) != int: + if self.enforce_int and type(value) != int: raise ValueError( "Value %s is not an int" % value ) @@ -62,7 +60,7 @@ class ConstrainedNumber(Param): } for attr in ( 'range_min', 'range_max', 'forbidden', 'forbidden_range_min', - 'forbidden_range_max', 'assert_int' + 'forbidden_range_max', 'enforce_int' ): attr_val = getattr(self, attr) if attr_val or attr_val == 0: @@ -70,8 +68,8 @@ class ConstrainedNumber(Param): return "Constrained Number Range \"%s\":\n %s" % (self.name, value_dict) def _generate_random(self): - value = random.uniform(DEFAULT_RAND_MIN, DEFAULT_RAND_MAX) - if self.assert_int: + value = random.uniform(self.range_min, self.range_max) + if self.enforce_int: value = int(value) self.value = value diff --git a/ricky/param/enum.py b/ricky/param/enum.py new file mode 100644 index 0000000..757bd29 --- /dev/null +++ b/ricky/param/enum.py @@ -0,0 +1,33 @@ +import random +from ricky.param import Param + + +class Enum(Param): + def __init__(self, options=None, **kwargs): + self._options = options + if not self._options: + raise ValueError("Object must be initialized with options set") + super(Enum, self).__init__(**kwargs) + self._validate_options() + + def options(self): + return self._options + + def _validate_options(self): + try: + pass + except Exception: + raise ValueError('Unable to validate %s\n:' % self.name) + + def value_get(self): + return super(Enum, self).value_get() + + def value_set(self, value): + if value not in self._options and value is not None: + raise ValueError + super(Enum, self).value_set(value) + + value = property(value_get, value_set) + + def randomize(self): + self.value_set(random.choice(self._options)) diff --git a/ricky/param/username.py b/ricky/param/username.py index cc00f60..41e4423 100644 --- a/ricky/param/username.py +++ b/ricky/param/username.py @@ -3,5 +3,6 @@ from ricky.param.string import String class Username(String): def __init__(self, **kwargs): + kwargs["default"] = USERNAME super(Username, self).__init__(**kwargs) - self.default(USERNAME) + diff --git a/ricky/params.py b/ricky/params.py index 372438b..5084235 100644 --- a/ricky/params.py +++ b/ricky/params.py @@ -16,11 +16,8 @@ class Params(object): def __str__(self): """string representation""" - to_rep = [] - for param in self._params: - to_rep.append({param.name: param.value}) return pprint.pformat( - to_rep + [{param.name: param._value} for param in self._params] ) def randomize(self): |
