Repository: seandstewart/typical (language: python)

Issue:
Investigate orjson as an alternative to ujson
### Description

Related: #44 

`orjson` now supports [serialization of subclassed.builtins](https://github.com/ijl/orjson/releases/tag/3.0.0), which potentially allows us to use this library (if available) for `.tojson()`.

Callable condition
just replace the callable condition, related to #173 


Discussion / hints:
This is basically blocked by https://github.com/ijl/orjson/issues/45

TLDR: Our overloading of magic methods in serdicts isn't respected by orjson because orjson serializes these objects directly in Rust instead of relying on Py_Object calls - which is key to orjson's performance.

As is, orjson support is unlikely any time soon 😢 
As of [v2.4](https://github.com/seandstewart/typical/releases/tag/v2.4.0) orjson is now compatible with typical. We no longer use custom collections for lazy serialization.


Fix patch:
diff --git a/docs/static/Deserialize_Invalid_Data.svg b/docs/static/Deserialize_Invalid_Data.svg
index d9cba9fe..10bfea08 100644
--- a/docs/static/Deserialize_Invalid_Data.svg
+++ b/docs/static/Deserialize_Invalid_Data.svg
@@ -1,8 +1,8 @@
 <?xml version='1.0' encoding='utf-8'?>
-<svg class="pygal-chart" id="chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c" viewBox="0 0 800 600" xmlns="http://www.w3.org/2000/svg"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-07-06--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
-#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c{background-color:rgba(249,249,249,1)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c path,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c line,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c rect,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .graph{fill:rgba(0,0,0,.87)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c text.no_data{fill:rgba(0,0,0,1)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .title{fill:rgba(0,0,0,1)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .legends .legend text{fill:rgba(0,0,0,.87)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis .line{stroke:rgba(0,0,0,1)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis text.major{fill:rgba(0,0,0,1)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis.y .guides:hover .guide.line,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .line-graph .axis.x .guides:hover .guide.line,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .stackedline-graph .axis.x .guides:hover .guide.line,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .ci{stroke:rgba(0,0,0,.87)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .reactive.active,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .ci .reactive.active{stroke-width:1.5}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .series text{fill:rgba(0,0,0,1)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .tooltip .label{fill:rgba(0,0,0,.87)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .tooltip .label{fill:rgba(0,0,0,.87)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .tooltip .value{font-size:1.5em}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .bound{font-size:.5em}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .color-0,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .color-1,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .color-2,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .color-3,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .color-4,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .color-4 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .color-5,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .color-5 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .text-overlay .color-0 text{fill:black}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .text-overlay .color-1 text{fill:black}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .text-overlay .color-2 text{fill:black}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .text-overlay .color-3 text{fill:black}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .text-overlay .color-4 text{fill:black}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .text-overlay .color-5 text{fill:black}
-#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c text.no_data{text-anchor:middle}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .guide.line{fill:none}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .centered{text-anchor:middle}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .title{text-anchor:middle}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .legends .legend text{fill-opacity:1}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis.x text{text-anchor:middle}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis.x:not(.web) text[transform]{text-anchor:start}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis.y text{text-anchor:end}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis.y text[transform].backwards{text-anchor:start}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis.y2 text{text-anchor:start}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis.y2 text[transform].backwards{text-anchor:end}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis .guide.line{stroke-dasharray:4,4}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis .major.guide.line{stroke-dasharray:6,6}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .horizontal .axis.y .guide.line,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .horizontal .axis.y2 .guide.line,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .vertical .axis.x .guide.line{opacity:0}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .horizontal .axis.always_show .guide.line,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis.y .guides:hover .guide.line,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis.y2 .guides:hover .guide.line,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis.x .guides:hover .guide.line{opacity:1}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .axis .guides:hover text{opacity:1}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .nofill{fill:none}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .subtle-fill{fill-opacity:.2}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .dot{stroke-width:1px;fill-opacity:1}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .dot.active{stroke-width:5px}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .dot.negative{fill:transparent}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c text,#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c tspan{stroke:none !important}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .series text.active{opacity:1}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .tooltip text{fill-opacity:1}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .showable{visibility:hidden}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .showable.shown{visibility:visible}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
-.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['9a0aa1f0-f1cf-4309-9db7-4c9bb1fb177c'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.7/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [15, 1468], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Deserialize Invalid Data", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-protocol-api", "typic-functional-api", "typic-object-api", "pydantic", "marshmallow", "djangorestframework"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 15, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_deserialize_invalid_data[typic-protocol-api] - 15208 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_invalid_data[typic-functional-api] - 13616 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_invalid_data[typic-object-api] - 8509 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_invalid_data[pydantic] - 6253 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_invalid_data[marshmallow] - 2683 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_invalid_data[djangorestframework] - 542 rounds"]}</script><script type="text/javascript">(function() {
+<svg xmlns="http://www.w3.org/2000/svg" id="chart-715c5c96-9a02-4154-9e19-10a5aabdc743" class="pygal-chart" viewBox="0 0 800 600"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-09-28--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-715c5c96-9a02-4154-9e19-10a5aabdc743{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
+#chart-715c5c96-9a02-4154-9e19-10a5aabdc743{background-color:rgba(249,249,249,1)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 path,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 line,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 rect,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .graph{fill:rgba(0,0,0,.87)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 text.no_data{fill:rgba(0,0,0,1)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .title{fill:rgba(0,0,0,1)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .legends .legend text{fill:rgba(0,0,0,.87)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis .line{stroke:rgba(0,0,0,1)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis text.major{fill:rgba(0,0,0,1)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis.y .guides:hover .guide.line,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .line-graph .axis.x .guides:hover .guide.line,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .stackedline-graph .axis.x .guides:hover .guide.line,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .ci{stroke:rgba(0,0,0,.87)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .reactive.active,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .ci .reactive.active{stroke-width:1.5}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .series text{fill:rgba(0,0,0,1)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .tooltip .value{font-size:1.5em}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .bound{font-size:.5em}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .color-0,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .color-1,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .color-2,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .color-3,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .color-4,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .color-4 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .color-5,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .color-5 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .text-overlay .color-0 text{fill:black}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .text-overlay .color-1 text{fill:black}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .text-overlay .color-2 text{fill:black}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .text-overlay .color-3 text{fill:black}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .text-overlay .color-4 text{fill:black}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .text-overlay .color-5 text{fill:black}
+#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 text.no_data{text-anchor:middle}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .guide.line{fill:none}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .centered{text-anchor:middle}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .title{text-anchor:middle}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .legends .legend text{fill-opacity:1}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis.x text{text-anchor:middle}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis.x:not(.web) text[transform]{text-anchor:start}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis.y text{text-anchor:end}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis.y text[transform].backwards{text-anchor:start}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis.y2 text{text-anchor:start}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis.y2 text[transform].backwards{text-anchor:end}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis .guide.line{stroke-dasharray:4,4}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis .major.guide.line{stroke-dasharray:6,6}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .horizontal .axis.y .guide.line,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .horizontal .axis.y2 .guide.line,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .vertical .axis.x .guide.line{opacity:0}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .horizontal .axis.always_show .guide.line,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis.y .guides:hover .guide.line,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis.y2 .guides:hover .guide.line,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis.x .guides:hover .guide.line{opacity:1}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .axis .guides:hover text{opacity:1}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .nofill{fill:none}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .subtle-fill{fill-opacity:.2}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .dot{stroke-width:1px;fill-opacity:1}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .dot.active{stroke-width:5px}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .dot.negative{fill:transparent}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 text,#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 tspan{stroke:none !important}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .series text.active{opacity:1}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .tooltip text{fill-opacity:1}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .showable{visibility:hidden}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .showable.shown{visibility:visible}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-715c5c96-9a02-4154-9e19-10a5aabdc743 .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
+.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['715c5c96-9a02-4154-9e19-10a5aabdc743'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.8/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [12, 1313], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Deserialize Invalid Data", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-protocol-api", "typic-functional-api", "typic-object-api", "pydantic", "marshmallow", "djangorestframework"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 12, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_deserialize_invalid_data[typic-protocol-api] - 16292 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_invalid_data[typic-functional-api] - 8811 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_invalid_data[typic-object-api] - 14782 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_invalid_data[pydantic] - 5948 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_invalid_data[marshmallow] - 2402 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_invalid_data[djangorestframework] - 1035 rounds"]}</script><script type="text/javascript">(function() {
   var $, get_translation, init, init_svg, matches, padding, r_translation, sibl, svg_ns, tooltip_timeout, xlink_ns;
 
   svg_ns = 'http://www.w3.org/2000/svg';
@@ -345,40 +345,40 @@
   window.pygal.init_svg = init_svg;
 
 }).call(this);
-</script></defs><title>Speed in Microseconds (us) of Deserialize Invalid Data</title><g class="graph custombox-graph vertical"><rect class="background" height="600" width="800" x="0" y="0" /><g class="plot" transform="translate(80, 46)"><rect class="background" height="378.0" width="700.0" x="0" y="0" /><g class="axis y always_show"><path class="line" d="M0.000000 378.000000 h700.000000" /><g class="guides"><path class="guide line" d="M0.000000 354.471306 h700.000000" /><text class="" x="-5" y="357.97130605114086">80</text><title>80</title></g><g class="guides"><path class="guide line" d="M0.000000 334.459659 h700.000000" /><text class="" x="-5" y="337.95965906082904">160</text><title>160</title></g><g class="guides"><path class="guide line" d="M0.000000 314.448012 h700.000000" /><text class="" x="-5" y="317.9480120705172">240</text><title>240</title></g><g class="guides"><path class="guide line" d="M0.000000 294.436365 h700.000000" /><text class="" x="-5" y="297.9363650802054">320</text><title>320</title></g><g class="guides"><path class="guide line" d="M0.000000 274.424718 h700.000000" /><text class="" x="-5" y="277.9247180898936">400</text><title>400</title></g><g class="guides"><path class="guide line" d="M0.000000 254.413071 h700.000000" /><text class="" x="-5" y="257.91307109958177">480</text><title>480</title></g><g class="guides"><path class="guide line" d="M0.000000 234.401424 h700.000000" /><text class="" x="-5" y="237.90142410926995">560</text><title>560</title></g><g class="guides"><path class="guide line" d="M0.000000 214.389777 h700.000000" /><text class="" x="-5" y="217.8897771189581">640</text><title>640</title></g><g class="guides"><path class="guide line" d="M0.000000 194.378130 h700.000000" /><text class="" x="-5" y="197.8781301286463">720</text><title>720</title></g><g class="guides"><path class="guide line" d="M0.000000 174.366483 h700.000000" /><text class="" x="-5" y="177.86648313833447">800</text><title>800</title></g><g class="guides"><path class="guide line" d="M0.000000 154.354836 h700.000000" /><text class="" x="-5" y="157.85483614802266">880</text><title>880</title></g><g class="guides"><path class="guide line" d="M0.000000 134.343189 h700.000000" /><text class="" x="-5" y="137.8431891577108">960</text><title>960</title></g><g class="guides"><path class="guide line" d="M0.000000 114.331542 h700.000000" /><text class="" x="-5" y="117.831542167399">1040</text><title>1040</title></g><g class="guides"><path class="guide line" d="M0.000000 94.319895 h700.000000" /><text class="" x="-5" y="97.81989517708718">1120</text><title>1120</title></g><g class="guides"><path class="guide line" d="M0.000000 74.308248 h700.000000" /><text class="" x="-5" y="77.80824818677536">1200</text><title>1200</title></g><g class="guides"><path class="guide line" d="M0.000000 54.296601 h700.000000" /><text class="" x="-5" y="57.79660119646354">1280</text><title>1280</title></g><g class="guides"><path class="guide line" d="M0.000000 34.284954 h700.000000" /><text class="" x="-5" y="37.784954206151724">1360</text><title>1360</title></g><g class="guides"><path class="guide line" d="M0.000000 14.273307 h700.000000" /><text class="" x="-5" y="17.773307215839907">1440</text><title>1440</title></g></g><g class="axis x"><path class="line" d="M0.000000 0.000000 v378.000000" /><g class="guides"><path class="guide line" d="M69.551282 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 69.551282 393.000000)" x="69.55128205128204" y="393.0">typic-protocol-api</text></g><g class="guides"><path class="guide line" d="M181.730769 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 181.730769 393.000000)" x="181.73076923076923" y="393.0">typic-functional-api</text></g><g class="guides"><path class="guide line" d="M293.910256 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 293.910256 393.000000)" x="293.9102564102564" y="393.0">typic-object-api</text></g><g class="guides"><path class="guide line" d="M406.089744 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 406.089744 393.000000)" x="406.0897435897436" y="393.0">pydantic</text></g><g class="guides"><path class="guide line" d="M518.269231 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 518.269231 393.000000)" x="518.2692307692307" y="393.0">marshmallow</text></g><g class="guides"><path class="guide line" d="M630.448718 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 630.448718 393.000000)" x="630.4487179487179" y="393.0">djangorestframework</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M44.871795 370.654725 L94.230769 370.654725" stroke-width="3" /><path class="reactive tooltip-trigger" d="M20.192308 370.373561 L118.910256 370.373561" stroke-width="3" /><path class="reactive tooltip-trigger" d="M44.871795 369.726935 L94.230769 369.726935" stroke-width="3" /><path class="reactive tooltip-trigger" d="M69.551282 370.654725 L69.551282 370.465865" stroke-width="2" /><path class="reactive tooltip-trigger" d="M69.551282 369.726935 L69.551282 370.171068" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.2947965746785144" width="98.71794871794872" x="20.192307692307693" y="370.1710684790533" /><circle class="subtle-fill reactive tooltip-trigger" cx="69.55128205128204" cy="370.6547249718327" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="69.55128205128204" cy="325.92744322077" r="3" /><desc class="value">Min: 15.3040
-Q1-1.5IQR: 15.3040
-Q1: 16.0590
-Median: 16.4280
-Q3: 17.2375
-Q3+1.5IQR: 19.0130
-Max: 194.1090</desc><desc class="x centered">69.55128205128204</desc><desc class="y centered">370.27843096497486</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M157.051282 370.435347 L206.410256 370.435347" stroke-width="3" /><path class="reactive tooltip-trigger" d="M132.371795 370.212217 L231.089744 370.212217" stroke-width="3" /><path class="reactive tooltip-trigger" d="M157.051282 369.899786 L206.410256 369.899786" stroke-width="3" /><path class="reactive tooltip-trigger" d="M181.730769 370.435347 L181.730769 370.281258" stroke-width="2" /><path class="reactive tooltip-trigger" d="M181.730769 369.899786 L181.730769 370.128919" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.15233866243227112" width="98.71794871794872" x="132.3717948717949" y="370.12891894764726" /><circle class="subtle-fill reactive tooltip-trigger" cx="181.73076923076925" cy="370.4353472922126" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="181.73076923076925" cy="325.74883927126723" r="3" /><desc class="value">Min: 16.1810
-Q1-1.5IQR: 16.1810
-Q1: 16.7970
-Median: 17.0730
-Q3: 17.4060
-Q3+1.5IQR: 18.3220
-Max: 194.8230</desc><desc class="x centered">181.73076923076925</desc><desc class="y centered">370.19150537345575</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M269.230769 369.729937 L318.589744 369.729937" stroke-width="3" /><path class="reactive tooltip-trigger" d="M244.551282 369.463782 L343.269231 369.463782" stroke-width="3" /><path class="reactive tooltip-trigger" d="M269.230769 368.735358 L318.589744 368.735358" stroke-width="3" /><path class="reactive tooltip-trigger" d="M293.910256 369.729937 L293.910256 369.543078" stroke-width="2" /><path class="reactive tooltip-trigger" d="M293.910256 368.735358 L293.910256 369.221829" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.3212494709551379" width="98.71794871794872" x="244.55128205128204" y="369.221828511012" /><circle class="subtle-fill reactive tooltip-trigger" cx="293.9102564102564" cy="369.72993673564775" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="293.9102564102564" cy="324.92160781423365" r="3" /><desc class="value">Min: 19.0010
-Q1-1.5IQR: 19.0010
-Q1: 19.7480
-Median: 20.0650
-Q3: 21.0323
-Q3+1.5IQR: 22.9770
-Max: 198.1300</desc><desc class="x centered">293.9102564102564</desc><desc class="y centered">369.3387965879282</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M381.410256 357.656160 L430.769231 357.656160" stroke-width="3" /><path class="reactive tooltip-trigger" d="M356.730769 356.822925 L455.448718 356.822925" stroke-width="3" /><path class="reactive tooltip-trigger" d="M381.410256 355.290783 L430.769231 355.290783" stroke-width="3" /><path class="reactive tooltip-trigger" d="M406.089744 357.656160 L406.089744 357.086078" stroke-width="2" /><path class="reactive tooltip-trigger" d="M406.089744 355.290783 L406.089744 356.368535" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.7175426172235007" width="98.71794871794872" x="356.7307692307692" y="356.36853525860766" /><circle class="subtle-fill reactive tooltip-trigger" cx="406.0897435897436" cy="357.65615966997996" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="406.0897435897436" cy="279.844872677127" r="3" /><desc class="value">Min: 67.2680
-Q1-1.5IQR: 67.2680
-Q1: 69.5470
-Median: 70.5990
-Q3: 72.4155
-Q3+1.5IQR: 76.7240
-Max: 378.3320</desc><desc class="x centered">406.0897435897436</desc><desc class="y centered">356.6448961036595</desc><desc class="x_label" /></g></g></g><g class="series serie-4 color-4"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M493.589744 318.261482 L542.948718 318.261482" stroke-width="3" /><path class="reactive tooltip-trigger" d="M468.910256 314.693405 L567.628205 314.693405" stroke-width="3" /><path class="reactive tooltip-trigger" d="M493.589744 301.530244 L542.948718 301.530244" stroke-width="3" /><path class="reactive tooltip-trigger" d="M518.269231 318.261482 L518.269231 315.712748" stroke-width="2" /><path class="reactive tooltip-trigger" d="M518.269231 301.530244 L518.269231 310.084285" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="5.628463325240318" width="98.71794871794872" x="468.9102564102564" y="310.08428483522755" /><circle class="subtle-fill reactive tooltip-trigger" cx="518.2692307692307" cy="318.2614815502005" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="518.2692307692307" cy="8.090959023546986" r="3" /><desc class="value">Min: 224.7550
-Q1-1.5IQR: 224.7550
-Q1: 234.9440
-Median: 239.0190
-Q3: 257.4447
-Q3+1.5IQR: 291.6410
-Max: 1464.7150</desc><desc class="x centered">518.2692307692307</desc><desc class="y centered">312.0564326460234</desc><desc class="x_label" /></g></g></g><g class="series serie-5 color-5"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M605.769231 167.494734 L655.128205 167.494734" stroke-width="3" /><path class="reactive tooltip-trigger" d="M581.089744 122.522184 L679.807692 122.522184" stroke-width="3" /><path class="reactive tooltip-trigger" d="M605.769231 7.285240 L655.128205 7.285240" stroke-width="3" /><path class="reactive tooltip-trigger" d="M630.448718 167.494734 L630.448718 149.745403" stroke-width="2" /><path class="reactive tooltip-trigger" d="M630.448718 7.285240 L630.448718 93.647504" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="56.09789957108268" width="98.71794871794872" x="581.0897435897436" y="93.64750383806421" /><circle class="subtle-fill reactive tooltip-trigger" cx="630.448717948718" cy="167.4947337076649" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="630.448717948718" cy="-708.4705873788037" r="3" /><desc class="value">Min: 827.4710
-Q1-1.5IQR: 827.4710
-Q1: 898.4270
-Median: 1007.2565
-Q3: 1122.6880
-Q3+1.5IQR: 1467.9360
-Max: 4329.2930</desc><desc class="x centered">630.448717948718</desc><desc class="y centered">108.13901304986837</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text class="title plot_title" x="400.0" y="26">Speed in Microseconds (us) of Deserialize Invalid Data</text><text class="title" x="430.0" y="580.0">Trial</text><text class="title" transform="rotate(-90 0.000000 235.000000)" x="0" y="261.0">Duration</text></g><g class="plot overlay" transform="translate(80, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g class="plot text-overlay" transform="translate(80, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g class="plot tooltip-overlay" transform="translate(80, 46)"><g class="tooltip" style="opacity: 0" transform="translate(0 0)"><rect class="tooltip-box" height="0" rx="0" ry="0" width="0" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
+</script></defs><title>Speed in Microseconds (us) of Deserialize Invalid Data</title><g class="graph custombox-graph vertical"><rect x="0" y="0" width="800" height="600" class="background" /><g transform="translate(80, 46)" class="plot"><rect x="0" y="0" width="700.0" height="378.0" class="background" /><g class="axis y always_show"><path d="M0.000000 378.000000 h700.000000" class="line" /><g class="guides"><path d="M0.000000 351.733548 h700.000000" class="guide line" /><text x="-5" y="355.2335481582215" class="">80</text><title>80</title></g><g class="guides"><path d="M0.000000 329.383876 h700.000000" class="guide line" /><text x="-5" y="332.8838763081653" class="">160</text><title>160</title></g><g class="guides"><path d="M0.000000 307.034204 h700.000000" class="guide line" /><text x="-5" y="310.5342044581091" class="">240</text><title>240</title></g><g class="guides"><path d="M0.000000 284.684533 h700.000000" class="guide line" /><text x="-5" y="288.18453260805296" class="">320</text><title>320</title></g><g class="guides"><path d="M0.000000 262.334861 h700.000000" class="guide line" /><text x="-5" y="265.8348607579968" class="">400</text><title>400</title></g><g class="guides"><path d="M0.000000 239.985189 h700.000000" class="guide line" /><text x="-5" y="243.48518890794062" class="">480</text><title>480</title></g><g class="guides"><path d="M0.000000 217.635517 h700.000000" class="guide line" /><text x="-5" y="221.13551705788447" class="">560</text><title>560</title></g><g class="guides"><path d="M0.000000 195.285845 h700.000000" class="guide line" /><text x="-5" y="198.7858452078283" class="">640</text><title>640</title></g><g class="guides"><path d="M0.000000 172.936173 h700.000000" class="guide line" /><text x="-5" y="176.43617335777213" class="">720</text><title>720</title></g><g class="guides"><path d="M0.000000 150.586502 h700.000000" class="guide line" /><text x="-5" y="154.08650150771595" class="">800</text><title>800</title></g><g class="guides"><path d="M0.000000 128.236830 h700.000000" class="guide line" /><text x="-5" y="131.7368296576598" class="">880</text><title>880</title></g><g class="guides"><path d="M0.000000 105.887158 h700.000000" class="guide line" /><text x="-5" y="109.38715780760361" class="">960</text><title>960</title></g><g class="guides"><path d="M0.000000 83.537486 h700.000000" class="guide line" /><text x="-5" y="87.03748595754746" class="">1040</text><title>1040</title></g><g class="guides"><path d="M0.000000 61.187814 h700.000000" class="guide line" /><text x="-5" y="64.68781410749125" class="">1120</text><title>1120</title></g><g class="guides"><path d="M0.000000 38.838142 h700.000000" class="guide line" /><text x="-5" y="42.338142257435095" class="">1200</text><title>1200</title></g><g class="guides"><path d="M0.000000 16.488470 h700.000000" class="guide line" /><text x="-5" y="19.98847040737894" class="">1280</text><title>1280</title></g></g><g class="axis x"><path d="M0.000000 0.000000 v378.000000" class="line" /><g class="guides"><path d="M69.551282 0.000000 v378.000000" class="guide line" /><text x="69.55128205128204" y="393.0" class="backwards" transform="rotate(270 69.551282 393.000000)">typic-protocol-api</text></g><g class="guides"><path d="M181.730769 0.000000 v378.000000" class="guide line" /><text x="181.73076923076923" y="393.0" class="backwards" transform="rotate(270 181.730769 393.000000)">typic-functional-api</text></g><g class="guides"><path d="M293.910256 0.000000 v378.000000" class="guide line" /><text x="293.9102564102564" y="393.0" class="backwards" transform="rotate(270 293.910256 393.000000)">typic-object-api</text></g><g class="guides"><path d="M406.089744 0.000000 v378.000000" class="guide line" /><text x="406.0897435897436" y="393.0" class="backwards" transform="rotate(270 406.089744 393.000000)">pydantic</text></g><g class="guides"><path d="M518.269231 0.000000 v378.000000" class="guide line" /><text x="518.2692307692307" y="393.0" class="backwards" transform="rotate(270 518.269231 393.000000)">marshmallow</text></g><g class="guides"><path d="M630.448718 0.000000 v378.000000" class="guide line" /><text x="630.4487179487179" y="393.0" class="backwards" transform="rotate(270 630.448718 393.000000)">djangorestframework</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path stroke-width="3" d="M44.871795 370.582144 L94.230769 370.582144" class="reactive tooltip-trigger" /><path stroke-width="3" d="M20.192308 370.028710 L118.910256 370.028710" class="reactive tooltip-trigger" /><path stroke-width="3" d="M44.871795 369.306257 L94.230769 369.306257" class="reactive tooltip-trigger" /><path stroke-width="2" d="M69.551282 370.582144 L69.551282 370.255839" class="reactive tooltip-trigger" /><path stroke-width="2" d="M69.551282 369.306257 L69.551282 369.876174" class="reactive tooltip-trigger" /><rect x="20.192307692307693" y="369.87617365343823" height="0.37966505045375243" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="69.55128205128204" cy="370.58214391310327" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="69.55128205128204" cy="322.300147815469" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 12.5320
+Q1-1.5IQR: 12.5320
+Q1: 13.7000
+Median: 14.5130
+Q3: 15.0590
+Q3+1.5IQR: 17.0990
+Max: 185.3560</desc><desc class="x centered">69.55128205128204</desc><desc class="y centered">370.00982469114285</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path stroke-width="3" d="M157.051282 370.283496 L206.410256 370.283496" class="reactive tooltip-trigger" /><path stroke-width="3" d="M132.371795 369.847398 L231.089744 369.847398" class="reactive tooltip-trigger" /><path stroke-width="3" d="M157.051282 369.017388 L206.410256 369.017388" class="reactive tooltip-trigger" /><path stroke-width="2" d="M181.730769 370.283496 L181.730769 370.113918" class="reactive tooltip-trigger" /><path stroke-width="2" d="M181.730769 369.017388 L181.730769 369.675865" class="reactive tooltip-trigger" /><rect x="132.3717948717949" y="369.67586471953325" height="0.43805356827863307" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="181.73076923076925" cy="370.2834964231098" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="181.73076923076925" cy="304.4430393780417" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 13.6010
+Q1-1.5IQR: 13.6010
+Q1: 14.2080
+Median: 15.1620
+Q3: 15.7760
+Q3+1.5IQR: 18.1330
+Max: 249.2750</desc><desc class="x centered">181.73076923076925</desc><desc class="y centered">369.78761307879915</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path stroke-width="3" d="M269.230769 369.437841 L318.589744 369.437841" class="reactive tooltip-trigger" /><path stroke-width="3" d="M244.551282 368.953691 L343.269231 368.953691" class="reactive tooltip-trigger" /><path stroke-width="3" d="M269.230769 367.928958 L318.589744 367.928958" class="reactive tooltip-trigger" /><path stroke-width="2" d="M293.910256 369.437841 L293.910256 369.068512" class="reactive tooltip-trigger" /><path stroke-width="2" d="M293.910256 367.928958 L293.910256 368.614814" class="reactive tooltip-trigger" /><rect x="244.55128205128204" y="368.61481404849854" height="0.453698338379354" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="293.9102564102564" cy="369.4378407144864" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="293.9102564102564" cy="314.5143602550572" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 16.6280
+Q1-1.5IQR: 16.6280
+Q1: 17.9500
+Median: 18.3610
+Q3: 19.5740
+Q3+1.5IQR: 22.0290
+Max: 213.2250</desc><desc class="x centered">293.9102564102564</desc><desc class="y centered">368.8007633182924</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path stroke-width="3" d="M381.410256 355.751460 L430.769231 355.751460" class="reactive tooltip-trigger" /><path stroke-width="3" d="M356.730769 351.955089 L455.448718 351.955089" class="reactive tooltip-trigger" /><path stroke-width="3" d="M381.410256 340.937539 L430.769231 340.937539" class="reactive tooltip-trigger" /><path stroke-width="2" d="M406.089744 355.751460 L406.089744 352.607001" class="reactive tooltip-trigger" /><path stroke-width="2" d="M406.089744 340.937539 L406.089744 347.951565" class="reactive tooltip-trigger" /><rect x="356.7307692307692" y="347.95156462491724" height="4.655436646459634" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="406.0897435897436" cy="355.75146041536294" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="406.0897435897436" cy="-1750.6651614143202" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 65.6180
+Q1-1.5IQR: 65.6180
+Q1: 76.8735
+Median: 79.2070
+Q3: 93.5375
+Q3+1.5IQR: 118.6440
+Max: 7605.4750</desc><desc class="x centered">406.0897435897436</desc><desc class="y centered">349.8405309526149</desc><desc class="x_label" /></g></g></g><g class="series serie-4 color-4"><g class="boxes"><g class="box"><path stroke-width="3" d="M493.589744 313.647752 L542.948718 313.647752" class="reactive tooltip-trigger" /><path stroke-width="3" d="M468.910256 307.633315 L567.628205 307.633315" class="reactive tooltip-trigger" /><path stroke-width="3" d="M493.589744 289.589447 L542.948718 289.589447" class="reactive tooltip-trigger" /><path stroke-width="2" d="M518.269231 313.647752 L518.269231 310.169305" class="reactive tooltip-trigger" /><path stroke-width="2" d="M518.269231 289.589447 L518.269231 302.027878" class="reactive tooltip-trigger" /><rect x="468.9102564102564" y="302.02787796341113" height="8.141426713375779" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="518.2692307692307" cy="313.6477517293258" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="518.2692307692307" cy="118.87790457063164" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 216.3270
+Q1-1.5IQR: 216.3270
+Q1: 228.7780
+Median: 237.8555
+Q3: 257.9200
+Q3+1.5IQR: 302.4430
+Max: 913.5000</desc><desc class="x centered">518.2692307692307</desc><desc class="y centered">304.6135394369827</desc><desc class="x_label" /></g></g></g><g class="series serie-5 color-5"><g class="boxes"><g class="box"><path stroke-width="3" d="M605.769231 167.502968 L655.128205 167.502968" class="reactive tooltip-trigger" /><path stroke-width="3" d="M581.089744 119.253100 L679.807692 119.253100" class="reactive tooltip-trigger" /><path stroke-width="3" d="M605.769231 7.497756 L655.128205 7.497756" class="reactive tooltip-trigger" /><path stroke-width="2" d="M630.448718 167.502968 L630.448718 136.999088" class="reactive tooltip-trigger" /><path stroke-width="2" d="M630.448718 7.497756 L630.448718 85.907808" class="reactive tooltip-trigger" /><rect x="581.0897435897436" y="85.9078083426262" height="51.09128000652808" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="630.448717948718" cy="167.50296813126283" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="630.448717948718" cy="-516.018722284672" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 739.4480
+Q1-1.5IQR: 739.4480
+Q1: 848.6358
+Median: 912.1570
+Q3: 1031.5155
+Q3+1.5IQR: 1312.1820
+Max: 3186.0940</desc><desc class="x centered">630.448717948718</desc><desc class="y centered">103.43214413473504</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text x="400.0" y="26" class="title plot_title">Speed in Microseconds (us) of Deserialize Invalid Data</text><text x="430.0" y="580.0" class="title">Trial</text><text x="0" y="261.0" class="title" transform="rotate(-90 0.000000 235.000000)">Duration</text></g><g transform="translate(80, 46)" class="plot overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g transform="translate(80, 46)" class="plot text-overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g transform="translate(80, 46)" class="plot tooltip-overlay"><g transform="translate(0 0)" style="opacity: 0" class="tooltip"><rect rx="0" ry="0" width="0" height="0" class="tooltip-box" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
diff --git a/docs/static/Deserialize_Valid_Data.svg b/docs/static/Deserialize_Valid_Data.svg
index 187c01cd..5994c24a 100644
--- a/docs/static/Deserialize_Valid_Data.svg
+++ b/docs/static/Deserialize_Valid_Data.svg
@@ -1,8 +1,8 @@
 <?xml version='1.0' encoding='utf-8'?>
-<svg class="pygal-chart" id="chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8" viewBox="0 0 800 600" xmlns="http://www.w3.org/2000/svg"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-07-06--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
-#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8{background-color:rgba(249,249,249,1)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 path,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 line,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 rect,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .graph{fill:rgba(0,0,0,.87)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 text.no_data{fill:rgba(0,0,0,1)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .title{fill:rgba(0,0,0,1)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .legends .legend text{fill:rgba(0,0,0,.87)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis .line{stroke:rgba(0,0,0,1)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis text.major{fill:rgba(0,0,0,1)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis.y .guides:hover .guide.line,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .line-graph .axis.x .guides:hover .guide.line,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .stackedline-graph .axis.x .guides:hover .guide.line,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .ci{stroke:rgba(0,0,0,.87)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .reactive.active,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .ci .reactive.active{stroke-width:1.5}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .series text{fill:rgba(0,0,0,1)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .tooltip .value{font-size:1.5em}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .bound{font-size:.5em}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .color-0,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .color-1,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .color-2,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .color-3,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .color-4,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .color-4 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .color-5,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .color-5 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .text-overlay .color-0 text{fill:black}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .text-overlay .color-1 text{fill:black}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .text-overlay .color-2 text{fill:black}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .text-overlay .color-3 text{fill:black}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .text-overlay .color-4 text{fill:black}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .text-overlay .color-5 text{fill:black}
-#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 text.no_data{text-anchor:middle}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .guide.line{fill:none}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .centered{text-anchor:middle}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .title{text-anchor:middle}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .legends .legend text{fill-opacity:1}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis.x text{text-anchor:middle}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis.x:not(.web) text[transform]{text-anchor:start}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis.y text{text-anchor:end}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis.y text[transform].backwards{text-anchor:start}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis.y2 text{text-anchor:start}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis.y2 text[transform].backwards{text-anchor:end}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis .guide.line{stroke-dasharray:4,4}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis .major.guide.line{stroke-dasharray:6,6}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .horizontal .axis.y .guide.line,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .horizontal .axis.y2 .guide.line,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .vertical .axis.x .guide.line{opacity:0}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .horizontal .axis.always_show .guide.line,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis.y .guides:hover .guide.line,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis.y2 .guides:hover .guide.line,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis.x .guides:hover .guide.line{opacity:1}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .axis .guides:hover text{opacity:1}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .nofill{fill:none}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .subtle-fill{fill-opacity:.2}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .dot{stroke-width:1px;fill-opacity:1}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .dot.active{stroke-width:5px}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .dot.negative{fill:transparent}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 text,#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 tspan{stroke:none !important}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .series text.active{opacity:1}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .tooltip text{fill-opacity:1}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .showable{visibility:hidden}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .showable.shown{visibility:visible}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-64714cdb-9dd8-4d41-b0b1-730b5dd112b8 .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
-.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['64714cdb-9dd8-4d41-b0b1-730b5dd112b8'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.7/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [46, 1068], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Deserialize Valid Data", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-protocol-api", "pydantic", "typic-functional-api", "typic-object-api", "marshmallow", "djangorestframework"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 46, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_deserialize_valid_data[typic-protocol-api] - 918 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_valid_data[pydantic] - 8262 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_valid_data[typic-functional-api] - 7710 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_valid_data[typic-object-api] - 7830 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_valid_data[marshmallow] - 3739 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_valid_data[djangorestframework] - 1188 rounds"]}</script><script type="text/javascript">(function() {
+<svg xmlns="http://www.w3.org/2000/svg" id="chart-5e7ca579-3508-4885-8930-fc3761d0e97d" class="pygal-chart" viewBox="0 0 800 600"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-09-28--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-5e7ca579-3508-4885-8930-fc3761d0e97d{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
+#chart-5e7ca579-3508-4885-8930-fc3761d0e97d{background-color:rgba(249,249,249,1)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d path,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d line,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d rect,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .graph{fill:rgba(0,0,0,.87)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d text.no_data{fill:rgba(0,0,0,1)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .title{fill:rgba(0,0,0,1)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .legends .legend text{fill:rgba(0,0,0,.87)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis .line{stroke:rgba(0,0,0,1)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis text.major{fill:rgba(0,0,0,1)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis.y .guides:hover .guide.line,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .line-graph .axis.x .guides:hover .guide.line,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .stackedline-graph .axis.x .guides:hover .guide.line,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .ci{stroke:rgba(0,0,0,.87)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .reactive.active,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .ci .reactive.active{stroke-width:1.5}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .series text{fill:rgba(0,0,0,1)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .tooltip .label{fill:rgba(0,0,0,.87)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .tooltip .label{fill:rgba(0,0,0,.87)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .tooltip .value{font-size:1.5em}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .bound{font-size:.5em}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .color-0,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .color-1,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .color-2,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .color-3,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .color-4,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .color-4 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .color-5,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .color-5 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .text-overlay .color-0 text{fill:black}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .text-overlay .color-1 text{fill:black}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .text-overlay .color-2 text{fill:black}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .text-overlay .color-3 text{fill:black}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .text-overlay .color-4 text{fill:black}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .text-overlay .color-5 text{fill:black}
+#chart-5e7ca579-3508-4885-8930-fc3761d0e97d text.no_data{text-anchor:middle}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .guide.line{fill:none}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .centered{text-anchor:middle}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .title{text-anchor:middle}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .legends .legend text{fill-opacity:1}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis.x text{text-anchor:middle}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis.x:not(.web) text[transform]{text-anchor:start}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis.y text{text-anchor:end}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis.y text[transform].backwards{text-anchor:start}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis.y2 text{text-anchor:start}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis.y2 text[transform].backwards{text-anchor:end}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis .guide.line{stroke-dasharray:4,4}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis .major.guide.line{stroke-dasharray:6,6}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .horizontal .axis.y .guide.line,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .horizontal .axis.y2 .guide.line,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .vertical .axis.x .guide.line{opacity:0}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .horizontal .axis.always_show .guide.line,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis.y .guides:hover .guide.line,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis.y2 .guides:hover .guide.line,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis.x .guides:hover .guide.line{opacity:1}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .axis .guides:hover text{opacity:1}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .nofill{fill:none}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .subtle-fill{fill-opacity:.2}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .dot{stroke-width:1px;fill-opacity:1}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .dot.active{stroke-width:5px}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .dot.negative{fill:transparent}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d text,#chart-5e7ca579-3508-4885-8930-fc3761d0e97d tspan{stroke:none !important}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .series text.active{opacity:1}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .tooltip text{fill-opacity:1}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .showable{visibility:hidden}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .showable.shown{visibility:visible}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-5e7ca579-3508-4885-8930-fc3761d0e97d .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
+.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['5e7ca579-3508-4885-8930-fc3761d0e97d'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.8/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [38, 1055], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Deserialize Valid Data", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-functional-api", "typic-protocol-api", "typic-object-api", "pydantic", "marshmallow", "djangorestframework"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 38, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_deserialize_valid_data[typic-functional-api] - 7298 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_valid_data[typic-protocol-api] - 964 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_valid_data[typic-object-api] - 7711 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_valid_data[pydantic] - 7612 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_valid_data[marshmallow] - 2822 rounds", "benchmark/test_benchmarks.py::test_benchmarks_deserialize_valid_data[djangorestframework] - 1311 rounds"]}</script><script type="text/javascript">(function() {
   var $, get_translation, init, init_svg, matches, padding, r_translation, sibl, svg_ns, tooltip_timeout, xlink_ns;
 
   svg_ns = 'http://www.w3.org/2000/svg';
@@ -345,40 +345,40 @@
   window.pygal.init_svg = init_svg;
 
 }).call(this);
-</script></defs><title>Speed in Microseconds (us) of Deserialize Valid Data</title><g class="graph custombox-graph vertical"><rect class="background" height="600" width="800" x="0" y="0" /><g class="plot" transform="translate(80, 46)"><rect class="background" height="378.0" width="700.0" x="0" y="0" /><g class="axis y always_show"><path class="line" d="M0.000000 378.000000 h700.000000" /><g class="guides"><path class="guide line" d="M0.000000 358.639094 h700.000000" /><text class="" x="-5" y="362.1390937829294">80</text><title>80</title></g><g class="guides"><path class="guide line" d="M0.000000 330.188093 h700.000000" /><text class="" x="-5" y="333.6880927291886">160</text><title>160</title></g><g class="guides"><path class="guide line" d="M0.000000 301.737092 h700.000000" /><text class="" x="-5" y="305.23709167544786">240</text><title>240</title></g><g class="guides"><path class="guide line" d="M0.000000 273.286091 h700.000000" /><text class="" x="-5" y="276.7860906217071">320</text><title>320</title></g><g class="guides"><path class="guide line" d="M0.000000 244.835090 h700.000000" /><text class="" x="-5" y="248.3350895679663">400</text><title>400</title></g><g class="guides"><path class="guide line" d="M0.000000 216.384089 h700.000000" /><text class="" x="-5" y="219.8840885142255">480</text><title>480</title></g><g class="guides"><path class="guide line" d="M0.000000 187.933087 h700.000000" /><text class="" x="-5" y="191.43308746048473">560</text><title>560</title></g><g class="guides"><path class="guide line" d="M0.000000 159.482086 h700.000000" /><text class="" x="-5" y="162.98208640674395">640</text><title>640</title></g><g class="guides"><path class="guide line" d="M0.000000 131.031085 h700.000000" /><text class="" x="-5" y="134.5310853530032">720</text><title>720</title></g><g class="guides"><path class="guide line" d="M0.000000 102.580084 h700.000000" /><text class="" x="-5" y="106.08008429926241">800</text><title>800</title></g><g class="guides"><path class="guide line" d="M0.000000 74.129083 h700.000000" /><text class="" x="-5" y="77.6290832455216">880</text><title>880</title></g><g class="guides"><path class="guide line" d="M0.000000 45.678082 h700.000000" /><text class="" x="-5" y="49.178082191780845">960</text><title>960</title></g><g class="guides"><path class="guide line" d="M0.000000 17.227081 h700.000000" /><text class="" x="-5" y="20.72708113804009">1040</text><title>1040</title></g></g><g class="axis x"><path class="line" d="M0.000000 0.000000 v378.000000" /><g class="guides"><path class="guide line" d="M69.551282 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 69.551282 393.000000)" x="69.55128205128204" y="393.0">typic-protocol-api</text></g><g class="guides"><path class="guide line" d="M181.730769 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 181.730769 393.000000)" x="181.73076923076923" y="393.0">pydantic</text></g><g class="guides"><path class="guide line" d="M293.910256 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 293.910256 393.000000)" x="293.9102564102564" y="393.0">typic-functional-api</text></g><g class="guides"><path class="guide line" d="M406.089744 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 406.089744 393.000000)" x="406.0897435897436" y="393.0">typic-object-api</text></g><g class="guides"><path class="guide line" d="M518.269231 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 518.269231 393.000000)" x="518.2692307692307" y="393.0">marshmallow</text></g><g class="guides"><path class="guide line" d="M630.448718 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 630.448718 393.000000)" x="630.4487179487179" y="393.0">djangorestframework</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M44.871795 370.585313 L94.230769 370.585313" stroke-width="3" /><path class="reactive tooltip-trigger" d="M20.192308 368.811394 L118.910256 368.811394" stroke-width="3" /><path class="reactive tooltip-trigger" d="M44.871795 355.194033 L94.230769 355.194033" stroke-width="3" /><path class="reactive tooltip-trigger" d="M69.551282 370.585313 L69.551282 369.368678" stroke-width="2" /><path class="reactive tooltip-trigger" d="M69.551282 355.194033 L69.551282 363.711196" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="5.657481559519738" width="98.71794871794872" x="20.192307692307693" y="363.7111959957915" /><circle class="subtle-fill reactive tooltip-trigger" cx="69.55128205128204" cy="370.58531348809026" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="69.55128205128204" cy="297.5252766066284" r="3" /><desc class="value">Min: 46.4090
-Q1-1.5IQR: 46.4090
-Q1: 49.8300
-Median: 51.3970
-Q3: 65.7380
-Q3+1.5IQR: 89.6870
-Max: 251.8430</desc><desc class="x centered">69.55128205128204</desc><desc class="y centered">365.5341227607776</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M157.051282 370.438791 L206.410256 370.438791" stroke-width="3" /><path class="reactive tooltip-trigger" d="M132.371795 369.497063 L231.089744 369.497063" stroke-width="3" /><path class="reactive tooltip-trigger" d="M157.051282 367.344033 L206.410256 367.344033" stroke-width="3" /><path class="reactive tooltip-trigger" d="M181.730769 370.438791 L181.730769 369.816781" stroke-width="2" /><path class="reactive tooltip-trigger" d="M181.730769 367.344033 L181.730769 368.833087" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.9836933613298697" width="98.71794871794872" x="132.3717948717949" y="368.8330874603814" /><circle class="subtle-fill reactive tooltip-trigger" cx="181.73076923076925" cy="370.4387908325432" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="181.73076923076925" cy="294.5180057953305" r="3" /><desc class="value">Min: 46.8210
-Q1-1.5IQR: 46.8210
-Q1: 48.5700
-Median: 49.4690
-Q3: 51.3360
-Q3+1.5IQR: 55.5230
-Max: 260.2990</desc><desc class="x centered">181.73076923076925</desc><desc class="y centered">369.18595100096013</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M269.230769 370.413185 L318.589744 370.413185" stroke-width="3" /><path class="reactive tooltip-trigger" d="M244.551282 369.430914 L343.269231 369.430914" stroke-width="3" /><path class="reactive tooltip-trigger" d="M269.230769 365.861380 L318.589744 365.861380" stroke-width="3" /><path class="reactive tooltip-trigger" d="M293.910256 370.413185 L293.910256 369.679505" stroke-width="2" /><path class="reactive tooltip-trigger" d="M293.910256 365.861380 L293.910256 368.173380" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="1.5061248684471025" width="98.71794871794872" x="244.55128205128204" y="368.1733798731929" /><circle class="subtle-fill reactive tooltip-trigger" cx="293.9102564102564" cy="370.4131849313714" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="293.9102564102564" cy="207.3380927294756" r="3" /><desc class="value">Min: 46.8930
-Q1-1.5IQR: 46.8930
-Q1: 48.9560
-Median: 49.6550
-Q3: 53.1910
-Q3+1.5IQR: 59.6920
-Max: 505.4360</desc><desc class="x centered">293.9102564102564</desc><desc class="y centered">368.71167281332015</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M381.410256 368.902437 L430.769231 368.902437" stroke-width="3" /><path class="reactive tooltip-trigger" d="M356.730769 367.017736 L455.448718 367.017736" stroke-width="3" /><path class="reactive tooltip-trigger" d="M381.410256 363.504215 L430.769231 363.504215" stroke-width="3" /><path class="reactive tooltip-trigger" d="M406.089744 368.902437 L406.089744 367.461749" stroke-width="2" /><path class="reactive tooltip-trigger" d="M406.089744 363.504215 L406.089744 365.880585" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="1.5811643842495187" width="98.71794871794872" x="356.7307692307692" y="365.8805848255896" /><circle class="subtle-fill reactive tooltip-trigger" cx="406.0897435897436" cy="368.9024367755022" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="406.0897435897436" cy="88.52564541642118" r="3" /><desc class="value">Min: 51.1410
-Q1-1.5IQR: 51.1410
-Q1: 55.1920
-Median: 56.4405
-Q3: 59.6380
-Q3+1.5IQR: 66.3200
-Max: 839.5190</desc><desc class="x centered">406.0897435897436</desc><desc class="y centered">366.553344309707</desc><desc class="x_label" /></g></g></g><g class="series serie-4 color-4"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M493.589744 327.626436 L542.948718 327.626436" stroke-width="3" /><path class="reactive tooltip-trigger" d="M468.910256 321.997050 L567.628205 321.997050" stroke-width="3" /><path class="reactive tooltip-trigger" d="M493.589744 308.972893 L542.948718 308.972893" stroke-width="3" /><path class="reactive tooltip-trigger" d="M518.269231 327.626436 L518.269231 323.118197" stroke-width="2" /><path class="reactive tooltip-trigger" d="M518.269231 308.972893 L518.269231 317.466317" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="5.651880268539742" width="98.71794871794872" x="468.9102564102564" y="317.46631651736067" /><circle class="subtle-fill reactive tooltip-trigger" cx="518.2692307692307" cy="327.62643572175153" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="518.2692307692307" cy="-60.5163461538944" r="3" /><desc class="value">Min: 167.2030
-Q1-1.5IQR: 167.2030
-Q1: 179.8795
-Median: 183.0320
-Q3: 195.7718
-Q3+1.5IQR: 219.6540
-Max: 1258.6030</desc><desc class="x centered">518.2692307692307</desc><desc class="y centered">319.8361782139063</desc><desc class="x_label" /></g></g></g><g class="series serie-5 color-5"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M605.769231 147.361604 L655.128205 147.361604" stroke-width="3" /><path class="reactive tooltip-trigger" d="M581.089744 118.661657 L679.807692 118.661657" stroke-width="3" /><path class="reactive tooltip-trigger" d="M605.769231 7.599974 L655.128205 7.599974" stroke-width="3" /><path class="reactive tooltip-trigger" d="M630.448718 147.361604 L630.448718 136.546312" stroke-width="2" /><path class="reactive tooltip-trigger" d="M630.448718 7.599974 L630.448718 85.755051" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="50.79126053725099" width="98.71794871794872" x="581.0897435897436" y="85.75505136982207" /><circle class="subtle-fill reactive tooltip-trigger" cx="630.448717948718" cy="147.36160432045813" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="630.448717948718" cy="-444.0059668069259" r="3" /><desc class="value">Min: 674.0810
-Q1-1.5IQR: 674.0810
-Q1: 704.4920
-Median: 754.7810
-Q3: 847.3095
-Q3+1.5IQR: 1067.0700
-Max: 2336.9190</desc><desc class="x centered">630.448717948718</desc><desc class="y centered">99.18491965225098</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text class="title plot_title" x="400.0" y="26">Speed in Microseconds (us) of Deserialize Valid Data</text><text class="title" x="430.0" y="580.0">Trial</text><text class="title" transform="rotate(-90 0.000000 235.000000)" x="0" y="261.0">Duration</text></g><g class="plot overlay" transform="translate(80, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g class="plot text-overlay" transform="translate(80, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g class="plot tooltip-overlay" transform="translate(80, 46)"><g class="tooltip" style="opacity: 0" transform="translate(0 0)"><rect class="tooltip-box" height="0" rx="0" ry="0" width="0" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
+</script></defs><title>Speed in Microseconds (us) of Deserialize Valid Data</title><g class="graph custombox-graph vertical"><rect x="0" y="0" width="800" height="600" class="background" /><g transform="translate(80, 46)" class="plot"><rect x="0" y="0" width="700.0" height="378.0" class="background" /><g class="axis y always_show"><path d="M0.000000 378.000000 h700.000000" class="line" /><g class="guides"><path d="M0.000000 355.720558 h700.000000" class="guide line" /><text x="-5" y="359.2205582028591" class="">80</text><title>80</title></g><g class="guides"><path d="M0.000000 327.129680 h700.000000" class="guide line" /><text x="-5" y="330.6296800544588" class="">160</text><title>160</title></g><g class="guides"><path d="M0.000000 298.538802 h700.000000" class="guide line" /><text x="-5" y="302.03880190605855" class="">240</text><title>240</title></g><g class="guides"><path d="M0.000000 269.947924 h700.000000" class="guide line" /><text x="-5" y="273.44792375765826" class="">320</text><title>320</title></g><g class="guides"><path d="M0.000000 241.357046 h700.000000" class="guide line" /><text x="-5" y="244.857045609258" class="">400</text><title>400</title></g><g class="guides"><path d="M0.000000 212.766167 h700.000000" class="guide line" /><text x="-5" y="216.2661674608577" class="">480</text><title>480</title></g><g class="guides"><path d="M0.000000 184.175289 h700.000000" class="guide line" /><text x="-5" y="187.6752893124574" class="">560</text><title>560</title></g><g class="guides"><path d="M0.000000 155.584411 h700.000000" class="guide line" /><text x="-5" y="159.08441116405712" class="">640</text><title>640</title></g><g class="guides"><path d="M0.000000 126.993533 h700.000000" class="guide line" /><text x="-5" y="130.49353301565685" class="">720</text><title>720</title></g><g class="guides"><path d="M0.000000 98.402655 h700.000000" class="guide line" /><text x="-5" y="101.90265486725656" class="">800</text><title>800</title></g><g class="guides"><path d="M0.000000 69.811777 h700.000000" class="guide line" /><text x="-5" y="73.31177671885632" class="">880</text><title>880</title></g><g class="guides"><path d="M0.000000 41.220899 h700.000000" class="guide line" /><text x="-5" y="44.72089857045603" class="">960</text><title>960</title></g><g class="guides"><path d="M0.000000 12.630020 h700.000000" class="guide line" /><text x="-5" y="16.130020422055736" class="">1040</text><title>1040</title></g></g><g class="axis x"><path d="M0.000000 0.000000 v378.000000" class="line" /><g class="guides"><path d="M69.551282 0.000000 v378.000000" class="guide line" /><text x="69.55128205128204" y="393.0" class="backwards" transform="rotate(270 69.551282 393.000000)">typic-functional-api</text></g><g class="guides"><path d="M181.730769 0.000000 v378.000000" class="guide line" /><text x="181.73076923076923" y="393.0" class="backwards" transform="rotate(270 181.730769 393.000000)">typic-protocol-api</text></g><g class="guides"><path d="M293.910256 0.000000 v378.000000" class="guide line" /><text x="293.9102564102564" y="393.0" class="backwards" transform="rotate(270 293.910256 393.000000)">typic-object-api</text></g><g class="guides"><path d="M406.089744 0.000000 v378.000000" class="guide line" /><text x="406.0897435897436" y="393.0" class="backwards" transform="rotate(270 406.089744 393.000000)">pydantic</text></g><g class="guides"><path d="M518.269231 0.000000 v378.000000" class="guide line" /><text x="518.2692307692307" y="393.0" class="backwards" transform="rotate(270 518.269231 393.000000)">marshmallow</text></g><g class="guides"><path d="M630.448718 0.000000 v378.000000" class="guide line" /><text x="630.4487179487179" y="393.0" class="backwards" transform="rotate(270 630.448718 393.000000)">djangorestframework</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path stroke-width="3" d="M44.871795 370.587100 L94.230769 370.587100" class="reactive tooltip-trigger" /><path stroke-width="3" d="M20.192308 369.455973 L118.910256 369.455973" class="reactive tooltip-trigger" /><path stroke-width="3" d="M44.871795 366.555071 L94.230769 366.555071" class="reactive tooltip-trigger" /><path stroke-width="2" d="M69.551282 370.587100 L69.551282 369.737951" class="reactive tooltip-trigger" /><path stroke-width="2" d="M69.551282 366.555071 L69.551282 368.467444" class="reactive tooltip-trigger" /><rect x="20.192307692307693" y="368.4674438393636" height="1.2705071480923493" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="69.55128205128204" cy="370.5871000682546" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="69.55128205128204" cy="273.1811946897685" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 38.4020
+Q1-1.5IQR: 38.4020
+Q1: 40.7780
+Median: 41.5670
+Q3: 44.3330
+Q3+1.5IQR: 49.6840
+Max: 310.9530</desc><desc class="x centered">69.55128205128204</desc><desc class="y centered">368.9607079646747</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path stroke-width="3" d="M157.051282 368.709037 L206.410256 368.709037" class="reactive tooltip-trigger" /><path stroke-width="3" d="M132.371795 368.292682 L231.089744 368.292682" class="reactive tooltip-trigger" /><path stroke-width="3" d="M157.051282 367.325953 L206.410256 367.325953" class="reactive tooltip-trigger" /><path stroke-width="2" d="M181.730769 368.709037 L181.730769 368.446715" class="reactive tooltip-trigger" /><path stroke-width="2" d="M181.730769 367.325953 L181.730769 368.000519" class="reactive tooltip-trigger" /><rect x="132.3717948717949" y="368.0005190606946" height="0.44619639220093177" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="181.73076923076925" cy="368.70903675939206" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="181.73076923076925" cy="303.70338665773204" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 43.6570
+Q1-1.5IQR: 43.6570
+Q1: 44.3910
+Median: 44.8220
+Q3: 45.6395
+Q3+1.5IQR: 47.5270
+Max: 225.5490</desc><desc class="x centered">181.73076923076925</desc><desc class="y centered">368.15498127984773</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path stroke-width="3" d="M269.230769 368.176532 L318.589744 368.176532" class="reactive tooltip-trigger" /><path stroke-width="3" d="M244.551282 365.957522 L343.269231 365.957522" class="reactive tooltip-trigger" /><path stroke-width="3" d="M269.230769 361.193924 L318.589744 361.193924" class="reactive tooltip-trigger" /><path stroke-width="2" d="M293.910256 368.176532 L293.910256 366.803812" class="reactive tooltip-trigger" /><path stroke-width="2" d="M293.910256 361.193924 L293.910256 364.564164" class="reactive tooltip-trigger" /><rect x="244.55128205128204" y="364.56416354666607" height="2.2396485705494342" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="293.9102564102564" cy="368.1765316542576" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="293.9102564102564" cy="236.08810415300218" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 45.1470
+Q1-1.5IQR: 45.1470
+Q1: 48.9880
+Median: 51.3560
+Q3: 55.2547
+Q3+1.5IQR: 64.6850
+Max: 414.7430</desc><desc class="x centered">293.9102564102564</desc><desc class="y centered">365.3391907760805</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path stroke-width="3" d="M381.410256 367.961743 L430.769231 367.961743" class="reactive tooltip-trigger" /><path stroke-width="3" d="M356.730769 366.358867 L455.448718 366.358867" class="reactive tooltip-trigger" /><path stroke-width="3" d="M381.410256 363.647737 L430.769231 363.647737" class="reactive tooltip-trigger" /><path stroke-width="2" d="M406.089744 367.961743 L406.089744 366.809352" class="reactive tooltip-trigger" /><path stroke-width="2" d="M406.089744 363.647737 L406.089744 365.547422" class="reactive tooltip-trigger" /><rect x="356.7307692307692" y="365.54742171542466" height="1.2619298842555509" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="406.0897435897436" cy="367.9617426821717" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="406.0897435897436" cy="275.11786929924085" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 45.7480
+Q1-1.5IQR: 45.7480
+Q1: 48.9725
+Median: 50.2330
+Q3: 52.5035
+Q3+1.5IQR: 57.8190
+Max: 305.5340</desc><desc class="x centered">406.0897435897436</desc><desc class="y centered">366.0650238257418</desc><desc class="x_label" /></g></g></g><g class="series serie-4 color-4"><g class="boxes"><g class="box"><path stroke-width="3" d="M493.589744 315.108288 L542.948718 315.108288" class="reactive tooltip-trigger" /><path stroke-width="3" d="M468.910256 310.158492 L567.628205 310.158492" class="reactive tooltip-trigger" /><path stroke-width="3" d="M493.589744 293.896001 L542.948718 293.896001" class="reactive tooltip-trigger" /><path stroke-width="2" d="M518.269231 315.108288 L518.269231 312.455769" class="reactive tooltip-trigger" /><path stroke-width="2" d="M518.269231 293.896001 L518.269231 305.045014" class="reactive tooltip-trigger" /><rect x="468.9102564102564" y="305.04501361475457" height="7.4107556159737555" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="518.2692307692307" cy="315.10828795076014" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="518.2692307692307" cy="19.50719877498011" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 193.6370
+Q1-1.5IQR: 193.6370
+Q1: 201.0590
+Median: 207.4870
+Q3: 221.7950
+Q3+1.5IQR: 252.9910
+Max: 1020.7570</desc><desc class="x centered">518.2692307692307</desc><desc class="y centered">307.3327127297096</desc><desc class="x_label" /></g></g></g><g class="series serie-5 color-5"><g class="boxes"><g class="box"><path stroke-width="3" d="M605.769231 170.424864 L655.128205 170.424864" class="reactive tooltip-trigger" /><path stroke-width="3" d="M581.089744 128.909122 L679.807692 128.909122" class="reactive tooltip-trigger" /><path stroke-width="3" d="M605.769231 7.469010 L655.128205 7.469010" class="reactive tooltip-trigger" /><path stroke-width="2" d="M630.448718 170.424864 L630.448718 149.954331" class="reactive tooltip-trigger" /><path stroke-width="2" d="M630.448718 7.469010 L630.448718 93.240214" class="reactive tooltip-trigger" /><rect x="581.0897435897436" y="93.24021443140862" height="56.71411674665197" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="630.448717948718" cy="170.4248638528467" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="630.448717948718" cy="-559.5156228730173" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 598.4750
+Q1-1.5IQR: 598.4750
+Q1: 655.7535
+Median: 714.6400
+Q3: 814.4450
+Q3+1.5IQR: 1054.4410
+Max: 2640.9180</desc><desc class="x centered">630.448717948718</desc><desc class="y centered">109.99950816890873</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text x="400.0" y="26" class="title plot_title">Speed in Microseconds (us) of Deserialize Valid Data</text><text x="430.0" y="580.0" class="title">Trial</text><text x="0" y="261.0" class="title" transform="rotate(-90 0.000000 235.000000)">Duration</text></g><g transform="translate(80, 46)" class="plot overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g transform="translate(80, 46)" class="plot text-overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g transform="translate(80, 46)" class="plot tooltip-overlay"><g transform="translate(0 0)" style="opacity: 0" class="tooltip"><rect rx="0" ry="0" width="0" height="0" class="tooltip-box" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
diff --git a/docs/static/Serialize_Invalid_Data.svg b/docs/static/Serialize_Invalid_Data.svg
index 0fcf3f66..340b9b72 100644
--- a/docs/static/Serialize_Invalid_Data.svg
+++ b/docs/static/Serialize_Invalid_Data.svg
@@ -1,8 +1,8 @@
 <?xml version='1.0' encoding='utf-8'?>
-<svg class="pygal-chart" id="chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d" viewBox="0 0 800 600" xmlns="http://www.w3.org/2000/svg"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-07-06--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
-#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d{background-color:rgba(249,249,249,1)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d path,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d line,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d rect,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .graph{fill:rgba(0,0,0,.87)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d text.no_data{fill:rgba(0,0,0,1)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .title{fill:rgba(0,0,0,1)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .legends .legend text{fill:rgba(0,0,0,.87)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis .line{stroke:rgba(0,0,0,1)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis text.major{fill:rgba(0,0,0,1)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis.y .guides:hover .guide.line,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .line-graph .axis.x .guides:hover .guide.line,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .stackedline-graph .axis.x .guides:hover .guide.line,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .ci{stroke:rgba(0,0,0,.87)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .reactive.active,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .ci .reactive.active{stroke-width:1.5}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .series text{fill:rgba(0,0,0,1)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .tooltip .label{fill:rgba(0,0,0,.87)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .tooltip .label{fill:rgba(0,0,0,.87)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .tooltip .value{font-size:1.5em}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .bound{font-size:.5em}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .color-0,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .color-1,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .color-2,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .color-3,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .color-4,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .color-4 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .color-5,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .color-5 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .text-overlay .color-0 text{fill:black}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .text-overlay .color-1 text{fill:black}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .text-overlay .color-2 text{fill:black}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .text-overlay .color-3 text{fill:black}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .text-overlay .color-4 text{fill:black}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .text-overlay .color-5 text{fill:black}
-#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d text.no_data{text-anchor:middle}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .guide.line{fill:none}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .centered{text-anchor:middle}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .title{text-anchor:middle}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .legends .legend text{fill-opacity:1}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis.x text{text-anchor:middle}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis.x:not(.web) text[transform]{text-anchor:start}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis.y text{text-anchor:end}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis.y text[transform].backwards{text-anchor:start}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis.y2 text{text-anchor:start}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis.y2 text[transform].backwards{text-anchor:end}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis .guide.line{stroke-dasharray:4,4}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis .major.guide.line{stroke-dasharray:6,6}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .horizontal .axis.y .guide.line,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .horizontal .axis.y2 .guide.line,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .vertical .axis.x .guide.line{opacity:0}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .horizontal .axis.always_show .guide.line,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis.y .guides:hover .guide.line,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis.y2 .guides:hover .guide.line,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis.x .guides:hover .guide.line{opacity:1}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .axis .guides:hover text{opacity:1}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .nofill{fill:none}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .subtle-fill{fill-opacity:.2}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .dot{stroke-width:1px;fill-opacity:1}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .dot.active{stroke-width:5px}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .dot.negative{fill:transparent}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d text,#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d tspan{stroke:none !important}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .series text.active{opacity:1}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .tooltip text{fill-opacity:1}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .showable{visibility:hidden}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .showable.shown{visibility:visible}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-a71ef7a1-0acc-43a3-b4bf-47327de3478d .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
-.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['a71ef7a1-0acc-43a3-b4bf-47327de3478d'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.7/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [18, 886], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Serialize Invalid Data", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-protocol-api", "typic-object-api", "typic-functional-api", "pydantic", "marshmallow", "djangorestframework"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 18, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_serialize_invalid_data[typic-protocol-api] - 19409 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_invalid_data[typic-object-api] - 18098 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_invalid_data[typic-functional-api] - 15449 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_invalid_data[pydantic] - 7210 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_invalid_data[marshmallow] - 6321 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_invalid_data[djangorestframework] - 912 rounds"]}</script><script type="text/javascript">(function() {
+<svg xmlns="http://www.w3.org/2000/svg" id="chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9" class="pygal-chart" viewBox="0 0 800 600"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-09-28--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
+#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9{background-color:rgba(249,249,249,1)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 path,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 line,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 rect,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .graph{fill:rgba(0,0,0,.87)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 text.no_data{fill:rgba(0,0,0,1)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .title{fill:rgba(0,0,0,1)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .legends .legend text{fill:rgba(0,0,0,.87)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis .line{stroke:rgba(0,0,0,1)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis text.major{fill:rgba(0,0,0,1)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis.y .guides:hover .guide.line,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .line-graph .axis.x .guides:hover .guide.line,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .stackedline-graph .axis.x .guides:hover .guide.line,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .ci{stroke:rgba(0,0,0,.87)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .reactive.active,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .ci .reactive.active{stroke-width:1.5}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .series text{fill:rgba(0,0,0,1)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .tooltip .value{font-size:1.5em}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .bound{font-size:.5em}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .color-0,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .color-1,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .color-2,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .color-3,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .color-4,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .color-4 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .color-5,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .color-5 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .text-overlay .color-0 text{fill:black}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .text-overlay .color-1 text{fill:black}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .text-overlay .color-2 text{fill:black}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .text-overlay .color-3 text{fill:black}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .text-overlay .color-4 text{fill:black}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .text-overlay .color-5 text{fill:black}
+#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 text.no_data{text-anchor:middle}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .guide.line{fill:none}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .centered{text-anchor:middle}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .title{text-anchor:middle}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .legends .legend text{fill-opacity:1}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis.x text{text-anchor:middle}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis.x:not(.web) text[transform]{text-anchor:start}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis.y text{text-anchor:end}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis.y text[transform].backwards{text-anchor:start}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis.y2 text{text-anchor:start}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis.y2 text[transform].backwards{text-anchor:end}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis .guide.line{stroke-dasharray:4,4}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis .major.guide.line{stroke-dasharray:6,6}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .horizontal .axis.y .guide.line,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .horizontal .axis.y2 .guide.line,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .vertical .axis.x .guide.line{opacity:0}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .horizontal .axis.always_show .guide.line,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis.y .guides:hover .guide.line,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis.y2 .guides:hover .guide.line,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis.x .guides:hover .guide.line{opacity:1}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .axis .guides:hover text{opacity:1}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .nofill{fill:none}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .subtle-fill{fill-opacity:.2}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .dot{stroke-width:1px;fill-opacity:1}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .dot.active{stroke-width:5px}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .dot.negative{fill:transparent}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 text,#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 tspan{stroke:none !important}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .series text.active{opacity:1}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .tooltip text{fill-opacity:1}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .showable{visibility:hidden}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .showable.shown{visibility:visible}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-91cb2c4d-bc0b-4ef9-83fe-125319c409e9 .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
+.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['91cb2c4d-bc0b-4ef9-83fe-125319c409e9'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.8/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [17, 833], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Serialize Invalid Data", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-object-api", "typic-protocol-api", "typic-functional-api", "pydantic", "marshmallow", "djangorestframework"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 17, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_serialize_invalid_data[typic-object-api] - 17620 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_invalid_data[typic-protocol-api] - 18421 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_invalid_data[typic-functional-api] - 15244 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_invalid_data[pydantic] - 2211 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_invalid_data[marshmallow] - 4313 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_invalid_data[djangorestframework] - 499 rounds"]}</script><script type="text/javascript">(function() {
   var $, get_translation, init, init_svg, matches, padding, r_translation, sibl, svg_ns, tooltip_timeout, xlink_ns;
 
   svg_ns = 'http://www.w3.org/2000/svg';
@@ -345,40 +345,40 @@
   window.pygal.init_svg = init_svg;
 
 }).call(this);
-</script></defs><title>Speed in Microseconds (us) of Serialize Invalid Data</title><g class="graph custombox-graph vertical"><rect class="background" height="600" width="800" x="0" y="0" /><g class="plot" transform="translate(74, 46)"><rect class="background" height="378.0" width="706.0" x="0" y="0" /><g class="axis y always_show"><path class="line" d="M0.000000 378.000000 h706.000000" /><g class="guides"><path class="guide line" d="M0.000000 344.769231 h706.000000" /><text class="" x="-5" y="348.2692307692308">80</text><title>80</title></g><g class="guides"><path class="guide line" d="M0.000000 311.270471 h706.000000" /><text class="" x="-5" y="314.77047146401986">160</text><title>160</title></g><g class="guides"><path class="guide line" d="M0.000000 277.771712 h706.000000" /><text class="" x="-5" y="281.27171215880895">240</text><title>240</title></g><g class="guides"><path class="guide line" d="M0.000000 244.272953 h706.000000" /><text class="" x="-5" y="247.772952853598">320</text><title>320</title></g><g class="guides"><path class="guide line" d="M0.000000 210.774194 h706.000000" /><text class="" x="-5" y="214.27419354838707">400</text><title>400</title></g><g class="guides"><path class="guide line" d="M0.000000 177.275434 h706.000000" /><text class="" x="-5" y="180.77543424317616">480</text><title>480</title></g><g class="guides"><path class="guide line" d="M0.000000 143.776675 h706.000000" /><text class="" x="-5" y="147.27667493796525">560</text><title>560</title></g><g class="guides"><path class="guide line" d="M0.000000 110.277916 h706.000000" /><text class="" x="-5" y="113.77791563275434">640</text><title>640</title></g><g class="guides"><path class="guide line" d="M0.000000 76.779156 h706.000000" /><text class="" x="-5" y="80.27915632754343">720</text><title>720</title></g><g class="guides"><path class="guide line" d="M0.000000 43.280397 h706.000000" /><text class="" x="-5" y="46.78039702233252">800</text><title>800</title></g><g class="guides"><path class="guide line" d="M0.000000 9.781638 h706.000000" /><text class="" x="-5" y="13.281637717121555">880</text><title>880</title></g></g><g class="axis x"><path class="line" d="M0.000000 0.000000 v378.000000" /><g class="guides"><path class="guide line" d="M70.147436 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 70.147436 393.000000)" x="70.1474358974359" y="393.0">typic-protocol-api</text></g><g class="guides"><path class="guide line" d="M183.288462 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 183.288462 393.000000)" x="183.28846153846155" y="393.0">typic-object-api</text></g><g class="guides"><path class="guide line" d="M296.429487 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 296.429487 393.000000)" x="296.4294871794872" y="393.0">typic-functional-api</text></g><g class="guides"><path class="guide line" d="M409.570513 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 409.570513 393.000000)" x="409.5705128205129" y="393.0">pydantic</text></g><g class="guides"><path class="guide line" d="M522.711538 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 522.711538 393.000000)" x="522.7115384615385" y="393.0">marshmallow</text></g><g class="guides"><path class="guide line" d="M635.852564 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 635.852564 393.000000)" x="635.8525641025641" y="393.0">djangorestframework</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M45.256410 370.446030 L95.038462 370.446030" stroke-width="3" /><path class="reactive tooltip-trigger" d="M20.365385 370.016827 L119.929487 370.016827" stroke-width="3" /><path class="reactive tooltip-trigger" d="M45.256410 368.574287 L95.038462 368.574287" stroke-width="3" /><path class="reactive tooltip-trigger" d="M70.147436 370.446030 L70.147436 370.144960" stroke-width="2" /><path class="reactive tooltip-trigger" d="M70.147436 368.574287 L70.147436 369.516858" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.6281017361307022" width="99.56410256410255" x="20.365384615384613" y="369.51685794048535" /><circle class="subtle-fill reactive tooltip-trigger" cx="70.14743589743588" cy="370.4460297780957" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="70.14743589743588" cy="262.89281947893375" r="3" /><desc class="value">Min: 18.6800
-Q1-1.5IQR: 18.6800
-Q1: 19.3990
-Median: 19.7050
-Q3: 20.8990
-Q3+1.5IQR: 23.1500
-Max: 275.5330</desc><desc class="x centered">70.14743589743588</desc><desc class="y centered">369.7397921837348</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M158.397436 370.445192 L208.179487 370.445192" stroke-width="3" /><path class="reactive tooltip-trigger" d="M133.506410 370.006359 L233.070513 370.006359" stroke-width="3" /><path class="reactive tooltip-trigger" d="M158.397436 369.328846 L208.179487 369.328846" stroke-width="3" /><path class="reactive tooltip-trigger" d="M183.288462 370.445192 L183.288462 370.128629" stroke-width="2" /><path class="reactive tooltip-trigger" d="M183.288462 369.328846 L183.288462 369.808716" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.3199131510569373" width="99.56410256410255" x="133.50641025641025" y="369.80871588165" /><circle class="subtle-fill reactive tooltip-trigger" cx="183.28846153846152" cy="370.44519230755617" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="183.28846153846152" cy="263.55400124187156" r="3" /><desc class="value">Min: 18.6820
-Q1-1.5IQR: 18.6820
-Q1: 19.4380
-Median: 19.7300
-Q3: 20.2020
-Q3+1.5IQR: 21.3480
-Max: 273.9540</desc><desc class="x centered">183.28846153846152</desc><desc class="y centered">369.94354838740594</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M271.538462 370.049907 L321.320513 370.049907" stroke-width="3" /><path class="reactive tooltip-trigger" d="M246.647436 369.573806 L346.211538 369.573806" stroke-width="3" /><path class="reactive tooltip-trigger" d="M271.538462 369.084305 L321.320513 369.084305" stroke-width="3" /><path class="reactive tooltip-trigger" d="M296.429487 370.049907 L296.429487 369.699426" stroke-width="2" /><path class="reactive tooltip-trigger" d="M296.429487 369.084305 L296.429487 369.454048" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.24537841287400397" width="99.56410256410255" x="246.64743589743588" y="369.45404776642596" /><circle class="subtle-fill reactive tooltip-trigger" cx="296.4294871794872" cy="370.23456885736164" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="296.4294871794872" cy="279.9771867248966" r="3" /><desc class="value">Min: 19.1850
-Q1-1.5IQR: 19.6260
-Q1: 20.4630
-Median: 20.7630
-Q3: 21.0490
-Q3+1.5IQR: 21.9320
-Max: 234.7330</desc><desc class="x centered">296.4294871794872</desc><desc class="y centered">369.5722983876316</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M384.679487 348.194060 L434.461538 348.194060" stroke-width="3" /><path class="reactive tooltip-trigger" d="M359.788462 346.773503 L459.352564 346.773503" stroke-width="3" /><path class="reactive tooltip-trigger" d="M384.679487 343.176783 L434.461538 343.176783" stroke-width="3" /><path class="reactive tooltip-trigger" d="M409.570513 348.194060 L409.570513 347.259445" stroke-width="2" /><path class="reactive tooltip-trigger" d="M409.570513 343.176783 L409.570513 345.628474" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="1.6309708432440289" width="99.56410256410255" x="359.78846153846155" y="345.6284739463648" /><circle class="subtle-fill reactive tooltip-trigger" cx="409.5705128205128" cy="348.19406017419715" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="409.5705128205128" cy="61.25541253141381" r="3" /><desc class="value">Min: 71.8210
-Q1-1.5IQR: 71.8210
-Q1: 74.0530
-Median: 75.2135
-Q3: 77.9480
-Q3+1.5IQR: 83.8030
-Max: 757.0730</desc><desc class="x centered">409.5705128205128</desc><desc class="y centered">346.20645316420087</desc><desc class="x_label" /></g></g></g><g class="series serie-4 color-4"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M497.820513 344.959755 L547.602564 344.959755" stroke-width="3" /><path class="reactive tooltip-trigger" d="M472.929487 343.059119 L572.493590 343.059119" stroke-width="3" /><path class="reactive tooltip-trigger" d="M497.820513 336.719060 L547.602564 336.719060" stroke-width="3" /><path class="reactive tooltip-trigger" d="M522.711538 344.959755 L522.711538 343.541187" stroke-width="2" /><path class="reactive tooltip-trigger" d="M522.711538 336.719060 L522.711538 340.813655" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="2.727531793102969" width="99.56410256410255" x="472.9294871794872" y="340.81365539717063" /><circle class="subtle-fill reactive tooltip-trigger" cx="522.7115384615385" cy="344.9597549619597" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="522.7115384615385" cy="179.39967431800724" r="3" /><desc class="value">Min: 79.5450
-Q1-1.5IQR: 79.5450
-Q1: 82.9327
-Median: 84.0840
-Q3: 89.4465
-Q3+1.5IQR: 99.2250
-Max: 474.9270</desc><desc class="x centered">522.7115384615385</desc><desc class="y centered">341.8185553656191</desc><desc class="x_label" /></g></g></g><g class="series serie-5 color-5"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M610.961538 166.272767 L660.743590 166.272767" stroke-width="3" /><path class="reactive tooltip-trigger" d="M586.070513 128.110561 L685.634615 128.110561" stroke-width="3" /><path class="reactive tooltip-trigger" d="M610.961538 7.379358 L660.743590 7.379358" stroke-width="3" /><path class="reactive tooltip-trigger" d="M635.852564 166.272767 L635.852564 148.966261" stroke-width="2" /><path class="reactive tooltip-trigger" d="M635.852564 7.379358 L635.852564 92.632235" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="56.33402605415705" width="99.56410256410255" x="586.0705128205128" y="92.63223480207682" /><circle class="subtle-fill reactive tooltip-trigger" cx="635.8525641025641" cy="166.27276674962374" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="635.8525641025641" cy="-25789.689407568265" r="3" /><desc class="value">Min: 506.2760
-Q1-1.5IQR: 506.2760
-Q1: 547.6065
-Median: 597.4130
-Q3: 682.1405
-Q3+1.5IQR: 885.7370
-Max: 62492.9590</desc><desc class="x centered">635.8525641025641</desc><desc class="y centered">108.67223635237889</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text class="title plot_title" x="400.0" y="26">Speed in Microseconds (us) of Serialize Invalid Data</text><text class="title" x="427.0" y="580.0">Trial</text><text class="title" transform="rotate(-90 0.000000 235.000000)" x="0" y="261.0">Duration</text></g><g class="plot overlay" transform="translate(74, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g class="plot text-overlay" transform="translate(74, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g class="plot tooltip-overlay" transform="translate(74, 46)"><g class="tooltip" style="opacity: 0" transform="translate(0 0)"><rect class="tooltip-box" height="0" rx="0" ry="0" width="0" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
+</script></defs><title>Speed in Microseconds (us) of Serialize Invalid Data</title><g class="graph custombox-graph vertical"><rect x="0" y="0" width="800" height="600" class="background" /><g transform="translate(74, 46)" class="plot"><rect x="0" y="0" width="706.0" height="378.0" class="background" /><g class="axis y always_show"><path d="M0.000000 378.000000 h706.000000" class="line" /><g class="guides"><path d="M0.000000 342.669400 h706.000000" class="guide line" /><text x="-5" y="346.1694004524887" class="">80</text><title>80</title></g><g class="guides"><path d="M0.000000 307.035916 h706.000000" class="guide line" /><text x="-5" y="310.53591628959276" class="">160</text><title>160</title></g><g class="guides"><path d="M0.000000 271.402432 h706.000000" class="guide line" /><text x="-5" y="274.90243212669685" class="">240</text><title>240</title></g><g class="guides"><path d="M0.000000 235.768948 h706.000000" class="guide line" /><text x="-5" y="239.26894796380094" class="">320</text><title>320</title></g><g class="guides"><path d="M0.000000 200.135464 h706.000000" class="guide line" /><text x="-5" y="203.635463800905" class="">400</text><title>400</title></g><g class="guides"><path d="M0.000000 164.501980 h706.000000" class="guide line" /><text x="-5" y="168.0019796380091" class="">480</text><title>480</title></g><g class="guides"><path d="M0.000000 128.868495 h706.000000" class="guide line" /><text x="-5" y="132.36849547511312" class="">560</text><title>560</title></g><g class="guides"><path d="M0.000000 93.235011 h706.000000" class="guide line" /><text x="-5" y="96.73501131221718" class="">640</text><title>640</title></g><g class="guides"><path d="M0.000000 57.601527 h706.000000" class="guide line" /><text x="-5" y="61.10152714932127" class="">720</text><title>720</title></g><g class="guides"><path d="M0.000000 21.968043 h706.000000" class="guide line" /><text x="-5" y="25.46804298642536" class="">800</text><title>800</title></g></g><g class="axis x"><path d="M0.000000 0.000000 v378.000000" class="line" /><g class="guides"><path d="M70.147436 0.000000 v378.000000" class="guide line" /><text x="70.1474358974359" y="393.0" class="backwards" transform="rotate(270 70.147436 393.000000)">typic-object-api</text></g><g class="guides"><path d="M183.288462 0.000000 v378.000000" class="guide line" /><text x="183.28846153846155" y="393.0" class="backwards" transform="rotate(270 183.288462 393.000000)">typic-protocol-api</text></g><g class="guides"><path d="M296.429487 0.000000 v378.000000" class="guide line" /><text x="296.4294871794872" y="393.0" class="backwards" transform="rotate(270 296.429487 393.000000)">typic-functional-api</text></g><g class="guides"><path d="M409.570513 0.000000 v378.000000" class="guide line" /><text x="409.5705128205129" y="393.0" class="backwards" transform="rotate(270 409.570513 393.000000)">pydantic</text></g><g class="guides"><path d="M522.711538 0.000000 v378.000000" class="guide line" /><text x="522.7115384615385" y="393.0" class="backwards" transform="rotate(270 522.711538 393.000000)">marshmallow</text></g><g class="guides"><path d="M635.852564 0.000000 v378.000000" class="guide line" /><text x="635.8525641025641" y="393.0" class="backwards" transform="rotate(270 635.852564 393.000000)">djangorestframework</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path stroke-width="3" d="M45.256410 370.191367 L95.038462 370.191367" class="reactive tooltip-trigger" /><path stroke-width="3" d="M20.365385 369.639048 L119.929487 369.639048" class="reactive tooltip-trigger" /><path stroke-width="3" d="M45.256410 369.152651 L95.038462 369.152651" class="reactive tooltip-trigger" /><path stroke-width="2" d="M70.147436 370.191367 L70.147436 369.802072" class="reactive tooltip-trigger" /><path stroke-width="2" d="M70.147436 369.152651 L70.147436 369.542393" class="reactive tooltip-trigger" /><rect x="20.365384615384613" y="369.5423925338499" height="0.25967901516878555" width="99.56410256410255" class="subtle-fill reactive tooltip-trigger" /><circle cx="70.14743589743588" cy="370.3820065042805" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="70.14743589743588" cy="294.97175480755476" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 17.7830
+Q1-1.5IQR: 18.2110
+Q1: 19.0850
+Median: 19.4510
+Q3: 19.6680
+Q3+1.5IQR: 20.5430
+Max: 187.0850</desc><desc class="x centered">70.14743589743588</desc><desc class="y centered">369.66550622137504</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path stroke-width="3" d="M158.397436 370.111637 L208.179487 370.111637" class="reactive tooltip-trigger" /><path stroke-width="3" d="M133.506410 369.691608 L233.070513 369.691608" class="reactive tooltip-trigger" /><path stroke-width="3" d="M158.397436 369.129935 L208.179487 369.129935" class="reactive tooltip-trigger" /><path stroke-width="2" d="M183.288462 370.111637 L183.288462 369.871557" class="reactive tooltip-trigger" /><path stroke-width="2" d="M183.288462 369.129935 L183.288462 369.574908" class="reactive tooltip-trigger" /><rect x="133.50641025641025" y="369.57490808925644" height="0.2966487548818577" width="99.56410256410255" class="subtle-fill reactive tooltip-trigger" /><circle cx="183.28846153846152" cy="370.1116374445608" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="183.28846153846152" cy="302.8828337097033" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 18.3900
+Q1-1.5IQR: 18.3900
+Q1: 18.9290
+Median: 19.3330
+Q3: 19.5950
+Q3+1.5IQR: 20.5940
+Max: 169.3240</desc><desc class="x centered">183.28846153846152</desc><desc class="y centered">369.6759290160386</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path stroke-width="3" d="M271.538462 369.373579 L321.320513 369.373579" class="reactive tooltip-trigger" /><path stroke-width="3" d="M246.647436 368.948204 L346.211538 368.948204" class="reactive tooltip-trigger" /><path stroke-width="3" d="M271.538462 368.418602 L321.320513 368.418602" class="reactive tooltip-trigger" /><path stroke-width="2" d="M296.429487 369.373579 L296.429487 369.083611" class="reactive tooltip-trigger" /><path stroke-width="2" d="M296.429487 368.418602 L296.429487 368.817697" class="reactive tooltip-trigger" /><rect x="246.64743589743588" y="368.8176965498583" height="0.26591487541327297" width="99.56410256410255" class="subtle-fill reactive tooltip-trigger" /><circle cx="296.4294871794872" cy="369.37357890290247" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="296.4294871794872" cy="294.37266685455313" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 20.0470
+Q1-1.5IQR: 20.0470
+Q1: 20.6980
+Median: 21.0020
+Q3: 21.2950
+Q3+1.5IQR: 22.1910
+Max: 188.4300</desc><desc class="x centered">296.4294871794872</desc><desc class="y centered">368.92833851816044</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path stroke-width="3" d="M384.679487 348.453606 L434.461538 348.453606" class="reactive tooltip-trigger" /><path stroke-width="3" d="M359.788462 347.276365 L459.352564 347.276365" class="reactive tooltip-trigger" /><path stroke-width="3" d="M384.679487 344.564656 L434.461538 344.564656" class="reactive tooltip-trigger" /><path stroke-width="2" d="M409.570513 348.453606 L409.570513 347.882468" class="reactive tooltip-trigger" /><path stroke-width="2" d="M409.570513 344.564656 L409.570513 346.561690" class="reactive tooltip-trigger" /><rect x="359.78846153846155" y="346.56169046964123" height="1.3207773603314195" width="99.56410256410255" class="subtle-fill reactive tooltip-trigger" /><circle cx="409.5705128205128" cy="348.45360576968636" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="409.5705128205128" cy="223.8891897628546" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 67.0140
+Q1-1.5IQR: 67.0140
+Q1: 68.2963
+Median: 69.6570
+Q3: 71.2615
+Q3+1.5IQR: 75.7450
+Max: 346.6710</desc><desc class="x centered">409.5705128205128</desc><desc class="y centered">346.94775699928005</desc><desc class="x_label" /></g></g></g><g class="series serie-4 color-4"><g class="boxes"><g class="box"><path stroke-width="3" d="M497.820513 328.608428 L547.602564 328.608428" class="reactive tooltip-trigger" /><path stroke-width="3" d="M472.929487 323.310619 L572.493590 323.310619" class="reactive tooltip-trigger" /><path stroke-width="3" d="M497.820513 315.969676 L547.602564 315.969676" class="reactive tooltip-trigger" /><path stroke-width="2" d="M522.711538 328.608428 L522.711538 324.526946" class="reactive tooltip-trigger" /><path stroke-width="2" d="M522.711538 315.969676 L522.711538 321.106688" class="reactive tooltip-trigger" /><rect x="472.9294871794872" y="321.1066883478867" height="3.420257707370638" width="99.56410256410255" class="subtle-fill reactive tooltip-trigger" /><circle cx="522.7115384615385" cy="328.6084276012632" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="522.7115384615385" cy="-19482.84487415067" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 111.5680
+Q1-1.5IQR: 111.5680
+Q1: 120.7312
+Median: 123.4620
+Q3: 128.4100
+Q3+1.5IQR: 139.9430
+Max: 44589.8530</desc><desc class="x centered">522.7115384615385</desc><desc class="y centered">322.70447150704865</desc><desc class="x_label" /></g></g></g><g class="series serie-5 color-5"><g class="boxes"><g class="box"><path stroke-width="3" d="M610.961538 161.920334 L660.743590 161.920334" class="reactive tooltip-trigger" /><path stroke-width="3" d="M586.070513 139.946055 L685.634615 139.946055" class="reactive tooltip-trigger" /><path stroke-width="3" d="M610.961538 7.351188 L660.743590 7.351188" class="reactive tooltip-trigger" /><path stroke-width="2" d="M635.852564 161.920334 L635.852564 154.425944" class="reactive tooltip-trigger" /><path stroke-width="2" d="M635.852564 7.351188 L635.852564 96.891898" class="reactive tooltip-trigger" /><rect x="586.0705128205128" y="96.89189762427674" height="57.53404623868718" width="99.56410256410255" class="subtle-fill reactive tooltip-trigger" /><circle cx="635.8525641025641" cy="161.92033371061274" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="635.8525641025641" cy="-487.62730486408634" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 485.7960
+Q1-1.5IQR: 485.7960
+Q1: 502.6215
+Median: 535.1300
+Q3: 631.7900
+Q3+1.5IQR: 832.8160
+Max: 1944.0820</desc><desc class="x centered">635.8525641025641</desc><desc class="y centered">112.1070835691201</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text x="400.0" y="26" class="title plot_title">Speed in Microseconds (us) of Serialize Invalid Data</text><text x="427.0" y="580.0" class="title">Trial</text><text x="0" y="261.0" class="title" transform="rotate(-90 0.000000 235.000000)">Duration</text></g><g transform="translate(74, 46)" class="plot overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g transform="translate(74, 46)" class="plot text-overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g transform="translate(74, 46)" class="plot tooltip-overlay"><g transform="translate(0 0)" style="opacity: 0" class="tooltip"><rect rx="0" ry="0" width="0" height="0" class="tooltip-box" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
diff --git a/docs/static/Serialize_Valid_Data.svg b/docs/static/Serialize_Valid_Data.svg
index 53d8cdae..916e81ff 100644
--- a/docs/static/Serialize_Valid_Data.svg
+++ b/docs/static/Serialize_Valid_Data.svg
@@ -1,8 +1,8 @@
 <?xml version='1.0' encoding='utf-8'?>
-<svg class="pygal-chart" id="chart-b89be339-91d7-4f3d-9d11-4388bff23f0c" viewBox="0 0 800 600" xmlns="http://www.w3.org/2000/svg"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-07-06--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
-#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c{background-color:rgba(249,249,249,1)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c path,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c line,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c rect,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .graph{fill:rgba(0,0,0,.87)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c text.no_data{fill:rgba(0,0,0,1)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .title{fill:rgba(0,0,0,1)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .legends .legend text{fill:rgba(0,0,0,.87)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis .line{stroke:rgba(0,0,0,1)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis text.major{fill:rgba(0,0,0,1)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis.y .guides:hover .guide.line,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .line-graph .axis.x .guides:hover .guide.line,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .stackedline-graph .axis.x .guides:hover .guide.line,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .ci{stroke:rgba(0,0,0,.87)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .reactive.active,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .ci .reactive.active{stroke-width:1.5}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .series text{fill:rgba(0,0,0,1)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .tooltip .label{fill:rgba(0,0,0,.87)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .tooltip .label{fill:rgba(0,0,0,.87)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .tooltip .value{font-size:1.5em}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .bound{font-size:.5em}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .color-0,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .color-1,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .color-2,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .color-3,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .color-4,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .color-4 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .color-5,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .color-5 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .text-overlay .color-0 text{fill:black}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .text-overlay .color-1 text{fill:black}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .text-overlay .color-2 text{fill:black}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .text-overlay .color-3 text{fill:black}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .text-overlay .color-4 text{fill:black}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .text-overlay .color-5 text{fill:black}
-#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c text.no_data{text-anchor:middle}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .guide.line{fill:none}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .centered{text-anchor:middle}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .title{text-anchor:middle}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .legends .legend text{fill-opacity:1}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis.x text{text-anchor:middle}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis.x:not(.web) text[transform]{text-anchor:start}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis.y text{text-anchor:end}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis.y text[transform].backwards{text-anchor:start}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis.y2 text{text-anchor:start}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis.y2 text[transform].backwards{text-anchor:end}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis .guide.line{stroke-dasharray:4,4}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis .major.guide.line{stroke-dasharray:6,6}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .horizontal .axis.y .guide.line,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .horizontal .axis.y2 .guide.line,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .vertical .axis.x .guide.line{opacity:0}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .horizontal .axis.always_show .guide.line,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis.y .guides:hover .guide.line,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis.y2 .guides:hover .guide.line,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis.x .guides:hover .guide.line{opacity:1}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .axis .guides:hover text{opacity:1}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .nofill{fill:none}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .subtle-fill{fill-opacity:.2}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .dot{stroke-width:1px;fill-opacity:1}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .dot.active{stroke-width:5px}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .dot.negative{fill:transparent}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c text,#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c tspan{stroke:none !important}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .series text.active{opacity:1}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .tooltip text{fill-opacity:1}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .showable{visibility:hidden}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .showable.shown{visibility:visible}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-b89be339-91d7-4f3d-9d11-4388bff23f0c .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
-.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['b89be339-91d7-4f3d-9d11-4388bff23f0c'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.7/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [25, 872], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Serialize Valid Data", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-protocol-api", "typic-object-api", "typic-functional-api", "pydantic", "marshmallow", "djangorestframework"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 25, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_serialize_valid_data[typic-protocol-api] - 2363 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_valid_data[typic-object-api] - 913 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_valid_data[typic-functional-api] - 2294 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_valid_data[pydantic] - 5005 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_valid_data[marshmallow] - 6502 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_valid_data[djangorestframework] - 1306 rounds"]}</script><script type="text/javascript">(function() {
+<svg xmlns="http://www.w3.org/2000/svg" id="chart-265eb2e9-9066-422c-84af-e4e497598ce6" class="pygal-chart" viewBox="0 0 800 600"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-09-28--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-265eb2e9-9066-422c-84af-e4e497598ce6{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
+#chart-265eb2e9-9066-422c-84af-e4e497598ce6{background-color:rgba(249,249,249,1)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 path,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 line,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 rect,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .graph{fill:rgba(0,0,0,.87)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 text.no_data{fill:rgba(0,0,0,1)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .title{fill:rgba(0,0,0,1)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .legends .legend text{fill:rgba(0,0,0,.87)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis .line{stroke:rgba(0,0,0,1)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis text.major{fill:rgba(0,0,0,1)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis.y .guides:hover .guide.line,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .line-graph .axis.x .guides:hover .guide.line,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .stackedline-graph .axis.x .guides:hover .guide.line,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .ci{stroke:rgba(0,0,0,.87)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .reactive.active,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .ci .reactive.active{stroke-width:1.5}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .series text{fill:rgba(0,0,0,1)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .tooltip .value{font-size:1.5em}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .bound{font-size:.5em}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .color-0,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .color-1,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .color-2,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .color-3,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .color-4,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .color-4 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .color-5,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .color-5 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .text-overlay .color-0 text{fill:black}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .text-overlay .color-1 text{fill:black}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .text-overlay .color-2 text{fill:black}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .text-overlay .color-3 text{fill:black}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .text-overlay .color-4 text{fill:black}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .text-overlay .color-5 text{fill:black}
+#chart-265eb2e9-9066-422c-84af-e4e497598ce6 text.no_data{text-anchor:middle}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .guide.line{fill:none}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .centered{text-anchor:middle}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .title{text-anchor:middle}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .legends .legend text{fill-opacity:1}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis.x text{text-anchor:middle}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis.x:not(.web) text[transform]{text-anchor:start}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis.y text{text-anchor:end}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis.y text[transform].backwards{text-anchor:start}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis.y2 text{text-anchor:start}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis.y2 text[transform].backwards{text-anchor:end}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis .guide.line{stroke-dasharray:4,4}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis .major.guide.line{stroke-dasharray:6,6}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .horizontal .axis.y .guide.line,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .horizontal .axis.y2 .guide.line,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .vertical .axis.x .guide.line{opacity:0}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .horizontal .axis.always_show .guide.line,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis.y .guides:hover .guide.line,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis.y2 .guides:hover .guide.line,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis.x .guides:hover .guide.line{opacity:1}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .axis .guides:hover text{opacity:1}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .nofill{fill:none}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .subtle-fill{fill-opacity:.2}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .dot{stroke-width:1px;fill-opacity:1}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .dot.active{stroke-width:5px}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .dot.negative{fill:transparent}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 text,#chart-265eb2e9-9066-422c-84af-e4e497598ce6 tspan{stroke:none !important}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .series text.active{opacity:1}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .tooltip text{fill-opacity:1}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .showable{visibility:hidden}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .showable.shown{visibility:visible}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-265eb2e9-9066-422c-84af-e4e497598ce6 .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
+.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['265eb2e9-9066-422c-84af-e4e497598ce6'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.8/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [19, 848], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Serialize Valid Data", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-protocol-api", "typic-object-api", "typic-functional-api", "pydantic", "marshmallow", "djangorestframework"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 19, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_serialize_valid_data[typic-protocol-api] - 1493 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_valid_data[typic-object-api] - 853 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_valid_data[typic-functional-api] - 1639 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_valid_data[pydantic] - 4028 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_valid_data[marshmallow] - 2923 rounds", "benchmark/test_benchmarks.py::test_benchmarks_serialize_valid_data[djangorestframework] - 1356 rounds"]}</script><script type="text/javascript">(function() {
   var $, get_translation, init, init_svg, matches, padding, r_translation, sibl, svg_ns, tooltip_timeout, xlink_ns;
 
   svg_ns = 'http://www.w3.org/2000/svg';
@@ -345,40 +345,40 @@
   window.pygal.init_svg = init_svg;
 
 }).call(this);
-</script></defs><title>Speed in Microseconds (us) of Serialize Valid Data</title><g class="graph custombox-graph vertical"><rect class="background" height="600" width="800" x="0" y="0" /><g class="plot" transform="translate(74, 46)"><rect class="background" height="378.0" width="706.0" x="0" y="0" /><g class="axis y always_show"><path class="line" d="M0.000000 378.000000 h706.000000" /><g class="guides"><path class="guide line" d="M0.000000 347.129371 h706.000000" /><text class="" x="-5" y="350.6293706293706">80</text><title>80</title></g><g class="guides"><path class="guide line" d="M0.000000 312.800064 h706.000000" /><text class="" x="-5" y="316.30006357279086">160</text><title>160</title></g><g class="guides"><path class="guide line" d="M0.000000 278.470757 h706.000000" /><text class="" x="-5" y="281.97075651621105">240</text><title>240</title></g><g class="guides"><path class="guide line" d="M0.000000 244.141449 h706.000000" /><text class="" x="-5" y="247.6414494596313">320</text><title>320</title></g><g class="guides"><path class="guide line" d="M0.000000 209.812142 h706.000000" /><text class="" x="-5" y="213.3121424030515">400</text><title>400</title></g><g class="guides"><path class="guide line" d="M0.000000 175.482835 h706.000000" /><text class="" x="-5" y="178.98283534647172">480</text><title>480</title></g><g class="guides"><path class="guide line" d="M0.000000 141.153528 h706.000000" /><text class="" x="-5" y="144.65352828989194">560</text><title>560</title></g><g class="guides"><path class="guide line" d="M0.000000 106.824221 h706.000000" /><text class="" x="-5" y="110.32422123331219">640</text><title>640</title></g><g class="guides"><path class="guide line" d="M0.000000 72.494914 h706.000000" /><text class="" x="-5" y="75.99491417673238">720</text><title>720</title></g><g class="guides"><path class="guide line" d="M0.000000 38.165607 h706.000000" /><text class="" x="-5" y="41.66560712015263">800</text><title>800</title></g></g><g class="axis x"><path class="line" d="M0.000000 0.000000 v378.000000" /><g class="guides"><path class="guide line" d="M70.147436 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 70.147436 393.000000)" x="70.1474358974359" y="393.0">typic-protocol-api</text></g><g class="guides"><path class="guide line" d="M183.288462 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 183.288462 393.000000)" x="183.28846153846155" y="393.0">typic-object-api</text></g><g class="guides"><path class="guide line" d="M296.429487 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 296.429487 393.000000)" x="296.4294871794872" y="393.0">typic-functional-api</text></g><g class="guides"><path class="guide line" d="M409.570513 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 409.570513 393.000000)" x="409.5705128205129" y="393.0">pydantic</text></g><g class="guides"><path class="guide line" d="M522.711538 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 522.711538 393.000000)" x="522.7115384615385" y="393.0">marshmallow</text></g><g class="guides"><path class="guide line" d="M635.852564 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 635.852564 393.000000)" x="635.8525641025641" y="393.0">djangorestframework</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M45.256410 370.443261 L95.038462 370.443261" stroke-width="3" /><path class="reactive tooltip-trigger" d="M20.365385 369.419390 L119.929487 369.419390" stroke-width="3" /><path class="reactive tooltip-trigger" d="M45.256410 366.352066 L95.038462 366.352066" stroke-width="3" /><path class="reactive tooltip-trigger" d="M70.147436 370.443261 L70.147436 370.125715" stroke-width="2" /><path class="reactive tooltip-trigger" d="M70.147436 366.352066 L70.147436 368.621341" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="1.5043746023218318" width="99.56410256410255" x="20.365384615384613" y="368.62134059146604" /><circle class="subtle-fill reactive tooltip-trigger" cx="70.14743589743588" cy="370.44326128441816" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="70.14743589743588" cy="322.1921328670396" r="3" /><desc class="value">Min: 25.6700
-Q1-1.5IQR: 25.6700
-Q1: 26.4100
-Median: 28.0560
-Q3: 29.9157
-Q3+1.5IQR: 35.2040
-Max: 138.1130</desc><desc class="x centered">70.14743589743588</desc><desc class="y centered">368.9923545773824</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M158.397436 370.311093 L208.179487 370.311093" stroke-width="3" /><path class="reactive tooltip-trigger" d="M133.506410 369.026748 L233.070513 369.026748" stroke-width="3" /><path class="reactive tooltip-trigger" d="M158.397436 360.368039 L208.179487 360.368039" stroke-width="3" /><path class="reactive tooltip-trigger" d="M183.288462 370.311093 L183.288462 369.224142" stroke-width="2" /><path class="reactive tooltip-trigger" d="M183.288462 360.368039 L183.288462 365.709143" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="3.514999205749973" width="99.56410256410255" x="133.50641025641025" y="365.7091425615698" /><circle class="subtle-fill reactive tooltip-trigger" cx="183.28846153846152" cy="370.31109345198644" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="183.28846153846152" cy="288.79529561332356" r="3" /><desc class="value">Min: 25.9780
-Q1-1.5IQR: 25.9780
-Q1: 28.5110
-Median: 28.9710
-Q3: 36.7023
-Q3+1.5IQR: 49.1490
-Max: 215.9400</desc><desc class="x centered">183.28846153846152</desc><desc class="y centered">366.9278329625994</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M271.538462 370.281055 L321.320513 370.281055" stroke-width="3" /><path class="reactive tooltip-trigger" d="M246.647436 369.198609 L346.211538 369.198609" stroke-width="3" /><path class="reactive tooltip-trigger" d="M271.538462 366.920216 L321.320513 366.920216" stroke-width="3" /><path class="reactive tooltip-trigger" d="M296.429487 370.281055 L296.429487 369.747664" stroke-width="2" /><path class="reactive tooltip-trigger" d="M296.429487 366.920216 L296.429487 368.635394" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="1.1122695484288556" width="99.56410256410255" x="246.64743589743588" y="368.63539415137114" /><circle class="subtle-fill reactive tooltip-trigger" cx="296.4294871794872" cy="370.2810553081133" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="296.4294871794872" cy="269.2383184996627" r="3" /><desc class="value">Min: 26.0480
-Q1-1.5IQR: 26.0480
-Q1: 27.2910
-Median: 28.5705
-Q3: 29.8830
-Q3+1.5IQR: 33.8800
-Max: 261.5150</desc><desc class="x centered">296.4294871794872</desc><desc class="y centered">368.9565877304157</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M384.679487 355.345661 L434.461538 355.345661" stroke-width="3" /><path class="reactive tooltip-trigger" d="M359.788462 353.075636 L459.352564 353.075636" stroke-width="3" /><path class="reactive tooltip-trigger" d="M384.679487 346.741020 L434.461538 346.741020" stroke-width="3" /><path class="reactive tooltip-trigger" d="M409.570513 355.345661 L409.570513 353.618468" stroke-width="2" /><path class="reactive tooltip-trigger" d="M409.570513 346.741020 L409.570513 350.869334" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="2.7491338210344907" width="99.56410256410255" x="359.78846153846155" y="350.8693340747579" /><circle class="subtle-fill reactive tooltip-trigger" cx="409.5705128205128" cy="355.34566115744184" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="409.5705128205128" cy="211.53375715224274" r="3" /><desc class="value">Min: 60.8530
-Q1-1.5IQR: 60.8530
-Q1: 64.8780
-Median: 66.1430
-Q3: 71.2845
-Q3+1.5IQR: 80.9050
-Max: 395.9880</desc><desc class="x centered">409.5705128205128</desc><desc class="y centered">351.930023839945</desc><desc class="x_label" /></g></g></g><g class="series serie-4 color-4"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M497.820513 351.415814 L547.602564 351.415814" stroke-width="3" /><path class="reactive tooltip-trigger" d="M472.929487 349.427503 L572.493590 349.427503" stroke-width="3" /><path class="reactive tooltip-trigger" d="M497.820513 342.517228 L547.602564 342.517228" stroke-width="3" /><path class="reactive tooltip-trigger" d="M522.711538 351.415814 L522.711538 350.082978" stroke-width="2" /><path class="reactive tooltip-trigger" d="M522.711538 342.517228 L522.711538 347.067149" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="3.015829625191145" width="99.56410256410255" x="472.9294871794872" y="347.06714876029326" /><circle class="subtle-fill reactive tooltip-trigger" cx="522.7115384615385" cy="351.4158137317072" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="522.7115384615385" cy="232.26994596329584" r="3" /><desc class="value">Min: 70.0110
-Q1-1.5IQR: 70.0110
-Q1: 73.1170
-Median: 74.6445
-Q3: 80.1450
-Q3+1.5IQR: 90.7480
-Max: 347.6650</desc><desc class="x centered">522.7115384615385</desc><desc class="y centered">348.1021344565244</desc><desc class="x_label" /></g></g></g><g class="series serie-5 color-5"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M610.961538 161.740814 L660.743590 161.740814" stroke-width="3" /><path class="reactive tooltip-trigger" d="M586.070513 133.025421 L685.634615 133.025421" stroke-width="3" /><path class="reactive tooltip-trigger" d="M610.961538 7.341322 L660.743590 7.341322" stroke-width="3" /><path class="reactive tooltip-trigger" d="M635.852564 161.740814 L635.852564 152.078401" stroke-width="2" /><path class="reactive tooltip-trigger" d="M635.852564 7.341322 L635.852564 94.809822" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="57.26857914831666" width="99.56410256410255" x="586.0705128205128" y="94.80982199582706" /><circle class="subtle-fill reactive tooltip-trigger" cx="635.8525641025641" cy="161.74081373141325" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="635.8525641025641" cy="-934.0746980295116" r="3" /><desc class="value">Min: 512.0240
-Q1-1.5IQR: 512.0240
-Q1: 534.5410
-Median: 578.9415
-Q3: 667.9980
-Q3+1.5IQR: 871.8320
-Max: 3065.6800</desc><desc class="x centered">635.8525641025641</desc><desc class="y centered">109.79915607101532</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text class="title plot_title" x="400.0" y="26">Speed in Microseconds (us) of Serialize Valid Data</text><text class="title" x="427.0" y="580.0">Trial</text><text class="title" transform="rotate(-90 0.000000 235.000000)" x="0" y="261.0">Duration</text></g><g class="plot overlay" transform="translate(74, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g class="plot text-overlay" transform="translate(74, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g class="plot tooltip-overlay" transform="translate(74, 46)"><g class="tooltip" style="opacity: 0" transform="translate(0 0)"><rect class="tooltip-box" height="0" rx="0" ry="0" width="0" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
+</script></defs><title>Speed in Microseconds (us) of Serialize Valid Data</title><g class="graph custombox-graph vertical"><rect x="0" y="0" width="800" height="600" class="background" /><g transform="translate(74, 46)" class="plot"><rect x="0" y="0" width="706.0" height="378.0" class="background" /><g class="axis y always_show"><path d="M0.000000 378.000000 h706.000000" class="line" /><g class="guides"><path d="M0.000000 343.986313 h706.000000" class="guide line" /><text x="-5" y="347.4863134453002" class="">80</text><title>80</title></g><g class="guides"><path d="M0.000000 308.911617 h706.000000" class="guide line" /><text x="-5" y="312.4116173332096" class="">160</text><title>160</title></g><g class="guides"><path d="M0.000000 273.836921 h706.000000" class="guide line" /><text x="-5" y="277.33692122111904" class="">240</text><title>240</title></g><g class="guides"><path d="M0.000000 238.762225 h706.000000" class="guide line" /><text x="-5" y="242.26222510902852" class="">320</text><title>320</title></g><g class="guides"><path d="M0.000000 203.687529 h706.000000" class="guide line" /><text x="-5" y="207.18752899693794" class="">400</text><title>400</title></g><g class="guides"><path d="M0.000000 168.612833 h706.000000" class="guide line" /><text x="-5" y="172.1128328848474" class="">480</text><title>480</title></g><g class="guides"><path d="M0.000000 133.538137 h706.000000" class="guide line" /><text x="-5" y="137.0381367727568" class="">560</text><title>560</title></g><g class="guides"><path d="M0.000000 98.463441 h706.000000" class="guide line" /><text x="-5" y="101.96344066066627" class="">640</text><title>640</title></g><g class="guides"><path d="M0.000000 63.388745 h706.000000" class="guide line" /><text x="-5" y="66.88874454857569" class="">720</text><title>720</title></g><g class="guides"><path d="M0.000000 28.314048 h706.000000" class="guide line" /><text x="-5" y="31.814048436485166" class="">800</text><title>800</title></g></g><g class="axis x"><path d="M0.000000 0.000000 v378.000000" class="line" /><g class="guides"><path d="M70.147436 0.000000 v378.000000" class="guide line" /><text x="70.1474358974359" y="393.0" class="backwards" transform="rotate(270 70.147436 393.000000)">typic-protocol-api</text></g><g class="guides"><path d="M183.288462 0.000000 v378.000000" class="guide line" /><text x="183.28846153846155" y="393.0" class="backwards" transform="rotate(270 183.288462 393.000000)">typic-object-api</text></g><g class="guides"><path d="M296.429487 0.000000 v378.000000" class="guide line" /><text x="296.4294871794872" y="393.0" class="backwards" transform="rotate(270 296.429487 393.000000)">typic-functional-api</text></g><g class="guides"><path d="M409.570513 0.000000 v378.000000" class="guide line" /><text x="409.5705128205129" y="393.0" class="backwards" transform="rotate(270 409.570513 393.000000)">pydantic</text></g><g class="guides"><path d="M522.711538 0.000000 v378.000000" class="guide line" /><text x="522.7115384615385" y="393.0" class="backwards" transform="rotate(270 522.711538 393.000000)">marshmallow</text></g><g class="guides"><path d="M635.852564 0.000000 v378.000000" class="guide line" /><text x="635.8525641025641" y="393.0" class="backwards" transform="rotate(270 635.852564 393.000000)">djangorestframework</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path stroke-width="3" d="M45.256410 370.462448 L95.038462 370.462448" class="reactive tooltip-trigger" /><path stroke-width="3" d="M20.365385 369.924928 L119.929487 369.924928" class="reactive tooltip-trigger" /><path stroke-width="3" d="M45.256410 368.732827 L95.038462 368.732827" class="reactive tooltip-trigger" /><path stroke-width="2" d="M70.147436 370.462448 L70.147436 370.116304" class="reactive tooltip-trigger" /><path stroke-width="2" d="M70.147436 368.732827 L70.147436 369.563659" class="reactive tooltip-trigger" /><rect x="20.365384615384613" y="369.5636587176491" height="0.5526456803921747" width="99.56410256410255" class="subtle-fill reactive tooltip-trigger" /><circle cx="70.14743589743588" cy="370.4624478059002" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="70.14743589743588" cy="318.82548018901724" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 19.6120
+Q1-1.5IQR: 19.6120
+Q1: 20.4015
+Median: 20.8380
+Q3: 21.6620
+Q3+1.5IQR: 23.5570
+Max: 137.3880</desc><desc class="x centered">70.14743589743588</desc><desc class="y centered">369.7600331723997</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path stroke-width="3" d="M158.397436 370.164313 L208.179487 370.164313" class="reactive tooltip-trigger" /><path stroke-width="3" d="M133.506410 369.961318 L233.070513 369.961318" class="reactive tooltip-trigger" /><path stroke-width="3" d="M158.397436 369.171699 L208.179487 369.171699" class="reactive tooltip-trigger" /><path stroke-width="2" d="M183.288462 370.164313 L183.288462 370.021384" class="reactive tooltip-trigger" /><path stroke-width="2" d="M183.288462 369.171699 L183.288462 369.700450" class="reactive tooltip-trigger" /><rect x="133.50641025641025" y="369.7004500321222" height="0.3209334695001189" width="99.56410256410255" class="subtle-fill reactive tooltip-trigger" /><circle cx="183.28846153846152" cy="370.1643128884229" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="183.28846153846152" cy="322.5881182150168" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 20.2920
+Q1-1.5IQR: 20.2920
+Q1: 20.6180
+Median: 20.7550
+Q3: 21.3500
+Q3+1.5IQR: 22.5560
+Max: 128.8060</desc><desc class="x centered">183.28846153846152</desc><desc class="y centered">369.8038326990553</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path stroke-width="3" d="M271.538462 369.935889 L321.320513 369.935889" class="reactive tooltip-trigger" /><path stroke-width="3" d="M246.647436 369.563659 L346.211538 369.563659" class="reactive tooltip-trigger" /><path stroke-width="3" d="M271.538462 369.113826 L321.320513 369.113826" class="reactive tooltip-trigger" /><path stroke-width="2" d="M296.429487 369.935889 L296.429487 369.657374" class="reactive tooltip-trigger" /><path stroke-width="2" d="M296.429487 369.113826 L296.429487 369.448351" class="reactive tooltip-trigger" /><rect x="246.64743589743588" y="369.44835065476457" height="0.2090232667196119" width="99.56410256410255" class="subtle-fill reactive tooltip-trigger" /><circle cx="296.4294871794872" cy="369.93588892978454" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="296.4294871794872" cy="328.25443537191177" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 20.8130
+Q1-1.5IQR: 20.8130
+Q1: 21.4482
+Median: 21.6620
+Q3: 21.9250
+Q3+1.5IQR: 22.6880
+Max: 115.8820</desc><desc class="x centered">296.4294871794872</desc><desc class="y centered">369.54381959277157</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path stroke-width="3" d="M384.679487 354.232071 L434.461538 354.232071" class="reactive tooltip-trigger" /><path stroke-width="3" d="M359.788462 352.097337 L459.352564 352.097337" class="reactive tooltip-trigger" /><path stroke-width="3" d="M384.679487 349.370718 L434.461538 349.370718" class="reactive tooltip-trigger" /><path stroke-width="2" d="M409.570513 354.232071 L409.570513 352.719036" class="reactive tooltip-trigger" /><path stroke-width="2" d="M409.570513 349.370718 L409.570513 351.380717" class="reactive tooltip-trigger" /><rect x="359.78846153846155" y="351.3807170361079" height="1.338318874057677" width="99.56410256410255" class="subtle-fill reactive tooltip-trigger" /><circle cx="409.5705128205128" cy="354.2320706135008" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="409.5705128205128" cy="221.15691982883973" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 56.6310
+Q1-1.5IQR: 56.6310
+Q1: 60.0820
+Median: 61.5000
+Q3: 63.1345
+Q3+1.5IQR: 67.7190
+Max: 360.1550</desc><desc class="x centered">409.5705128205128</desc><desc class="y centered">351.95997564258585</desc><desc class="x_label" /></g></g></g><g class="series serie-4 color-4"><g class="boxes"><g class="box"><path stroke-width="3" d="M497.820513 328.054510 L547.602564 328.054510" class="reactive tooltip-trigger" /><path stroke-width="3" d="M472.929487 324.109922 L572.493590 324.109922" class="reactive tooltip-trigger" /><path stroke-width="3" d="M497.820513 306.360372 L547.602564 306.360372" class="reactive tooltip-trigger" /><path stroke-width="2" d="M522.711538 328.054510 L522.711538 326.028507" class="reactive tooltip-trigger" /><path stroke-width="2" d="M522.711538 306.360372 L522.711538 318.162678" class="reactive tooltip-trigger" /><rect x="472.9294871794872" y="318.1626780413794" height="7.865829428339623" width="99.56410256410255" class="subtle-fill reactive tooltip-trigger" /><circle cx="522.7115384615385" cy="328.054509603886" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="522.7115384615385" cy="-21810.22996195644" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 116.3380
+Q1-1.5IQR: 116.3380
+Q1: 120.9590
+Median: 125.3350
+Q3: 138.8997
+Q3+1.5IQR: 165.8190
+Max: 50610.3680</desc><desc class="x centered">522.7115384615385</desc><desc class="y centered">320.5431976664709</desc><desc class="x_label" /></g></g></g><g class="series serie-5 color-5"><g class="boxes"><g class="box"><path stroke-width="3" d="M610.961538 181.129238 L660.743590 181.129238" class="reactive tooltip-trigger" /><path stroke-width="3" d="M586.070513 141.972505 L685.634615 141.972505" class="reactive tooltip-trigger" /><path stroke-width="3" d="M610.961538 7.413914 L660.743590 7.413914" class="reactive tooltip-trigger" /><path stroke-width="2" d="M635.852564 181.129238 L635.852564 160.480545" class="reactive tooltip-trigger" /><path stroke-width="2" d="M635.852564 7.413914 L635.852564 99.365518" class="reactive tooltip-trigger" /><rect x="586.0705128205128" y="99.3655180012799" height="61.11502737294555" width="99.56410256410255" class="subtle-fill reactive tooltip-trigger" /><circle cx="635.8525641025641" cy="181.1292381924143" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="635.8525641025641" cy="-592.8789876587302" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 451.4520
+Q1-1.5IQR: 451.4520
+Q1: 498.5485
+Median: 540.7625
+Q3: 637.9425
+Q3+1.5IQR: 847.6700
+Max: 2216.8460</desc><desc class="x centered">635.8525641025641</desc><desc class="y centered">118.07234411228012</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text x="400.0" y="26" class="title plot_title">Speed in Microseconds (us) of Serialize Valid Data</text><text x="427.0" y="580.0" class="title">Trial</text><text x="0" y="261.0" class="title" transform="rotate(-90 0.000000 235.000000)">Duration</text></g><g transform="translate(74, 46)" class="plot overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g transform="translate(74, 46)" class="plot text-overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g transform="translate(74, 46)" class="plot tooltip-overlay"><g transform="translate(0 0)" style="opacity: 0" class="tooltip"><rect rx="0" ry="0" width="0" height="0" class="tooltip-box" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
diff --git a/docs/static/Translate_from_Arbitrary_Class.svg b/docs/static/Translate_from_Arbitrary_Class.svg
index 35082555..a27bbc58 100644
--- a/docs/static/Translate_from_Arbitrary_Class.svg
+++ b/docs/static/Translate_from_Arbitrary_Class.svg
@@ -1,8 +1,8 @@
 <?xml version='1.0' encoding='utf-8'?>
-<svg class="pygal-chart" id="chart-251c3984-c981-4c21-8f7d-71be3f3467e4" viewBox="0 0 800 600" xmlns="http://www.w3.org/2000/svg"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-07-06--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-251c3984-c981-4c21-8f7d-71be3f3467e4{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
-#chart-251c3984-c981-4c21-8f7d-71be3f3467e4{background-color:rgba(249,249,249,1)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 path,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 line,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 rect,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .graph{fill:rgba(0,0,0,.87)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 text.no_data{fill:rgba(0,0,0,1)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .title{fill:rgba(0,0,0,1)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .legends .legend text{fill:rgba(0,0,0,.87)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis .line{stroke:rgba(0,0,0,1)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis text.major{fill:rgba(0,0,0,1)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis.y .guides:hover .guide.line,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .line-graph .axis.x .guides:hover .guide.line,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .stackedline-graph .axis.x .guides:hover .guide.line,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .ci{stroke:rgba(0,0,0,.87)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .reactive.active,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .ci .reactive.active{stroke-width:1.5}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .series text{fill:rgba(0,0,0,1)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .tooltip .value{font-size:1.5em}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .bound{font-size:.5em}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .color-0,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .color-1,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .color-2,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .color-3,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .text-overlay .color-0 text{fill:black}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .text-overlay .color-1 text{fill:black}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .text-overlay .color-2 text{fill:black}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .text-overlay .color-3 text{fill:black}
-#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 text.no_data{text-anchor:middle}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .guide.line{fill:none}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .centered{text-anchor:middle}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .title{text-anchor:middle}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .legends .legend text{fill-opacity:1}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis.x text{text-anchor:middle}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis.x:not(.web) text[transform]{text-anchor:start}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis.y text{text-anchor:end}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis.y text[transform].backwards{text-anchor:start}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis.y2 text{text-anchor:start}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis.y2 text[transform].backwards{text-anchor:end}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis .guide.line{stroke-dasharray:4,4}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis .major.guide.line{stroke-dasharray:6,6}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .horizontal .axis.y .guide.line,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .horizontal .axis.y2 .guide.line,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .vertical .axis.x .guide.line{opacity:0}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .horizontal .axis.always_show .guide.line,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis.y .guides:hover .guide.line,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis.y2 .guides:hover .guide.line,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis.x .guides:hover .guide.line{opacity:1}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .axis .guides:hover text{opacity:1}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .nofill{fill:none}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .subtle-fill{fill-opacity:.2}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .dot{stroke-width:1px;fill-opacity:1}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .dot.active{stroke-width:5px}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .dot.negative{fill:transparent}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 text,#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 tspan{stroke:none !important}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .series text.active{opacity:1}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .tooltip text{fill-opacity:1}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .showable{visibility:hidden}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .showable.shown{visibility:visible}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-251c3984-c981-4c21-8f7d-71be3f3467e4 .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
-.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['251c3984-c981-4c21-8f7d-71be3f3467e4'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.7/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [33, 84], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Translate from Arbitrary Class", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-protocol-api", "typic-functional-api", "pydantic", "typic-object-api"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 33, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_translate_from_class[typic-protocol-api] - 68 rounds", "benchmark/test_benchmarks.py::test_benchmarks_translate_from_class[typic-functional-api] - 61 rounds", "benchmark/test_benchmarks.py::test_benchmarks_translate_from_class[pydantic] - 6937 rounds", "benchmark/test_benchmarks.py::test_benchmarks_translate_from_class[typic-object-api] - 1112 rounds"]}</script><script type="text/javascript">(function() {
+<svg xmlns="http://www.w3.org/2000/svg" id="chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49" class="pygal-chart" viewBox="0 0 800 600"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-09-28--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
+#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49{background-color:rgba(249,249,249,1)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 path,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 line,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 rect,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .graph{fill:rgba(0,0,0,.87)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 text.no_data{fill:rgba(0,0,0,1)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .title{fill:rgba(0,0,0,1)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .legends .legend text{fill:rgba(0,0,0,.87)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis .line{stroke:rgba(0,0,0,1)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis text.major{fill:rgba(0,0,0,1)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis.y .guides:hover .guide.line,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .line-graph .axis.x .guides:hover .guide.line,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .stackedline-graph .axis.x .guides:hover .guide.line,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .ci{stroke:rgba(0,0,0,.87)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .reactive.active,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .ci .reactive.active{stroke-width:1.5}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .series text{fill:rgba(0,0,0,1)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .tooltip .value{font-size:1.5em}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .bound{font-size:.5em}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .color-0,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .color-1,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .color-2,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .color-3,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .text-overlay .color-0 text{fill:black}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .text-overlay .color-1 text{fill:black}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .text-overlay .color-2 text{fill:black}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .text-overlay .color-3 text{fill:black}
+#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 text.no_data{text-anchor:middle}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .guide.line{fill:none}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .centered{text-anchor:middle}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .title{text-anchor:middle}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .legends .legend text{fill-opacity:1}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis.x text{text-anchor:middle}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis.x:not(.web) text[transform]{text-anchor:start}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis.y text{text-anchor:end}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis.y text[transform].backwards{text-anchor:start}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis.y2 text{text-anchor:start}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis.y2 text[transform].backwards{text-anchor:end}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis .guide.line{stroke-dasharray:4,4}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis .major.guide.line{stroke-dasharray:6,6}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .horizontal .axis.y .guide.line,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .horizontal .axis.y2 .guide.line,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .vertical .axis.x .guide.line{opacity:0}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .horizontal .axis.always_show .guide.line,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis.y .guides:hover .guide.line,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis.y2 .guides:hover .guide.line,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis.x .guides:hover .guide.line{opacity:1}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .axis .guides:hover text{opacity:1}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .nofill{fill:none}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .subtle-fill{fill-opacity:.2}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .dot{stroke-width:1px;fill-opacity:1}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .dot.active{stroke-width:5px}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .dot.negative{fill:transparent}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 text,#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 tspan{stroke:none !important}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .series text.active{opacity:1}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .tooltip text{fill-opacity:1}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .showable{visibility:hidden}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .showable.shown{visibility:visible}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-f05bb963-5ab2-4b04-98cd-f43ec91dbb49 .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
+.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['f05bb963-5ab2-4b04-98cd-f43ec91dbb49'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.8/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [32, 68], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Translate from Arbitrary Class", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-functional-api", "typic-protocol-api", "pydantic", "typic-object-api"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 32, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_translate_from_class[typic-functional-api] - 62 rounds", "benchmark/test_benchmarks.py::test_benchmarks_translate_from_class[typic-protocol-api] - 67 rounds", "benchmark/test_benchmarks.py::test_benchmarks_translate_from_class[pydantic] - 7231 rounds", "benchmark/test_benchmarks.py::test_benchmarks_translate_from_class[typic-object-api] - 1162 rounds"]}</script><script type="text/javascript">(function() {
   var $, get_translation, init, init_svg, matches, padding, r_translation, sibl, svg_ns, tooltip_timeout, xlink_ns;
 
   svg_ns = 'http://www.w3.org/2000/svg';
@@ -345,28 +345,28 @@
   window.pygal.init_svg = init_svg;
 
 }).call(this);
-</script></defs><title>Speed in Microseconds (us) of Translate from Arbitrary Class</title><g class="graph custombox-graph vertical"><rect class="background" height="600" width="800" x="0" y="0" /><g class="plot" transform="translate(68, 46)"><rect class="background" height="378.0" width="712.0" x="0" y="0" /><g class="axis y always_show"><path class="line" d="M0.000000 378.000000 h712.000000" /><g class="guides"><path class="guide line" d="M0.000000 349.350679 h712.000000" /><text class="" x="-5" y="352.85067873303166">36</text><title>36</title></g><g class="guides"><path class="major guide line" d="M0.000000 320.843891 h712.000000" /><text class="major" x="-5" y="324.3438914027149">40</text><title>40</title></g><g class="guides"><path class="guide line" d="M0.000000 292.337104 h712.000000" /><text class="" x="-5" y="295.8371040723982">44</text><title>44</title></g><g class="guides"><path class="guide line" d="M0.000000 263.830317 h712.000000" /><text class="" x="-5" y="267.33031674208144">48</text><title>48</title></g><g class="guides"><path class="guide line" d="M0.000000 235.323529 h712.000000" /><text class="" x="-5" y="238.8235294117647">52</text><title>52</title></g><g class="guides"><path class="guide line" d="M0.000000 206.816742 h712.000000" /><text class="" x="-5" y="210.31674208144796">56</text><title>56</title></g><g class="guides"><path class="major guide line" d="M0.000000 178.309955 h712.000000" /><text class="major" x="-5" y="181.80995475113122">60</text><title>60</title></g><g class="guides"><path class="guide line" d="M0.000000 149.803167 h712.000000" /><text class="" x="-5" y="153.3031674208145">64</text><title>64</title></g><g class="guides"><path class="guide line" d="M0.000000 121.296380 h712.000000" /><text class="" x="-5" y="124.79638009049773">68</text><title>68</title></g><g class="guides"><path class="guide line" d="M0.000000 92.789593 h712.000000" /><text class="" x="-5" y="96.289592760181">72</text><title>72</title></g><g class="guides"><path class="guide line" d="M0.000000 64.282805 h712.000000" /><text class="" x="-5" y="67.78280542986425">76</text><title>76</title></g><g class="guides"><path class="major guide line" d="M0.000000 35.776018 h712.000000" /><text class="major" x="-5" y="39.276018099547514">80</text><title>80</title></g><g class="guides"><path class="guide line" d="M0.000000 7.269231 h712.000000" /><text class="" x="-5" y="10.769230769230774">84</text><title>84</title></g></g><g class="axis x"><path class="line" d="M0.000000 0.000000 v378.000000" /><g class="guides"><path class="guide line" d="M99.269231 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 99.269231 393.000000)" x="99.26923076923076" y="393.0">typic-protocol-api</text></g><g class="guides"><path class="guide line" d="M270.423077 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 270.423077 393.000000)" x="270.4230769230769" y="393.0">typic-functional-api</text></g><g class="guides"><path class="guide line" d="M441.576923 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 441.576923 393.000000)" x="441.5769230769231" y="393.0">pydantic</text></g><g class="guides"><path class="guide line" d="M612.730769 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 612.730769 393.000000)" x="612.7307692307692" y="393.0">typic-object-api</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M61.615385 367.951357 L136.923077 367.951357" stroke-width="3" /><path class="reactive tooltip-trigger" d="M23.961538 363.814310 L174.576923 363.814310" stroke-width="3" /><path class="reactive tooltip-trigger" d="M61.615385 203.153620 L136.923077 203.153620" stroke-width="3" /><path class="reactive tooltip-trigger" d="M99.269231 367.951357 L99.269231 365.474830" stroke-width="2" /><path class="reactive tooltip-trigger" d="M99.269231 203.153620 L99.269231 302.585294" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="62.88953619952082" width="150.61538461538458" x="23.96153846153846" y="302.58529411154365" /><circle class="subtle-fill reactive tooltip-trigger" cx="99.26923076923075" cy="367.95135747540115" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="99.26923076923075" cy="-184.8166289598479" r="3" /><desc class="value">Min: 33.3900
-Q1-1.5IQR: 33.3900
-Q1: 33.7375
-Median: 33.9705
-Q3: 42.5620
-Q3+1.5IQR: 56.5140
-Max: 110.9530</desc><desc class="x centered">99.26923076923075</desc><desc class="y centered">320.59588235080855</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M232.769231 366.903733 L308.076923 366.903733" stroke-width="3" /><path class="reactive tooltip-trigger" d="M195.115385 362.549321 L345.730769 362.549321" stroke-width="3" /><path class="reactive tooltip-trigger" d="M232.769231 352.208484 L308.076923 352.208484" stroke-width="3" /><path class="reactive tooltip-trigger" d="M270.423077 366.903733 L270.423077 364.427206" stroke-width="2" /><path class="reactive tooltip-trigger" d="M270.423077 352.208484 L270.423077 359.976584" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="4.450622154075347" width="150.61538461538458" x="195.11538461538458" y="359.976583724536" /><circle class="subtle-fill reactive tooltip-trigger" cx="270.4230769230769" cy="366.9037330302885" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="270.4230769230769" cy="167.9548642483284" r="3" /><desc class="value">Min: 33.5370
-Q1-1.5IQR: 33.5370
-Q1: 33.8845
-Median: 34.1480
-Q3: 34.5090
-Q3+1.5IQR: 35.5990
-Max: 61.4530</desc><desc class="x centered">270.4230769230769</desc><desc class="y centered">361.2130656108275</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M403.923077 321.271493 L479.230769 321.271493" stroke-width="3" /><path class="reactive tooltip-trigger" d="M366.269231 306.120136 L516.884615 306.120136" stroke-width="3" /><path class="reactive tooltip-trigger" d="M403.923077 255.135747 L479.230769 255.135747" stroke-width="3" /><path class="reactive tooltip-trigger" d="M441.576923 321.271493 L441.576923 311.201471" stroke-width="2" /><path class="reactive tooltip-trigger" d="M441.576923 255.135747 L441.576923 288.786227" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="22.415243200030602" width="150.61538461538458" x="366.2692307692307" y="288.78622738607174" /><circle class="subtle-fill reactive tooltip-trigger" cx="441.576923076923" cy="321.2714932082034" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="441.576923076923" cy="-3681.8796380110857" r="3" /><desc class="value">Min: 39.9400
-Q1-1.5IQR: 39.9400
-Q1: 41.3530
-Median: 42.0660
-Q3: 44.4982
-Q3+1.5IQR: 49.2200
-Max: 601.6520</desc><desc class="x centered">441.576923076923</desc><desc class="y centered">296.503014706709</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M575.076923 158.761425 L650.384615 158.761425" stroke-width="3" /><path class="reactive tooltip-trigger" d="M537.423077 110.346210 L688.038462 110.346210" stroke-width="3" /><path class="reactive tooltip-trigger" d="M575.076923 13.854299 L650.384615 13.854299" stroke-width="3" /><path class="reactive tooltip-trigger" d="M612.730769 158.761425 L612.730769 121.257183" stroke-width="2" /><path class="reactive tooltip-trigger" d="M612.730769 13.854299 L612.730769 78.913914" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="42.34326922756986" width="150.61538461538458" x="537.4230769230768" y="78.9139140353243" /><circle class="subtle-fill reactive tooltip-trigger" cx="612.730769230769" cy="158.7614253585252" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="612.730769230769" cy="-3644.649773740892" r="3" /><desc class="value">Min: 62.7430
-Q1-1.5IQR: 62.7430
-Q1: 68.0055
-Median: 69.5365
-Q3: 73.9470
-Q3+1.5IQR: 83.0760
-Max: 596.4280</desc><desc class="x centered">612.730769230769</desc><desc class="y centered">96.62660634006278</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text class="title plot_title" x="400.0" y="26">Speed in Microseconds (us) of Translate from Arbitrary Class</text><text class="title" x="424.0" y="580.0">Trial</text><text class="title" transform="rotate(-90 0.000000 235.000000)" x="0" y="261.0">Duration</text></g><g class="plot overlay" transform="translate(68, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /></g><g class="plot text-overlay" transform="translate(68, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /></g><g class="plot tooltip-overlay" transform="translate(68, 46)"><g class="tooltip" style="opacity: 0" transform="translate(0 0)"><rect class="tooltip-box" height="0" rx="0" ry="0" width="0" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
+</script></defs><title>Speed in Microseconds (us) of Translate from Arbitrary Class</title><g class="graph custombox-graph vertical"><rect x="0" y="0" width="800" height="600" class="background" /><g transform="translate(68, 46)" class="plot"><rect x="0" y="0" width="712.0" height="378.0" class="background" /><g class="axis y always_show"><path d="M0.000000 378.000000 h712.000000" class="line" /><g class="guides"><path d="M0.000000 370.730769 h712.000000" class="guide line" /><text x="-5" y="374.2307692307692" class="">32</text><title>32</title></g><g class="guides"><path d="M0.000000 350.538462 h712.000000" class="guide line" /><text x="-5" y="354.03846153846155" class="">34</text><title>34</title></g><g class="guides"><path d="M0.000000 330.346154 h712.000000" class="guide line" /><text x="-5" y="333.84615384615387" class="">36</text><title>36</title></g><g class="guides"><path d="M0.000000 310.153846 h712.000000" class="guide line" /><text x="-5" y="313.6538461538462" class="">38</text><title>38</title></g><g class="guides"><path d="M0.000000 289.961538 h712.000000" class="major guide line" /><text x="-5" y="293.46153846153845" class="major">40</text><title>40</title></g><g class="guides"><path d="M0.000000 269.769231 h712.000000" class="guide line" /><text x="-5" y="273.2692307692308" class="">42</text><title>42</title></g><g class="guides"><path d="M0.000000 249.576923 h712.000000" class="guide line" /><text x="-5" y="253.07692307692307" class="">44</text><title>44</title></g><g class="guides"><path d="M0.000000 229.384615 h712.000000" class="guide line" /><text x="-5" y="232.8846153846154" class="">46</text><title>46</title></g><g class="guides"><path d="M0.000000 209.192308 h712.000000" class="guide line" /><text x="-5" y="212.69230769230768" class="">48</text><title>48</title></g><g class="guides"><path d="M0.000000 189.000000 h712.000000" class="major guide line" /><text x="-5" y="192.5" class="major">50</text><title>50</title></g><g class="guides"><path d="M0.000000 168.807692 h712.000000" class="guide line" /><text x="-5" y="172.3076923076923" class="">52</text><title>52</title></g><g class="guides"><path d="M0.000000 148.615385 h712.000000" class="guide line" /><text x="-5" y="152.1153846153846" class="">54</text><title>54</title></g><g class="guides"><path d="M0.000000 128.423077 h712.000000" class="guide line" /><text x="-5" y="131.9230769230769" class="">56</text><title>56</title></g><g class="guides"><path d="M0.000000 108.230769 h712.000000" class="guide line" /><text x="-5" y="111.73076923076923" class="">58</text><title>58</title></g><g class="guides"><path d="M0.000000 88.038462 h712.000000" class="major guide line" /><text x="-5" y="91.53846153846155" class="major">60</text><title>60</title></g><g class="guides"><path d="M0.000000 67.846154 h712.000000" class="guide line" /><text x="-5" y="71.34615384615381" class="">62</text><title>62</title></g><g class="guides"><path d="M0.000000 47.653846 h712.000000" class="guide line" /><text x="-5" y="51.15384615384613" class="">64</text><title>64</title></g><g class="guides"><path d="M0.000000 27.461538 h712.000000" class="guide line" /><text x="-5" y="30.961538461538453" class="">66</text><title>66</title></g><g class="guides"><path d="M0.000000 7.269231 h712.000000" class="guide line" /><text x="-5" y="10.769230769230774" class="">68</text><title>68</title></g></g><g class="axis x"><path d="M0.000000 0.000000 v378.000000" class="line" /><g class="guides"><path d="M99.269231 0.000000 v378.000000" class="guide line" /><text x="99.26923076923076" y="393.0" class="backwards" transform="rotate(270 99.269231 393.000000)">typic-functional-api</text></g><g class="guides"><path d="M270.423077 0.000000 v378.000000" class="guide line" /><text x="270.4230769230769" y="393.0" class="backwards" transform="rotate(270 270.423077 393.000000)">typic-protocol-api</text></g><g class="guides"><path d="M441.576923 0.000000 v378.000000" class="guide line" /><text x="441.5769230769231" y="393.0" class="backwards" transform="rotate(270 441.576923 393.000000)">pydantic</text></g><g class="guides"><path d="M612.730769 0.000000 v378.000000" class="guide line" /><text x="612.7307692307692" y="393.0" class="backwards" transform="rotate(270 612.730769 393.000000)">typic-object-api</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path stroke-width="3" d="M61.615385 363.077885 L136.923077 363.077885" class="reactive tooltip-trigger" /><path stroke-width="3" d="M23.961538 358.362981 L174.576923 358.362981" class="reactive tooltip-trigger" /><path stroke-width="3" d="M61.615385 348.559615 L136.923077 348.559615" class="reactive tooltip-trigger" /><path stroke-width="2" d="M99.269231 363.077885 L99.269231 360.392308" class="reactive tooltip-trigger" /><path stroke-width="2" d="M99.269231 348.559615 L99.269231 355.687500" class="reactive tooltip-trigger" /><rect x="23.96153846153846" y="355.68750000143007" height="4.704807687029074" width="150.61538461538458" class="subtle-fill reactive tooltip-trigger" /><circle cx="99.26923076923075" cy="363.0778846185292" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="99.26923076923075" cy="30.0057692225987" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 32.7580
+Q1-1.5IQR: 32.7580
+Q1: 33.0240
+Median: 33.2250
+Q3: 33.4900
+Q3+1.5IQR: 34.1960
+Max: 65.7480</desc><desc class="x centered">99.26923076923075</desc><desc class="y centered">357.21605769108373</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path stroke-width="3" d="M232.769231 353.516827 L308.076923 353.516827" class="reactive tooltip-trigger" /><path stroke-width="3" d="M195.115385 347.883173 L345.730769 347.883173" class="reactive tooltip-trigger" /><path stroke-width="3" d="M232.769231 325.086058 L308.076923 325.086058" class="reactive tooltip-trigger" /><path stroke-width="2" d="M270.423077 353.516827 L270.423077 350.291106" class="reactive tooltip-trigger" /><path stroke-width="2" d="M270.423077 325.086058 L270.423077 342.163702" class="reactive tooltip-trigger" /><rect x="195.11538461538458" y="342.1637019085068" height="8.127403855046452" width="150.61538461538458" class="subtle-fill reactive tooltip-trigger" /><circle cx="270.4230769230769" cy="353.51682692424845" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="270.4230769230769" cy="-247.01250000863752" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 33.7050
+Q1-1.5IQR: 33.7050
+Q1: 34.0245
+Median: 34.2630
+Q3: 34.8295
+Q3+1.5IQR: 36.5210
+Max: 93.1860</desc><desc class="x centered">270.4230769230769</desc><desc class="y centered">343.7881730622545</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path stroke-width="3" d="M403.923077 301.077404 L479.230769 301.077404" class="reactive tooltip-trigger" /><path stroke-width="3" d="M366.269231 280.501442 L516.884615 280.501442" class="reactive tooltip-trigger" /><path stroke-width="3" d="M403.923077 220.903846 L479.230769 220.903846" class="reactive tooltip-trigger" /><path stroke-width="2" d="M441.576923 301.077404 L441.576923 288.760096" class="reactive tooltip-trigger" /><path stroke-width="2" d="M441.576923 220.903846 L441.576923 261.672115" class="reactive tooltip-trigger" /><rect x="366.2692307692307" y="261.67211538172785" height="27.087980759736695" width="150.61538461538458" class="subtle-fill reactive tooltip-trigger" /><circle cx="441.576923076923" cy="301.077403848586" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="441.576923076923" cy="-3939.87259614527" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 38.8990
+Q1-1.5IQR: 38.8990
+Q1: 40.1190
+Median: 40.9370
+Q3: 42.8020
+Q3+1.5IQR: 46.8400
+Max: 458.9550</desc><desc class="x centered">441.576923076923</desc><desc class="y centered">270.58298076473545</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path stroke-width="3" d="M575.076923 125.828365 L650.384615 125.828365" class="reactive tooltip-trigger" /><path stroke-width="3" d="M537.423077 106.580048 L688.038462 106.580048" class="reactive tooltip-trigger" /><path stroke-width="3" d="M575.076923 13.629808 L650.384615 13.629808" class="reactive tooltip-trigger" /><path stroke-width="2" d="M612.730769 125.828365 L612.730769 114.167308" class="reactive tooltip-trigger" /><path stroke-width="2" d="M612.730769 13.629808 L612.730769 74.438942" class="reactive tooltip-trigger" /><rect x="537.4230769230768" y="74.43894228145837" height="39.728365407699414" width="150.61538461538458" class="subtle-fill reactive tooltip-trigger" /><circle cx="612.730769230769" cy="125.82836537784962" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="612.730769230769" cy="-2310.3230769155766" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 56.2570
+Q1-1.5IQR: 56.2570
+Q1: 57.4120
+Median: 58.1635
+Q3: 61.3470
+Q3+1.5IQR: 67.3700
+Max: 297.5520</desc><desc class="x centered">612.730769230769</desc><desc class="y centered">86.92889422287311</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text x="400.0" y="26" class="title plot_title">Speed in Microseconds (us) of Translate from Arbitrary Class</text><text x="424.0" y="580.0" class="title">Trial</text><text x="0" y="261.0" class="title" transform="rotate(-90 0.000000 235.000000)">Duration</text></g><g transform="translate(68, 46)" class="plot overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /></g><g transform="translate(68, 46)" class="plot text-overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /></g><g transform="translate(68, 46)" class="plot tooltip-overlay"><g transform="translate(0 0)" style="opacity: 0" class="tooltip"><rect rx="0" ry="0" width="0" height="0" class="tooltip-box" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
diff --git a/docs/static/Translate_to_Arbitrary_Class.svg b/docs/static/Translate_to_Arbitrary_Class.svg
index 9684721c..047d7543 100644
--- a/docs/static/Translate_to_Arbitrary_Class.svg
+++ b/docs/static/Translate_to_Arbitrary_Class.svg
@@ -1,8 +1,8 @@
 <?xml version='1.0' encoding='utf-8'?>
-<svg class="pygal-chart" id="chart-38b98c9d-85f1-4911-831b-52e836d7fef9" viewBox="0 0 800 600" xmlns="http://www.w3.org/2000/svg"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-07-06--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-38b98c9d-85f1-4911-831b-52e836d7fef9{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
-#chart-38b98c9d-85f1-4911-831b-52e836d7fef9{background-color:rgba(249,249,249,1)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 path,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 line,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 rect,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .graph{fill:rgba(0,0,0,.87)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 text.no_data{fill:rgba(0,0,0,1)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .title{fill:rgba(0,0,0,1)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .legends .legend text{fill:rgba(0,0,0,.87)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis .line{stroke:rgba(0,0,0,1)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis text.major{fill:rgba(0,0,0,1)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis.y .guides:hover .guide.line,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .line-graph .axis.x .guides:hover .guide.line,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .stackedline-graph .axis.x .guides:hover .guide.line,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .ci{stroke:rgba(0,0,0,.87)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .reactive.active,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .ci .reactive.active{stroke-width:1.5}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .series text{fill:rgba(0,0,0,1)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .tooltip .value{font-size:1.5em}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .bound{font-size:.5em}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .color-0,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .color-1,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .color-2,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .text-overlay .color-0 text{fill:black}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .text-overlay .color-1 text{fill:black}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .text-overlay .color-2 text{fill:black}
-#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 text.no_data{text-anchor:middle}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .guide.line{fill:none}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .centered{text-anchor:middle}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .title{text-anchor:middle}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .legends .legend text{fill-opacity:1}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis.x text{text-anchor:middle}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis.x:not(.web) text[transform]{text-anchor:start}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis.y text{text-anchor:end}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis.y text[transform].backwards{text-anchor:start}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis.y2 text{text-anchor:start}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis.y2 text[transform].backwards{text-anchor:end}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis .guide.line{stroke-dasharray:4,4}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis .major.guide.line{stroke-dasharray:6,6}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .horizontal .axis.y .guide.line,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .horizontal .axis.y2 .guide.line,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .vertical .axis.x .guide.line{opacity:0}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .horizontal .axis.always_show .guide.line,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis.y .guides:hover .guide.line,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis.y2 .guides:hover .guide.line,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis.x .guides:hover .guide.line{opacity:1}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .axis .guides:hover text{opacity:1}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .nofill{fill:none}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .subtle-fill{fill-opacity:.2}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .dot{stroke-width:1px;fill-opacity:1}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .dot.active{stroke-width:5px}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .dot.negative{fill:transparent}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 text,#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 tspan{stroke:none !important}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .series text.active{opacity:1}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .tooltip text{fill-opacity:1}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .showable{visibility:hidden}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .showable.shown{visibility:visible}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-38b98c9d-85f1-4911-831b-52e836d7fef9 .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
-.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['38b98c9d-85f1-4911-831b-52e836d7fef9'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.7/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [28, 82], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Translate to Arbitrary Class", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-functional-api", "typic-object-api", "typic-protocol-api"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 28, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_translate_to_class[typic-functional-api] - 35 rounds", "benchmark/test_benchmarks.py::test_benchmarks_translate_to_class[typic-object-api] - 199 rounds", "benchmark/test_benchmarks.py::test_benchmarks_translate_to_class[typic-protocol-api] - 64 rounds"]}</script><script type="text/javascript">(function() {
+<svg xmlns="http://www.w3.org/2000/svg" id="chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1" class="pygal-chart" viewBox="0 0 800 600"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-09-28--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
+#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1{background-color:rgba(249,249,249,1)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 path,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 line,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 rect,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .graph{fill:rgba(0,0,0,.87)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 text.no_data{fill:rgba(0,0,0,1)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .title{fill:rgba(0,0,0,1)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .legends .legend text{fill:rgba(0,0,0,.87)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis .line{stroke:rgba(0,0,0,1)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis text.major{fill:rgba(0,0,0,1)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis.y .guides:hover .guide.line,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .line-graph .axis.x .guides:hover .guide.line,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .stackedline-graph .axis.x .guides:hover .guide.line,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .ci{stroke:rgba(0,0,0,.87)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .reactive.active,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .ci .reactive.active{stroke-width:1.5}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .series text{fill:rgba(0,0,0,1)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .tooltip .value{font-size:1.5em}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .bound{font-size:.5em}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .color-0,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .color-1,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .color-2,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .text-overlay .color-0 text{fill:black}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .text-overlay .color-1 text{fill:black}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .text-overlay .color-2 text{fill:black}
+#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 text.no_data{text-anchor:middle}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .guide.line{fill:none}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .centered{text-anchor:middle}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .title{text-anchor:middle}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .legends .legend text{fill-opacity:1}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis.x text{text-anchor:middle}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis.x:not(.web) text[transform]{text-anchor:start}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis.y text{text-anchor:end}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis.y text[transform].backwards{text-anchor:start}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis.y2 text{text-anchor:start}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis.y2 text[transform].backwards{text-anchor:end}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis .guide.line{stroke-dasharray:4,4}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis .major.guide.line{stroke-dasharray:6,6}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .horizontal .axis.y .guide.line,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .horizontal .axis.y2 .guide.line,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .vertical .axis.x .guide.line{opacity:0}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .horizontal .axis.always_show .guide.line,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis.y .guides:hover .guide.line,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis.y2 .guides:hover .guide.line,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis.x .guides:hover .guide.line{opacity:1}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .axis .guides:hover text{opacity:1}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .nofill{fill:none}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .subtle-fill{fill-opacity:.2}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .dot{stroke-width:1px;fill-opacity:1}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .dot.active{stroke-width:5px}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .dot.negative{fill:transparent}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 text,#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 tspan{stroke:none !important}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .series text.active{opacity:1}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .tooltip text{fill-opacity:1}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .showable{visibility:hidden}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .showable.shown{visibility:visible}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-203fd8f9-c505-4c2e-afd1-6b331d8991d1 .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
+.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['203fd8f9-c505-4c2e-afd1-6b331d8991d1'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.8/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [26, 30], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Translate to Arbitrary Class", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-object-api", "typic-protocol-api", "typic-functional-api"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 26, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_translate_to_class[typic-object-api] - 298 rounds", "benchmark/test_benchmarks.py::test_benchmarks_translate_to_class[typic-protocol-api] - 203 rounds", "benchmark/test_benchmarks.py::test_benchmarks_translate_to_class[typic-functional-api] - 54 rounds"]}</script><script type="text/javascript">(function() {
   var $, get_translation, init, init_svg, matches, padding, r_translation, sibl, svg_ns, tooltip_timeout, xlink_ns;
 
   svg_ns = 'http://www.w3.org/2000/svg';
@@ -345,22 +345,22 @@
   window.pygal.init_svg = init_svg;
 
 }).call(this);
-</script></defs><title>Speed in Microseconds (us) of Translate to Arbitrary Class</title><g class="graph custombox-graph vertical"><rect class="background" height="600" width="800" x="0" y="0" /><g class="plot" transform="translate(68, 46)"><rect class="background" height="378.0" width="712.0" x="0" y="0" /><g class="axis y always_show"><path class="line" d="M0.000000 378.000000 h712.000000" /><g class="guides"><path class="guide line" d="M0.000000 370.730769 h712.000000" /><text class="" x="-5" y="374.2307692307692">28</text><title>28</title></g><g class="guides"><path class="guide line" d="M0.000000 343.807692 h712.000000" /><text class="" x="-5" y="347.3076923076923">32</text><title>32</title></g><g class="guides"><path class="guide line" d="M0.000000 316.884615 h712.000000" /><text class="" x="-5" y="320.3846153846154">36</text><title>36</title></g><g class="guides"><path class="major guide line" d="M0.000000 289.961538 h712.000000" /><text class="major" x="-5" y="293.46153846153845">40</text><title>40</title></g><g class="guides"><path class="guide line" d="M0.000000 263.038462 h712.000000" /><text class="" x="-5" y="266.53846153846155">44</text><title>44</title></g><g class="guides"><path class="guide line" d="M0.000000 236.115385 h712.000000" /><text class="" x="-5" y="239.6153846153846">48</text><title>48</title></g><g class="guides"><path class="guide line" d="M0.000000 209.192308 h712.000000" /><text class="" x="-5" y="212.69230769230768">52</text><title>52</title></g><g class="guides"><path class="guide line" d="M0.000000 182.269231 h712.000000" /><text class="" x="-5" y="185.76923076923077">56</text><title>56</title></g><g class="guides"><path class="major guide line" d="M0.000000 155.346154 h712.000000" /><text class="major" x="-5" y="158.84615384615384">60</text><title>60</title></g><g class="guides"><path class="guide line" d="M0.000000 128.423077 h712.000000" /><text class="" x="-5" y="131.9230769230769">64</text><title>64</title></g><g class="guides"><path class="guide line" d="M0.000000 101.500000 h712.000000" /><text class="" x="-5" y="105.0">68</text><title>68</title></g><g class="guides"><path class="guide line" d="M0.000000 74.576923 h712.000000" /><text class="" x="-5" y="78.0769230769231">72</text><title>72</title></g><g class="guides"><path class="guide line" d="M0.000000 47.653846 h712.000000" /><text class="" x="-5" y="51.15384615384619">76</text><title>76</title></g><g class="guides"><path class="major guide line" d="M0.000000 20.730769 h712.000000" /><text class="major" x="-5" y="24.230769230769226">80</text><title>80</title></g></g><g class="axis x"><path class="line" d="M0.000000 0.000000 v378.000000" /><g class="guides"><path class="guide line" d="M127.794872 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 127.794872 393.000000)" x="127.7948717948718" y="393.0">typic-functional-api</text></g><g class="guides"><path class="guide line" d="M356.000000 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 356.000000 393.000000)" x="356.0" y="393.0">typic-object-api</text></g><g class="guides"><path class="guide line" d="M584.205128 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 584.205128 393.000000)" x="584.2051282051282" y="393.0">typic-protocol-api</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M77.589744 366.625000 L178.000000 366.625000" stroke-width="3" /><path class="reactive tooltip-trigger" d="M27.384615 343.491346 L228.205128 343.491346" stroke-width="3" /><path class="reactive tooltip-trigger" d="M77.589744 10.547115 L178.000000 10.547115" stroke-width="3" /><path class="reactive tooltip-trigger" d="M127.794872 366.625000 L127.794872 362.889423" stroke-width="2" /><path class="reactive tooltip-trigger" d="M127.794872 10.547115 L127.794872 241.390625" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="121.49879809250857" width="200.8205128205128" x="27.38461538461538" y="241.39062499676012" /><circle class="subtle-fill reactive tooltip-trigger" cx="127.79487179487177" cy="366.6250000165443" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="127.79487179487177" cy="-0.8144230696706813" r="3" /><desc class="value">Min: 28.6100
-Q1-1.5IQR: 28.6100
-Q1: 29.1650
-Median: 32.0470
-Q3: 47.2163
-Q3+1.5IQR: 81.5130
-Max: 83.2010</desc><desc class="x centered">127.79487179487177</desc><desc class="y centered">264.9887019246779</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M305.794872 346.668269 L406.205128 346.668269" stroke-width="3" /><path class="reactive tooltip-trigger" d="M255.589744 332.446154 L456.410256 332.446154" stroke-width="3" /><path class="reactive tooltip-trigger" d="M305.794872 308.390385 L406.205128 308.390385" stroke-width="3" /><path class="reactive tooltip-trigger" d="M356.000000 346.668269 L356.000000 337.379808" stroke-width="2" /><path class="reactive tooltip-trigger" d="M356.000000 308.390385 L356.000000 326.368269" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="11.011538457984273" width="200.8205128205128" x="255.58974358974353" y="326.3682692402936" /><circle class="subtle-fill reactive tooltip-trigger" cx="355.99999999999994" cy="346.66826922213596" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="355.99999999999994" cy="-136.82980770014558" r="3" /><desc class="value">Min: 31.5750
-Q1-1.5IQR: 31.5750
-Q1: 32.9550
-Median: 33.6880
-Q3: 34.5910
-Q3+1.5IQR: 37.2620
-Max: 103.4090</desc><desc class="x centered">355.99999999999994</desc><desc class="y centered">330.2505769226368</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M534.000000 340.987500 L634.410256 340.987500" stroke-width="3" /><path class="reactive tooltip-trigger" d="M483.794872 331.439904 L684.615385 331.439904" stroke-width="3" /><path class="reactive tooltip-trigger" d="M534.000000 303.100000 L634.410256 303.100000" stroke-width="3" /><path class="reactive tooltip-trigger" d="M584.205128 340.987500 L584.205128 336.070673" stroke-width="2" /><path class="reactive tooltip-trigger" d="M584.205128 303.100000 L584.205128 324.658654" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="11.412019230460317" width="200.8205128205128" x="483.7948717948717" y="324.6586538457428" /><circle class="subtle-fill reactive tooltip-trigger" cx="584.2051282051281" cy="340.98749999958767" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="584.2051282051281" cy="10.1634615453533" r="3" /><desc class="value">Min: 32.4190
-Q1-1.5IQR: 32.4190
-Q1: 33.1495
-Median: 33.8375
-Q3: 34.8450
-Q3+1.5IQR: 38.0480
-Max: 81.5700</desc><desc class="x centered">584.2051282051281</desc><desc class="y centered">327.25134615274294</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text class="title plot_title" x="400.0" y="26">Speed in Microseconds (us) of Translate to Arbitrary Class</text><text class="title" x="424.0" y="580.0">Trial</text><text class="title" transform="rotate(-90 0.000000 235.000000)" x="0" y="261.0">Duration</text></g><g class="plot overlay" transform="translate(68, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /></g><g class="plot text-overlay" transform="translate(68, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /></g><g class="plot tooltip-overlay" transform="translate(68, 46)"><g class="tooltip" style="opacity: 0" transform="translate(0 0)"><rect class="tooltip-box" height="0" rx="0" ry="0" width="0" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
+</script></defs><title>Speed in Microseconds (us) of Translate to Arbitrary Class</title><g class="graph custombox-graph vertical"><rect x="0" y="0" width="800" height="600" class="background" /><g transform="translate(80, 46)" class="plot"><rect x="0" y="0" width="700.0" height="378.0" class="background" /><g class="axis y always_show"><path d="M0.000000 378.000000 h700.000000" class="line" /><g class="guides"><path d="M0.000000 370.730769 h700.000000" class="major guide line" /><text x="-5" y="374.2307692307694" class="major">26</text><title>26</title></g><g class="guides"><path d="M0.000000 352.557692 h700.000000" class="guide line" /><text x="-5" y="356.0576923076925" class="">26.2</text><title>26.2</title></g><g class="guides"><path d="M0.000000 334.384615 h700.000000" class="guide line" /><text x="-5" y="337.88461538461564" class="">26.4</text><title>26.4</title></g><g class="guides"><path d="M0.000000 316.211538 h700.000000" class="guide line" /><text x="-5" y="319.71153846153845" class="">26.6</text><title>26.6</title></g><g class="guides"><path d="M0.000000 298.038462 h700.000000" class="guide line" /><text x="-5" y="301.53846153846155" class="">26.8</text><title>26.8</title></g><g class="guides"><path d="M0.000000 279.865385 h700.000000" class="major guide line" /><text x="-5" y="283.3653846153847" class="major">27</text><title>27</title></g><g class="guides"><path d="M0.000000 261.692308 h700.000000" class="guide line" /><text x="-5" y="265.19230769230785" class="">27.2</text><title>27.2</title></g><g class="guides"><path d="M0.000000 243.519231 h700.000000" class="guide line" /><text x="-5" y="247.01923076923094" class="">27.4</text><title>27.4</title></g><g class="guides"><path d="M0.000000 225.346154 h700.000000" class="guide line" /><text x="-5" y="228.84615384615375" class="">27.6</text><title>27.6</title></g><g class="guides"><path d="M0.000000 207.173077 h700.000000" class="guide line" /><text x="-5" y="210.67307692307688" class="">27.8</text><title>27.8</title></g><g class="guides"><path d="M0.000000 189.000000 h700.000000" class="major guide line" /><text x="-5" y="192.5" class="major">28</text><title>28</title></g><g class="guides"><path d="M0.000000 170.826923 h700.000000" class="guide line" /><text x="-5" y="174.32692307692312" class="">28.2</text><title>28.2</title></g><g class="guides"><path d="M0.000000 152.653846 h700.000000" class="guide line" /><text x="-5" y="156.15384615384625" class="">28.4</text><title>28.4</title></g><g class="guides"><path d="M0.000000 134.480769 h700.000000" class="guide line" /><text x="-5" y="137.98076923076906" class="">28.6</text><title>28.6</title></g><g class="guides"><path d="M0.000000 116.307692 h700.000000" class="guide line" /><text x="-5" y="119.80769230769215" class="">28.8</text><title>28.8</title></g><g class="guides"><path d="M0.000000 98.134615 h700.000000" class="major guide line" /><text x="-5" y="101.6346153846153" class="major">29</text><title>29</title></g><g class="guides"><path d="M0.000000 79.961538 h700.000000" class="guide line" /><text x="-5" y="83.46153846153845" class="">29.2</text><title>29.2</title></g><g class="guides"><path d="M0.000000 61.788462 h700.000000" class="guide line" /><text x="-5" y="65.28846153846155" class="">29.4</text><title>29.4</title></g><g class="guides"><path d="M0.000000 43.615385 h700.000000" class="guide line" /><text x="-5" y="47.11538461538436" class="">29.6</text><title>29.6</title></g><g class="guides"><path d="M0.000000 25.442308 h700.000000" class="guide line" /><text x="-5" y="28.94230769230751" class="">29.8</text><title>29.8</title></g><g class="guides"><path d="M0.000000 7.269231 h700.000000" class="major guide line" /><text x="-5" y="10.769230769230603" class="major">30</text><title>30</title></g></g><g class="axis x"><path d="M0.000000 0.000000 v378.000000" class="line" /><g class="guides"><path d="M125.641026 0.000000 v378.000000" class="guide line" /><text x="125.64102564102562" y="393.0" class="backwards" transform="rotate(270 125.641026 393.000000)">typic-object-api</text></g><g class="guides"><path d="M350.000000 0.000000 v378.000000" class="guide line" /><text x="350.0" y="393.0" class="backwards" transform="rotate(270 350.000000 393.000000)">typic-protocol-api</text></g><g class="guides"><path d="M574.358974 0.000000 v378.000000" class="guide line" /><text x="574.3589743589744" y="393.0" class="backwards" transform="rotate(270 574.358974 393.000000)">typic-functional-api</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path stroke-width="3" d="M76.282051 172.553365 L175.000000 172.553365" class="reactive tooltip-trigger" /><path stroke-width="3" d="M26.923077 123.304327 L224.358974 123.304327" class="reactive tooltip-trigger" /><path stroke-width="3" d="M76.282051 37.436538 L175.000000 37.436538" class="reactive tooltip-trigger" /><path stroke-width="2" d="M125.641026 172.553365 L125.641026 139.660096" class="reactive tooltip-trigger" /><path stroke-width="2" d="M125.641026 37.436538 L125.641026 100.497115" class="reactive tooltip-trigger" /><rect x="26.923076923076923" y="100.4971154538751" height="39.16298045858471" width="197.43589743589743" class="subtle-fill reactive tooltip-trigger" /><circle cx="125.64102564102564" cy="291.76875007702984" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="125.64102564102564" cy="-12773.310576735757" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 26.8690
+Q1-1.5IQR: 28.1810
+Q1: 28.5430
+Median: 28.7230
+Q3: 28.9740
+Q3+1.5IQR: 29.6680
+Max: 170.6540</desc><desc class="x centered">125.64102564102564</desc><desc class="y centered">114.69028841387183</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path stroke-width="3" d="M300.641026 200.176443 L399.358974 200.176443" class="reactive tooltip-trigger" /><path stroke-width="3" d="M251.282051 150.473077 L448.717949 150.473077" class="reactive tooltip-trigger" /><path stroke-width="3" d="M300.641026 59.516827 L399.358974 59.516827" class="reactive tooltip-trigger" /><path stroke-width="2" d="M350.000000 200.176443 L350.000000 163.080649" class="reactive tooltip-trigger" /><path stroke-width="2" d="M350.000000 59.516827 L350.000000 131.255048" class="reactive tooltip-trigger" /><rect x="251.28205128205127" y="131.255048108556" height="31.82560077013696" width="197.43589743589743" class="subtle-fill reactive tooltip-trigger" /><circle cx="350.0" cy="200.1764425539892" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="350.0" cy="-7405.5288460327965" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 27.8770
+Q1-1.5IQR: 27.8770
+Q1: 28.2853
+Median: 28.4240
+Q3: 28.6355
+Q3+1.5IQR: 29.4250
+Max: 111.5800</desc><desc class="x centered">350.0</desc><desc class="y centered">140.90040866035213</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path stroke-width="3" d="M525.000000 137.297596 L623.717949 137.297596" class="reactive tooltip-trigger" /><path stroke-width="3" d="M475.641026 115.126442 L673.076923 115.126442" class="reactive tooltip-trigger" /><path stroke-width="3" d="M525.000000 35.982692 L623.717949 35.982692" class="reactive tooltip-trigger" /><path stroke-width="2" d="M574.358974 137.297596 L574.358974 126.121154" class="reactive tooltip-trigger" /><path stroke-width="2" d="M574.358974 35.982692 L574.358974 98.043750" class="reactive tooltip-trigger" /><rect x="475.64102564102564" y="98.04375018908604" height="28.07740358673911" width="197.43589743589743" class="subtle-fill reactive tooltip-trigger" /><circle cx="574.3589743589744" cy="137.29759603980438" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="574.3589743589744" cy="-2235.651923255924" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 28.5690
+Q1-1.5IQR: 28.5690
+Q1: 28.6920
+Median: 28.8130
+Q3: 29.0010
+Q3+1.5IQR: 29.6840
+Max: 54.6840</desc><desc class="x centered">574.3589743589744</desc><desc class="y centered">102.51432693326836</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text x="400.0" y="26" class="title plot_title">Speed in Microseconds (us) of Translate to Arbitrary Class</text><text x="430.0" y="580.0" class="title">Trial</text><text x="0" y="261.0" class="title" transform="rotate(-90 0.000000 235.000000)">Duration</text></g><g transform="translate(80, 46)" class="plot overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /></g><g transform="translate(80, 46)" class="plot text-overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /></g><g transform="translate(80, 46)" class="plot tooltip-overlay"><g transform="translate(0 0)" style="opacity: 0" class="tooltip"><rect rx="0" ry="0" width="0" height="0" class="tooltip-box" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
diff --git a/docs/static/Validate_Invalid_Data.svg b/docs/static/Validate_Invalid_Data.svg
index d79ba867..b7725ed0 100644
--- a/docs/static/Validate_Invalid_Data.svg
+++ b/docs/static/Validate_Invalid_Data.svg
@@ -1,8 +1,8 @@
 <?xml version='1.0' encoding='utf-8'?>
-<svg class="pygal-chart" id="chart-93a85186-ef8b-42ab-b8d7-8251a60677cd" viewBox="0 0 800 600" xmlns="http://www.w3.org/2000/svg"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-07-06--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
-#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd{background-color:rgba(249,249,249,1)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd path,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd line,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd rect,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .graph{fill:rgba(0,0,0,.87)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd text.no_data{fill:rgba(0,0,0,1)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .title{fill:rgba(0,0,0,1)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .legends .legend text{fill:rgba(0,0,0,.87)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis .line{stroke:rgba(0,0,0,1)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis text.major{fill:rgba(0,0,0,1)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis.y .guides:hover .guide.line,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .line-graph .axis.x .guides:hover .guide.line,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .stackedline-graph .axis.x .guides:hover .guide.line,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .ci{stroke:rgba(0,0,0,.87)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .reactive.active,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .ci .reactive.active{stroke-width:1.5}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .series text{fill:rgba(0,0,0,1)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .tooltip .label{fill:rgba(0,0,0,.87)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .tooltip .label{fill:rgba(0,0,0,.87)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .tooltip .value{font-size:1.5em}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .bound{font-size:.5em}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .color-0,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .color-1,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .color-2,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .color-3,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .color-4,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .color-4 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .color-5,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .color-5 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .text-overlay .color-0 text{fill:black}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .text-overlay .color-1 text{fill:black}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .text-overlay .color-2 text{fill:black}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .text-overlay .color-3 text{fill:black}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .text-overlay .color-4 text{fill:black}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .text-overlay .color-5 text{fill:black}
-#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd text.no_data{text-anchor:middle}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .guide.line{fill:none}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .centered{text-anchor:middle}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .title{text-anchor:middle}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .legends .legend text{fill-opacity:1}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis.x text{text-anchor:middle}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis.x:not(.web) text[transform]{text-anchor:start}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis.y text{text-anchor:end}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis.y text[transform].backwards{text-anchor:start}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis.y2 text{text-anchor:start}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis.y2 text[transform].backwards{text-anchor:end}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis .guide.line{stroke-dasharray:4,4}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis .major.guide.line{stroke-dasharray:6,6}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .horizontal .axis.y .guide.line,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .horizontal .axis.y2 .guide.line,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .vertical .axis.x .guide.line{opacity:0}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .horizontal .axis.always_show .guide.line,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis.y .guides:hover .guide.line,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis.y2 .guides:hover .guide.line,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis.x .guides:hover .guide.line{opacity:1}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .axis .guides:hover text{opacity:1}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .nofill{fill:none}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .subtle-fill{fill-opacity:.2}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .dot{stroke-width:1px;fill-opacity:1}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .dot.active{stroke-width:5px}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .dot.negative{fill:transparent}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd text,#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd tspan{stroke:none !important}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .series text.active{opacity:1}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .tooltip text{fill-opacity:1}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .showable{visibility:hidden}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .showable.shown{visibility:visible}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-93a85186-ef8b-42ab-b8d7-8251a60677cd .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
-.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['93a85186-ef8b-42ab-b8d7-8251a60677cd'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.7/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [10, 1390], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Validate Invalid Data", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-object-api", "typic-protocol-api", "typic-functional-api", "pydantic", "marshmallow", "djangorestframework"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 10, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_validate_invalid_data[typic-object-api] - 19205 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_invalid_data[typic-protocol-api] - 18437 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_invalid_data[typic-functional-api] - 10298 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_invalid_data[pydantic] - 5314 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_invalid_data[marshmallow] - 2822 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_invalid_data[djangorestframework] - 577 rounds"]}</script><script type="text/javascript">(function() {
+<svg xmlns="http://www.w3.org/2000/svg" id="chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102" class="pygal-chart" viewBox="0 0 800 600"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-09-28--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
+#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102{background-color:rgba(249,249,249,1)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 path,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 line,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 rect,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .graph{fill:rgba(0,0,0,.87)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 text.no_data{fill:rgba(0,0,0,1)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .title{fill:rgba(0,0,0,1)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .legends .legend text{fill:rgba(0,0,0,.87)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis .line{stroke:rgba(0,0,0,1)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis text.major{fill:rgba(0,0,0,1)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis.y .guides:hover .guide.line,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .line-graph .axis.x .guides:hover .guide.line,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .stackedline-graph .axis.x .guides:hover .guide.line,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .ci{stroke:rgba(0,0,0,.87)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .reactive.active,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .ci .reactive.active{stroke-width:1.5}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .series text{fill:rgba(0,0,0,1)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .tooltip .value{font-size:1.5em}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .bound{font-size:.5em}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .color-0,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .color-1,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .color-2,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .color-3,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .color-4,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .color-4 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .color-5,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .color-5 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .text-overlay .color-0 text{fill:black}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .text-overlay .color-1 text{fill:black}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .text-overlay .color-2 text{fill:black}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .text-overlay .color-3 text{fill:black}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .text-overlay .color-4 text{fill:black}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .text-overlay .color-5 text{fill:black}
+#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 text.no_data{text-anchor:middle}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .guide.line{fill:none}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .centered{text-anchor:middle}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .title{text-anchor:middle}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .legends .legend text{fill-opacity:1}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis.x text{text-anchor:middle}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis.x:not(.web) text[transform]{text-anchor:start}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis.y text{text-anchor:end}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis.y text[transform].backwards{text-anchor:start}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis.y2 text{text-anchor:start}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis.y2 text[transform].backwards{text-anchor:end}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis .guide.line{stroke-dasharray:4,4}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis .major.guide.line{stroke-dasharray:6,6}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .horizontal .axis.y .guide.line,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .horizontal .axis.y2 .guide.line,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .vertical .axis.x .guide.line{opacity:0}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .horizontal .axis.always_show .guide.line,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis.y .guides:hover .guide.line,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis.y2 .guides:hover .guide.line,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis.x .guides:hover .guide.line{opacity:1}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .axis .guides:hover text{opacity:1}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .nofill{fill:none}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .subtle-fill{fill-opacity:.2}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .dot{stroke-width:1px;fill-opacity:1}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .dot.active{stroke-width:5px}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .dot.negative{fill:transparent}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 text,#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 tspan{stroke:none !important}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .series text.active{opacity:1}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .tooltip text{fill-opacity:1}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .showable{visibility:hidden}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .showable.shown{visibility:visible}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-ef28522b-6632-4b0c-9c1d-3c8eb587b102 .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
+.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['ef28522b-6632-4b0c-9c1d-3c8eb587b102'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.8/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [9, 1308], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Validate Invalid Data", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-object-api", "typic-protocol-api", "typic-functional-api", "pydantic", "marshmallow", "djangorestframework"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 9, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_validate_invalid_data[typic-object-api] - 14402 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_invalid_data[typic-protocol-api] - 18150 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_invalid_data[typic-functional-api] - 13602 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_invalid_data[pydantic] - 4951 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_invalid_data[marshmallow] - 2695 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_invalid_data[djangorestframework] - 948 rounds"]}</script><script type="text/javascript">(function() {
   var $, get_translation, init, init_svg, matches, padding, r_translation, sibl, svg_ns, tooltip_timeout, xlink_ns;
 
   svg_ns = 'http://www.w3.org/2000/svg';
@@ -345,40 +345,40 @@
   window.pygal.init_svg = init_svg;
 
 }).call(this);
-</script></defs><title>Speed in Microseconds (us) of Validate Invalid Data</title><g class="graph custombox-graph vertical"><rect class="background" height="600" width="800" x="0" y="0" /><g class="plot" transform="translate(80, 46)"><rect class="background" height="378.0" width="700.0" x="0" y="0" /><g class="axis y always_show"><path class="line" d="M0.000000 378.000000 h700.000000" /><g class="guides"><path class="guide line" d="M0.000000 352.294314 h700.000000" /><text class="" x="-5" y="355.7943143812709">80</text><title>80</title></g><g class="guides"><path class="guide line" d="M0.000000 331.224080 h700.000000" /><text class="" x="-5" y="334.7240802675585">160</text><title>160</title></g><g class="guides"><path class="guide line" d="M0.000000 310.153846 h700.000000" /><text class="" x="-5" y="313.65384615384613">240</text><title>240</title></g><g class="guides"><path class="guide line" d="M0.000000 289.083612 h700.000000" /><text class="" x="-5" y="292.58361204013374">320</text><title>320</title></g><g class="guides"><path class="guide line" d="M0.000000 268.013378 h700.000000" /><text class="" x="-5" y="271.5133779264214">400</text><title>400</title></g><g class="guides"><path class="guide line" d="M0.000000 246.943144 h700.000000" /><text class="" x="-5" y="250.443143812709">480</text><title>480</title></g><g class="guides"><path class="guide line" d="M0.000000 225.872910 h700.000000" /><text class="" x="-5" y="229.37290969899664">560</text><title>560</title></g><g class="guides"><path class="guide line" d="M0.000000 204.802676 h700.000000" /><text class="" x="-5" y="208.30267558528425">640</text><title>640</title></g><g class="guides"><path class="guide line" d="M0.000000 183.732441 h700.000000" /><text class="" x="-5" y="187.2324414715719">720</text><title>720</title></g><g class="guides"><path class="guide line" d="M0.000000 162.662207 h700.000000" /><text class="" x="-5" y="166.1622073578595">800</text><title>800</title></g><g class="guides"><path class="guide line" d="M0.000000 141.591973 h700.000000" /><text class="" x="-5" y="145.09197324414714">880</text><title>880</title></g><g class="guides"><path class="guide line" d="M0.000000 120.521739 h700.000000" /><text class="" x="-5" y="124.02173913043475">960</text><title>960</title></g><g class="guides"><path class="guide line" d="M0.000000 99.451505 h700.000000" /><text class="" x="-5" y="102.95150501672236">1040</text><title>1040</title></g><g class="guides"><path class="guide line" d="M0.000000 78.381271 h700.000000" /><text class="" x="-5" y="81.88127090300998">1120</text><title>1120</title></g><g class="guides"><path class="guide line" d="M0.000000 57.311037 h700.000000" /><text class="" x="-5" y="60.811036789297646">1200</text><title>1200</title></g><g class="guides"><path class="guide line" d="M0.000000 36.240803 h700.000000" /><text class="" x="-5" y="39.74080267558526">1280</text><title>1280</title></g><g class="guides"><path class="guide line" d="M0.000000 15.170569 h700.000000" /><text class="" x="-5" y="18.67056856187287">1360</text><title>1360</title></g></g><g class="axis x"><path class="line" d="M0.000000 0.000000 v378.000000" /><g class="guides"><path class="guide line" d="M69.551282 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 69.551282 393.000000)" x="69.55128205128204" y="393.0">typic-object-api</text></g><g class="guides"><path class="guide line" d="M181.730769 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 181.730769 393.000000)" x="181.73076923076923" y="393.0">typic-protocol-api</text></g><g class="guides"><path class="guide line" d="M293.910256 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 293.910256 393.000000)" x="293.9102564102564" y="393.0">typic-functional-api</text></g><g class="guides"><path class="guide line" d="M406.089744 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 406.089744 393.000000)" x="406.0897435897436" y="393.0">pydantic</text></g><g class="guides"><path class="guide line" d="M518.269231 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 518.269231 393.000000)" x="518.2692307692307" y="393.0">marshmallow</text></g><g class="guides"><path class="guide line" d="M630.448718 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 630.448718 393.000000)" x="630.4487179487179" y="393.0">djangorestframework</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M44.871795 370.603294 L94.230769 370.603294" stroke-width="3" /><path class="reactive tooltip-trigger" d="M20.192308 370.276969 L118.910256 370.276969" stroke-width="3" /><path class="reactive tooltip-trigger" d="M44.871795 369.876108 L94.230769 369.876108" stroke-width="3" /><path class="reactive tooltip-trigger" d="M69.551282 370.603294 L69.551282 370.335439" stroke-width="2" /><path class="reactive tooltip-trigger" d="M69.551282 369.876108 L69.551282 370.151865" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.18357441493344595" width="98.71794871794872" x="20.192307692307693" y="370.15186454841694" /><circle class="subtle-fill reactive tooltip-trigger" cx="69.55128205128204" cy="370.60329431422645" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="69.55128205128204" cy="297.6639381272121" r="3" /><desc class="value">Min: 10.4840
-Q1-1.5IQR: 10.4840
-Q1: 11.5010
-Median: 11.7230
-Q3: 12.1980
-Q3+1.5IQR: 13.2450
-Max: 287.4220</desc><desc class="x centered">69.55128205128204</desc><desc class="y centered">370.2487349498163</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M157.051282 370.443161 L206.410256 370.443161" stroke-width="3" /><path class="reactive tooltip-trigger" d="M132.371795 370.220606 L231.089744 370.220606" stroke-width="3" /><path class="reactive tooltip-trigger" d="M157.051282 369.915351 L206.410256 369.915351" stroke-width="3" /><path class="reactive tooltip-trigger" d="M181.730769 370.443161 L181.730769 370.269858" stroke-width="2" /><path class="reactive tooltip-trigger" d="M181.730769 369.915351 L181.730769 370.128095" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.14176316887102303" width="98.71794871794872" x="132.3717948717949" y="370.1280946905206" /><circle class="subtle-fill reactive tooltip-trigger" cx="181.73076923076925" cy="370.4431605352804" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="181.73076923076925" cy="306.15102842819283" r="3" /><desc class="value">Min: 11.0920
-Q1-1.5IQR: 11.0920
-Q1: 11.7500
-Median: 11.9370
-Q3: 12.2883
-Q3+1.5IQR: 13.0960
-Max: 255.1980</desc><desc class="x centered">181.73076923076925</desc><desc class="y centered">370.19541408861005</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M269.230769 370.241940 L318.589744 370.241940" stroke-width="3" /><path class="reactive tooltip-trigger" d="M244.551282 370.028604 L343.269231 370.028604" stroke-width="3" /><path class="reactive tooltip-trigger" d="M269.230769 369.472876 L318.589744 369.472876" stroke-width="3" /><path class="reactive tooltip-trigger" d="M293.910256 370.241940 L293.910256 370.092605" stroke-width="2" /><path class="reactive tooltip-trigger" d="M293.910256 369.472876 L293.910256 369.845819" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.2467851168904076" width="98.71794871794872" x="244.55128205128204" y="369.84581939809095" /><circle class="subtle-fill reactive tooltip-trigger" cx="293.9102564102564" cy="370.2419397994542" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="293.9102564102564" cy="331.68683528439726" r="3" /><desc class="value">Min: 11.8560
-Q1-1.5IQR: 11.8560
-Q1: 12.4230
-Median: 12.6660
-Q3: 13.3600
-Q3+1.5IQR: 14.7760
-Max: 158.2430</desc><desc class="x centered">293.9102564102564</desc><desc class="y centered">369.9363687291543</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M381.410256 356.397216 L430.769231 356.397216" stroke-width="3" /><path class="reactive tooltip-trigger" d="M356.730769 354.798643 L455.448718 354.798643" stroke-width="3" /><path class="reactive tooltip-trigger" d="M381.410256 353.097354 L430.769231 353.097354" stroke-width="3" /><path class="reactive tooltip-trigger" d="M406.089744 356.397216 L406.089744 355.162237" stroke-width="2" /><path class="reactive tooltip-trigger" d="M406.089744 353.097354 L406.089744 354.338127" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.8241095316531073" width="98.71794871794872" x="356.7307692307692" y="354.3381270903738" /><circle class="subtle-fill reactive tooltip-trigger" cx="406.0897435897436" cy="356.45884615370915" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="406.0897435897436" cy="280.5830894648795" r="3" /><desc class="value">Min: 64.1880
-Q1-1.5IQR: 64.4220
-Q1: 69.1110
-Median: 70.4915
-Q3: 72.2400
-Q3+1.5IQR: 76.9510
-Max: 352.2750</desc><desc class="x centered">406.0897435897436</desc><desc class="y centered">354.75871530095054</desc><desc class="x_label" /></g></g></g><g class="series serie-4 color-4"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M493.589744 314.610727 L542.948718 314.610727" stroke-width="3" /><path class="reactive tooltip-trigger" d="M468.910256 311.060788 L567.628205 311.060788" stroke-width="3" /><path class="reactive tooltip-trigger" d="M493.589744 294.055661 L542.948718 294.055661" stroke-width="3" /><path class="reactive tooltip-trigger" d="M518.269231 314.610727 L518.269231 312.320130" stroke-width="2" /><path class="reactive tooltip-trigger" d="M518.269231 294.055661 L518.269231 305.087245" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="7.232884615451951" width="98.71794871794872" x="468.9102564102564" y="305.0872449833153" /><circle class="subtle-fill reactive tooltip-trigger" cx="518.2692307692307" cy="314.6107274246647" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="518.2692307692307" cy="-109.86599498345316" r="3" /><desc class="value">Min: 223.0780
-Q1-1.5IQR: 223.0780
-Q1: 231.7750
-Median: 236.5565
-Q3: 259.2370
-Q3+1.5IQR: 301.1220
-Max: 1834.7420</desc><desc class="x centered">518.2692307692307</desc><desc class="y centered">307.42691011703494</desc><desc class="x_label" /></g></g></g><g class="series serie-5 color-5"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M605.769231 148.144026 L655.128205 148.144026" stroke-width="3" /><path class="reactive tooltip-trigger" d="M581.089744 111.813675 L679.807692 111.813675" stroke-width="3" /><path class="reactive tooltip-trigger" d="M605.769231 7.281083 L655.128205 7.281083" stroke-width="3" /><path class="reactive tooltip-trigger" d="M630.448718 148.144026 L630.448718 137.535690" stroke-width="2" /><path class="reactive tooltip-trigger" d="M630.448718 7.281083 L630.448718 85.587225" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="51.94846467409806" width="98.71794871794872" x="581.0897435897436" y="85.58722512535991" /><circle class="subtle-fill reactive tooltip-trigger" cx="630.448717948718" cy="148.14402591972893" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="630.448717948718" cy="-422.1611036789873" r="3" /><desc class="value">Min: 855.1230
-Q1-1.5IQR: 855.1230
-Q1: 895.4010
-Median: 993.0630
-Q3: 1092.6403
-Q3+1.5IQR: 1389.9550
-Max: 3020.4720</desc><desc class="x centered">630.448717948718</desc><desc class="y centered">98.07233967393995</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text class="title plot_title" x="400.0" y="26">Speed in Microseconds (us) of Validate Invalid Data</text><text class="title" x="430.0" y="580.0">Trial</text><text class="title" transform="rotate(-90 0.000000 235.000000)" x="0" y="261.0">Duration</text></g><g class="plot overlay" transform="translate(80, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g class="plot text-overlay" transform="translate(80, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g class="plot tooltip-overlay" transform="translate(80, 46)"><g class="tooltip" style="opacity: 0" transform="translate(0 0)"><rect class="tooltip-box" height="0" rx="0" ry="0" width="0" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
+</script></defs><title>Speed in Microseconds (us) of Validate Invalid Data</title><g class="graph custombox-graph vertical"><rect x="0" y="0" width="800" height="600" class="background" /><g transform="translate(80, 46)" class="plot"><rect x="0" y="0" width="700.0" height="378.0" class="background" /><g class="axis y always_show"><path d="M0.000000 378.000000 h700.000000" class="line" /><g class="guides"><path d="M0.000000 350.864896 h700.000000" class="guide line" /><text x="-5" y="354.364896073903" class="">80</text><title>80</title></g><g class="guides"><path d="M0.000000 328.480814 h700.000000" class="guide line" /><text x="-5" y="331.9808136436312" class="">160</text><title>160</title></g><g class="guides"><path d="M0.000000 306.096731 h700.000000" class="guide line" /><text x="-5" y="309.59673121335936" class="">240</text><title>240</title></g><g class="guides"><path d="M0.000000 283.712649 h700.000000" class="guide line" /><text x="-5" y="287.2126487830876" class="">320</text><title>320</title></g><g class="guides"><path d="M0.000000 261.328566 h700.000000" class="guide line" /><text x="-5" y="264.82856635281576" class="">400</text><title>400</title></g><g class="guides"><path d="M0.000000 238.944484 h700.000000" class="guide line" /><text x="-5" y="242.44448392254398" class="">480</text><title>480</title></g><g class="guides"><path d="M0.000000 216.560401 h700.000000" class="guide line" /><text x="-5" y="220.06040149227218" class="">560</text><title>560</title></g><g class="guides"><path d="M0.000000 194.176319 h700.000000" class="guide line" /><text x="-5" y="197.67631906200035" class="">640</text><title>640</title></g><g class="guides"><path d="M0.000000 171.792237 h700.000000" class="guide line" /><text x="-5" y="175.29223663172854" class="">720</text><title>720</title></g><g class="guides"><path d="M0.000000 149.408154 h700.000000" class="guide line" /><text x="-5" y="152.90815420145674" class="">800</text><title>800</title></g><g class="guides"><path d="M0.000000 127.024072 h700.000000" class="guide line" /><text x="-5" y="130.52407177118494" class="">880</text><title>880</title></g><g class="guides"><path d="M0.000000 104.639989 h700.000000" class="guide line" /><text x="-5" y="108.13998934091313" class="">960</text><title>960</title></g><g class="guides"><path d="M0.000000 82.255907 h700.000000" class="guide line" /><text x="-5" y="85.75590691064133" class="">1040</text><title>1040</title></g><g class="guides"><path d="M0.000000 59.871824 h700.000000" class="guide line" /><text x="-5" y="63.371824480369526" class="">1120</text><title>1120</title></g><g class="guides"><path d="M0.000000 37.487742 h700.000000" class="guide line" /><text x="-5" y="40.98774205009772" class="">1200</text><title>1200</title></g><g class="guides"><path d="M0.000000 15.103660 h700.000000" class="guide line" /><text x="-5" y="18.60365961982592" class="">1280</text><title>1280</title></g></g><g class="axis x"><path d="M0.000000 0.000000 v378.000000" class="line" /><g class="guides"><path d="M69.551282 0.000000 v378.000000" class="guide line" /><text x="69.55128205128204" y="393.0" class="backwards" transform="rotate(270 69.551282 393.000000)">typic-object-api</text></g><g class="guides"><path d="M181.730769 0.000000 v378.000000" class="guide line" /><text x="181.73076923076923" y="393.0" class="backwards" transform="rotate(270 181.730769 393.000000)">typic-protocol-api</text></g><g class="guides"><path d="M293.910256 0.000000 v378.000000" class="guide line" /><text x="293.9102564102564" y="393.0" class="backwards" transform="rotate(270 293.910256 393.000000)">typic-functional-api</text></g><g class="guides"><path d="M406.089744 0.000000 v378.000000" class="guide line" /><text x="406.0897435897436" y="393.0" class="backwards" transform="rotate(270 406.089744 393.000000)">pydantic</text></g><g class="guides"><path d="M518.269231 0.000000 v378.000000" class="guide line" /><text x="518.2692307692307" y="393.0" class="backwards" transform="rotate(270 518.269231 393.000000)">marshmallow</text></g><g class="guides"><path d="M630.448718 0.000000 v378.000000" class="guide line" /><text x="630.4487179487179" y="393.0" class="backwards" transform="rotate(270 630.448718 393.000000)">djangorestframework</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path stroke-width="3" d="M44.871795 370.509447 L94.230769 370.509447" class="reactive tooltip-trigger" /><path stroke-width="3" d="M20.192308 369.941171 L118.910256 369.941171" class="reactive tooltip-trigger" /><path stroke-width="3" d="M44.871795 366.983394 L94.230769 366.983394" class="reactive tooltip-trigger" /><path stroke-width="2" d="M69.551282 370.509447 L69.551282 370.283088" class="reactive tooltip-trigger" /><path stroke-width="2" d="M69.551282 366.983394 L69.551282 368.963546" class="reactive tooltip-trigger" /><rect x="20.192307692307693" y="368.9635459229494" height="1.3195416593465552" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="69.55128205128204" cy="370.5094466157141" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="69.55128205128204" cy="330.8067996092257" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 9.7910
+Q1-1.5IQR: 9.7910
+Q1: 10.6000
+Median: 11.8220
+Q3: 15.3160
+Q3+1.5IQR: 22.3930
+Max: 151.6870</desc><desc class="x centered">69.55128205128204</desc><desc class="y centered">369.3361289749636</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path stroke-width="3" d="M157.051282 370.396967 L206.410256 370.396967" class="reactive tooltip-trigger" /><path stroke-width="3" d="M132.371795 370.175644 L231.089744 370.175644" class="reactive tooltip-trigger" /><path stroke-width="3" d="M157.051282 369.616602 L206.410256 369.616602" class="reactive tooltip-trigger" /><path stroke-width="2" d="M181.730769 370.396967 L181.730769 370.246154" class="reactive tooltip-trigger" /><path stroke-width="2" d="M181.730769 369.616602 L181.730769 369.994613" class="reactive tooltip-trigger" /><rect x="132.3717948717949" y="369.9946127199646" height="0.2515411262476732" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="181.73076923076925" cy="370.39696660163884" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="181.73076923076925" cy="320.28152424940674" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 10.1930
+Q1-1.5IQR: 10.1930
+Q1: 10.7320
+Median: 10.9840
+Q3: 11.6310
+Q3+1.5IQR: 12.9820
+Max: 189.3040</desc><desc class="x centered">181.73076923076925</desc><desc class="y centered">370.08599573639304</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path stroke-width="3" d="M269.230769 370.244755 L318.589744 370.244755" class="reactive tooltip-trigger" /><path stroke-width="3" d="M244.551282 369.947047 L343.269231 369.947047" class="reactive tooltip-trigger" /><path stroke-width="3" d="M269.230769 369.564559 L318.589744 369.564559" class="reactive tooltip-trigger" /><path stroke-width="2" d="M293.910256 370.244755 L293.910256 370.013639" class="reactive tooltip-trigger" /><path stroke-width="2" d="M293.910256 369.564559 L293.910256 369.834007" class="reactive tooltip-trigger" /><rect x="244.55128205128204" y="369.83400692841" height="0.17963226145496947" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="293.9102564102564" cy="370.2447548409446" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="293.9102564102564" cy="329.32077633669746" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 10.7370
+Q1-1.5IQR: 10.7370
+Q1: 11.5630
+Median: 11.8010
+Q3: 12.2050
+Q3+1.5IQR: 13.1680
+Max: 156.9980</desc><desc class="x centered">293.9102564102564</desc><desc class="y centered">369.92080120795816</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path stroke-width="3" d="M381.410256 354.759726 L430.769231 354.759726" class="reactive tooltip-trigger" /><path stroke-width="3" d="M356.730769 353.129046 L455.448718 353.129046" class="reactive tooltip-trigger" /><path stroke-width="3" d="M381.410256 351.252700 L430.769231 351.252700" class="reactive tooltip-trigger" /><path stroke-width="2" d="M406.089744 354.759726 L406.089744 353.524685" class="reactive tooltip-trigger" /><path stroke-width="2" d="M406.089744 351.252700 L406.089744 352.623026" class="reactive tooltip-trigger" /><rect x="356.7307692307692" y="352.6230258484135" height="0.9016588202576372" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="406.0897435897436" cy="354.7597264168102" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="406.0897435897436" cy="286.5386391897924" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 66.0800
+Q1-1.5IQR: 66.0800
+Q1: 70.4940
+Median: 71.9080
+Q3: 73.7165
+Q3+1.5IQR: 78.6140
+Max: 309.9000</desc><desc class="x centered">406.0897435897436</desc><desc class="y centered">353.0578366495138</desc><desc class="x_label" /></g></g></g><g class="series serie-4 color-4"><g class="boxes"><g class="box"><path stroke-width="3" d="M493.589744 311.126714 L542.948718 311.126714" class="reactive tooltip-trigger" /><path stroke-width="3" d="M468.910256 307.988186 L567.628205 307.988186" class="reactive tooltip-trigger" /><path stroke-width="3" d="M493.589744 295.230099 L542.948718 295.230099" class="reactive tooltip-trigger" /><path stroke-width="2" d="M518.269231 311.126714 L518.269231 309.672309" class="reactive tooltip-trigger" /><path stroke-width="2" d="M518.269231 295.230099 L518.269231 303.899873" class="reactive tooltip-trigger" /><rect x="468.9102564102564" y="303.89987342323275" height="5.772435157503139" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="518.2692307692307" cy="311.12671433670045" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="518.2692307692307" cy="181.88242138926677" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 222.0230
+Q1-1.5IQR: 222.0230
+Q1: 227.2210
+Median: 233.2400
+Q3: 247.8515
+Q3+1.5IQR: 278.8370
+Max: 683.9380</desc><desc class="x centered">518.2692307692307</desc><desc class="y centered">305.58343622320047</desc><desc class="x_label" /></g></g></g><g class="series serie-5 color-5"><g class="boxes"><g class="box"><path stroke-width="3" d="M605.769231 164.454734 L655.128205 164.454734" class="reactive tooltip-trigger" /><path stroke-width="3" d="M581.089744 118.145146 L679.807692 118.145146" class="reactive tooltip-trigger" /><path stroke-width="3" d="M605.769231 7.395981 L655.128205 7.395981" class="reactive tooltip-trigger" /><path stroke-width="2" d="M630.448718 164.454734 L630.448718 138.878542" class="reactive tooltip-trigger" /><path stroke-width="2" d="M630.448718 7.395981 L630.448718 86.687116" class="reactive tooltip-trigger" /><rect x="581.0897435897436" y="86.68711582866007" height="52.19142609704542" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="630.448717948718" cy="164.4547344110184" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="630.448717948718" cy="-428.85271806713877" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 746.2240
+Q1-1.5IQR: 746.2240
+Q1: 837.6325
+Median: 911.7330
+Q3: 1024.1630
+Q3+1.5IQR: 1307.5470
+Max: 2866.6860</desc><desc class="x centered">630.448717948718</desc><desc class="y centered">103.1123036950977</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text x="400.0" y="26" class="title plot_title">Speed in Microseconds (us) of Validate Invalid Data</text><text x="430.0" y="580.0" class="title">Trial</text><text x="0" y="261.0" class="title" transform="rotate(-90 0.000000 235.000000)">Duration</text></g><g transform="translate(80, 46)" class="plot overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g transform="translate(80, 46)" class="plot text-overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g transform="translate(80, 46)" class="plot tooltip-overlay"><g transform="translate(0 0)" style="opacity: 0" class="tooltip"><rect rx="0" ry="0" width="0" height="0" class="tooltip-box" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
diff --git a/docs/static/Validate_Valid_Data.svg b/docs/static/Validate_Valid_Data.svg
index 682196d2..d388e79c 100644
--- a/docs/static/Validate_Valid_Data.svg
+++ b/docs/static/Validate_Valid_Data.svg
@@ -1,8 +1,8 @@
 <?xml version='1.0' encoding='utf-8'?>
-<svg class="pygal-chart" id="chart-32c0491e-1697-4610-967c-33a0b91e937e" viewBox="0 0 800 600" xmlns="http://www.w3.org/2000/svg"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-07-06--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-32c0491e-1697-4610-967c-33a0b91e937e{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-32c0491e-1697-4610-967c-33a0b91e937e .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-32c0491e-1697-4610-967c-33a0b91e937e .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-32c0491e-1697-4610-967c-33a0b91e937e .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-32c0491e-1697-4610-967c-33a0b91e937e .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-32c0491e-1697-4610-967c-33a0b91e937e .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-32c0491e-1697-4610-967c-33a0b91e937e text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
-#chart-32c0491e-1697-4610-967c-33a0b91e937e{background-color:rgba(249,249,249,1)}#chart-32c0491e-1697-4610-967c-33a0b91e937e path,#chart-32c0491e-1697-4610-967c-33a0b91e937e line,#chart-32c0491e-1697-4610-967c-33a0b91e937e rect,#chart-32c0491e-1697-4610-967c-33a0b91e937e circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-32c0491e-1697-4610-967c-33a0b91e937e .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .graph{fill:rgba(0,0,0,.87)}#chart-32c0491e-1697-4610-967c-33a0b91e937e text.no_data{fill:rgba(0,0,0,1)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .title{fill:rgba(0,0,0,1)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .legends .legend text{fill:rgba(0,0,0,.87)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis .line{stroke:rgba(0,0,0,1)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis text.major{fill:rgba(0,0,0,1)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis.y .guides:hover .guide.line,#chart-32c0491e-1697-4610-967c-33a0b91e937e .line-graph .axis.x .guides:hover .guide.line,#chart-32c0491e-1697-4610-967c-33a0b91e937e .stackedline-graph .axis.x .guides:hover .guide.line,#chart-32c0491e-1697-4610-967c-33a0b91e937e .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-32c0491e-1697-4610-967c-33a0b91e937e .ci{stroke:rgba(0,0,0,.87)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .reactive.active,#chart-32c0491e-1697-4610-967c-33a0b91e937e .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-32c0491e-1697-4610-967c-33a0b91e937e .ci .reactive.active{stroke-width:1.5}#chart-32c0491e-1697-4610-967c-33a0b91e937e .series text{fill:rgba(0,0,0,1)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-32c0491e-1697-4610-967c-33a0b91e937e .tooltip .label{fill:rgba(0,0,0,.87)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .tooltip .label{fill:rgba(0,0,0,.87)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-32c0491e-1697-4610-967c-33a0b91e937e .tooltip .value{font-size:1.5em}#chart-32c0491e-1697-4610-967c-33a0b91e937e .bound{font-size:.5em}#chart-32c0491e-1697-4610-967c-33a0b91e937e .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-32c0491e-1697-4610-967c-33a0b91e937e .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-32c0491e-1697-4610-967c-33a0b91e937e .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-32c0491e-1697-4610-967c-33a0b91e937e .color-0,#chart-32c0491e-1697-4610-967c-33a0b91e937e .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-32c0491e-1697-4610-967c-33a0b91e937e .color-1,#chart-32c0491e-1697-4610-967c-33a0b91e937e .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-32c0491e-1697-4610-967c-33a0b91e937e .color-2,#chart-32c0491e-1697-4610-967c-33a0b91e937e .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-32c0491e-1697-4610-967c-33a0b91e937e .color-3,#chart-32c0491e-1697-4610-967c-33a0b91e937e .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-32c0491e-1697-4610-967c-33a0b91e937e .color-4,#chart-32c0491e-1697-4610-967c-33a0b91e937e .color-4 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-32c0491e-1697-4610-967c-33a0b91e937e .color-5,#chart-32c0491e-1697-4610-967c-33a0b91e937e .color-5 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-32c0491e-1697-4610-967c-33a0b91e937e .text-overlay .color-0 text{fill:black}#chart-32c0491e-1697-4610-967c-33a0b91e937e .text-overlay .color-1 text{fill:black}#chart-32c0491e-1697-4610-967c-33a0b91e937e .text-overlay .color-2 text{fill:black}#chart-32c0491e-1697-4610-967c-33a0b91e937e .text-overlay .color-3 text{fill:black}#chart-32c0491e-1697-4610-967c-33a0b91e937e .text-overlay .color-4 text{fill:black}#chart-32c0491e-1697-4610-967c-33a0b91e937e .text-overlay .color-5 text{fill:black}
-#chart-32c0491e-1697-4610-967c-33a0b91e937e text.no_data{text-anchor:middle}#chart-32c0491e-1697-4610-967c-33a0b91e937e .guide.line{fill:none}#chart-32c0491e-1697-4610-967c-33a0b91e937e .centered{text-anchor:middle}#chart-32c0491e-1697-4610-967c-33a0b91e937e .title{text-anchor:middle}#chart-32c0491e-1697-4610-967c-33a0b91e937e .legends .legend text{fill-opacity:1}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis.x text{text-anchor:middle}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis.x:not(.web) text[transform]{text-anchor:start}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis.y text{text-anchor:end}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis.y text[transform].backwards{text-anchor:start}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis.y2 text{text-anchor:start}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis.y2 text[transform].backwards{text-anchor:end}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis .guide.line{stroke-dasharray:4,4}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis .major.guide.line{stroke-dasharray:6,6}#chart-32c0491e-1697-4610-967c-33a0b91e937e .horizontal .axis.y .guide.line,#chart-32c0491e-1697-4610-967c-33a0b91e937e .horizontal .axis.y2 .guide.line,#chart-32c0491e-1697-4610-967c-33a0b91e937e .vertical .axis.x .guide.line{opacity:0}#chart-32c0491e-1697-4610-967c-33a0b91e937e .horizontal .axis.always_show .guide.line,#chart-32c0491e-1697-4610-967c-33a0b91e937e .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis.y .guides:hover .guide.line,#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis.y2 .guides:hover .guide.line,#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis.x .guides:hover .guide.line{opacity:1}#chart-32c0491e-1697-4610-967c-33a0b91e937e .axis .guides:hover text{opacity:1}#chart-32c0491e-1697-4610-967c-33a0b91e937e .nofill{fill:none}#chart-32c0491e-1697-4610-967c-33a0b91e937e .subtle-fill{fill-opacity:.2}#chart-32c0491e-1697-4610-967c-33a0b91e937e .dot{stroke-width:1px;fill-opacity:1}#chart-32c0491e-1697-4610-967c-33a0b91e937e .dot.active{stroke-width:5px}#chart-32c0491e-1697-4610-967c-33a0b91e937e .dot.negative{fill:transparent}#chart-32c0491e-1697-4610-967c-33a0b91e937e text,#chart-32c0491e-1697-4610-967c-33a0b91e937e tspan{stroke:none !important}#chart-32c0491e-1697-4610-967c-33a0b91e937e .series text.active{opacity:1}#chart-32c0491e-1697-4610-967c-33a0b91e937e .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-32c0491e-1697-4610-967c-33a0b91e937e .tooltip text{fill-opacity:1}#chart-32c0491e-1697-4610-967c-33a0b91e937e .showable{visibility:hidden}#chart-32c0491e-1697-4610-967c-33a0b91e937e .showable.shown{visibility:visible}#chart-32c0491e-1697-4610-967c-33a0b91e937e .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-32c0491e-1697-4610-967c-33a0b91e937e .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
-.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['32c0491e-1697-4610-967c-33a0b91e937e'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.7/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [35, 1159], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Validate Valid Data", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-object-api", "typic-protocol-api", "pydantic", "typic-functional-api", "marshmallow", "djangorestframework"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 35, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_validate_valid_data[typic-object-api] - 12824 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_valid_data[typic-protocol-api] - 12716 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_valid_data[pydantic] - 5735 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_valid_data[typic-functional-api] - 11099 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_valid_data[marshmallow] - 2267 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_valid_data[djangorestframework] - 1031 rounds"]}</script><script type="text/javascript">(function() {
+<svg xmlns="http://www.w3.org/2000/svg" id="chart-75d82ee1-298e-461a-801c-58c17f6f53a7" class="pygal-chart" viewBox="0 0 800 600"><!--Generated with pygal 2.4.0 (etree) ©Kozea 2012-2016 on 2021-09-28--><!--http://pygal.org--><!--http://github.com/Kozea/pygal--><defs><style type="text/css">#chart-75d82ee1-298e-461a-801c-58c17f6f53a7{-webkit-user-select:none;-webkit-font-smoothing:antialiased;font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .title{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .legends .legend text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis text{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis text.major{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .text-overlay text.value{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:16px}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .text-overlay text.label{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:10px}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .tooltip{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:14px}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 text.no_data{font-family:Consolas,"Deja Vu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace;font-size:64px}
+#chart-75d82ee1-298e-461a-801c-58c17f6f53a7{background-color:rgba(249,249,249,1)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 path,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 line,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 rect,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 circle{-webkit-transition:150ms;-moz-transition:150ms;transition:150ms}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .graph &gt; .background{fill:rgba(249,249,249,1)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .plot &gt; .background{fill:rgba(255,255,255,1)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .graph{fill:rgba(0,0,0,.87)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 text.no_data{fill:rgba(0,0,0,1)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .title{fill:rgba(0,0,0,1)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .legends .legend text{fill:rgba(0,0,0,.87)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .legends .legend:hover text{fill:rgba(0,0,0,1)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis .line{stroke:rgba(0,0,0,1)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis .guide.line{stroke:rgba(0,0,0,.54)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis .major.line{stroke:rgba(0,0,0,.87)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis text.major{fill:rgba(0,0,0,1)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis.y .guides:hover .guide.line,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .line-graph .axis.x .guides:hover .guide.line,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .stackedline-graph .axis.x .guides:hover .guide.line,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .xy-graph .axis.x .guides:hover .guide.line{stroke:rgba(0,0,0,1)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis .guides:hover text{fill:rgba(0,0,0,1)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .reactive{fill-opacity:.7;stroke-opacity:.8}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .ci{stroke:rgba(0,0,0,.87)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .reactive.active,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .active .reactive{fill-opacity:.8;stroke-opacity:.9;stroke-width:4}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .ci .reactive.active{stroke-width:1.5}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .series text{fill:rgba(0,0,0,1)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .tooltip rect{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,1);-webkit-transition:opacity 150ms;-moz-transition:opacity 150ms;transition:opacity 150ms}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .tooltip .label{fill:rgba(0,0,0,.87)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .tooltip .legend{font-size:.8em;fill:rgba(0,0,0,.54)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .tooltip .x_label{font-size:.6em;fill:rgba(0,0,0,1)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .tooltip .xlink{font-size:.5em;text-decoration:underline}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .tooltip .value{font-size:1.5em}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .bound{font-size:.5em}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .max-value{font-size:.75em;fill:rgba(0,0,0,.54)}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .map-element{fill:rgba(255,255,255,1);stroke:rgba(0,0,0,.54) !important}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .map-element .reactive{fill-opacity:inherit;stroke-opacity:inherit}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .color-0,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .color-0 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .color-1,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .color-1 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .color-2,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .color-2 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .color-3,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .color-3 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .color-4,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .color-4 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .color-5,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .color-5 a:visited{stroke:#3F51B5;fill:#3F51B5}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .text-overlay .color-0 text{fill:black}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .text-overlay .color-1 text{fill:black}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .text-overlay .color-2 text{fill:black}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .text-overlay .color-3 text{fill:black}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .text-overlay .color-4 text{fill:black}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .text-overlay .color-5 text{fill:black}
+#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 text.no_data{text-anchor:middle}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .guide.line{fill:none}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .centered{text-anchor:middle}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .title{text-anchor:middle}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .legends .legend text{fill-opacity:1}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis.x text{text-anchor:middle}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis.x:not(.web) text[transform]{text-anchor:start}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis.x:not(.web) text[transform].backwards{text-anchor:end}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis.y text{text-anchor:end}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis.y text[transform].backwards{text-anchor:start}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis.y2 text{text-anchor:start}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis.y2 text[transform].backwards{text-anchor:end}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis .guide.line{stroke-dasharray:4,4}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis .major.guide.line{stroke-dasharray:6,6}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .horizontal .axis.y .guide.line,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .horizontal .axis.y2 .guide.line,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .vertical .axis.x .guide.line{opacity:0}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .horizontal .axis.always_show .guide.line,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .vertical .axis.always_show .guide.line{opacity:1 !important}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis.y .guides:hover .guide.line,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis.y2 .guides:hover .guide.line,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis.x .guides:hover .guide.line{opacity:1}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .axis .guides:hover text{opacity:1}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .nofill{fill:none}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .subtle-fill{fill-opacity:.2}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .dot{stroke-width:1px;fill-opacity:1}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .dot.active{stroke-width:5px}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .dot.negative{fill:transparent}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 text,#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 tspan{stroke:none !important}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .series text.active{opacity:1}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .tooltip rect{fill-opacity:.95;stroke-width:.5}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .tooltip text{fill-opacity:1}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .showable{visibility:hidden}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .showable.shown{visibility:visible}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .gauge-background{fill:rgba(229,229,229,1);stroke:none}#chart-75d82ee1-298e-461a-801c-58c17f6f53a7 .bg-lines{stroke:rgba(249,249,249,1);stroke-width:2px}
+.tooltip .value{font-size:1em !important}.axis text{font-size:9px !important}</style><script type="text/javascript">window.pygal = window.pygal || {};window.pygal.config = window.pygal.config || {};window.pygal.config['75d82ee1-298e-461a-801c-58c17f6f53a7'] = {"allow_interruptions": false, "box_mode": "tukey", "classes": ["pygal-chart"], "css": ["file://style.css", "file://graph.css", "inline:\n                .tooltip .value {\n                    font-size: 1em !important;\n                }\n                .axis text {\n                    font-size: 9px !important;\n                }\n            "], "defs": [], "disable_xml_declaration": false, "dots_size": 2.5, "dynamic_print_values": false, "explicit_size": false, "fill": false, "force_uri_protocol": "https", "formatter": null, "half_pie": false, "height": 600, "include_x_axis": false, "inner_radius": 0, "interpolate": null, "interpolation_parameters": {}, "interpolation_precision": 250, "inverse_y_axis": false, "js": ["file:///Users/god/PycharmProjects/typic/.venv/lib/python3.8/site-packages/pygaljs/static/2.0.x/pygal-tooltips.js"], "legend_at_bottom": false, "legend_at_bottom_columns": null, "legend_box_size": 12, "logarithmic": false, "margin": 20, "margin_bottom": null, "margin_left": null, "margin_right": null, "margin_top": null, "max_scale": 20, "min_scale": 20, "missing_value_fill_truncation": "x", "no_data_text": "No data", "no_prefix": false, "order_min": null, "pretty_print": false, "print_labels": false, "print_values": false, "print_values_position": "center", "print_zeroes": true, "range": [32, 1068], "rounded_bars": null, "secondary_range": null, "show_dots": true, "show_legend": false, "show_minor_x_labels": true, "show_minor_y_labels": true, "show_only_major_dots": false, "show_x_guides": false, "show_x_labels": true, "show_y_guides": true, "show_y_labels": true, "spacing": 10, "stack_from_top": false, "strict": false, "stroke": true, "stroke_style": null, "style": {"background": "rgba(249, 249, 249, 1)", "ci_colors": [], "colors": ["#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5", "#3F51B5"], "font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "foreground": "rgba(0, 0, 0, .87)", "foreground_strong": "rgba(0, 0, 0, 1)", "foreground_subtle": "rgba(0, 0, 0, .54)", "guide_stroke_dasharray": "4,4", "label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "label_font_size": 10, "legend_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "legend_font_size": 14, "major_guide_stroke_dasharray": "6,6", "major_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "major_label_font_size": 10, "no_data_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "no_data_font_size": 64, "opacity": ".7", "opacity_hover": ".8", "plot_background": "rgba(255, 255, 255, 1)", "stroke_opacity": ".8", "stroke_opacity_hover": ".9", "title_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "title_font_size": 16, "tooltip_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "tooltip_font_size": 14, "transition": "150ms", "value_background": "rgba(229, 229, 229, 1)", "value_colors": [], "value_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_font_size": 16, "value_label_font_family": "Consolas, \"Deja Vu Sans Mono\", \"Bitstream Vera Sans Mono\", \"Courier New\", monospace", "value_label_font_size": 10}, "title": "Speed in Microseconds (us) of Validate Valid Data", "tooltip_border_radius": 0, "tooltip_fancy_mode": true, "truncate_label": 50, "truncate_legend": null, "width": 800, "x_label_rotation": 270, "x_labels": ["typic-protocol-api", "typic-object-api", "typic-functional-api", "pydantic", "marshmallow", "djangorestframework"], "x_labels_major": null, "x_labels_major_count": null, "x_labels_major_every": null, "x_title": "Trial", "xrange": null, "y_label_rotation": 0, "y_labels": null, "y_labels_major": null, "y_labels_major_count": null, "y_labels_major_every": null, "y_title": "Duration", "zero": 32, "legends": ["benchmark/test_benchmarks.py::test_benchmarks_validate_valid_data[typic-protocol-api] - 10229 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_valid_data[typic-object-api] - 12905 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_valid_data[typic-functional-api] - 10821 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_valid_data[pydantic] - 4943 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_valid_data[marshmallow] - 2070 rounds", "benchmark/test_benchmarks.py::test_benchmarks_validate_valid_data[djangorestframework] - 919 rounds"]}</script><script type="text/javascript">(function() {
   var $, get_translation, init, init_svg, matches, padding, r_translation, sibl, svg_ns, tooltip_timeout, xlink_ns;
 
   svg_ns = 'http://www.w3.org/2000/svg';
@@ -345,40 +345,40 @@
   window.pygal.init_svg = init_svg;
 
 }).call(this);
-</script></defs><title>Speed in Microseconds (us) of Validate Valid Data</title><g class="graph custombox-graph vertical"><rect class="background" height="600" width="800" x="0" y="0" /><g class="plot" transform="translate(80, 46)"><rect class="background" height="378.0" width="700.0" x="0" y="0" /><g class="axis y always_show"><path class="line" d="M0.000000 378.000000 h700.000000" /><g class="guides"><path class="guide line" d="M0.000000 356.179373 h700.000000" /><text class="" x="-5" y="359.6793731179852">80</text><title>80</title></g><g class="guides"><path class="guide line" d="M0.000000 330.310224 h700.000000" /><text class="" x="-5" y="333.8102244730359">160</text><title>160</title></g><g class="guides"><path class="guide line" d="M0.000000 304.441076 h700.000000" /><text class="" x="-5" y="307.9410758280865">240</text><title>240</title></g><g class="guides"><path class="guide line" d="M0.000000 278.571927 h700.000000" /><text class="" x="-5" y="282.0719271831372">320</text><title>320</title></g><g class="guides"><path class="guide line" d="M0.000000 252.702779 h700.000000" /><text class="" x="-5" y="256.2027785381878">400</text><title>400</title></g><g class="guides"><path class="guide line" d="M0.000000 226.833630 h700.000000" /><text class="" x="-5" y="230.33362989323842">480</text><title>480</title></g><g class="guides"><path class="guide line" d="M0.000000 200.964481 h700.000000" /><text class="" x="-5" y="204.46448124828908">560</text><title>560</title></g><g class="guides"><path class="guide line" d="M0.000000 175.095333 h700.000000" /><text class="" x="-5" y="178.59533260333973">640</text><title>640</title></g><g class="guides"><path class="guide line" d="M0.000000 149.226184 h700.000000" /><text class="" x="-5" y="152.72618395839038">720</text><title>720</title></g><g class="guides"><path class="guide line" d="M0.000000 123.357035 h700.000000" /><text class="" x="-5" y="126.857035313441">800</text><title>800</title></g><g class="guides"><path class="guide line" d="M0.000000 97.487887 h700.000000" /><text class="" x="-5" y="100.98788666849168">880</text><title>880</title></g><g class="guides"><path class="guide line" d="M0.000000 71.618738 h700.000000" /><text class="" x="-5" y="75.11873802354228">960</text><title>960</title></g><g class="guides"><path class="guide line" d="M0.000000 45.749589 h700.000000" /><text class="" x="-5" y="49.24958937859293">1040</text><title>1040</title></g><g class="guides"><path class="guide line" d="M0.000000 19.880441 h700.000000" /><text class="" x="-5" y="23.38044073364358">1120</text><title>1120</title></g></g><g class="axis x"><path class="line" d="M0.000000 0.000000 v378.000000" /><g class="guides"><path class="guide line" d="M69.551282 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 69.551282 393.000000)" x="69.55128205128204" y="393.0">typic-object-api</text></g><g class="guides"><path class="guide line" d="M181.730769 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 181.730769 393.000000)" x="181.73076923076923" y="393.0">typic-protocol-api</text></g><g class="guides"><path class="guide line" d="M293.910256 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 293.910256 393.000000)" x="293.9102564102564" y="393.0">pydantic</text></g><g class="guides"><path class="guide line" d="M406.089744 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 406.089744 393.000000)" x="406.0897435897436" y="393.0">typic-functional-api</text></g><g class="guides"><path class="guide line" d="M518.269231 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 518.269231 393.000000)" x="518.2692307692307" y="393.0">marshmallow</text></g><g class="guides"><path class="guide line" d="M630.448718 0.000000 v378.000000" /><text class="backwards" transform="rotate(270 630.448718 393.000000)" x="630.4487179487179" y="393.0">djangorestframework</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M44.871795 370.535457 L94.230769 370.535457" stroke-width="3" /><path class="reactive tooltip-trigger" d="M20.192308 369.959869 L118.910256 369.959869" stroke-width="3" /><path class="reactive tooltip-trigger" d="M44.871795 369.328985 L94.230769 369.328985" stroke-width="3" /><path class="reactive tooltip-trigger" d="M69.551282 370.535457 L69.551282 370.173936" stroke-width="2" /><path class="reactive tooltip-trigger" d="M69.551282 369.328985 L69.551282 369.836667" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.3372690255054067" width="98.71794871794872" x="20.192307692307693" y="369.8366667807028" /><circle class="subtle-fill reactive tooltip-trigger" cx="69.55128205128204" cy="370.5354571582772" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="69.55128205128204" cy="273.7822543114652" r="3" /><desc class="value">Min: 35.6040
-Q1-1.5IQR: 35.6040
-Q1: 36.7220
-Median: 37.3840
-Q3: 37.7650
-Q3+1.5IQR: 39.3350
-Max: 334.8120</desc><desc class="x centered">69.55128205128204</desc><desc class="y centered">369.9669826169852</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M157.051282 370.379919 L206.410256 370.379919" stroke-width="3" /><path class="reactive tooltip-trigger" d="M132.371795 369.655906 L231.089744 369.655906" stroke-width="3" /><path class="reactive tooltip-trigger" d="M157.051282 365.897442 L206.410256 365.897442" stroke-width="3" /><path class="reactive tooltip-trigger" d="M181.730769 370.379919 L181.730769 369.862051" stroke-width="2" /><path class="reactive tooltip-trigger" d="M181.730769 365.897442 L181.730769 368.277727" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="1.5843236721588596" width="98.71794871794872" x="132.3717948717949" y="368.2777272105981" /><circle class="subtle-fill reactive tooltip-trigger" cx="181.73076923076925" cy="370.3799189023916" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="181.73076923076925" cy="70.19528811930803" r="3" /><desc class="value">Min: 36.0850
-Q1-1.5IQR: 36.0850
-Q1: 37.6865
-Median: 38.3240
-Q3: 42.5860
-Q3+1.5IQR: 49.9470
-Max: 964.4020</desc><desc class="x centered">181.73076923076925</desc><desc class="y centered">368.8146090542219</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M269.230769 370.249926 L318.589744 370.249926" stroke-width="3" /><path class="reactive tooltip-trigger" d="M244.551282 369.444426 L343.269231 369.444426" stroke-width="3" /><path class="reactive tooltip-trigger" d="M269.230769 368.675465 L318.589744 368.675465" stroke-width="3" /><path class="reactive tooltip-trigger" d="M293.910256 370.249926 L293.910256 369.702794" stroke-width="2" /><path class="reactive tooltip-trigger" d="M293.910256 368.675465 L293.910256 369.295112" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.4076816145552016" width="98.71794871794872" x="244.55128205128204" y="369.2951123220343" /><circle class="subtle-fill reactive tooltip-trigger" cx="293.9102564102564" cy="370.2499264303217" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="293.9102564102564" cy="275.0048949493626" r="3" /><desc class="value">Min: 36.4870
-Q1-1.5IQR: 36.4870
-Q1: 38.1790
-Median: 38.9780
-Q3: 39.4398
-Q3+1.5IQR: 41.3560
-Max: 331.0310</desc><desc class="x centered">293.9102564102564</desc><desc class="y centered">369.47354477487147</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M381.410256 370.223734 L430.769231 370.223734" stroke-width="3" /><path class="reactive tooltip-trigger" d="M356.730769 369.644265 L455.448718 369.644265" stroke-width="3" /><path class="reactive tooltip-trigger" d="M381.410256 368.917019 L430.769231 368.917019" stroke-width="3" /><path class="reactive tooltip-trigger" d="M406.089744 370.223734 L406.089744 369.743538" stroke-width="2" /><path class="reactive tooltip-trigger" d="M406.089744 368.917019 L406.089744 369.416051" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="0.32748725351086705" width="98.71794871794872" x="356.7307692307692" y="369.4160505921191" /><circle class="subtle-fill reactive tooltip-trigger" cx="406.0897435897436" cy="370.2386086777147" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="406.0897435897436" cy="289.9824852860329" r="3" /><desc class="value">Min: 36.5220
-Q1-1.5IQR: 36.5680
-Q1: 38.0530
-Median: 38.3600
-Q3: 39.0657
-Q3+1.5IQR: 40.6090
-Max: 284.7130</desc><desc class="x centered">406.0897435897436</desc><desc class="y centered">369.5889211778821</desc><desc class="x_label" /></g></g></g><g class="series serie-4 color-4"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M493.589744 328.028242 L542.948718 328.028242" stroke-width="3" /><path class="reactive tooltip-trigger" d="M468.910256 325.256363 L567.628205 325.256363" stroke-width="3" /><path class="reactive tooltip-trigger" d="M493.589744 320.044700 L542.948718 320.044700" stroke-width="3" /><path class="reactive tooltip-trigger" d="M518.269231 328.028242 L518.269231 325.991047" stroke-width="2" /><path class="reactive tooltip-trigger" d="M518.269231 320.044700 L518.269231 323.643583" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="2.347463557321703" width="98.71794871794872" x="468.9102564102564" y="323.64358318508664" /><circle class="subtle-fill reactive tooltip-trigger" cx="518.2692307692307" cy="328.02824219816694" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="518.2692307692307" cy="57.46863707909739" r="3" /><desc class="value">Min: 167.0570
-Q1-1.5IQR: 167.0570
-Q1: 173.3570
-Median: 175.6290
-Q3: 180.6165
-Q3+1.5IQR: 191.7460
-Max: 1003.7590</desc><desc class="x centered">518.2692307692307</desc><desc class="y centered">324.5927869216996</desc><desc class="x_label" /></g></g></g><g class="series serie-5 color-5"><g class="boxes"><g class="box"><path class="reactive tooltip-trigger" d="M605.769231 178.583141 L655.128205 178.583141" stroke-width="3" /><path class="reactive tooltip-trigger" d="M581.089744 135.234855 L679.807692 135.234855" stroke-width="3" /><path class="reactive tooltip-trigger" d="M605.769231 7.377881 L655.128205 7.377881" stroke-width="3" /><path class="reactive tooltip-trigger" d="M630.448718 178.583141 L630.448718 158.382892" stroke-width="2" /><path class="reactive tooltip-trigger" d="M630.448718 7.377881 L630.448718 99.269543" stroke-width="2" /><rect class="subtle-fill reactive tooltip-trigger" height="59.11334904526032" width="98.71794871794872" x="581.0897435897436" y="99.26954344036841" /><circle class="subtle-fill reactive tooltip-trigger" cx="630.448717948718" cy="178.5831405694165" r="3" /><circle class="subtle-fill reactive tooltip-trigger" cx="630.448717948718" cy="-10236.073532028486" r="3" /><desc class="value">Min: 629.2140
-Q1-1.5IQR: 629.2140
-Q1: 691.6830
-Median: 763.2680
-Q3: 874.4902
-Q3+1.5IQR: 1158.6640
-Max: 32836.4020</desc><desc class="x centered">630.448717948718</desc><desc class="y centered">115.76966252053631</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text class="title plot_title" x="400.0" y="26">Speed in Microseconds (us) of Validate Valid Data</text><text class="title" x="430.0" y="580.0">Trial</text><text class="title" transform="rotate(-90 0.000000 235.000000)" x="0" y="261.0">Duration</text></g><g class="plot overlay" transform="translate(80, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g class="plot text-overlay" transform="translate(80, 46)"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g class="plot tooltip-overlay" transform="translate(80, 46)"><g class="tooltip" style="opacity: 0" transform="translate(0 0)"><rect class="tooltip-box" height="0" rx="0" ry="0" width="0" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
+</script></defs><title>Speed in Microseconds (us) of Validate Valid Data</title><g class="graph custombox-graph vertical"><rect x="0" y="0" width="800" height="600" class="background" /><g transform="translate(80, 46)" class="plot"><rect x="0" y="0" width="700.0" height="378.0" class="background" /><g class="axis y always_show"><path d="M0.000000 378.000000 h700.000000" class="line" /><g class="guides"><path d="M0.000000 353.890852 h700.000000" class="guide line" /><text x="-5" y="357.3908523908524" class="">80</text><title>80</title></g><g class="guides"><path d="M0.000000 325.824324 h700.000000" class="guide line" /><text x="-5" y="329.3243243243243" class="">160</text><title>160</title></g><g class="guides"><path d="M0.000000 297.757796 h700.000000" class="guide line" /><text x="-5" y="301.25779625779626" class="">240</text><title>240</title></g><g class="guides"><path d="M0.000000 269.691268 h700.000000" class="guide line" /><text x="-5" y="273.1912681912682" class="">320</text><title>320</title></g><g class="guides"><path d="M0.000000 241.624740 h700.000000" class="guide line" /><text x="-5" y="245.12474012474013" class="">400</text><title>400</title></g><g class="guides"><path d="M0.000000 213.558212 h700.000000" class="guide line" /><text x="-5" y="217.05821205821206" class="">480</text><title>480</title></g><g class="guides"><path d="M0.000000 185.491684 h700.000000" class="guide line" /><text x="-5" y="188.991683991684" class="">560</text><title>560</title></g><g class="guides"><path d="M0.000000 157.425156 h700.000000" class="guide line" /><text x="-5" y="160.92515592515593" class="">640</text><title>640</title></g><g class="guides"><path d="M0.000000 129.358628 h700.000000" class="guide line" /><text x="-5" y="132.85862785862784" class="">720</text><title>720</title></g><g class="guides"><path d="M0.000000 101.292100 h700.000000" class="guide line" /><text x="-5" y="104.79209979209975" class="">800</text><title>800</title></g><g class="guides"><path d="M0.000000 73.225572 h700.000000" class="guide line" /><text x="-5" y="76.72557172557168" class="">880</text><title>880</title></g><g class="guides"><path d="M0.000000 45.159044 h700.000000" class="guide line" /><text x="-5" y="48.65904365904362" class="">960</text><title>960</title></g><g class="guides"><path d="M0.000000 17.092516 h700.000000" class="guide line" /><text x="-5" y="20.592515592515554" class="">1040</text><title>1040</title></g></g><g class="axis x"><path d="M0.000000 0.000000 v378.000000" class="line" /><g class="guides"><path d="M69.551282 0.000000 v378.000000" class="guide line" /><text x="69.55128205128204" y="393.0" class="backwards" transform="rotate(270 69.551282 393.000000)">typic-protocol-api</text></g><g class="guides"><path d="M181.730769 0.000000 v378.000000" class="guide line" /><text x="181.73076923076923" y="393.0" class="backwards" transform="rotate(270 181.730769 393.000000)">typic-object-api</text></g><g class="guides"><path d="M293.910256 0.000000 v378.000000" class="guide line" /><text x="293.9102564102564" y="393.0" class="backwards" transform="rotate(270 293.910256 393.000000)">typic-functional-api</text></g><g class="guides"><path d="M406.089744 0.000000 v378.000000" class="guide line" /><text x="406.0897435897436" y="393.0" class="backwards" transform="rotate(270 406.089744 393.000000)">pydantic</text></g><g class="guides"><path d="M518.269231 0.000000 v378.000000" class="guide line" /><text x="518.2692307692307" y="393.0" class="backwards" transform="rotate(270 518.269231 393.000000)">marshmallow</text></g><g class="guides"><path d="M630.448718 0.000000 v378.000000" class="guide line" /><text x="630.4487179487179" y="393.0" class="backwards" transform="rotate(270 630.448718 393.000000)">djangorestframework</text></g></g><g class="series serie-0 color-0"><g class="boxes"><g class="box"><path stroke-width="3" d="M44.871795 370.470101 L94.230769 370.470101" class="reactive tooltip-trigger" /><path stroke-width="3" d="M20.192308 369.477248 L118.910256 369.477248" class="reactive tooltip-trigger" /><path stroke-width="3" d="M44.871795 368.113916 L94.230769 368.113916" class="reactive tooltip-trigger" /><path stroke-width="2" d="M69.551282 370.470101 L69.551282 369.734057" class="reactive tooltip-trigger" /><path stroke-width="2" d="M69.551282 368.113916 L69.551282 369.086422" class="reactive tooltip-trigger" /><rect x="20.192307692307693" y="369.0864215175423" height="0.647635135359053" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="69.55128205128204" cy="370.47010135127283" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="69.55128205128204" cy="299.2775987525325" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 32.7430
+Q1-1.5IQR: 32.7430
+Q1: 34.8410
+Median: 35.5730
+Q3: 36.6870
+Q3+1.5IQR: 39.4590
+Max: 235.6680</desc><desc class="x centered">69.55128205128204</desc><desc class="y centered">369.3763487525896</desc><desc class="x_label" /></g></g></g><g class="series serie-1 color-1"><g class="boxes"><g class="box"><path stroke-width="3" d="M157.051282 370.462383 L206.410256 370.462383" class="reactive tooltip-trigger" /><path stroke-width="3" d="M132.371795 369.475494 L231.089744 369.475494" class="reactive tooltip-trigger" /><path stroke-width="3" d="M157.051282 367.229119 L206.410256 367.229119" class="reactive tooltip-trigger" /><path stroke-width="2" d="M181.730769 370.462383 L181.730769 369.740372" class="reactive tooltip-trigger" /><path stroke-width="2" d="M181.730769 367.229119 L181.730769 368.735941" class="reactive tooltip-trigger" /><rect x="132.3717948717949" y="368.73594074852525" height="1.0044308730903708" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="181.73076923076925" cy="370.46238305603913" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="181.73076923076925" cy="289.35748440738143" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 32.7650
+Q1-1.5IQR: 32.7650
+Q1: 34.8230
+Median: 35.5780
+Q3: 37.6860
+Q3+1.5IQR: 41.9810
+Max: 263.9440</desc><desc class="x centered">181.73076923076925</desc><desc class="y centered">369.12866164239654</desc><desc class="x_label" /></g></g></g><g class="series serie-2 color-2"><g class="boxes"><g class="box"><path stroke-width="3" d="M269.230769 370.295738 L318.589744 370.295738" class="reactive tooltip-trigger" /><path stroke-width="3" d="M244.551282 369.398662 L343.269231 369.398662" class="reactive tooltip-trigger" /><path stroke-width="3" d="M269.230769 367.094400 L318.589744 367.094400" class="reactive tooltip-trigger" /><path stroke-width="2" d="M293.910256 370.295738 L293.910256 369.544344" class="reactive tooltip-trigger" /><path stroke-width="2" d="M293.910256 367.094400 L293.910256 368.564735" class="reactive tooltip-trigger" /><rect x="244.55128205128204" y="368.56473492717583" height="0.9796095374589981" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="293.9102564102564" cy="370.2957380458779" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="293.9102564102564" cy="294.0182822243033" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 33.2400
+Q1-1.5IQR: 33.2400
+Q1: 35.3818
+Median: 35.7970
+Q3: 38.1740
+Q3+1.5IQR: 42.3650
+Max: 250.6590</desc><desc class="x centered">293.9102564102564</desc><desc class="y centered">368.9795757536271</desc><desc class="x_label" /></g></g></g><g class="series serie-3 color-3"><g class="boxes"><g class="box"><path stroke-width="3" d="M381.410256 368.923986 L430.769231 368.923986" class="reactive tooltip-trigger" /><path stroke-width="3" d="M356.730769 368.221271 L455.448718 368.221271" class="reactive tooltip-trigger" /><path stroke-width="3" d="M381.410256 366.510616 L430.769231 366.510616" class="reactive tooltip-trigger" /><path stroke-width="2" d="M406.089744 368.923986 L406.089744 368.512110" class="reactive tooltip-trigger" /><path stroke-width="2" d="M406.089744 366.510616 L406.089744 367.714231" class="reactive tooltip-trigger" /><rect x="356.7307692307692" y="367.7142314189107" height="0.7978787683044288" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="406.0897435897436" cy="368.9239864865499" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="406.0897435897436" cy="289.99564708943535" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 37.1500
+Q1-1.5IQR: 37.1500
+Q1: 38.3240
+Median: 39.1530
+Q3: 40.5983
+Q3+1.5IQR: 44.0290
+Max: 262.1250</desc><desc class="x centered">406.0897435897436</desc><desc class="y centered">367.97644295738024</desc><desc class="x_label" /></g></g></g><g class="series serie-4 color-4"><g class="boxes"><g class="box"><path stroke-width="3" d="M493.589744 317.467866 L542.948718 317.467866" class="reactive tooltip-trigger" /><path stroke-width="3" d="M468.910256 313.747473 L567.628205 313.747473" class="reactive tooltip-trigger" /><path stroke-width="3" d="M493.589744 301.478015 L542.948718 301.478015" class="reactive tooltip-trigger" /><path stroke-width="2" d="M518.269231 317.467866 L518.269231 315.351650" class="reactive tooltip-trigger" /><path stroke-width="2" d="M518.269231 301.478015 L518.269231 309.807108" class="reactive tooltip-trigger" /><rect x="468.9102564102564" y="309.8071075882703" height="5.544542619623371" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="518.2692307692307" cy="317.4678664240866" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="518.2692307692307" cy="169.95335239083036" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 183.8190
+Q1-1.5IQR: 183.8190
+Q1: 189.8510
+Median: 194.4235
+Q3: 205.6550
+Q3+1.5IQR: 229.3960
+Max: 604.2900</desc><desc class="x centered">518.2692307692307</desc><desc class="y centered">311.5704222972936</desc><desc class="x_label" /></g></g></g><g class="series serie-5 color-5"><g class="boxes"><g class="box"><path stroke-width="3" d="M605.769231 177.696557 L655.128205 177.696557" class="reactive tooltip-trigger" /><path stroke-width="3" d="M581.089744 124.737825 L679.807692 124.737825" class="reactive tooltip-trigger" /><path stroke-width="3" d="M605.769231 7.555860 L655.128205 7.555860" class="reactive tooltip-trigger" /><path stroke-width="2" d="M630.448718 177.696557 L630.448718 147.557140" class="reactive tooltip-trigger" /><path stroke-width="2" d="M630.448718 7.555860 L630.448718 92.121713" class="reactive tooltip-trigger" /><rect x="581.0897435897436" y="92.12171257805875" height="55.43542749470487" width="98.71794871794872" class="subtle-fill reactive tooltip-trigger" /><circle cx="630.448717948718" cy="177.69655665280843" r="3" class="subtle-fill reactive tooltip-trigger" /><circle cx="630.448717948718" cy="-13178.916112266033" r="3" class="subtle-fill reactive tooltip-trigger" /><desc class="value">Min: 582.2190
+Q1-1.5IQR: 582.2190
+Q1: 668.1275
+Median: 733.1710
+Q3: 826.1390
+Q3+1.5IQR: 1067.1830
+Max: 38653.5120</desc><desc class="x centered">630.448717948718</desc><desc class="y centered">109.93381886694732</desc><desc class="x_label" /></g></g></g></g><g class="titles"><text x="400.0" y="26" class="title plot_title">Speed in Microseconds (us) of Validate Valid Data</text><text x="430.0" y="580.0" class="title">Trial</text><text x="0" y="261.0" class="title" transform="rotate(-90 0.000000 235.000000)">Duration</text></g><g transform="translate(80, 46)" class="plot overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g transform="translate(80, 46)" class="plot text-overlay"><g class="series serie-0 color-0" /><g class="series serie-1 color-1" /><g class="series serie-2 color-2" /><g class="series serie-3 color-3" /><g class="series serie-4 color-4" /><g class="series serie-5 color-5" /></g><g transform="translate(80, 46)" class="plot tooltip-overlay"><g transform="translate(0 0)" style="opacity: 0" class="tooltip"><rect rx="0" ry="0" width="0" height="0" class="tooltip-box" /><g class="text" /></g></g></g></svg>
\ No newline at end of file
diff --git a/docs/usage/api.md b/docs/usage/api.md
index 67764cf2..24dadead 100644
--- a/docs/usage/api.md
+++ b/docs/usage/api.md
@@ -487,6 +487,11 @@ is also accepted by `@typic.klass`, plus a few more:
 > Automatically generate a class with slots for the attributes defined by your
 > annotations.
 
+`always: bool = True`
+> Whether typical should coerce all values set to the class whenever they change, or 
+> only once, on initialization of the class.
+
+
 ### Interacting With Your Objects
 
 As we've already demonstrated, Typical will guarantee the  data
diff --git a/poetry.lock b/poetry.lock
index fe8dfe97..2bceafee 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -20,6 +20,14 @@ docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
 tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"]
 tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"]
 
+[[package]]
+name = "backports.cached-property"
+version = "1.0.1"
+description = "cached_property() - computed once per instance, cached as attribute"
+category = "dev"
+optional = false
+python-versions = ">=3.6.0"
+
 [[package]]
 name = "backports.entry-points-selectable"
 version = "1.1.0"
@@ -63,6 +71,38 @@ jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
 python2 = ["typed-ast (>=1.4.2)"]
 uvloop = ["uvloop (>=0.15.2)"]
 
+[[package]]
+name = "blessings"
+version = "1.7"
+description = "A thin, practical wrapper around terminal coloring, styling, and positioning"
+category = "dev"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
+[package.dependencies]
+six = "*"
+
+[[package]]
+name = "bpython"
+version = "0.21"
+description = "Fancy Interface to the Python Interpreter"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+curtsies = ">=0.3.5"
+cwcwidth = "*"
+greenlet = "*"
+pygments = "*"
+pyxdg = "*"
+requests = "*"
+
+[package.extras]
+jedi = ["jedi (>=0.16)"]
+urwid = ["urwid"]
+watch = ["watchdog"]
+
 [[package]]
 name = "bracex"
 version = "2.1.1"
@@ -86,6 +126,14 @@ lexid = "*"
 pathlib2 = "*"
 toml = "*"
 
+[[package]]
+name = "certifi"
+version = "2021.5.30"
+description = "Python package for providing Mozilla's CA Bundle."
+category = "dev"
+optional = false
+python-versions = "*"
+
 [[package]]
 name = "cfgv"
 version = "3.3.1"
@@ -94,6 +142,17 @@ category = "dev"
 optional = false
 python-versions = ">=3.6.1"
 
+[[package]]
+name = "charset-normalizer"
+version = "2.0.6"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+category = "dev"
+optional = false
+python-versions = ">=3.5.0"
+
+[package.extras]
+unicode_backport = ["unicodedata2"]
+
 [[package]]
 name = "click"
 version = "8.0.1"
@@ -125,6 +184,27 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
 [package.extras]
 toml = ["toml"]
 
+[[package]]
+name = "curtsies"
+version = "0.3.7"
+description = "Curses-like terminal wrapper, with colored strings!"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+"backports.cached-property" = {version = "*", markers = "python_version < \"3.8\""}
+blessings = ">=1.5"
+cwcwidth = "*"
+
+[[package]]
+name = "cwcwidth"
+version = "0.1.4"
+description = "Python bindings for wc(s)width"
+category = "dev"
+optional = false
+python-versions = "*"
+
 [[package]]
 name = "distlib"
 version = "0.3.2"
@@ -483,6 +563,14 @@ category = "main"
 optional = false
 python-versions = ">=3.7,<3.11"
 
+[[package]]
+name = "orjson"
+version = "3.6.3"
+description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+
 [[package]]
 name = "packaging"
 version = "21.0"
@@ -766,6 +854,14 @@ category = "main"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 
+[[package]]
+name = "pyxdg"
+version = "0.27"
+description = "PyXDG contains implementations of freedesktop.org standards in python."
+category = "dev"
+optional = false
+python-versions = "*"
+
 [[package]]
 name = "pyyaml"
 version = "5.4.1"
@@ -793,6 +889,24 @@ category = "main"
 optional = false
 python-versions = "*"
 
+[[package]]
+name = "requests"
+version = "2.26.0"
+description = "Python HTTP for Humans."
+category = "dev"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+
+[package.dependencies]
+certifi = ">=2017.4.17"
+charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""}
+idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""}
+urllib3 = ">=1.21.1,<1.27"
+
+[package.extras]
+socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
+use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"]
+
 [[package]]
 name = "six"
 version = "1.16.0"
@@ -947,6 +1061,19 @@ category = "main"
 optional = false
 python-versions = ">=3.5"
 
+[[package]]
+name = "urllib3"
+version = "1.26.7"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+category = "dev"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
+
+[package.extras]
+brotli = ["brotlipy (>=0.6.0)"]
+secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
+socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
+
 [[package]]
 name = "virtualenv"
 version = "20.8.0"
@@ -1007,12 +1134,12 @@ docs = ["mkdocs", "mkdocs-material", "mkdocs-awesome-pages-plugin", "pymdown-ext
 json = ["ujson"]
 lint = ["mypy", "flake8", "black", "types-python-dateutil", "types-setuptools", "types-toml", "types-typed-ast", "types-ujson"]
 schema = ["fastjsonschema"]
-tests = ["fastjsonschema", "ujson", "pydantic", "sqlalchemy", "pandas", "mypy", "pytest", "pytest-cov"]
+tests = ["fastjsonschema", "ujson", "orjson", "pydantic", "sqlalchemy", "pandas", "mypy", "pytest", "pytest-cov"]
 
 [metadata]
 lock-version = "1.1"
 python-versions = "^3.7"
-content-hash = "ff19428b2ce066f73f46c02cab598c1397c46064adcf2115a0b56e67304871c4"
+content-hash = "52649a2e5d8c0cb22250b7863b43d003069e3fc6ae49f2296a06094fe4effc60"
 
 [metadata.files]
 atomicwrites = [
@@ -1023,6 +1150,10 @@ attrs = [
     {file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"},
     {file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"},
 ]
+"backports.cached-property" = [
+    {file = "backports.cached-property-1.0.1.tar.gz", hash = "sha256:1a5ef1e750f8bc7d0204c807aae8e0f450c655be0cf4b30407a35fd4bb27186c"},
+    {file = "backports.cached_property-1.0.1-py3-none-any.whl", hash = "sha256:687b5fe14be40aadcf547cae91337a1fdb84026046a39370274e54d3fe4fb4f9"},
+]
 "backports.entry-points-selectable" = [
     {file = "backports.entry_points_selectable-1.1.0-py2.py3-none-any.whl", hash = "sha256:a6d9a871cde5e15b4c4a53e3d43ba890cc6861ec1332c9c2428c92f977192acc"},
     {file = "backports.entry_points_selectable-1.1.0.tar.gz", hash = "sha256:988468260ec1c196dab6ae1149260e2f5472c9110334e5d51adcb77867361f6a"},
@@ -1031,6 +1162,15 @@ black = [
     {file = "black-21.9b0-py3-none-any.whl", hash = "sha256:380f1b5da05e5a1429225676655dddb96f5ae8c75bdf91e53d798871b902a115"},
     {file = "black-21.9b0.tar.gz", hash = "sha256:7de4cfc7eb6b710de325712d40125689101d21d25283eed7e9998722cf10eb91"},
 ]
+blessings = [
+    {file = "blessings-1.7-py2-none-any.whl", hash = "sha256:caad5211e7ba5afe04367cdd4cfc68fa886e2e08f6f35e76b7387d2109ccea6e"},
+    {file = "blessings-1.7-py3-none-any.whl", hash = "sha256:b1fdd7e7a675295630f9ae71527a8ebc10bfefa236b3d6aa4932ee4462c17ba3"},
+    {file = "blessings-1.7.tar.gz", hash = "sha256:98e5854d805f50a5b58ac2333411b0482516a8210f23f43308baeb58d77c157d"},
+]
+bpython = [
+    {file = "bpython-0.21-py3-none-any.whl", hash = "sha256:64a2032052c629f0fc2d215cdcf3cbdc005d9001a4e8c11b2126e80899be77fb"},
+    {file = "bpython-0.21.tar.gz", hash = "sha256:88aa9b89974f6a7726499a2608fa7ded216d84c69e78114ab2ef996a45709487"},
+]
 bracex = [
     {file = "bracex-2.1.1-py3-none-any.whl", hash = "sha256:64e2a6d14de9c8e022cf40539ac8468ba7c4b99550a2b05fc87fd20e392e568f"},
     {file = "bracex-2.1.1.tar.gz", hash = "sha256:01f715cd0ed7a622ec8b32322e715813f7574de531f09b70f6f3b2c10f682425"},
@@ -1039,10 +1179,18 @@ bumpver = [
     {file = "bumpver-2021.1113-py2.py3-none-any.whl", hash = "sha256:a2fcefba10c9ad18644f0ba773a779fc1a904d94ac51f4a07025c0a7b107f70b"},
     {file = "bumpver-2021.1113.tar.gz", hash = "sha256:86232c6b9f137a2fddfcc811a4f6c23aedc952a8f4e4b0bd700469da156de883"},
 ]
+certifi = [
+    {file = "certifi-2021.5.30-py2.py3-none-any.whl", hash = "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8"},
+    {file = "certifi-2021.5.30.tar.gz", hash = "sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee"},
+]
 cfgv = [
     {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"},
     {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"},
 ]
+charset-normalizer = [
+    {file = "charset-normalizer-2.0.6.tar.gz", hash = "sha256:5ec46d183433dcbd0ab716f2d7f29d8dee50505b3fdb40c6b985c7c4f5a3591f"},
+    {file = "charset_normalizer-2.0.6-py3-none-any.whl", hash = "sha256:5d209c0a931f215cee683b6445e2d77677e7e75e159f78def0db09d68fafcaa6"},
+]
 click = [
     {file = "click-8.0.1-py3-none-any.whl", hash = "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6"},
     {file = "click-8.0.1.tar.gz", hash = "sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a"},
@@ -1105,6 +1253,40 @@ coverage = [
     {file = "coverage-5.5-pp37-none-any.whl", hash = "sha256:2a3859cb82dcbda1cfd3e6f71c27081d18aa251d20a17d87d26d4cd216fb0af4"},
     {file = "coverage-5.5.tar.gz", hash = "sha256:ebe78fe9a0e874362175b02371bdfbee64d8edc42a044253ddf4ee7d3c15212c"},
 ]
+curtsies = [
+    {file = "curtsies-0.3.7.tar.gz", hash = "sha256:d512b237ea82ab9d7c0c9deea96f685be30e1c122366ee97ede602d1c31989aa"},
+]
+cwcwidth = [
+    {file = "cwcwidth-0.1.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0614e892110401284fec5850ee45846d5ff163654574d3df040f86f02ec05399"},
+    {file = "cwcwidth-0.1.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:ffb278e25d3ff9789dca99dcb666469a390ff226b181f846cc8736f1554ff085"},
+    {file = "cwcwidth-0.1.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:77281cd94e6d582f3459e1535305cb3ad0afd3fbed0bacbe2e84b7e5cb3e9123"},
+    {file = "cwcwidth-0.1.4-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:3a93491f4cbe5fc821bae02ebcccfa5b9206f441fa3ef618dc6f62fdccde0f07"},
+    {file = "cwcwidth-0.1.4-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:ede2a05f88e3ddc4be22591fd5c5491e8a94f6e7fd3c93a3a06164f4ce8690d0"},
+    {file = "cwcwidth-0.1.4-cp36-cp36m-win32.whl", hash = "sha256:d76c3b5078355e78ca3aa0fd06939a9793f5a9f9bf4522738fff90fb58b47429"},
+    {file = "cwcwidth-0.1.4-cp36-cp36m-win_amd64.whl", hash = "sha256:d5a487c6981bf157b67f83514a754df5e6713a9090df71558a2625788c4a448a"},
+    {file = "cwcwidth-0.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d8f8464656b48549d2a8ac776eed5c6f10906ee2dcc3767ef8228cc582857f6d"},
+    {file = "cwcwidth-0.1.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:a85539ec3b879177eb1715bda5bd2bb9753d84569f8717684f07016efb92a5c7"},
+    {file = "cwcwidth-0.1.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:53ec58c6478af6062e979a89fc11ec6ca1e4254e93f3305ac62da28809745185"},
+    {file = "cwcwidth-0.1.4-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:3bec2366e89de99c6ca8dcd1c92156d60efdbb47dc3a9cdb86d7064773c05d65"},
+    {file = "cwcwidth-0.1.4-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:5a7da558423d32064bb8cabe461824543c6072ecdf2d0c2adf521dc63b3f0073"},
+    {file = "cwcwidth-0.1.4-cp37-cp37m-win32.whl", hash = "sha256:ec9d57742804a975a75dc633ee3a0bb5bffe67dc897def6a3d84717805584dbd"},
+    {file = "cwcwidth-0.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9faa4adcdb0c74fb8350da8eee6f893dde5b9a0f817ee0b83607b8e0e4d12929"},
+    {file = "cwcwidth-0.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9d0188488c55d947f71d48f47e7f8e4355d75a86afcc8932a500cd84e32e278"},
+    {file = "cwcwidth-0.1.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:73d66da4f1807cc673cf924c9fd83f9f61465af13693f5ef2b5b4b9c32faa0c7"},
+    {file = "cwcwidth-0.1.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:ef08bc8af421e5991ff6c2e67124add008e73ed7fd4fb8767f44c07b789fe114"},
+    {file = "cwcwidth-0.1.4-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:3011f108504e3ad6472f53df0b7a12b9a978e6e0e41bd841a768a6a5f678bc0e"},
+    {file = "cwcwidth-0.1.4-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:55969b269a11f317c29b206e74cae02267af92a3a9a2fb86860a84f64366705a"},
+    {file = "cwcwidth-0.1.4-cp38-cp38-win32.whl", hash = "sha256:51481cb731c6d9c46a5d751bafff03ea3072f856c590fe8d4a27a1d404bb20be"},
+    {file = "cwcwidth-0.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:146069bc61cb5db11d3c037b057454d78ef2254932f4f4871ae355e0923ce8e7"},
+    {file = "cwcwidth-0.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2fc0d1c4214f76ba7fec60aac6e1467588d865a0005ce9063c5471c57751f895"},
+    {file = "cwcwidth-0.1.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:b1d75b2c9edc19a579dd5d92e93dc7087b6430a250928a06527aa6ebd627b06c"},
+    {file = "cwcwidth-0.1.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:63190cb5b87a568ed89cfae3be203935a14dea0c10b116160a15031273771b44"},
+    {file = "cwcwidth-0.1.4-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:99fb16a3b0258ee2fa952e7dab80b839b990aebdb96b98b648211a99e8a0c906"},
+    {file = "cwcwidth-0.1.4-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:01b630049fdd8fc37f0e929d24012fee7855d8aa3f304c8a0c26caf2415c7d85"},
+    {file = "cwcwidth-0.1.4-cp39-cp39-win32.whl", hash = "sha256:0e05498c57629bf6c8445b17b2e5a9ec26c0f97080cb7ae2602e14a5db67209b"},
+    {file = "cwcwidth-0.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:7779cb2ccc04694f95134d3f660216f32be5de82101dcbd8f1c8f81ff748ae41"},
+    {file = "cwcwidth-0.1.4.tar.gz", hash = "sha256:482a937891a6918667436e0a7041aab576c26e4bcbcdddd178ef79362fbcf9ab"},
+]
 distlib = [
     {file = "distlib-0.3.2-py2.py3-none-any.whl", hash = "sha256:23e223426b28491b1ced97dc3bbe183027419dfc7982b4fa2f05d5f3ff10711c"},
     {file = "distlib-0.3.2.zip", hash = "sha256:106fef6dc37dd8c0e2c0a60d3fca3e77460a48907f335fa28420463a6f799736"},
@@ -1377,6 +1559,29 @@ numpy = [
     {file = "numpy-1.21.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d96a6a7d74af56feb11e9a443150216578ea07b7450f7c05df40eec90af7f4a7"},
     {file = "numpy-1.21.2.zip", hash = "sha256:423216d8afc5923b15df86037c6053bf030d15cc9e3224206ef868c2d63dd6dc"},
 ]
+orjson = [
+    {file = "orjson-3.6.3-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:5f78ed46b179585272a5670537f2203dbb7b3e2f8e4db1be72839cc423e2daef"},
+    {file = "orjson-3.6.3-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:a99f310960e3acdda72ba1e98df8bf8c9145d90a0f72719786f43f4ea6937846"},
+    {file = "orjson-3.6.3-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:8a5e46418f51f03060f91d743b59aed70c8d02a5012428365cfa20b7f670e903"},
+    {file = "orjson-3.6.3-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:084de43ca9b19ad58c618c9f1ff93784e0190df2d88a02ae24c3cdebe9f2e9f7"},
+    {file = "orjson-3.6.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b68a601f49c0328bf16498309e56ab87c1d6c2bb0287abf70329eb958d565c62"},
+    {file = "orjson-3.6.3-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:9e4a26212851ea8ff81dee7e4e0da7e1e63b5b4f4330a8b4f27e99f1ba3f758b"},
+    {file = "orjson-3.6.3-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:5eb9d7f2f45e12cbc7500da4176f2d3221a73891b4be505fe79c52cbb800e872"},
+    {file = "orjson-3.6.3-cp37-none-win_amd64.whl", hash = "sha256:39aa7d42c9760fba36c37adb1d9c6752696ce9443c5dcb65222dd0994b5735e1"},
+    {file = "orjson-3.6.3-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:8d4430e0cc390c1d745aea3827fd0c6fd7aa5f0690de30a2fe25c406aa5efa20"},
+    {file = "orjson-3.6.3-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:be79e0ddea7f3a47332ec9573365c0b8a8cce4357e9682050f53c1bc75c1571f"},
+    {file = "orjson-3.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fce5ada0f8dd7c9e16c675626a29dfc5cc766e1eb67d8021b1e77d0861e4e850"},
+    {file = "orjson-3.6.3-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:1014a6f514b39dc414fce60568c9e7f635de97a1f1f5972ebc38f88a6160944a"},
+    {file = "orjson-3.6.3-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:c3beff02a339f194274ec1fcf03e2c1563e84f297b568eb3d45751722454a52e"},
+    {file = "orjson-3.6.3-cp38-none-win_amd64.whl", hash = "sha256:8f105e9290f901a618a0ced87f785fce2fcf6ab753699de081d82ee05c90f038"},
+    {file = "orjson-3.6.3-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7936bef5589c9955ebee3423df51709d5f3b37ef54b830239bddb9fa5ead99f4"},
+    {file = "orjson-3.6.3-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:82e3afbf404cb91774f894ed7bf52fd83bb1cc6bd72221711f4ce4e7774f0560"},
+    {file = "orjson-3.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c702c78c33416fc8a138c5ec36eef5166ecfe8990c8f99c97551cd37c396e4d"},
+    {file = "orjson-3.6.3-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:4606907b9aaec9fea6159ac14f838dbd2851f18b05fb414c4b3143bff9f2bb0d"},
+    {file = "orjson-3.6.3-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:4ebb464b8b557a1401a03da6f41761544886db95b52280e60d25549da7427453"},
+    {file = "orjson-3.6.3-cp39-none-win_amd64.whl", hash = "sha256:720a7d7ba1dcf32bbd8fb380370b1fdd06ed916caea48403edd64f2ccf7883c1"},
+    {file = "orjson-3.6.3.tar.gz", hash = "sha256:353cc079cedfe990ea2d2186306f766e0d47bba63acd072e22d6df96c67be993"},
+]
 packaging = [
     {file = "packaging-21.0-py3-none-any.whl", hash = "sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14"},
     {file = "packaging-21.0.tar.gz", hash = "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7"},
@@ -1530,6 +1735,10 @@ pytzdata = [
     {file = "pytzdata-2020.1-py2.py3-none-any.whl", hash = "sha256:e1e14750bcf95016381e4d472bad004eef710f2d6417240904070b3d6654485f"},
     {file = "pytzdata-2020.1.tar.gz", hash = "sha256:3efa13b335a00a8de1d345ae41ec78dd11c9f8807f522d39850f2dd828681540"},
 ]
+pyxdg = [
+    {file = "pyxdg-0.27-py2.py3-none-any.whl", hash = "sha256:2d6701ab7c74bbab8caa6a95e0a0a129b1643cf6c298bf7c569adec06d0709a0"},
+    {file = "pyxdg-0.27.tar.gz", hash = "sha256:80bd93aae5ed82435f20462ea0208fb198d8eec262e831ee06ce9ddb6b91c5a5"},
+]
 pyyaml = [
     {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"},
     {file = "PyYAML-5.4.1-cp27-cp27m-win32.whl", hash = "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393"},
@@ -1608,6 +1817,10 @@ regex = [
     {file = "regex-2021.8.28-cp39-cp39-win_amd64.whl", hash = "sha256:610b690b406653c84b7cb6091facb3033500ee81089867ee7d59e675f9ca2b73"},
     {file = "regex-2021.8.28.tar.gz", hash = "sha256:f585cbbeecb35f35609edccb95efd95a3e35824cd7752b586503f7e6087303f1"},
 ]
+requests = [
+    {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"},
+    {file = "requests-2.26.0.tar.gz", hash = "sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7"},
+]
 six = [
     {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
     {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
@@ -1743,6 +1956,10 @@ ujson = [
     {file = "ujson-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:782bdf016da793a3bf138e50ed973428e59006b8d73a9e1911bc6207c6b79fff"},
     {file = "ujson-3.2.0.tar.gz", hash = "sha256:abb1996ba1c1d2faf5b1e38efa97da7f64e5373a31f705b96fe0587f5f778db4"},
 ]
+urllib3 = [
+    {file = "urllib3-1.26.7-py2.py3-none-any.whl", hash = "sha256:c4fdf4019605b6e5423637e01bc9fe4daef873709a7973e195ceba0a62bbc844"},
+    {file = "urllib3-1.26.7.tar.gz", hash = "sha256:4987c65554f7a2dbf30c18fd48778ef124af6fab771a377103da0585e2336ece"},
+]
 virtualenv = [
     {file = "virtualenv-20.8.0-py2.py3-none-any.whl", hash = "sha256:a4b987ec31c3c9996cf1bc865332f967fe4a0512c41b39652d6224f696e69da5"},
     {file = "virtualenv-20.8.0.tar.gz", hash = "sha256:4da4ac43888e97de9cf4fdd870f48ed864bbfd133d2c46cbdec941fed4a25aef"},
diff --git a/pyproject.toml b/pyproject.toml
index e05319db..05d94a9b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,7 +1,7 @@
 [tool.poetry]
 name = "typical"
 packages = [{include = "typic"}]
-version = "2.7.0"
+version = "2.7.1"
 description = "Typical: Python's Typing Toolkit."
 authors = ["Sean Stewart <sean_stewart@me.com>"]
 license = "MIT"
@@ -34,6 +34,7 @@ inflection = "^0.5"
 pendulum = "^2.1"
 fastjsonschema = {version = "^2.14", optional = true}
 ujson = {version = ">=2.0", optional = true}
+orjson = {version = "^3.6.3", optional = true}
 typing-extensions = {version = "^3.10.0", python = "<3.10"}
 # tests
 pytest = {version = "^6.2", optional = true}
@@ -88,6 +89,8 @@ mkdocs-awesome-pages-plugin = "^2.2.1"
 pandas = {version = "^1.3", python = ">=3.7.1,<=3.9"}
 fastjsonschema = "^2.14.5"
 bumpver = "^2021.1113"
+orjson = "^3.6.3"
+bpython = "^0.21"
 
 [tool.poetry.extras]
 schema = ["fastjsonschema"]
@@ -95,6 +98,7 @@ json = ["ujson"]
 tests = [
     "fastjsonschema",
     "ujson",
+    "orjson",
     "pydantic",
     "sqlalchemy",
     "pandas",
diff --git a/requirements.txt b/requirements.txt
index f85325a3..0debc426 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -31,6 +31,7 @@ mkdocs==1.2.2; python_version >= "3.6"
 mypy-extensions==0.4.3; python_version >= "3.5" and python_full_version >= "3.6.2"
 mypy==0.910; python_version >= "3.5"
 numpy==1.21.2; python_version >= "3.7" and python_version <= "3.9" and python_full_version >= "3.7.1"
+orjson==3.6.3; python_version >= "3.7"
 packaging==21.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
 pandas==1.3.3; python_full_version >= "3.7.1" and python_version <= "3.9"
 pathspec==0.9.0; python_full_version >= "3.6.2"
diff --git a/typic/__init__.py b/typic/__init__.py
index cc8f7c84..962f39d8 100644
--- a/typic/__init__.py
+++ b/typic/__init__.py
@@ -13,4 +13,4 @@
 al = typed
 
 
-__version__ = "2.7.0"
+__version__ = "2.7.1"
diff --git a/typic/api.py b/typic/api.py
index 8cb14275..a3cf8405 100644
--- a/typic/api.py
+++ b/typic/api.py
@@ -227,6 +227,8 @@ def _resolve_class(
         SERDE_FLAGS_ATTR: serde,
         TYPIC_ANNOS_NAME: protos,
     }
+    frozen = isfrozendataclass(cls)
+    always = False if frozen else always
     if always is None:
         warnings.warn(
             "Keyword `always` will default to `False` in a future version. "
@@ -244,7 +246,7 @@ def _resolve_class(
     #   a) this is a "frozen" dataclass
     #   b) we only want to coerce on init.
     # N.B.: Frozen dataclasses don't use the native setattr and can't be updated.
-    if isfrozendataclass(cls) or not always:
+    if always is False:
         ns["__init__"] = wrap(cls.__init__, strict=strict)
     # For 'always', create a new setattr that applies the protocol for a given attr
     else:
@@ -286,6 +288,7 @@ def wrap_cls(
     strict: StrictModeT = STRICT_MODE,
     jsonschema: bool = True,
     serde: SerdeFlags = SerdeFlags(),
+    always: bool = None,
 ) -> Type[WrappedObjectT[ObjectT]]:
     """Wrap a class to automatically enforce type-coercion on init.
 
@@ -318,7 +321,9 @@ def cls_wrapper(cls_: Type[ObjectT]) -> Type[WrappedObjectT[ObjectT]]:
                 category=DeprecationWarning,
             )
         setattr(cls_, "__delayed__", False)
-        return _resolve_class(cls_, strict=strict, jsonschema=jsonschema, serde=serde)
+        return _resolve_class(
+            cls_, strict=strict, jsonschema=jsonschema, serde=serde, always=always
+        )
 
     wrapped: Type[WrappedObjectT[ObjectT]] = cls_wrapper(klass)
     return wrapped
diff --git a/typic/env.py b/typic/env.py
index 72254557..257a4341 100644
--- a/typic/env.py
+++ b/typic/env.py
@@ -119,9 +119,12 @@ def getenv(
 
     def setenv(self, var: str, value: Any):
         """Set the `value` as `var` in the OS environ."""
+
+        if not isinstance(value, (str, bytes)):
+            value = self.resolver.tojson(value)
+            if isinstance(value, bytes):
+                value = value.decode()
         if isinstance(value, bytes):
             os.environb[var.encode()] = value
             return
-        elif not isinstance(value, str):
-            value = self.resolver.tojson(value)
         os.environ[var] = value
diff --git a/typic/ext/json.py b/typic/ext/json.py
index 8b0620a8..e1e9f6e9 100644
--- a/typic/ext/json.py
+++ b/typic/ext/json.py
@@ -1,17 +1,101 @@
-from typing import Callable, Any, AnyStr
+# flake8: noqa
+from __future__ import annotations
 
-dumps: Callable[..., AnyStr]
+from typing import Any, TYPE_CHECKING, AnyStr, Callable, Union
+
+if TYPE_CHECKING:
+    from typic.serde.common import SerializerT
+
+
+__all__ = ("dumps", "loads", "get_tojson")
+
+
+dumps: Callable[..., Union[str, bytes]]
 loads: Callable[..., Any]
 
 
 try:
-    import ujson
+    import orjson
+
+    def get_tojson(serializer: SerializerT):
+        def tojson(
+            o: Any,
+            *,
+            ensure_ascii: bool = False,
+            indent: int = None,
+            __prim=serializer,
+            __dumps=orjson.dumps,
+            **kwargs,
+        ) -> bytes:
+            if indent:
+                option = kwargs.pop("option", None)
+                opt = orjson.OPT_INDENT_2 | orjson.OPT_APPEND_NEWLINE
+                kwargs["option"] = (opt | option) if option else opt
+            return __dumps(__prim(o), **kwargs)
+
+        tojson.__module__ = serializer.__module__
+        tojson.__doc__ = orjson.dumps.__doc__
+
+        return tojson
+
+    dumps, loads = orjson.dumps, orjson.loads
+
+
+except (ImportError, ModuleNotFoundError):
+    orjson = None
+
+    try:
+        import ujson
+
+        def get_tojson(serializer: SerializerT):
+            def tojson(
+                o: Any,
+                *,
+                ensure_ascii: bool = False,
+                indent: int = None,
+                __prim=serializer,
+                __dumps=ujson.dumps,
+                **kwargs,
+            ) -> AnyStr:
+                return __dumps(
+                    __prim(o),
+                    indent=indent,
+                    ensure_ascii=ensure_ascii,
+                    **kwargs,
+                )
+
+            tojson.__module__ = get_tojson.__module__
+            tojson.__doc__ = ujson.dumps.__doc__
+
+            return tojson
+
+        dumps, loads = ujson.dumps, ujson.loads
+
+    except (ImportError, ModuleNotFoundError):  # pragma: nobranch
+        import json
+
+        ujson = None
+
+        def get_tojson(serializer: SerializerT):
+            def tojson(
+                o: Any,
+                *,
+                ensure_ascii: bool = False,
+                indent: int = None,
+                __prim=serializer,
+                __dumps=json.dumps,
+                **kwargs,
+            ) -> AnyStr:
+                return __dumps(
+                    __prim(o),
+                    indent=indent,
+                    ensure_ascii=ensure_ascii,
+                    **kwargs,
+                )
 
-    dumps = ujson.dumps  # type: ignore
-    loads = ujson.loads
+            return tojson
 
-except (ImportError, ModuleNotFoundError):  # pragma: nocover
-    import json
+            tojson.__module__ = get_tojson.__module__
+            tojson.__doc__ = json.dumps.__doc__
 
-    dumps = json.dumps  # type: ignore
-    loads = json.loads
+        dumps, loads = json.dumps, json.loads
diff --git a/typic/ext/schema/field.py b/typic/ext/schema/field.py
index c88bbfc6..1bf9b631 100644
--- a/typic/ext/schema/field.py
+++ b/typic/ext/schema/field.py
@@ -78,7 +78,9 @@ class _Serializable:
     def primitive(self, *, lazy: bool = False, name: ReprT = None) -> Mapping[str, Any]:
         return resolver.primitive(self, lazy=lazy, name=name)  # type: ignore
 
-    def tojson(self, *, indent: int = 0, ensure_ascii: bool = False, **kwargs) -> str:
+    def tojson(
+        self, *, indent: int = 0, ensure_ascii: bool = False, **kwargs
+    ) -> Union[str, bytes]:
         return dumps(
             self.primitive(),
             indent=indent,
diff --git a/typic/klass.py b/typic/klass.py
index 054878d3..bfb4559a 100644
--- a/typic/klass.py
+++ b/typic/klass.py
@@ -134,6 +134,7 @@ def make_typedclass(
     kw_only: bool = False,
     match_args: bool = True,
     serde: SerdeFlags = None,
+    always: bool = None,
 ):
     """A convenience function for generating a dataclass with type-coercion.
 
@@ -183,6 +184,7 @@ def make_typedclass(
         strict=strict,
         jsonschema=jsonschema,
         serde=serde,
+        always=always,
     )
 
 
@@ -202,6 +204,7 @@ def klass(
     kw_only: bool = False,
     match_args: bool = True,
     serde: SerdeFlags = None,
+    always: bool = None,
 ):
     """A convenience decorator for generating a dataclass with type-coercion.
 
@@ -245,6 +248,7 @@ def typedclass_wrapper(cls_):
             kw_only=kw_only,
             match_args=match_args,
             serde=serde,
+            always=always,
         )
 
     return typedclass_wrapper(_cls) if _cls else typedclass_wrapper
diff --git a/typic/serde/resolver.py b/typic/serde/resolver.py
index 2d40e0c3..56b21dc6 100644
--- a/typic/serde/resolver.py
+++ b/typic/serde/resolver.py
@@ -261,30 +261,17 @@ def tojson(
         >>> import dataclasses
         >>> import enum
         >>> typic.tojson("foo")
-        '"foo"'
+        b'"foo"'
         >>> typic.tojson(("foo",))
-        '["foo"]'
+        b'["foo"]'
         >>> typic.tojson(datetime.datetime(1970, 1, 1))
-        '"1970-01-01T00:00:00"'
+        b'"1970-01-01T00:00:00"'
         >>> typic.tojson(b"foo")
-        '"foo"'
+        b'"foo"'
         >>> typic.tojson(ipaddress.IPv4Address("0.0.0.0"))
-        '"0.0.0.0"'
-        >>> typic.tojson(re.compile("[0-9]"))
-        '"[0-9]"'
+        b'"0.0.0.0"'
         >>> typic.tojson(uuid.UUID(int=0))
-        '"00000000-0000-0000-0000-000000000000"'
-        >>> @dataclasses.dataclass
-        ... class Foo:
-        ...     bar: str = 'bar'
-        ...
-        >>> typic.tojson(Foo())
-        '{"bar":"bar"}'
-        >>> class Enum(enum.Enum):
-        ...     FOO = "foo"
-        ...
-        >>> typic.tojson(Enum.FOO)
-        '"foo"'
+        b'"00000000-0000-0000-0000-000000000000"'
         """
         t = obj.__class__
         if checks.isenumtype(t):
@@ -592,22 +579,7 @@ def _build_protocol(
         validator: constr.ValidateT[ObjectT],
         serializer: SerializerT[ObjectT],
     ) -> SerdeProtocol[ObjectT]:
-        def tojson(
-            val: ObjectT,
-            *,
-            indent: int = 0,
-            ensure_ascii: bool = False,
-            __prim=serializer,
-            __dumps=json.dumps,
-            **kwargs,
-        ) -> str:
-            return __dumps(
-                __prim(val),
-                indent=indent,
-                ensure_ascii=ensure_ascii,
-                **kwargs,
-            )
-
+        tojson = json.get_tojson(serializer)
         tojson.__qualname__ = f"{SerdeProtocol.__name__}.{tojson.__name__}"
         tojson.__module__ = SerdeProtocol.__module__
 
@@ -785,9 +757,7 @@ def protocols(self, obj, *, strict: bool = False) -> SerdeProtocolsT:
         :py:class:`SerdeProtocol`
         """
 
-        if not any(
-            (inspect.ismethod(obj), inspect.isfunction(obj), inspect.isclass(obj))
-        ):
+        if not callable(obj):
             obj = obj.__class__
 
         hints = util.cached_type_hints(obj)


Test patch:
diff --git a/tests/ext/__init__.py b/tests/ext/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/ext/test_json.py b/tests/ext/test_json.py
new file mode 100644
index 00000000..36e3d514
--- /dev/null
+++ b/tests/ext/test_json.py
@@ -0,0 +1,59 @@
+import importlib
+import sys
+
+from unittest import mock
+
+import pytest
+
+
+@pytest.fixture
+def drop_orjson():
+    import orjson
+
+    del orjson
+    with mock.patch.dict(sys.modules, values={"orjson": None}):
+        yield
+
+
+@pytest.fixture
+def drop_ujson():
+    import ujson
+
+    del ujson
+    with mock.patch.dict(sys.modules, values={"ujson": None}):
+        yield
+
+
+def ser(obj, *, lazy=False, name=None):
+    return obj
+
+
+def test_orjson():
+    # Given
+    from typic.ext import json
+
+    # When
+    tojson = json.get_tojson(serializer=ser)
+    # Then
+    assert tojson({"foo": "bar"}) == b'{"foo":"bar"}'
+    assert tojson({"foo": "bar"}, indent=2) == b'{\n  "foo": "bar"\n}\n'
+
+
+def test_ujson(drop_orjson):
+    from typic.ext import json
+
+    importlib.reload(json)
+    # When
+    tojson = json.get_tojson(serializer=ser)
+    # Then
+    assert tojson({"foo": "bar"}) == '{"foo":"bar"}'
+
+
+def test_native_json(drop_orjson, drop_ujson):
+    from typic.ext import json
+
+    importlib.reload(json)
+    # When
+    tojson = json.get_tojson(serializer=ser)
+    # Then
+    assert tojson({"foo": "bar"}) == '{"foo": "bar"}'
diff --git a/tests/test_schema.py b/tests/ext/test_schema.py
similarity index 100%
rename from tests/test_schema.py
rename to tests/ext/test_schema.py
diff --git a/tests/test_serdes.py b/tests/test_serdes.py
index 5677779d..f491a06f 100644
--- a/tests/test_serdes.py
+++ b/tests/test_serdes.py
@@ -272,25 +272,22 @@ class Bar:
 @pytest.mark.parametrize(
     argnames=("obj", "expected"),
     argvalues=[
-        (None, "null"),
-        (MultiNum.INT, "1"),
-        (MultiNum.STR, '"str"'),
+        (None, b"null"),
+        (MultiNum.INT, b"1"),
+        (MultiNum.STR, b'"str"'),
         (
             {objects.FooNum.bar: objects.Typic(var="foo")},
-            '{"bar":{"var":"foo"}}',
+            b'{"bar":{"var":"foo"}}',
         ),
-        ([typic.URL("foo")], '["foo"]'),
-        (Omit(), '{"bar":"foo"}'),
-        (Bar(foos=[Foo("bar")]), '{"foos":[{"bar":"bar","id":null}]}'),
+        ([typic.URL("foo")], b'["foo"]'),
+        (Omit(), b'{"bar":"foo"}'),
+        (Bar(foos=[Foo("bar")]), b'{"foos":[{"bar":"bar","id":null}]}'),
     ],
 )
 def test_tojson(obj, expected):
     assert typic.tojson(obj) == expected
 
 
-typic.ext.json.NATIVE_JSON = True
-
-
 @typic.klass
 class Foo:
     bar: str
@@ -314,7 +311,7 @@ class Bar:
 )
 def test_tojson_native(obj, expected):
     native = json.dumps(typic.primitive(obj)).replace("\n", "").replace(" ", "")
-    assert typic.tojson(obj) == native == expected
+    assert typic.tojson(obj).decode() == native == expected
 
 
 badbar = Bar([])