예제 #1
0
def write_datatypes_py(outdir,
                       node: PlotlyNode,
                       extra_nodes: Dict[str, 'PlotlyNode'] = {}):

    # Generate source code
    # --------------------
    datatype_source = build_datatypes_py(node, extra_nodes)
    if datatype_source:
        try:
            formatted_source = format_source(datatype_source)
        except Exception as e:
            print(datatype_source)
            raise e

        # Write file
        # ----------
        filedir = opath.join(outdir, 'datatypes', *node.dir_path)
        os.makedirs(filedir, exist_ok=True)
        filepath = opath.join(filedir, '__init__.py')

        mode = 'at' if os.path.exists(filepath) else 'wt'
        with open(filepath, mode) as f:
            if mode == 'at':
                f.write("\n\n")
            f.write(formatted_source)
            f.flush()
            os.fsync(f.fileno())
예제 #2
0
def write_validator_py(outdir,
                       node: PlotlyNode,
                       extra_nodes: Dict[str, 'PlotlyNode'] = {}):

    # Generate source code
    # --------------------
    validator_source = build_validators_py(node, extra_nodes)
    if validator_source:
        try:
            formatted_source = format_source(validator_source)
        except Exception as e:
            print(validator_source)
            raise e

        # Write file
        # ----------
        filedir = opath.join(outdir, 'validators', *node.dir_path)

        # ### Create output directory
        if opath.exists(filedir):
            shutil.rmtree(filedir)
        os.makedirs(filedir)

        filepath = opath.join(filedir, '__init__.py')
        os.makedirs(filedir, exist_ok=True)
        with open(filepath, 'wt') as f:
            f.write(formatted_source)
예제 #3
0
def append_traces_validator_py(outdir, base_node: TraceNode):

    if base_node.node_path:
        raise ValueError(
            'Expected root trace node. Received node with path "%s"' %
            base_node.dir_str)

    source = build_traces_validator_py(base_node)
    formatted_source = format_source(source)

    # Append to file
    # --------------
    filepath = opath.join(outdir, '__init__.py')

    with open(filepath, 'a') as f:
        f.write('\n\n')
        f.write(formatted_source)
예제 #4
0
def write_datatypes_py(outdir,
                       node: PlotlyNode,
                       extra_nodes: Dict[str, 'PlotlyNode'] = {}):

    # Generate source code
    # --------------------
    datatype_source = build_datatypes_py(node, extra_nodes)
    if datatype_source:
        try:
            formatted_source = format_source(datatype_source)
        except Exception as e:
            print(datatype_source)
            raise e

        # Write file
        # ----------
        filedir = opath.join(outdir, 'datatypes', *node.dir_path)
        filepath = opath.join(filedir, '__init__.py')

        os.makedirs(filedir, exist_ok=True)
        with open(filepath, 'wt') as f:
            f.write(formatted_source)
예제 #5
0
def append_figure_class(outdir, trace_node):

    if trace_node.node_path:
        raise ValueError(
            'Expected root trace node. Received node with path "%s"' %
            trace_node.dir_str)

    base_figures = [('basewidget', 'BaseFigureWidget', 'FigureWidget'),
                    ('basedatatypes', 'BaseFigure', 'Figure')]

    for base_package, base_classname, fig_classname in base_figures:
        figure_source = build_figure_py(trace_node, base_package,
                                        base_classname, fig_classname)
        formatted_source = format_source(figure_source)

        # Append to file
        # --------------
        filepath = opath.join(outdir, '__init__.py')

        with open(filepath, 'a') as f:
            f.write('\n\n')
            f.write(formatted_source)
            f.flush()
            os.fsync(f.fileno())