Mercurial > repos > guerler > springsuite
comparison planemo/lib/python3.7/site-packages/ruamel/yaml/scalarint.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:32:28 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:d30785e31577 | 1:56ad4e20f292 |
---|---|
1 # coding: utf-8 | |
2 | |
3 from __future__ import print_function, absolute_import, division, unicode_literals | |
4 | |
5 from .compat import no_limit_int # NOQA | |
6 from ruamel.yaml.anchor import Anchor | |
7 | |
8 if False: # MYPY | |
9 from typing import Text, Any, Dict, List # NOQA | |
10 | |
11 __all__ = ['ScalarInt', 'BinaryInt', 'OctalInt', 'HexInt', 'HexCapsInt', 'DecimalInt'] | |
12 | |
13 | |
14 class ScalarInt(no_limit_int): | |
15 def __new__(cls, *args, **kw): | |
16 # type: (Any, Any, Any) -> Any | |
17 width = kw.pop('width', None) # type: ignore | |
18 underscore = kw.pop('underscore', None) # type: ignore | |
19 anchor = kw.pop('anchor', None) # type: ignore | |
20 v = no_limit_int.__new__(cls, *args, **kw) # type: ignore | |
21 v._width = width | |
22 v._underscore = underscore | |
23 if anchor is not None: | |
24 v.yaml_set_anchor(anchor, always_dump=True) | |
25 return v | |
26 | |
27 def __iadd__(self, a): # type: ignore | |
28 # type: (Any) -> Any | |
29 x = type(self)(self + a) | |
30 x._width = self._width # type: ignore | |
31 x._underscore = ( # type: ignore | |
32 self._underscore[:] if self._underscore is not None else None # type: ignore | |
33 ) # NOQA | |
34 return x | |
35 | |
36 def __ifloordiv__(self, a): # type: ignore | |
37 # type: (Any) -> Any | |
38 x = type(self)(self // a) | |
39 x._width = self._width # type: ignore | |
40 x._underscore = ( # type: ignore | |
41 self._underscore[:] if self._underscore is not None else None # type: ignore | |
42 ) # NOQA | |
43 return x | |
44 | |
45 def __imul__(self, a): # type: ignore | |
46 # type: (Any) -> Any | |
47 x = type(self)(self * a) | |
48 x._width = self._width # type: ignore | |
49 x._underscore = ( # type: ignore | |
50 self._underscore[:] if self._underscore is not None else None # type: ignore | |
51 ) # NOQA | |
52 return x | |
53 | |
54 def __ipow__(self, a): # type: ignore | |
55 # type: (Any) -> Any | |
56 x = type(self)(self ** a) | |
57 x._width = self._width # type: ignore | |
58 x._underscore = ( # type: ignore | |
59 self._underscore[:] if self._underscore is not None else None # type: ignore | |
60 ) # NOQA | |
61 return x | |
62 | |
63 def __isub__(self, a): # type: ignore | |
64 # type: (Any) -> Any | |
65 x = type(self)(self - a) | |
66 x._width = self._width # type: ignore | |
67 x._underscore = ( # type: ignore | |
68 self._underscore[:] if self._underscore is not None else None # type: ignore | |
69 ) # NOQA | |
70 return x | |
71 | |
72 @property | |
73 def anchor(self): | |
74 # type: () -> Any | |
75 if not hasattr(self, Anchor.attrib): | |
76 setattr(self, Anchor.attrib, Anchor()) | |
77 return getattr(self, Anchor.attrib) | |
78 | |
79 def yaml_anchor(self, any=False): | |
80 # type: (bool) -> Any | |
81 if not hasattr(self, Anchor.attrib): | |
82 return None | |
83 if any or self.anchor.always_dump: | |
84 return self.anchor | |
85 return None | |
86 | |
87 def yaml_set_anchor(self, value, always_dump=False): | |
88 # type: (Any, bool) -> None | |
89 self.anchor.value = value | |
90 self.anchor.always_dump = always_dump | |
91 | |
92 | |
93 class BinaryInt(ScalarInt): | |
94 def __new__(cls, value, width=None, underscore=None, anchor=None): | |
95 # type: (Any, Any, Any, Any) -> Any | |
96 return ScalarInt.__new__(cls, value, width=width, underscore=underscore, anchor=anchor) | |
97 | |
98 | |
99 class OctalInt(ScalarInt): | |
100 def __new__(cls, value, width=None, underscore=None, anchor=None): | |
101 # type: (Any, Any, Any, Any) -> Any | |
102 return ScalarInt.__new__(cls, value, width=width, underscore=underscore, anchor=anchor) | |
103 | |
104 | |
105 # mixed casing of A-F is not supported, when loading the first non digit | |
106 # determines the case | |
107 | |
108 | |
109 class HexInt(ScalarInt): | |
110 """uses lower case (a-f)""" | |
111 | |
112 def __new__(cls, value, width=None, underscore=None, anchor=None): | |
113 # type: (Any, Any, Any, Any) -> Any | |
114 return ScalarInt.__new__(cls, value, width=width, underscore=underscore, anchor=anchor) | |
115 | |
116 | |
117 class HexCapsInt(ScalarInt): | |
118 """uses upper case (A-F)""" | |
119 | |
120 def __new__(cls, value, width=None, underscore=None, anchor=None): | |
121 # type: (Any, Any, Any, Any) -> Any | |
122 return ScalarInt.__new__(cls, value, width=width, underscore=underscore, anchor=anchor) | |
123 | |
124 | |
125 class DecimalInt(ScalarInt): | |
126 """needed if anchor""" | |
127 | |
128 def __new__(cls, value, width=None, underscore=None, anchor=None): | |
129 # type: (Any, Any, Any, Any) -> Any | |
130 return ScalarInt.__new__(cls, value, width=width, underscore=underscore, anchor=anchor) |