Esempio n. 1
0
def test_symbols_str():
    int_sym = Symbol("foo", IntType.instance())
    string_sym = Symbol("bar", StringType.instance())
    symbols = Symbols()
    symbols.insert(int_sym)
    symbols.insert(string_sym)
    assert str(symbols) == "Symbols(foo,bar)"
Esempio n. 2
0
def test_mutation_pretty_b():
    args = {
        "a": Symbol("a", IntType.instance()),
        "b": Symbol("b", StringType.instance()),
    }
    fn = MutationFunction("foo", args, AnyType.instance(), desc="")
    assert fn.pretty() == "foo(a:`int` b:`string`)"
Esempio n. 3
0
def test_mutation_pretty_b():
    args = {
        'a': Symbol('a', IntType.instance()),
        'b': Symbol('b', StringType.instance())
    }
    fn = MutationFunction('foo', args, AnyType.instance())
    assert fn.pretty() == 'foo a:`int` b:`string`'
Esempio n. 4
0
def test_symbols_pretty():
    int_sym = Symbol("foo", IntType.instance())
    string_sym = Symbol("bar", StringType.instance())
    symbols = Symbols()
    symbols.insert(int_sym)
    symbols.insert(string_sym)
    assert symbols.pretty() == "foo: int\nbar: string\n"
    assert symbols.pretty(indent="  ") == "  foo: int\n  bar: string\n"
Esempio n. 5
0
def test_symbols_pretty():
    int_sym = Symbol('foo', IntType.instance())
    string_sym = Symbol('bar', StringType.instance())
    symbols = Symbols()
    symbols.insert(int_sym)
    symbols.insert(string_sym)
    assert symbols.pretty() == 'foo: int\nbar: string\n'
    assert symbols.pretty(indent='  ') == '  foo: int\n  bar: string\n'
Esempio n. 6
0
def test_api_loads_with_scope():
    """
    Ensures Api.load functions return errors
    """
    scope = Scope.root()
    symbol = Symbol("a", IntType.instance())
    scope.insert(symbol)
    story = Api.loads("foo = a", backend="semantic", scope=scope)
    story.check_success()
Esempio n. 7
0
    def instantiate(self, type_):
        """
        Instantiate a mutation and resolve all symbols with their actual types.
        Returns an instantiated function.
        """
        # resolve all input symbols
        if not isinstance(self._ti, GenericType):
            symbols = {}
        else:
            symbols = self._ti.build_type_mapping(type_)

        # instantiate all types
        arguments = {}
        for arg_name, arg_type in self._args.items():
            arguments[arg_name] = Symbol(arg_name, instantiate(symbols,
                                                               arg_type))
        output = instantiate(symbols, self._output)
        return MutationFunction(self._name, arguments, output)
Esempio n. 8
0
    def get_type_instance(cls, ty):
        """
        Maps a type class from the hub SDK to its corresponding TypeClass
        in the compiler.
        """
        assert isinstance(ty, OutputBase), ty
        if isinstance(ty, OutputBoolean):
            return BooleanType.instance()
        if isinstance(ty, OutputInt):
            return IntType.instance()
        if isinstance(ty, OutputFloat):
            return FloatType.instance()
        if isinstance(ty, OutputString):
            return StringType.instance()
        if isinstance(ty, OutputAny):
            return AnyType.instance()
        if isinstance(ty, OutputObject):
            return ObjectType(
                {
                    k: Symbol(
                        k,
                        cls.get_type_instance(v),
                        storage_class=StorageClass.read(),
                        desc=v.help(),
                    )
                    for k, v in ty.properties().items()
                }
            )
        if isinstance(ty, OutputList):
            return ListType(cls.get_type_instance(ty.elements()),)
        if isinstance(ty, OutputNone):
            return NoneType.instance()
        if isinstance(ty, OutputRegex):
            return RegExpType.instance()
        if isinstance(ty, OutputEnum):
            return StringType.instance()

        assert isinstance(ty, OutputMap), f"Unknown Hub Type: {ty!r}"
        return MapType(
            cls.get_type_instance(ty.keys()),
            cls.get_type_instance(ty.values()),
        )
Esempio n. 9
0
def test_mutation_pretty_a():
    args = {"a": Symbol("a", IntType.instance())}
    fn = MutationFunction("foo", args, AnyType.instance(), desc="")
    assert fn.pretty() == "foo(a:`int`)"
Esempio n. 10
0
def test_symbol_str_int():
    sym = Symbol("bar", IntType.instance())
    assert str(sym) == "Symbol('bar', int, wa)"
Esempio n. 11
0
def test_symbol_pretty_int():
    sym = Symbol("foo", IntType.instance())
    assert sym.pretty() == "int"
Esempio n. 12
0
def test_mutation_pretty_a():
    args = {'a': Symbol('a', IntType.instance())}
    fn = MutationFunction('foo', args, AnyType.instance())
    assert fn.pretty() == 'foo a:`int`'
Esempio n. 13
0
def test_symbol_pretty_int():
    sym = Symbol('foo', IntType.instance())
    assert sym.pretty() == 'int'
Esempio n. 14
0
def test_symbol_pretty_string():
    sym = Symbol('foo', StringType.instance())
    assert sym.pretty() == 'string'
Esempio n. 15
0
def test_symbol_str_ro_string():
    sym = Symbol("foo",
                 StringType.instance(),
                 storage_class=StorageClass.read())
    assert str(sym) == "Symbol('foo', string, r-)"
Esempio n. 16
0
def test_symbol_desc_string():
    sym = Symbol("foo", StringType.instance(), desc=".desc.")
    assert sym.desc() == ".desc."
Esempio n. 17
0
def test_symbol_pretty_string():
    sym = Symbol("foo", StringType.instance())
    assert sym.pretty() == "string"
Esempio n. 18
0
def test_function_args():
    args = {"a": Symbol("a", IntType.instance())}
    fn = Function("foo", args, AnyType.instance())
    assert fn.args() == args
Esempio n. 19
0
def test_symbol_str_string():
    sym = Symbol("foo", StringType.instance())
    assert str(sym) == "Symbol('foo', string, wa)"