Fix double Optional

This commit is contained in:
Paulo S. Costa 2021-04-22 20:24:23 -07:00
parent 524891e96c
commit e86b20e56d
27 changed files with 85 additions and 85 deletions

View File

@ -9,7 +9,7 @@ if TYPE_CHECKING:
from .console import Console
# Global console used by alternative print
_console: Optional[Optional["Console"]] = None
_console: Optional["Console"] = None
_IMPORT_CWD = os.path.abspath(os.getcwd())

View File

@ -94,7 +94,7 @@ class Inspect(JupyterMixin):
except TypeError:
return None
source_filename: Optional[Optional[str]] = None
source_filename: Optional[str] = None
try:
source_filename = getfile(obj)
except TypeError:

View File

@ -27,7 +27,7 @@ class LogRender:
self.time_format = time_format
self.omit_repeated_times = omit_repeated_times
self.level_width = level_width
self._last_time: Optional[Optional[Text]] = None
self._last_time: Optional[Text] = None
def __call__(
self,

View File

@ -7,7 +7,7 @@ from typing_extensions import Protocol
class Edge(Protocol):
"""Any object that defines an edge (such as Layout)."""
size: Optional[Optional[int]] = None
size: Optional[int] = None
ratio: int = 1
minimum_size: int = 1
@ -147,7 +147,7 @@ if __name__ == "__main__": # type: ignore
@dataclass
class E:
size: Optional[Optional[int]] = None
size: Optional[int] = None
ratio: int = 1
minimum_size: int = 1

View File

@ -264,9 +264,9 @@ class Color(NamedTuple):
"""The name of the color (typically the input to Color.parse)."""
type: ColorType
"""The type of the color."""
number: Optional[Optional[int]] = None
number: Optional[int] = None
"""The color number, if a standard color, or None."""
triplet: Optional[Optional[ColorTriplet]] = None
triplet: Optional[ColorTriplet] = None
"""A triplet of color components, if an RGB color."""
def __repr__(self) -> str:

View File

@ -119,17 +119,17 @@ class ConsoleOptions:
"""True if the target is a terminal, otherwise False."""
encoding: str
"""Encoding of terminal."""
justify: Optional[Optional[JustifyMethod]] = None
justify: Optional[JustifyMethod] = None
"""Justify value override for renderable."""
overflow: Optional[Optional[OverflowMethod]] = None
overflow: Optional[OverflowMethod] = None
"""Overflow value override for renderable."""
no_wrap: Optional[bool] = False
"""Disable wrapping for text."""
highlight: Optional[Optional[bool]] = None
highlight: Optional[bool] = None
"""Highlight override for render_str."""
markup: Optional[Optional[bool]] = None
markup: Optional[bool] = None
"""Enable markup when rendering strings."""
height: Optional[Optional[int]] = None
height: Optional[int] = None
"""Height available, or None for no height limit."""
@property
@ -283,7 +283,7 @@ class Capture:
def __init__(self, console: "Console") -> None:
self._console = console
self._result: Optional[Optional[str]] = None
self._result: Optional[str] = None
def __enter__(self) -> "Capture":
self._console.begin_capture()
@ -404,7 +404,7 @@ class RenderGroup:
def __init__(self, *renderables: "RenderableType", fit: bool = True) -> None:
self._renderables = renderables
self.fit = fit
self._render: Optional[Optional[List[RenderableType]]] = None
self._render: Optional[List[RenderableType]] = None
@property
def renderables(self) -> List["RenderableType"]:
@ -501,7 +501,7 @@ class RenderHook(ABC):
"""
_windows_console_features: Optional[Optional["WindowsConsoleFeatures"]] = None
_windows_console_features: Optional["WindowsConsoleFeatures"] = None
def get_windows_console_features() -> "WindowsConsoleFeatures": # pragma: no cover
@ -666,7 +666,7 @@ class Console:
)
self._record_buffer: List[Segment] = []
self._render_hooks: List[RenderHook] = []
self._live: Optional[Optional["Live"]] = None
self._live: Optional["Live"] = None
self._is_alt_screen = False
def __repr__(self) -> str:
@ -892,8 +892,8 @@ class Console:
if self.is_dumb_terminal:
return ConsoleDimensions(80, 25)
width: Optional[Optional[int]] = None
height: Optional[Optional[int]] = None
width: Optional[int] = None
height: Optional[int] = None
if WINDOWS: # pragma: no cover
width, height = shutil.get_terminal_size()
else:
@ -1140,9 +1140,9 @@ class Console:
def render_lines(
self,
renderable: RenderableType,
options: Optional[Optional[ConsoleOptions]] = None,
options: Optional[ConsoleOptions] = None,
*,
style: Optional[Optional[Style]] = None,
style: Optional[Style] = None,
pad: bool = True,
new_lines: bool = False,
) -> List[List[Segment]]:
@ -1564,7 +1564,7 @@ class Console:
*,
width: Optional[int] = 100,
extra_lines: int = 3,
theme: Optional[Optional[str]] = None,
theme: Optional[str] = None,
word_wrap: bool = False,
show_locals: bool = False,
) -> None:

View File

@ -69,16 +69,16 @@ class Live(JupyterMixin, RenderHook):
self._redirect_stdout = redirect_stdout
self._redirect_stderr = redirect_stderr
self._restore_stdout: Optional[Optional[IO[str]]] = None
self._restore_stderr: Optional[Optional[IO[str]]] = None
self._restore_stdout: Optional[IO[str]] = None
self._restore_stderr: Optional[IO[str]] = None
self._lock = RLock()
self.ipy_widget: Optional[Optional[Any]] = None
self.ipy_widget: Optional[Any] = None
self.auto_refresh = auto_refresh
self._started: bool = False
self.transient = True if screen else transient
self._refresh_thread: Optional[Optional[_RefreshThread]] = None
self._refresh_thread: Optional[_RefreshThread] = None
self.refresh_per_second = refresh_per_second
self.vertical_overflow = vertical_overflow

View File

@ -68,9 +68,9 @@ class RichHandler(Handler):
highlighter: Optional[Highlighter] = None,
markup: bool = False,
rich_tracebacks: bool = False,
tracebacks_width: Optional[Optional[int]] = None,
tracebacks_width: Optional[int] = None,
tracebacks_extra_lines: int = 3,
tracebacks_theme: Optional[Optional[str]] = None,
tracebacks_theme: Optional[str] = None,
tracebacks_word_wrap: bool = True,
tracebacks_show_locals: bool = False,
locals_max_length: int = 10,

View File

@ -322,7 +322,7 @@ class ImageItem(TextElement):
def __init__(self, destination: str, hyperlinks: bool) -> None:
self.destination = destination
self.hyperlinks = hyperlinks
self.link: Optional[Optional[str]] = None
self.link: Optional[str] = None
super().__init__()
def on_enter(self, context: "MarkdownContext") -> None:
@ -356,7 +356,7 @@ class MarkdownContext:
self.style_stack: StyleStack = StyleStack(style)
self.stack: Stack[MarkdownElement] = Stack()
self._syntax: Optional[Optional[Syntax]] = None
self._syntax: Optional[Syntax] = None
if inline_code_lexer is not None:
self._syntax = Syntax("", inline_code_lexer, theme=inline_code_theme)

View File

@ -103,7 +103,7 @@ class Padding(JupyterMixin):
if self.right
else [_Segment.line()]
)
blank_line: Optional[Optional[List[Segment]]] = None
blank_line: Optional[List[Segment]] = None
if self.top:
blank_line = [_Segment(f'{" " * width}\n', style)]
yield from blank_line * self.top

View File

@ -42,12 +42,12 @@ class Panel(JupyterMixin):
*,
title: Optional[TextType] = None,
title_align: AlignMethod = "center",
safe_box: Optional[Optional[bool]] = None,
safe_box: Optional[bool] = None,
expand: bool = True,
style: StyleType = "none",
border_style: StyleType = "none",
width: Optional[Optional[int]] = None,
height: Optional[Optional[int]] = None,
width: Optional[int] = None,
height: Optional[int] = None,
padding: PaddingDimensions = (0, 1),
highlight: bool = False,
) -> None:
@ -72,10 +72,10 @@ class Panel(JupyterMixin):
*,
title: Optional[TextType] = None,
title_align: AlignMethod = "center",
safe_box: Optional[Optional[bool]] = None,
safe_box: Optional[bool] = None,
style: StyleType = "none",
border_style: StyleType = "none",
width: Optional[Optional[int]] = None,
width: Optional[int] = None,
padding: PaddingDimensions = (0, 1),
):
"""An alternative constructor that sets expand=False."""

View File

@ -158,7 +158,7 @@ class Pretty(JupyterMixin):
*,
indent_size: int = 4,
justify: Optional["JustifyMethod"] = None,
overflow: Optional[Optional["OverflowMethod"]] = None,
overflow: Optional["OverflowMethod"] = None,
no_wrap: Optional[bool] = False,
indent_guides: bool = False,
max_length: Optional[int] = None,
@ -278,7 +278,7 @@ class Node:
empty: str = ""
last: bool = False
is_tuple: bool = False
children: Optional[Optional[List["Node"]]] = None
children: Optional[List["Node"]] = None
key_separator = ": "
@property
@ -360,7 +360,7 @@ class _Line:
"""A line in repr output."""
is_root: bool = False
node: Optional[Optional[Node]] = None
node: Optional[Node] = None
text: str = ""
suffix: str = ""
whitespace: str = ""

View File

@ -83,9 +83,9 @@ class _TrackThread(Thread):
def track(
sequence: Union[Sequence[ProgressType], Iterable[ProgressType]],
description="Working...",
total: Optional[Optional[float]] = None,
total: Optional[float] = None,
auto_refresh=True,
console: Optional[Optional[Console]] = None,
console: Optional[Console] = None,
transient: bool = False,
get_time: Optional[Callable[[], float]] = None,
refresh_per_second: float = 10,
@ -151,12 +151,12 @@ def track(
class ProgressColumn(ABC):
"""Base class for a widget to use in progress display."""
max_refresh: Optional[Optional[float]] = None
max_refresh: Optional[float] = None
def __init__(self, table_column: Optional[Column] = None) -> None:
self._table_column = table_column
self._renderable_cache: Dict[TaskID, Tuple[float, RenderableType]] = {}
self._update_time: Optional[Optional[float]] = None
self._update_time: Optional[float] = None
def get_table_column(self) -> Column:
"""Get a table column, used to build tasks table."""
@ -455,7 +455,7 @@ class Task:
_get_time: GetTimeCallable
"""Callable to get the current time."""
finished_time: Optional[Optional[float]] = None
finished_time: Optional[float] = None
"""float: Time task was finished."""
visible: bool = True
@ -470,7 +470,7 @@ class Task:
stop_time: Optional[float] = field(default=None, init=False, repr=False)
"""Optional[float]: Time this task was stopped, or None if not stopped."""
finished_speed: Optional[Optional[float]] = None
finished_speed: Optional[float] = None
"""Optional[float]: The last speed for a finshed task."""
_progress: Deque[ProgressSample] = field(
@ -655,8 +655,8 @@ class Progress(JupyterMixin):
def track(
self,
sequence: Union[Iterable[ProgressType], Sequence[ProgressType]],
total: Optional[Optional[float]] = None,
task_id: Optional[Optional[TaskID]] = None,
total: Optional[float] = None,
task_id: Optional[TaskID] = None,
description="Working...",
update_period: float = 0.1,
) -> Iterable[ProgressType]:
@ -734,7 +734,7 @@ class Progress(JupyterMixin):
self,
task_id: TaskID,
*,
total: Optional[Optional[float]] = None,
total: Optional[float] = None,
completed: Optional[float] = None,
advance: Optional[float] = None,
description: Optional[str] = None,
@ -794,10 +794,10 @@ class Progress(JupyterMixin):
task_id: TaskID,
*,
start: bool = True,
total: Optional[Optional[float]] = None,
total: Optional[float] = None,
completed: int = 0,
visible: Optional[Optional[bool]] = None,
description: Optional[Optional[str]] = None,
visible: Optional[bool] = None,
description: Optional[str] = None,
**fields: Any,
) -> None:
"""Reset a task so completed is 0 and the clock is reset.

View File

@ -52,7 +52,7 @@ class ProgressBar(JupyterMixin):
self.pulse_style = pulse_style
self.animation_time = animation_time
self._pulse_segments: Optional[Optional[List[Segment]]] = None
self._pulse_segments: Optional[List[Segment]] = None
def __repr__(self) -> str:
return f"<Bar {self.completed!r} of {self.total!r}>"

View File

@ -48,7 +48,7 @@ class PromptBase(Generic[PromptType]):
)
prompt_suffix = ": "
choices: Optional[Optional[List[str]]] = None
choices: Optional[List[str]] = None
def __init__(
self,

View File

@ -47,9 +47,9 @@ class Segment(NamedTuple):
text: str = ""
"""Raw text."""
style: Optional[Optional[Style]] = None
style: Optional[Style] = None
"""An optional style."""
control: Optional[Optional[Sequence[ControlCode]]] = None
control: Optional[Sequence[ControlCode]] = None
"""Optional sequence of control codes."""
def __repr__(self) -> str:

View File

@ -37,7 +37,7 @@ class Spinner:
self.text = text
self.frames = cast(List[str], spinner["frames"])[:]
self.interval = cast(float, spinner["interval"])
self.start_time: Optional[Optional[float]] = None
self.start_time: Optional[float] = None
self.style = style
self.speed = speed
self.time = 0.0

View File

@ -59,11 +59,11 @@ class Status(JupyterMixin):
def update(
self,
status: Optional[Optional[RenderableType]] = None,
status: Optional[RenderableType] = None,
*,
spinner: Optional[Optional[str]] = None,
spinner_style: Optional[Optional[StyleType]] = None,
speed: Optional[Optional[float]] = None,
spinner: Optional[str] = None,
spinner_style: Optional[StyleType] = None,
speed: Optional[float] = None,
):
"""Update status.

View File

@ -110,8 +110,8 @@ class Style:
overline: Optional[bool] = None,
link: Optional[str] = None,
):
self._ansi: Optional[Optional[str]] = None
self._style_definition: Optional[Optional[str]] = None
self._ansi: Optional[str] = None
self._style_definition: Optional[str] = None
def _make_color(color: Union[Color, str]) -> Color:
return color if isinstance(color, Color) else Color.parse(color)
@ -444,10 +444,10 @@ class Style:
"overline": "overline",
"o": "overline",
}
color: Optional[Optional[str]] = None
bgcolor: Optional[Optional[str]] = None
color: Optional[str] = None
bgcolor: Optional[str] = None
attributes: Dict[str, Optional[bool]] = {}
link: Optional[Optional[str]] = None
link: Optional[str] = None
words = iter(style_definition.split())
for original_word in words:
@ -625,7 +625,7 @@ class Style:
)
return rendered
def test(self, text: Optional[Optional[str]] = None) -> None:
def test(self, text: Optional[str] = None) -> None:
"""Write text with style directly to terminal.
This method is for testing purposes only.

View File

@ -232,7 +232,7 @@ class Syntax(JupyterMixin):
start_line: int = 1,
line_range: Optional[Tuple[int, int]] = None,
highlight_lines: Optional[Set[int]] = None,
code_width: Optional[Optional[int]] = None,
code_width: Optional[int] = None,
tab_size: int = 4,
word_wrap: bool = False,
background_color: Optional[str] = None,
@ -267,7 +267,7 @@ class Syntax(JupyterMixin):
line_range: Optional[Tuple[int, int]] = None,
start_line: int = 1,
highlight_lines: Optional[Set[int]] = None,
code_width: Optional[Optional[int]] = None,
code_width: Optional[int] = None,
tab_size: int = 4,
word_wrap: bool = False,
background_color: Optional[str] = None,

View File

@ -58,16 +58,16 @@ class Column:
overflow: "OverflowMethod" = "ellipsis"
"""str: Overflow method."""
width: Optional[Optional[int]] = None
width: Optional[int] = None
"""Optional[int]: Width of the column, or ``None`` (default) to auto calculate width."""
min_width: Optional[Optional[int]] = None
min_width: Optional[int] = None
"""Optional[int]: Minimum width of column, or ``None`` for no minimum. Defaults to None."""
max_width: Optional[Optional[int]] = None
max_width: Optional[int] = None
"""Optional[int]: Maximum width of column, or ``None`` for no maximum. Defaults to None."""
ratio: Optional[Optional[int]] = None
ratio: Optional[int] = None
"""Optional[int]: Ratio to use when calculating column width, or ``None`` (default) to adapt to column contents."""
no_wrap: bool = False
@ -97,7 +97,7 @@ class Column:
class Row:
"""Information regarding a row."""
style: Optional[Optional[StyleType]] = None
style: Optional[StyleType] = None
"""Style to apply to row."""
end_section: bool = False
@ -156,7 +156,7 @@ class Table(JupyterMixin):
width: Optional[int] = None,
min_width: Optional[int] = None,
box: Optional[box.Box] = box.HEAVY_HEAD,
safe_box: Optional[Optional[bool]] = None,
safe_box: Optional[bool] = None,
padding: PaddingDimensions = (0, 1),
collapse_padding: bool = False,
pad_edge: bool = True,

View File

@ -13,8 +13,8 @@ def tabulate_mapping(
mapping: Mapping,
title: Optional[str] = None,
caption: Optional[str] = None,
title_justify: Optional[Optional[JustifyMethod]] = None,
caption_justify: Optional[Optional[JustifyMethod]] = None,
title_justify: Optional[JustifyMethod] = None,
caption_justify: Optional[JustifyMethod] = None,
) -> Table:
"""Generate a simple table from a mapping.

View File

@ -360,7 +360,7 @@ class Text(JupyterMixin):
self,
style: Union[str, Style],
start: int = 0,
end: Optional[Optional[int]] = None,
end: Optional[int] = None,
) -> None:
"""Apply a style to the text, or a portion of the text.
@ -676,7 +676,7 @@ class Text(JupyterMixin):
self,
max_width: int,
*,
overflow: Optional[Optional["OverflowMethod"]] = None,
overflow: Optional["OverflowMethod"] = None,
pad: bool = False,
) -> None:
"""Truncate text if it is longer that a given width.

View File

@ -43,7 +43,7 @@ def install(
console: Optional[Console] = None,
width: Optional[int] = 100,
extra_lines: int = 3,
theme: Optional[Optional[str]] = None,
theme: Optional[str] = None,
word_wrap: bool = False,
show_locals: bool = False,
indent_guides: bool = True,
@ -104,7 +104,7 @@ def install(
exc_tuple = ip._get_exc_info()
# do not display trace on syntax error
tb: Optional[Optional[TracebackType]] = None if is_syntax else exc_tuple[2]
tb: Optional[TracebackType] = None if is_syntax else exc_tuple[2]
# determine correct tb_offset
compiled = tb_data.get("running_compiled_code", False)
@ -161,7 +161,7 @@ class _SyntaxError:
class Stack:
exc_type: str
exc_value: str
syntax_error: Optional[Optional[_SyntaxError]] = None
syntax_error: Optional[_SyntaxError] = None
is_cause: bool = False
frames: List[Frame] = field(default_factory=list)
@ -205,7 +205,7 @@ class Traceback:
trace: Optional[Trace] = None,
width: Optional[int] = 100,
extra_lines: int = 3,
theme: Optional[Optional[str]] = None,
theme: Optional[str] = None,
word_wrap: bool = False,
show_locals: bool = False,
indent_guides: bool = True,
@ -239,7 +239,7 @@ class Traceback:
traceback: Optional[TracebackType],
width: Optional[int] = 100,
extra_lines: int = 3,
theme: Optional[Optional[str]] = None,
theme: Optional[str] = None,
word_wrap: bool = False,
show_locals: bool = False,
indent_guides: bool = True,

View File

@ -208,7 +208,7 @@ if __name__ == "__main__": # pragma: no cover
code = """\
class Segment(NamedTuple):
text: str = ""
style: Optional[Optional[Style]] = None
style: Optional[Style] = None
is_control: bool = False
"""
syntax = Syntax(code, "python", theme="monokai", line_numbers=True)

View File

@ -439,7 +439,7 @@ def test_bell() -> None:
def test_pager() -> None:
console = Console(_environ={})
pager_content: Optional[Optional[str]] = None
pager_content: Optional[str] = None
def mock_pager(content: str) -> None:
nonlocal pager_content

View File

@ -5,7 +5,7 @@ from rich._ratio import ratio_reduce, ratio_resolve
class Edge(NamedTuple):
size: Optional[Optional[int]] = None
size: Optional[int] = None
ratio: int = 1
minimum_size: int = 1