Ejemplo n.º 1
0
def instantiate_node(
    env: Environment,
    graph: Graph,
    declared_node: DeclaredNode,
):
    if isinstance(declared_node.pipe, str):
        pipe = env.get_pipe(declared_node.pipe)
    else:
        pipe = make_pipe(declared_node.pipe)
    interface = pipe.get_interface()
    schema_translation = interface.assign_translations(
        declared_node.schema_translation)
    declared_inputs: Dict[str, DeclaredStreamInput] = {}
    if declared_node.upstream is not None:
        for name, stream_like in interface.assign_inputs(
                declared_node.upstream).items():
            declared_inputs[name] = DeclaredStreamInput(
                stream=ensure_stream(stream_like),
                declared_schema_translation=(schema_translation
                                             or {}).get(name),
            )
    n = Node(
        env=env,
        graph=graph,
        key=declared_node.key,
        pipe=pipe,
        config=declared_node.config,
        interface=interface,
        declared_inputs=declared_inputs,
        declared_schema_translation=schema_translation,
        output_alias=declared_node.output_alias,
    )
    return n
Ejemplo n.º 2
0
def test_env_init():
    from . import _test_module

    # Test module / components
    env = Environment("_test",
                      metadata_storage="sqlite://",
                      initial_modules=[])
    with env.session_scope() as sess:
        assert len(env.get_module_order()) == 1
        env.add_module(_test_module)
        assert env.get_module_order() == [
            env.get_local_module().name,
            _test_module.name,
        ]
        assert env.get_schema("TestSchema",
                              sess) is _test_module.schemas.TestSchema
        assert env.get_pipe("test_sql") is _test_module.pipes.test_sql
        # Test runtime / storage
        env.add_storage("postgresql://test")
        assert len(env.storages) == 2  # added plus default local memory
        assert len(env.runtimes) == 3  # added plus default local python # TODO