Ejemplo n.º 1
0
    def test_missing_dict_subkey(self):
        argspec = {
            "args": [{
                "name": "arg1",
                "type": dict,
                "values": {
                    "subkey1": {
                        "type": int,
                        "values": None,
                        "required": True  # explicitly required
                    },
                    "subkey2": {
                        "type": int,
                        "values": None  # implicitly required
                    },
                    "subkey3": {
                        "type": int,
                        "values": None,
                        "required": False  # not required
                    }
                }
            }],
            "kwargs": {}
        }

        try:
            structure.checkspec(argspec, [{"subkey1": 15}])  #missing subkey2
        except AssertionError:
            pass
        else:
            self.fail("should have thrown AssertionError, missing subkey2")
Ejemplo n.º 2
0
    def test_missing_optional_subkey(self):
        argspec = {
            "args": [{
                "name": "arg1",
                "type": dict,
                "values": {
                    "subkey1": {
                        "type": int,
                        "values": None,
                        "required": True  # explicitly required
                    },
                    "subkey2": {
                        "type": int,
                        "values": None  # implicitly required
                    },
                    "subkey3": {
                        "type": int,
                        "values": None,
                        "required": False  # not required
                    }
                }
            }],
            "kwargs": {}
        }

        structure.checkspec(argspec, [{"subkey1": 15, "subkey2": 15}])
Ejemplo n.º 3
0
    def test_args_too_many(self):
        argspec = {"args": [{"name": "arg1", "type": str, "values": None}]}

        try:
            structure.checkspec(argspec, ["A", "B"])
        except TypeError:
            pass
        else:
            self.fail("should have thrown TypeError, too many")
Ejemplo n.º 4
0
    def test_nested_list_choice_of_one(self):
        argspec = {
            "args": [{
                "name": "arg1",
                "type": "one([int, float, list([int, int])])",
                "values": {
                    "int": None,
                    "float": None,
                    "list": [None, None]
                }
            }]
        }

        structure.checkspec(argspec, [[1, 1]])
Ejemplo n.º 5
0
    def test_check_args(self):
        spec = {
            "args": [{
                "name": "arg1",
                "type": int,
                "values": None
            }],
            "kwargs": {
                "kwarg1": {
                    "type": float,
                    "values": None
                }
            }
        }

        structure.checkspec(spec, [1], {"kwarg1": 33.1})
Ejemplo n.º 6
0
def index():
    if request.method == "GET":
        return generate.generate_html(argspec)
    elif request.method == "POST":
        flatdict = dict(request.form)

        print flatdict

        try:
            reconstdict = format.reform_from_html(argspec, flatdict)
            structure.checkspec(argspec, reconstdict["args"],
                                reconstdict["kwargs"])
        except Exception as e:
            raise
            return str(e)

        return json.dumps(reconstdict, sort_keys=True)
Ejemplo n.º 7
0
    def test_kwargs_extra_arg(self):
        argspec = {
            "args": [],
            "kwargs": {
                "kwarg1": {
                    "type": int,
                    "values": None
                }
            }
        }

        try:
            structure.checkspec(argspec, [], {"badkwarg": 15})
        except TypeError:
            pass
        else:
            self.fail("should have thrown TypeError, unrecognized kwarg")
Ejemplo n.º 8
0
    def test_check_args_with_eval(self):
        spec = {
            "args": [{
                "name": "arg1",
                "type": "int",
                "values": None
            }],
            "kwargs": {
                "kwarg1": {
                    "type": "one([int, NoneType])",
                    "values": {
                        "int": ">0",
                        "NoneType": None
                    },
                    "required": True
                }
            }
        }

        structure.checkspec(spec, [1], {"kwarg1": None})
Ejemplo n.º 9
0
    def test_check_args_fail(self):
        spec = {
            "args": [{
                "name": "arg1",
                "type": int,
                "values": None
            }],
            "kwargs": {
                "kwarg1": {
                    "type": float,
                    "values": None
                }
            }
        }

        try:
            structure.checkspec(spec, [1], {"kwarg1": "string"})  # bad type
        except AssertionError:
            pass
        else:
            self.fail("should have thrown AssertionError")
Ejemplo n.º 10
0
    def test_nested_choice_of_one(self):
        argspec = {
            "args": [{
                "name": 'arg1',
                "type": "one([int, dict])",
                "values": {
                    "int": None,
                    "dict": {
                        "subkey1": {
                            "type": "one([str, int])",
                            "values": {
                                "str": None,
                                "int": None
                            }
                        }
                    }
                }
            }]
        }

        structure.checkspec(argspec, [{"subkey1": 1}])
        structure.checkspec(argspec, [1])
        structure.checkspec(argspec, [{"subkey1": "xyz"}])
Ejemplo n.º 11
0
	"kwargs": {
		"kwarg1": {
			"type": "one([int, float, dict])",
			"values": {
				"int": ">=0",
				"float": None,
				"dict": {
					"subkey1": {
						"type": "one([str, int, float, list([int, int])])",
						"values": {
							"str": ["A", "B", "C"],
							"int": ">0",
							"float": "<10||>20",
							"list": [
								"range(0, 100)",
								"!=50"
							]
						}
					},
					"subkey2": {
						"type": "cls('__main__.TestObj')",
						"values": None
					}
				}
			}
		}
	}
}

checkspec(argspec, [], {"kwarg1": {"subkey1": [10, 49], "subkey2": TestObj()}})
Ejemplo n.º 12
0
    def test_check_complex_args(self):
        from canonical_args.check import one, cls, NoneType, TypeType
        argspec = {
            "args": [{
                "name": "arg1",
                "type": "one([int, float, str])",
                "values": {
                    "int": ">0&&!=5",
                    "float": "<5.3||>7.8",
                    "str": ["A", "B", "C", "X"]
                }
            }, {
                "name": "arg2",
                "type": dict,
                "values": {
                    "subkey1": {
                        "type": cls('test_structure.TestObj'),
                        "values": None,
                        "required": True
                    },
                    "subkey2": {
                        "type": TypeType,
                        "values": [int, float],
                        "required": False
                    }
                }
            }],
            "kwargs": {
                "kwarg1": {
                    "type": one([int, float, dict, NoneType]),
                    "values": {
                        "int": "!=100",
                        "float": "range(0, 99)",
                        "dict": {
                            "subkey1": {
                                "type": int,
                                "values": ">=0&&!=10",
                                "required": True
                            },
                            "subkey2": {
                                "type": float,
                                "values": None,
                                "required": True
                            }
                        },
                        "NoneType": None
                    }
                },
                "kwarg2": {
                    "type": one([int, NoneType]),
                    "values": {
                        "int": "(>10||<10)&&!=5",
                        "NoneType": None
                    }
                }
            }
        }

        structure.checkspec(argspec,
                            [0.113, {
                                "subkey1": TestObj(),
                                "subkey2": int
                            }], {
                                "kwarg1": {
                                    "subkey1": 5,
                                    "subkey2": 459.132
                                },
                                "kwarg2": None
                            })