-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathz_d2e926c6535458c2___init___py.html
More file actions
148 lines (148 loc) · 16.1 KB
/
z_d2e926c6535458c2___init___py.html
File metadata and controls
148 lines (148 loc) · 16.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Coverage for muutils/json_serialize/__init__.py: 0%</title>
<link rel="icon" sizes="32x32" href="favicon_32_cb_c827f16f.png">
<link rel="stylesheet" href="style_cb_9ff733b0.css" type="text/css">
<script src="coverage_html_cb_dd2e7eb5.js" defer></script>
</head>
<body class="pyfile">
<header>
<div class="content">
<h1>
<span class="text">Coverage for </span><b>muutils / json_serialize / __init__.py</b>:
<span class="pc_cov">0%</span>
</h1>
<aside id="help_panel_wrapper">
<input id="help_panel_state" type="checkbox">
<label for="help_panel_state">
<img id="keyboard_icon" src="keybd_closed_cb_900cfef5.png" alt="Show/hide keyboard shortcuts">
</label>
<div id="help_panel">
<p class="legend">Shortcuts on this page</p>
<div class="keyhelp">
<p>
<kbd>r</kbd>
<kbd>m</kbd>
<kbd>x</kbd>
toggle line displays
</p>
<p>
<kbd>j</kbd>
<kbd>k</kbd>
next/prev highlighted chunk
</p>
<p>
<kbd>0</kbd> (zero) top of page
</p>
<p>
<kbd>1</kbd> (one) first highlighted chunk
</p>
<p>
<kbd>[</kbd>
<kbd>]</kbd>
prev/next file
</p>
<p>
<kbd>u</kbd> up to the index
</p>
<p>
<kbd>?</kbd> show/hide this help
</p>
</div>
</div>
</aside>
<h2>
<span class="text">6 statements </span>
<button type="button" class="run button_toggle_run" value="run" data-shortcut="r" title="Toggle lines run">0<span class="text"> run</span></button>
<button type="button" class="mis show_mis button_toggle_mis" value="mis" data-shortcut="m" title="Toggle lines missing">6<span class="text"> missing</span></button>
<button type="button" class="exc show_exc button_toggle_exc" value="exc" data-shortcut="x" title="Toggle lines excluded">0<span class="text"> excluded</span></button>
</h2>
<p class="text">
<a id="prevFileLink" class="nav" href="z_6c5f9b70fbd6dea2_interval_py.html">« prev</a>
<a id="indexLink" class="nav" href="index.html">^ index</a>
<a id="nextFileLink" class="nav" href="z_d2e926c6535458c2_array_py.html">» next</a>
<a class="nav" href="https://coverage.readthedocs.io/en/7.13.5">coverage.py v7.13.5</a>,
created at 2026-03-18 21:32 -0600
</p>
<aside class="hidden">
<button type="button" class="button_next_chunk" data-shortcut="j"></button>
<button type="button" class="button_prev_chunk" data-shortcut="k"></button>
<button type="button" class="button_top_of_page" data-shortcut="0"></button>
<button type="button" class="button_first_chunk" data-shortcut="1"></button>
<button type="button" class="button_prev_file" data-shortcut="["></button>
<button type="button" class="button_next_file" data-shortcut="]"></button>
<button type="button" class="button_to_index" data-shortcut="u"></button>
<button type="button" class="button_show_hide_help" data-shortcut="?"></button>
</aside>
</div>
</header>
<main id="source">
<p class="pln"><span class="n"><a id="t1" href="#t1">1</a></span><span class="t"><span class="str">"""submodule for serializing things to json in a recoverable way</span> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t2" href="#t2">2</a></span><span class="t"> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t3" href="#t3">3</a></span><span class="t"><span class="str">you can throw *any* object into `muutils.json_serialize.json_serialize`</span> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t4" href="#t4">4</a></span><span class="t"><span class="str">and it will return a `JSONitem`, meaning a bool, int, float, str, None, list of `JSONitem`s, or a dict mappting to `JSONitem`.</span> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t5" href="#t5">5</a></span><span class="t"> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t6" href="#t6">6</a></span><span class="t"><span class="str">The goal of this is if you want to just be able to store something as relatively human-readable JSON, and don't care as much about recovering it, you can throw it into `json_serialize` and it will just work. If you want to do so in a recoverable way, check out [`ZANJ`](https://github.com/mivanit/ZANJ).</span> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t7" href="#t7">7</a></span><span class="t"> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t8" href="#t8">8</a></span><span class="t"><span class="str">it will do so by looking in `DEFAULT_HANDLERS`, which will keep it as-is if its already valid, then try to find a `.serialize()` method on the object, and then have a bunch of special cases. You can add handlers by initializing a `JsonSerializer` object and passing a sequence of them to `handlers_pre`</span> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t9" href="#t9">9</a></span><span class="t"> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t10" href="#t10">10</a></span><span class="t"><span class="str">additionally, `SerializeableDataclass` is a special kind of dataclass where you specify how to serialize each field, and a `.serialize()` method is automatically added to the class. This is done by using the `serializable_dataclass` decorator, inheriting from `SerializeableDataclass`, and `serializable_field` in place of `dataclasses.field` when defining non-standard fields.</span> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t11" href="#t11">11</a></span><span class="t"> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t12" href="#t12">12</a></span><span class="t"><span class="str">This module plays nicely with and is a dependency of the [`ZANJ`](https://github.com/mivanit/ZANJ) library, which extends this to support saving things to disk in a more efficient way than just plain json (arrays are saved as npy files, for example), and automatically detecting how to load saved objects into their original classes.</span> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t13" href="#t13">13</a></span><span class="t"> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t14" href="#t14">14</a></span><span class="t"><span class="str">"""</span> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t15" href="#t15">15</a></span><span class="t"> </span><span class="r"></span></p>
<p class="mis show_mis"><span class="n"><a id="t16" href="#t16">16</a></span><span class="t"><span class="key">from</span> <span class="nam">__future__</span> <span class="key">import</span> <span class="nam">annotations</span> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t17" href="#t17">17</a></span><span class="t"> </span><span class="r"></span></p>
<p class="mis show_mis"><span class="n"><a id="t18" href="#t18">18</a></span><span class="t"><span class="key">from</span> <span class="nam">muutils</span><span class="op">.</span><span class="nam">json_serialize</span><span class="op">.</span><span class="nam">array</span> <span class="key">import</span> <span class="nam">arr_metadata</span><span class="op">,</span> <span class="nam">load_array</span> </span><span class="r"></span></p>
<p class="mis show_mis"><span class="n"><a id="t19" href="#t19">19</a></span><span class="t"><span class="key">from</span> <span class="nam">muutils</span><span class="op">.</span><span class="nam">json_serialize</span><span class="op">.</span><span class="nam">json_serialize</span> <span class="key">import</span> <span class="op">(</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t20" href="#t20">20</a></span><span class="t"> <span class="nam">BASE_HANDLERS</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t21" href="#t21">21</a></span><span class="t"> <span class="nam">JsonSerializer</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t22" href="#t22">22</a></span><span class="t"> <span class="nam">json_serialize</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t23" href="#t23">23</a></span><span class="t"><span class="op">)</span> </span><span class="r"></span></p>
<p class="mis show_mis"><span class="n"><a id="t24" href="#t24">24</a></span><span class="t"><span class="key">from</span> <span class="nam">muutils</span><span class="op">.</span><span class="nam">json_serialize</span><span class="op">.</span><span class="nam">serializable_dataclass</span> <span class="key">import</span> <span class="op">(</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t25" href="#t25">25</a></span><span class="t"> <span class="nam">SerializableDataclass</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t26" href="#t26">26</a></span><span class="t"> <span class="nam">serializable_dataclass</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t27" href="#t27">27</a></span><span class="t"> <span class="nam">serializable_field</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t28" href="#t28">28</a></span><span class="t"><span class="op">)</span> </span><span class="r"></span></p>
<p class="mis show_mis"><span class="n"><a id="t29" href="#t29">29</a></span><span class="t"><span class="key">from</span> <span class="nam">muutils</span><span class="op">.</span><span class="nam">json_serialize</span><span class="op">.</span><span class="nam">util</span> <span class="key">import</span> <span class="nam">try_catch</span><span class="op">,</span> <span class="nam">JSONitem</span><span class="op">,</span> <span class="nam">dc_eq</span> </span><span class="r"></span></p>
<p class="pln"><span class="n"><a id="t30" href="#t30">30</a></span><span class="t"> </span><span class="r"></span></p>
<p class="mis show_mis"><span class="n"><a id="t31" href="#t31">31</a></span><span class="t"><span class="nam">__all__</span> <span class="op">=</span> <span class="op">[</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t32" href="#t32">32</a></span><span class="t"> <span class="com"># submodules</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t33" href="#t33">33</a></span><span class="t"> <span class="str">"array"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t34" href="#t34">34</a></span><span class="t"> <span class="str">"json_serialize"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t35" href="#t35">35</a></span><span class="t"> <span class="str">"serializable_dataclass"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t36" href="#t36">36</a></span><span class="t"> <span class="str">"serializable_field"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t37" href="#t37">37</a></span><span class="t"> <span class="str">"util"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t38" href="#t38">38</a></span><span class="t"> <span class="com"># imports</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t39" href="#t39">39</a></span><span class="t"> <span class="str">"arr_metadata"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t40" href="#t40">40</a></span><span class="t"> <span class="str">"load_array"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t41" href="#t41">41</a></span><span class="t"> <span class="str">"BASE_HANDLERS"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t42" href="#t42">42</a></span><span class="t"> <span class="str">"JSONitem"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t43" href="#t43">43</a></span><span class="t"> <span class="str">"JsonSerializer"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t44" href="#t44">44</a></span><span class="t"> <span class="str">"json_serialize"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t45" href="#t45">45</a></span><span class="t"> <span class="str">"try_catch"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t46" href="#t46">46</a></span><span class="t"> <span class="str">"JSONitem"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t47" href="#t47">47</a></span><span class="t"> <span class="str">"dc_eq"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t48" href="#t48">48</a></span><span class="t"> <span class="str">"serializable_dataclass"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t49" href="#t49">49</a></span><span class="t"> <span class="str">"serializable_field"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t50" href="#t50">50</a></span><span class="t"> <span class="str">"SerializableDataclass"</span><span class="op">,</span> </span><span class="r"></span></p>
<p class="mis mis2 show_mis"><span class="n"><a id="t51" href="#t51">51</a></span><span class="t"><span class="op">]</span> </span><span class="r"></span></p>
</main>
<footer>
<div class="content">
<p>
<a class="nav" href="z_6c5f9b70fbd6dea2_interval_py.html">« prev</a>
<a class="nav" href="index.html">^ index</a>
<a class="nav" href="z_d2e926c6535458c2_array_py.html">» next</a>
<a class="nav" href="https://coverage.readthedocs.io/en/7.13.5">coverage.py v7.13.5</a>,
created at 2026-03-18 21:32 -0600
</p>
</div>
</footer>
</body>
</html>