Download bt-source/panel/mod/base/json_util/encoder.py from SZFSPC/apple: direct link, hf CLI and curl.
- Browser
- Download file 2.17 kB
-
https://huggingface.co/spaces/SZFSPC/apple/resolve/main/bt-source/panel/mod/base/json_util/encoder.py
- Command line
-
hf download hf://spaces/SZFSPC/apple/bt-source/panel/mod/base/json_util/encoder.py
-
curl -L -o encoder.py https://huggingface.co/spaces/SZFSPC/apple/resolve/main/bt-source/panel/mod/base/json_util/encoder.py
2.17 kB
| """Implementation of JSONEncoder | |
| """ | |
| import re | |
| try: | |
| from _json import make_encoder as c_make_encoder | |
| except ImportError: | |
| c_make_encoder = None | |
| import json | |
| from json.encoder import INFINITY, encode_basestring, encode_basestring_ascii | |
| class SrcField(str): | |
| def __new__(cls, *args, **kwargs): | |
| return super(SrcField, cls).__new__(cls, *args, **kwargs) | |
| class SrcFieldJSONEncoder(json.JSONEncoder): | |
| def iterencode(self, o, _one_shot=False): | |
| if self.check_circular: | |
| markers = {} | |
| else: | |
| markers = None | |
| if self.ensure_ascii: | |
| _encoder = encode_basestring_ascii | |
| else: | |
| _encoder = encode_basestring | |
| def floatstr(o, allow_nan=self.allow_nan, | |
| _repr=float.__repr__, _inf=INFINITY, _neginf=-INFINITY): | |
| # Check for specials. Note that this type of test is processor | |
| # and/or platform-specific, so do tests which don't depend on the | |
| # internals. | |
| if o != o: | |
| text = 'NaN' | |
| elif o == _inf: | |
| text = 'Infinity' | |
| elif o == _neginf: | |
| text = '-Infinity' | |
| else: | |
| return _repr(o) | |
| if not allow_nan: | |
| raise ValueError( | |
| "Out of range float values are not JSON compliant: " + | |
| repr(o)) | |
| return text | |
| def new_encoder(s) -> str: | |
| if type(s) is SrcField: | |
| return s | |
| return _encoder(s) | |
| if (_one_shot and c_make_encoder is not None | |
| and self.indent is None): | |
| _iterencode = c_make_encoder( | |
| markers, self.default, new_encoder, self.indent, | |
| self.key_separator, self.item_separator, self.sort_keys, | |
| self.skipkeys, self.allow_nan) | |
| else: | |
| _iterencode = json.encoder._make_iterencode( | |
| markers, self.default, new_encoder, self.indent, floatstr, | |
| self.key_separator, self.item_separator, self.sort_keys, | |
| self.skipkeys, _one_shot) | |
| return _iterencode(o, 0) | |