summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ricky/TODO1
-rw-r--r--ricky/config.py10
-rw-r--r--ricky/imbreak/params.py14
-rw-r--r--ricky/imgradient/__init__.py1
-rw-r--r--ricky/imgradient/params.py45
-rw-r--r--ricky/imgradient/probabilities.json120
-rw-r--r--ricky/imgrid/params.py10
-rw-r--r--ricky/impattern/params.py6
-rw-r--r--ricky/param/__init__.py14
-rw-r--r--ricky/param/constrainednumber.py38
-rw-r--r--ricky/params.py28
-rw-r--r--ricky/unused/weight.py57
12 files changed, 198 insertions, 146 deletions
diff --git a/ricky/TODO b/ricky/TODO
deleted file mode 100644
index fe1900d..0000000
--- a/ricky/TODO
+++ /dev/null
@@ -1 +0,0 @@
-change MultiSelect to include options
diff --git a/ricky/config.py b/ricky/config.py
index d68543c..c634969 100644
--- a/ricky/config.py
+++ b/ricky/config.py
@@ -4,8 +4,8 @@ TEST_URL = (
"http://i.asdf.us/im/"
"65/imBreak5qI6DN2_14254-PbPattern_1444004782_pepper.png"
)
-PATTERN_BASE_URL = "http://asdf.us/impattern/patterns"
-IMPATTERN_URL = "http://asdf.us/im/api/impattern"
-IMGRID_URL = "http://asdf.us/im/api/imgrid"
-IMGRADIENT_URL = "http://asdf.us/im/api/imgradient"
-IMBREAK_URL = "http://asdf.us/im/api/imbreak"
+PATTERN_BASE_URL = "http://localhost:8999/impattern/patterns"
+IMPATTERN_URL = "http://localhost:8999/im/api/impattern"
+IMGRID_URL = "http://localhost:8999/im/api/imgrid"
+IMGRADIENT_URL = "http://localhost:8999/im/api/imgradient"
+IMBREAK_URL = "http://localhost:8999/im/api/imbreak"
diff --git a/ricky/imbreak/params.py b/ricky/imbreak/params.py
index 4cf3af9..3df42ec 100644
--- a/ricky/imbreak/params.py
+++ b/ricky/imbreak/params.py
@@ -34,24 +34,24 @@ finalformat_options = [
class ImBreakParams(Params):
def __init__(self):
self._params = [
- Username(name="username", required=0),
- ImageUrl(name="url", required=1),
+ Username(name="username", required=False),
+ ImageUrl(name="url", required=True),
MultiSelect(
name="finalformat",
- required=0,
+ required=False,
options=finalformat_options),
MultiSelect(
name="breaktype",
- required=1,
+ required=True,
options=breaktype_options),
ConstrainedNumber(
name="breakangle",
- required=0,
+ required=False,
min=-180,
max=180),
MultiSelect(
name="breakmode",
- required=1,
+ required=True,
options=breakmode_options),
- Bool(name="expanded", required=0)
+ Bool(name="expanded", required=False)
]
diff --git a/ricky/imgradient/__init__.py b/ricky/imgradient/__init__.py
index 1d8da3d..a8ed8a6 100644
--- a/ricky/imgradient/__init__.py
+++ b/ricky/imgradient/__init__.py
@@ -11,6 +11,5 @@ class ImGradient(Im):
def params_init(self):
new_params = Params()
- #new_params = self.get_from_server()
new_params.api = self
return new_params
diff --git a/ricky/imgradient/params.py b/ricky/imgradient/params.py
index 8786ae6..38cea33 100644
--- a/ricky/imgradient/params.py
+++ b/ricky/imgradient/params.py
@@ -48,107 +48,106 @@ _GRADIENTTYPE_OPTIONS = [
class Params(_Params):
def __init__(self):
super(Params, self).__init__(
- Username(name="username", required=0),
+ Username(name="username", required=False),
ConstrainedNumber(
name="width",
- required=1,
+ required=True,
min=10,
max=800
),
ConstrainedNumber(
name="height",
- required=1,
+ required=True,
min=10,
max=800
),
- Color(name="color1", required=1),
- Color(name="color2", required=1),
+ Color(name="color1", required=True),
+ Color(name="color2", required=True),
MultiSelect(
name="filetype",
- required=0,
+ required=False,
),
MultiSelect(
name="gradienttype",
- required=1,
+ required=True,
options=_GRADIENTTYPE_OPTIONS
),
MultiSelect(
name="halftone",
- required=0,
+ required=False,
options=_HALFTONE_OPTIONS
),
MultiSelect(
name="bevel",
- required=0,
+ required=False,
options=_BEVEL_OPTIONS
),
ConstrainedNumber(
name="stripenumber",
- required=0,
+ required=False,
min=0,
max=400
),
ConstrainedNumber(
name="stripeintensity",
- required=0,
+ required=False,
min=0,
max=5000
),
-
ConstrainedNumber(
name="blurriness",
- required=0,
+ required=False,
min=0,
max=200
),
ConstrainedNumber(
name="contrast",
- required=0,
+ required=False,
min=0,
max=200
),
ConstrainedNumber(
name="brightness",
- required=0,
+ required=False,
min=0,
max=200
),
ConstrainedNumber(
name="saturation",
- required=0,
+ required=False,
min=0,
max=200
),
ConstrainedNumber(
name="hue",
- required=0,
+ required=False,
min=0,
max=200
),
ConstrainedNumber(
name="percentbeveled",
- required=0,
+ required=False,
min=0,
max=100
),
ConstrainedNumber(
name="rotate",
- required=0,
+ required=False,
min=0,
max=360
),
ConstrainedNumber(
name="tilt",
- required=0,
+ required=False,
min=0,
max=360
),
Bool(
name="flop",
- required=0,
+ required=False,
),
Bool(
name="flip",
- required=0
- ),
+ required=False
+ )
)
diff --git a/ricky/imgradient/probabilities.json b/ricky/imgradient/probabilities.json
new file mode 100644
index 0000000..0c6c0df
--- /dev/null
+++ b/ricky/imgradient/probabilities.json
@@ -0,0 +1,120 @@
+{
+ "width" : [
+ {"value": 40, "weight": 10}
+ ],
+ "height" : [
+ {"value": 400, "weight": 100}
+ ],
+ "color1" : [
+ {"value": "", "weight": 0},
+ {"value": "black", "weight": 1},
+ {"value": "white", "weight": 2}
+ ],
+ "color2" : [
+ {"value": "", "weight": 0},
+ {"value": "black", "weight": 2},
+ {"value": "white", "weight": 1}
+ ],
+ "stripes" : [
+ {"value": "true", "weight": 3},
+ {"value": "false", "weight": 1}
+ ],
+ "stripenumber" : [
+ {"value": 3, "weight": 10},
+ {"value": 10, "weight": 10},
+ {"value": 20, "weight": 10},
+ {"value": 100, "weight": 10},
+ {"value": 40, "weight": 10},
+ {"value": 1, "weight": 50},
+ {"value": 2, "weight": 50},
+ {"value": 2, "weight": 50}
+ ],
+ "stripeintensity" : [
+ {"value": 1000, "weight": 10},
+ {"value": 4, "weight": 10}
+ ],
+ "contrast" : [
+ {"value": "", "weight": 0},
+ {"value": "", "weight": 300}
+ ],
+ "brightness" : [
+ {"value": "", "weight": 0},
+ {"value": "", "weight": 300}
+ ],
+ "saturation" : [
+ {"value": "", "weight": 0},
+ {"value": "", "weight": 300}
+ ],
+ "hue" : [
+ {"value": "", "weight": 0},
+ {"value": "", "weight": 300}
+ ],
+ "halftone" : [
+ {"value": "", "weight": 60},
+ {"value": "checkeredfade", "weight": 10},
+ {"value": "etchedtransition", "weight": 10},
+ {"value": "bendaydots", "weight": 10},
+ {"value": "smallerdots1", "weight": 10},
+ {"value": "smallerdots2", "weight": 10},
+ {"value": "flatstripes", "weight": 10}
+ ],
+ "bevel" : [
+ {"value": "", "weight": 4},
+ {"value": "flatout", "weight": 1},
+ {"value": "flatinner", "weight": 0},
+ {"value": "evenlyframed", "weight": 1},
+ {"value": "biginner", "weight": 1},
+ {"value": "bigouter", "weight": 1},
+ {"value": "dramaticflatout", "weight": 1},
+ {"value": "dramaticflatinner", "weight": 1}
+ ],
+ "blurriness" : [
+ {"value": 30, "weight": 10},
+ {"value": 10, "weight": 10},
+ {"value": 5, "weight": 10},
+ {"value": 20, "weight": 10},
+ {"value": 25, "weight": 10},
+ {"value": 7, "weight": 10},
+ {"value": "", "weight": 1}
+ ],
+ "percentbeveled" : [
+ {"value": 30, "weight": 10},
+ {"value": 10, "weight": 10},
+ {"value": 5, "weight": 10},
+ {"value": 20, "weight": 10},
+ {"value": 25, "weight": 10},
+ {"value": 7, "weight": 10},
+ {"value": "", "weight": 1}
+ ],
+ "rotate" : [
+ {"value": 0, "weight": 200},
+ {"value": 90, "weight": 2},
+ {"value": 180, "weight": 2},
+ {"value": 270, "weight": 2}
+ ],
+ "tilt" : [
+ {"value": 0, "weight": 200},
+ {"value": 90, "weight": 2},
+ {"value": 180, "weight": 2},
+ {"value": 270, "weight": 2}
+ ],
+ "flop_probabilities : flip" : [
+ {"value": "", "weight": 1},
+ {"value": "true", "weight": 1}
+ ],
+ "filetype" : [
+ {"value": "png", "weight": 10},
+ {"value": "jpg", "weight": 2},
+ {"value": "gif", "weight": 2}
+ ],
+ "gradienttype" : [
+ {"value": "canvas", "weight": 1},
+ {"value": "gradient", "weight": 5},
+ {"value": "radial", "weight": 1},
+ {"value": "colorspace", "weight": 1},
+ {"value": "plasmawash", "weight": 2},
+ {"value": "gradientwash", "weight": 1},
+ {"value": "mirrored", "weight": 0},
+ {"value": "noise", "weight": 1}
+ ]
+}
diff --git a/ricky/imgrid/params.py b/ricky/imgrid/params.py
index 5740ebc..52fd022 100644
--- a/ricky/imgrid/params.py
+++ b/ricky/imgrid/params.py
@@ -91,10 +91,10 @@ class Param_Opacity(ConstrainedNumber):
class ImGridParams(Params):
def __init__(self):
self._params = [
- Username(name="username", required=0),
- ImageUrl(name="bgimage", required=0),
- ImageUrl(name="imageinstead", required=0),
- ImageUrl(name="planebgimage", required=0),
+ Username(name="username", required=False),
+ ImageUrl(name="bgimage", required=False),
+ ImageUrl(name="imageinstead", required=False),
+ ImageUrl(name="planebgimage", required=False),
MultiSelect(
name="format",
required=False,
@@ -102,7 +102,7 @@ class ImGridParams(Params):
),
MultiSelect(
name="transition",
- required=1,
+ required=True,
options=_TRANSITION_OPTIONS
),
Color(name="skycolor", required=False),
diff --git a/ricky/impattern/params.py b/ricky/impattern/params.py
index b2f9253..4c2d58c 100644
--- a/ricky/impattern/params.py
+++ b/ricky/impattern/params.py
@@ -20,9 +20,9 @@ class Pattern_UrlProbability(Probability):
class ImPatternParams(Params):
def __init__(self):
self._params = [
- Username(name="username", required=0),
- ImageUrl(name="image_url", required=1),
- MultiSelect(name="pattern_url", required=1, probabilities=pattern_url_probabilities)
+ Username(name="username", required=False),
+ ImageUrl(name="image_url", required=True),
+ MultiSelect(name="pattern_url", required=True, probabilities=pattern_url_probabilities)
]
pattern_url_probabilities = Probabilities(*[
diff --git a/ricky/param/__init__.py b/ricky/param/__init__.py
index 1bd3c38..e458963 100644
--- a/ricky/param/__init__.py
+++ b/ricky/param/__init__.py
@@ -5,16 +5,21 @@ class Param(object):
def __init__(
self,
required=False,
- set_by_user=0,
- value=None,
+ set_by_user=False,
name=None,
**kwargs
):
self._value_default = None
self.name = name
self.required = required
- self._value = value
- self.set_by_user = set_by_user
+
+ if self.value is not None and \
+ kwargs.get("value") is not None:
+ self._value = kwargs.get("value")
+ else:
+ self._value = None
+ if not hasattr(self, "set_by_user"):
+ self.set_by_user = set_by_user
def __str__(self):
return pprint.pformat(vars(self))
@@ -32,6 +37,5 @@ class Param(object):
def default(self, value):
self._value_default = value
-
def randomize(self):
pass
diff --git a/ricky/param/constrainednumber.py b/ricky/param/constrainednumber.py
index 214924a..b07ddd4 100644
--- a/ricky/param/constrainednumber.py
+++ b/ricky/param/constrainednumber.py
@@ -3,19 +3,21 @@ from ricky.param import Param
DEFAULT_RAND_MAX = 1000
DEFAULT_RAND_MIN = -1000
+
class ConstrainedNumber(Param):
def __init__(self, **kwargs):
- super(ConstrainedNumber, self).__init__(**kwargs)
self.range_min = kwargs.get('min')
self.range_max = kwargs.get('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')
-
- def randomize(self):
- val = random.randint(self.range_min, self.range_max)
- self.value = val
+ if kwargs.get("default") is not None:
+ self._default = kwargs.get("default")
+ else:
+ self.randomize()
+ self._default = self._value
+ super(ConstrainedNumber, self).__init__(**kwargs)
@property
def value(self):
@@ -24,9 +26,9 @@ 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
- ):
+ self._value < self.range_min or
+ self._value > self.range_max
+ ):
raise ValueError(
"Value must be between %s and %s\n" % (
self.range_min, self.range_max
@@ -60,7 +62,7 @@ class ConstrainedNumber(Param):
}
for attr in (
'range_min', 'range_max', 'forbidden', 'forbidden_range_min',
- 'forbidden_range_max', 'enforce_int'
+ 'forbidden_range_max', 'assert_int'
):
attr_val = getattr(self, attr)
if attr_val or attr_val == 0:
@@ -70,19 +72,19 @@ class ConstrainedNumber(Param):
def _generate_random(self):
value = random.uniform(DEFAULT_RAND_MIN, DEFAULT_RAND_MAX)
if self.assert_int:
- value = int(value)
+ value = int(value)
self.value = value
def randomize(self):
tries = 0
tries_max = 30
try:
- self._generate_random()
+ self._generate_random()
except ValueError:
- tries += 1
- if tries < tries_max:
- self._generate_random()
- else:
- raise ValueError(
- "Unable to set random value on %s in %s tries"
- ) % (self.name, self.tries_max)
+ tries += 1
+ if tries < tries_max:
+ self._generate_random()
+ else:
+ raise ValueError(
+ "Unable to set random value on %s in %s tries"
+ ) % (self.name, self.tries_max)
diff --git a/ricky/params.py b/ricky/params.py
index 869c82a..372438b 100644
--- a/ricky/params.py
+++ b/ricky/params.py
@@ -1,5 +1,4 @@
"""base class for all params"""
-import sys
import pprint
@@ -8,27 +7,25 @@ class Params(object):
self._api = None
self._params = args
- def define_from_list(self, definitions_list):
- self._params = definitions_list
-
def param(self, name):
"""getter for the param by name"""
for param in self._params:
if param.name == name:
return param
- return None
+ raise ValueError("No param with name %s\n" % name)
def __str__(self):
"""string representation"""
+ to_rep = []
+ for param in self._params:
+ to_rep.append({param.name: param.value})
return pprint.pformat(
- {"params": map(lambda x: vars(x), self._params)}
+ to_rep
)
def randomize(self):
"""assign random values to all params, taking into account weight"""
for param in self._params:
- if param.set_by_user:
- continue
param.randomize()
@property
@@ -45,24 +42,13 @@ class Params(object):
"""calls the associated api"""
return self.api.call(self)
- def is_ready(self):
- """test to see if any params with required values are missing"""
- for param in self._params:
- if not param.is_ready and not param.default:
- sys.stderr.write("param not ready: %s\n" % param)
- return 0
- return 1
-
- def __dict__(self):
+ def as_dict(self):
+ """displays the params names and values in dictionary form"""
result = {}
for param in self._params:
result[param.name] = param.value
return result
- def as_dict(self):
- """alias for __dict__"""
- return self.__dict__()
-
def from_dict(self, params_dict):
"""set param values manually from a dictionary"""
for param in self._params:
diff --git a/ricky/unused/weight.py b/ricky/unused/weight.py
deleted file mode 100644
index 4bd4af4..0000000
--- a/ricky/unused/weight.py
+++ /dev/null
@@ -1,57 +0,0 @@
- weights_total = sum(
- map(lambda x: x["weight"], self.probabilities())
- ) + (255 * 255 * 255)
- choice = random.randint(0, weights_total)
- position = 0
- for elem in self.probabilities():
- position += elem["weight"]
- if position >= choice:
- self.value = elem["value"]
- return
-
- weights_total = sum(
- map(lambda x: x["weight"], self.probabilities())
- )# + self.range_max - self.range_min
- if weights_total < 100:
- weights_total = 100;
- choice = random.randint(0, weights_total)
- import sys
- sys.stderr.write("choosing %s: random_int: %s, probabilities: %s\n" % (
- self.name,
- choice,
- self.probabilities()))
- position = 0
- for elem in self.probabilities():
- position += elem["weight"]
- if position >= choice:
- self.value = elem["value"]
- return
-
-
- weights_total = sum(map(lambda x: x["weight"], self.probabilities()))
- choice = random.randint(0, weights_total)
- position = 0
- for elem in self.probabilities():
- position += elem["weight"]
- if position >= choice:
- self.value = elem["value"]
- break
- def _choose_heaviest(self):
- heaviest_idx = 0
- heaviest_weight = 0
- idx = 0
- if (len(self.options())):
- for elem in self.options():
- if elem["weight"] > heaviest_weight:
- heaviest_weight = elem["weight"]
- heaviest_idx = idx
- idx += 1
- return self.options()[heaviest_idx]["value"]
- else:
- self.randomize()
-
- def heaviest(self):
- self.value = self._choose_heaviest()
-
- """default value is the probability with the heaviest weight"""
- self.default(self._choose_heaviest())