mirror of
https://github.com/httpie/cli.git
synced 2024-11-25 09:13:25 +01:00
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
import argparse
|
|
from typing import Any, Dict, Union, List, NamedTuple, Optional
|
|
|
|
from httpie.context import Environment
|
|
from httpie.cli.constants import PrettyOptions, PRETTY_MAP, PRETTY_STDOUT_TTY_ONLY
|
|
from httpie.cli.argtypes import PARSED_DEFAULT_FORMAT_OPTIONS
|
|
from httpie.output.formatters.colors import AUTO_STYLE
|
|
|
|
|
|
class ProcessingOptions(NamedTuple):
|
|
"""Represents a set of stylistic options
|
|
that are used when deciding which stream
|
|
should be used."""
|
|
|
|
debug: bool = False
|
|
traceback: bool = False
|
|
|
|
stream: bool = False
|
|
style: str = AUTO_STYLE
|
|
prettify: Union[List[str], PrettyOptions] = PRETTY_STDOUT_TTY_ONLY
|
|
|
|
response_mime: Optional[str] = None
|
|
response_charset: Optional[str] = None
|
|
|
|
json: bool = False
|
|
format_options: Dict[str, Any] = PARSED_DEFAULT_FORMAT_OPTIONS
|
|
|
|
def get_prettify(self, env: Environment) -> List[str]:
|
|
if self.prettify is PRETTY_STDOUT_TTY_ONLY:
|
|
return PRETTY_MAP['all' if env.stdout_isatty else 'none']
|
|
else:
|
|
return self.prettify
|
|
|
|
@classmethod
|
|
def from_raw_args(cls, options: argparse.Namespace) -> 'ProcessingOptions':
|
|
fetched_options = {
|
|
option: getattr(options, option)
|
|
for option in cls._fields
|
|
}
|
|
return cls(**fetched_options)
|
|
|
|
@property
|
|
def show_traceback(self):
|
|
return self.debug or self.traceback
|