def get_stream_type(env, args): """Pick the right stream type based on `env` and `args`. Wrap it in a partial with the type-specific args so that we don't need to think what stream we are dealing with. """ if not env.stdout_isatty and not args.prettify: Stream = partial(RawStream, chunk_size=RawStream.CHUNK_SIZE_BY_LINE if args.stream else RawStream.CHUNK_SIZE) elif args.prettify: Stream = partial( PrettyStream if args.stream else BufferedPrettyStream, env=env, conversion=Conversion(), formatting=Formatting( env=env, groups=args.prettify, color_scheme=args.style, explicit_json=args.json, ), ) else: Stream = partial(EncodedStream, env=env) return Stream
def get_stream_type_and_kwargs( env: Environment, args: argparse.Namespace ) -> Tuple[Type['BaseStream'], dict]: """Pick the right stream type and kwargs for it based on `env` and `args`. """ if not env.stdout_isatty and not args.prettify: stream_class = RawStream stream_kwargs = { 'chunk_size': ( RawStream.CHUNK_SIZE_BY_LINE if args.stream else RawStream.CHUNK_SIZE ) } elif args.prettify: stream_class = PrettyStream if args.stream else BufferedPrettyStream stream_kwargs = { 'env': env, 'conversion': Conversion(), 'formatting': Formatting( env=env, groups=args.prettify, color_scheme=args.style, explicit_json=args.json, ) } else: stream_class = EncodedStream stream_kwargs = { 'env': env } return stream_class, stream_kwargs