PATH:
opt
/
imunify360
/
venv
/
lib
/
python3.11
/
site-packages
/
pip
/
_vendor
/
rich
from pathlib import Path from json import loads, dumps from typing import Any, Callable, Optional, Union from .text import Text from .highlighter import JSONHighlighter, NullHighlighter class JSON: """A renderable which pretty prints JSON. Args: json (str): JSON encoded data. indent (Union[None, int, str], optional): Number of characters to indent by. Defaults to 2. highlight (bool, optional): Enable highlighting. Defaults to True. skip_keys (bool, optional): Skip keys not of a basic type. Defaults to False. ensure_ascii (bool, optional): Escape all non-ascii characters. Defaults to False. check_circular (bool, optional): Check for circular references. Defaults to True. allow_nan (bool, optional): Allow NaN and Infinity values. Defaults to True. default (Callable, optional): A callable that converts values that can not be encoded in to something that can be JSON encoded. Defaults to None. sort_keys (bool, optional): Sort dictionary keys. Defaults to False. """ def __init__( self, json: str, indent: Union[None, int, str] = 2, highlight: bool = True, skip_keys: bool = False, ensure_ascii: bool = False, check_circular: bool = True, allow_nan: bool = True, default: Optional[Callable[[Any], Any]] = None, sort_keys: bool = False, ) -> None: data = loads(json) json = dumps( data, indent=indent, skipkeys=skip_keys, ensure_ascii=ensure_ascii, check_circular=check_circular, allow_nan=allow_nan, default=default, sort_keys=sort_keys, ) highlighter = JSONHighlighter() if highlight else NullHighlighter() self.text = highlighter(json) self.text.no_wrap = True self.text.overflow = None @classmethod def from_data( cls, data: Any, indent: Union[None, int, str] = 2, highlight: bool = True, skip_keys: bool = False, ensure_ascii: bool = False, check_circular: bool = True, allow_nan: bool = True, default: Optional[Callable[[Any], Any]] = None, sort_keys: bool = False, ) -> "JSON": """Encodes a JSON object from arbitrary data. Args: data (Any): An object that may be encoded in to JSON indent (Union[None, int, str], optional): Number of characters to indent by. Defaults to 2. highlight (bool, optional): Enable highlighting. Defaults to True. default (Callable, optional): Optional callable which will be called for objects that cannot be serialized. Defaults to None. skip_keys (bool, optional): Skip keys not of a basic type. Defaults to False. ensure_ascii (bool, optional): Escape all non-ascii characters. Defaults to False. check_circular (bool, optional): Check for circular references. Defaults to True. allow_nan (bool, optional): Allow NaN and Infinity values. Defaults to True. default (Callable, optional): A callable that converts values that can not be encoded in to something that can be JSON encoded. Defaults to None. sort_keys (bool, optional): Sort dictionary keys. Defaults to False. Returns: JSON: New JSON object from the given data. """ json_instance: "JSON" = cls.__new__(cls) json = dumps( data, indent=indent, skipkeys=skip_keys, ensure_ascii=ensure_ascii, check_circular=check_circular, allow_nan=allow_nan, default=default, sort_keys=sort_keys, ) highlighter = JSONHighlighter() if highlight else NullHighlighter() json_instance.text = highlighter(json) json_instance.text.no_wrap = True json_instance.text.overflow = None return json_instance def __rich__(self) -> Text: return self.text if __name__ == "__main__": import argparse import sys parser = argparse.ArgumentParser(description="Pretty print json") parser.add_argument( "path", metavar="PATH", help="path to file, or - for stdin", ) parser.add_argument( "-i", "--indent", metavar="SPACES", type=int, help="Number of spaces in an indent", default=2, ) args = parser.parse_args() from pip._vendor.rich.console import Console console = Console() error_console = Console(stderr=True) try: if args.path == "-": json_data = sys.stdin.read() else: json_data = Path(args.path).read_text() except Exception as error: error_console.print(f"Unable to read {args.path!r}; {error}") sys.exit(-1) console.print(JSON(json_data, indent=args.indent), soft_wrap=True)
[-] jupyter.py
[edit]
[-] errors.py
[edit]
[-] progress_bar.py
[edit]
[-] _log_render.py
[edit]
[-] pretty.py
[edit]
[-] spinner.py
[edit]
[-] _inspect.py
[edit]
[-] _windows_renderer.py
[edit]
[-] segment.py
[edit]
[-] repr.py
[edit]
[-] live_render.py
[edit]
[-] live.py
[edit]
[-] _windows.py
[edit]
[-] panel.py
[edit]
[-] default_styles.py
[edit]
[-] ansi.py
[edit]
[-] _fileno.py
[edit]
[-] highlighter.py
[edit]
[+]
..
[-] constrain.py
[edit]
[-] measure.py
[edit]
[-] _win32_console.py
[edit]
[-] themes.py
[edit]
[-] layout.py
[edit]
[-] color.py
[edit]
[-] _timer.py
[edit]
[-] _palettes.py
[edit]
[-] _emoji_codes.py
[edit]
[-] __main__.py
[edit]
[-] _extension.py
[edit]
[-] emoji.py
[edit]
[-] theme.py
[edit]
[-] _pick.py
[edit]
[-] style.py
[edit]
[-] screen.py
[edit]
[-] syntax.py
[edit]
[-] py.typed
[edit]
[-] abc.py
[edit]
[-] region.py
[edit]
[-] palette.py
[edit]
[-] _export_format.py
[edit]
[-] protocol.py
[edit]
[-] text.py
[edit]
[-] prompt.py
[edit]
[-] status.py
[edit]
[+]
__pycache__
[-] align.py
[edit]
[-] color_triplet.py
[edit]
[-] bar.py
[edit]
[-] control.py
[edit]
[-] styled.py
[edit]
[-] progress.py
[edit]
[-] console.py
[edit]
[-] scope.py
[edit]
[-] traceback.py
[edit]
[-] _null_file.py
[edit]
[-] rule.py
[edit]
[-] logging.py
[edit]
[-] box.py
[edit]
[-] table.py
[edit]
[-] terminal_theme.py
[edit]
[-] _spinners.py
[edit]
[-] filesize.py
[edit]
[-] padding.py
[edit]
[-] __init__.py
[edit]
[-] _wrap.py
[edit]
[-] columns.py
[edit]
[-] _cell_widths.py
[edit]
[-] markup.py
[edit]
[-] containers.py
[edit]
[-] json.py
[edit]
[-] diagnose.py
[edit]
[-] _loop.py
[edit]
[-] _ratio.py
[edit]
[-] _emoji_replace.py
[edit]
[-] pager.py
[edit]
[-] tree.py
[edit]
[-] file_proxy.py
[edit]
[-] _stack.py
[edit]
[-] cells.py
[edit]