diff options
| -rw-r--r-- | ricky/TODO | 1 | ||||
| -rw-r--r-- | ricky/config.py | 10 | ||||
| -rw-r--r-- | ricky/imbreak/params.py | 14 | ||||
| -rw-r--r-- | ricky/imgradient/__init__.py | 1 | ||||
| -rw-r--r-- | ricky/imgradient/params.py | 45 | ||||
| -rw-r--r-- | ricky/imgradient/probabilities.json | 120 | ||||
| -rw-r--r-- | ricky/imgrid/params.py | 10 | ||||
| -rw-r--r-- | ricky/impattern/params.py | 6 | ||||
| -rw-r--r-- | ricky/param/__init__.py | 14 | ||||
| -rw-r--r-- | ricky/param/constrainednumber.py | 38 | ||||
| -rw-r--r-- | ricky/params.py | 28 | ||||
| -rw-r--r-- | ricky/unused/weight.py | 57 |
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()) |
