summaryrefslogtreecommitdiff
path: root/ricky
diff options
context:
space:
mode:
Diffstat (limited to 'ricky')
-rw-r--r--ricky/imgradient/params.py29
-rw-r--r--ricky/param/__init__.py15
-rw-r--r--ricky/param/bool.py17
-rw-r--r--ricky/param/constrainednumber.py24
-rw-r--r--ricky/param/enum.py33
-rw-r--r--ricky/param/username.py3
-rw-r--r--ricky/params.py5
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):