omdev 0.0.0.dev191__py3-none-any.whl → 0.0.0.dev193__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
omdev/toml/writer.py DELETED
@@ -1,114 +0,0 @@
1
- import dataclasses as dc
2
- import string
3
- import typing as ta
4
-
5
-
6
- class TomlWriter:
7
- @dc.dataclass(frozen=True)
8
- class Literal:
9
- s: str
10
-
11
- def __init__(self, out: ta.TextIO) -> None:
12
- super().__init__()
13
- self._out = out
14
-
15
- self._indent = 0
16
- self._wrote_indent = False
17
-
18
- #
19
-
20
- def _w(self, s: str) -> None:
21
- if not self._wrote_indent:
22
- self._out.write(' ' * self._indent)
23
- self._wrote_indent = True
24
- self._out.write(s)
25
-
26
- def _nl(self) -> None:
27
- self._out.write('\n')
28
- self._wrote_indent = False
29
-
30
- def _needs_quote(self, s: str) -> bool:
31
- return (
32
- not s or
33
- any(c in s for c in '\'"\n') or
34
- s[0] not in string.ascii_letters
35
- )
36
-
37
- def _maybe_quote(self, s: str) -> str:
38
- if self._needs_quote(s):
39
- return repr(s)
40
- else:
41
- return s
42
-
43
- #
44
-
45
- def write_root(self, obj: ta.Mapping) -> None:
46
- for i, (k, v) in enumerate(obj.items()):
47
- if i:
48
- self._nl()
49
- self._w('[')
50
- self._w(self._maybe_quote(k))
51
- self._w(']')
52
- self._nl()
53
- self.write_table_contents(v)
54
-
55
- def write_table_contents(self, obj: ta.Mapping) -> None:
56
- for k, v in obj.items():
57
- self.write_key(k)
58
- self._w(' = ')
59
- self.write_value(v)
60
- self._nl()
61
-
62
- def write_array(self, obj: ta.Sequence) -> None:
63
- self._w('[')
64
- self._nl()
65
- self._indent += 1
66
- for e in obj:
67
- self.write_value(e)
68
- self._w(',')
69
- self._nl()
70
- self._indent -= 1
71
- self._w(']')
72
-
73
- def write_inline_table(self, obj: ta.Mapping) -> None:
74
- self._w('{')
75
- for i, (k, v) in enumerate(obj.items()):
76
- if i:
77
- self._w(', ')
78
- self.write_key(k)
79
- self._w(' = ')
80
- self.write_value(v)
81
- self._w('}')
82
-
83
- def write_inline_array(self, obj: ta.Sequence) -> None:
84
- self._w('[')
85
- for i, e in enumerate(obj):
86
- if i:
87
- self._w(', ')
88
- self.write_value(e)
89
- self._w(']')
90
-
91
- def write_key(self, obj: ta.Any) -> None:
92
- if isinstance(obj, TomlWriter.Literal):
93
- self._w(obj.s)
94
- elif isinstance(obj, str):
95
- self._w(self._maybe_quote(obj.replace('_', '-')))
96
- elif isinstance(obj, int):
97
- self._w(repr(str(obj)))
98
- else:
99
- raise TypeError(obj)
100
-
101
- def write_value(self, obj: ta.Any) -> None:
102
- if isinstance(obj, bool):
103
- self._w(str(obj).lower())
104
- elif isinstance(obj, (str, int, float)):
105
- self._w(repr(obj))
106
- elif isinstance(obj, ta.Mapping):
107
- self.write_inline_table(obj)
108
- elif isinstance(obj, ta.Sequence):
109
- if not obj:
110
- self.write_inline_array(obj)
111
- else:
112
- self.write_array(obj)
113
- else:
114
- raise TypeError(obj)