Skip to content

Commit 6565372

Browse files
author
Jon M. Mease
committed
Initial import of ipyplotly codegen classes into plotly.py
New codegen logic in codegen/ New datatype classes generated into plotly/datatypes/ (These are gitignored) New validator classes generated into plotly/validators/ (These are gitignored) Code generation in update_graph_objs.py modified to map Figure, Layout, and Trace types to new plotly/datatypes/ classes. All other classes mapped to raw dicts/lists.
1 parent 1fb2547 commit 6565372

17 files changed

+4838
-1372
lines changed

.gitignore

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,10 @@ test_output.txt
2020

2121
plotly/api/v2/spectacle_presentations.py
2222

23-
plotly/presentation_objs/
23+
plotly/presentation_objs/
24+
25+
plotly/datatypes
26+
27+
plotly/validators
28+
29+
.idea

codegen/__init__.py

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
import json
2+
import os.path as opath
3+
import os
4+
import shutil
5+
6+
import time
7+
8+
from codegen.datatypes import build_datatypes_py, write_datatypes_py, append_figure_class
9+
from codegen.utils import TraceNode, PlotlyNode, LayoutNode, FrameNode
10+
from codegen.validators import write_validator_py, append_traces_validator_py
11+
12+
13+
def perform_codegen():
14+
outdir = 'plotly/'
15+
# outdir = 'codegen/output'
16+
# Load plotly schema
17+
# ------------------
18+
with open('plotly/package_data/default-schema.json', 'r') as f:
19+
plotly_schema = json.load(f)
20+
21+
# Compute property paths
22+
# ----------------------
23+
base_traces_node = TraceNode(plotly_schema)
24+
compound_trace_nodes = PlotlyNode.get_all_compound_datatype_nodes(plotly_schema, TraceNode)
25+
compound_layout_nodes = PlotlyNode.get_all_compound_datatype_nodes(plotly_schema, LayoutNode)
26+
compound_frame_nodes = PlotlyNode.get_all_compound_datatype_nodes(plotly_schema, FrameNode)
27+
28+
extra_layout_nodes = PlotlyNode.get_all_trace_layout_nodes(plotly_schema)
29+
30+
# Write out validators
31+
# --------------------
32+
validators_pkgdir = opath.join(outdir, 'validators')
33+
if opath.exists(validators_pkgdir):
34+
shutil.rmtree(validators_pkgdir)
35+
36+
# ### Layout ###
37+
for node in compound_layout_nodes:
38+
write_validator_py(outdir, node, extra_layout_nodes)
39+
40+
# ### Trace ###
41+
for node in compound_trace_nodes:
42+
write_validator_py(outdir, node)
43+
44+
# Write out datatypes
45+
# -------------------
46+
datatypes_pkgdir = opath.join(outdir, 'datatypes')
47+
if opath.exists(datatypes_pkgdir):
48+
shutil.rmtree(datatypes_pkgdir)
49+
50+
# ### Layout ###
51+
for node in compound_layout_nodes:
52+
write_datatypes_py(outdir, node, extra_layout_nodes)
53+
54+
# ### Trace ###
55+
for node in compound_trace_nodes:
56+
write_datatypes_py(outdir, node)
57+
58+
# Append traces validator class
59+
# -----------------------------
60+
append_traces_validator_py(validators_pkgdir, base_traces_node)
61+
62+
# Add Frames
63+
# ----------
64+
# ### Validator ###
65+
for node in compound_frame_nodes:
66+
write_validator_py(outdir, node)
67+
68+
# ### Datatypes ###
69+
for node in compound_frame_nodes:
70+
write_datatypes_py(outdir, node)
71+
72+
# Append figure class to datatypes
73+
# --------------------------------
74+
append_figure_class(datatypes_pkgdir, base_traces_node)
75+
76+
77+
if __name__ == '__main__':
78+
perform_codegen()

0 commit comments

Comments
 (0)