rich icon indicating copy to clipboard operation
rich copied to clipboard

Extra output in progress bars running on jupyter notebooks.

Open tylerflex opened this issue 3 years ago • 2 comments

Describe the bug

I have a simple progressbar running in a jupyter notebook.

from rich.progress import track

for n in track(range(10), description="Processing..."):
    time.sleep(.1)

When the progressbar exists, the final state is displayed along with the updating progressbar, creating a duplicate

image

Is there a recommended way to have the final display replace the updating display? Note: works as expected in interactive ipython shell or script.

Thank you!

╭────────────────── <class 'rich.console.Console'> ───────────────────╮
│ A high level console interface.                                     │
│                                                                     │
│ ╭─────────────────────────────────────────────────────────────────╮ │
│ │ <console width=71 ColorSystem.TRUECOLOR>                        │ │
│ ╰─────────────────────────────────────────────────────────────────╯ │
│                                                                     │
│     color_system = 'truecolor'                                      │
│         encoding = 'utf-8'                                          │
│             file = <_io.TextIOWrapper name='<stdout>' mode='w'      │
│                    encoding='utf-8'>                                │
│           height = 51                                               │
│    is_alt_screen = False                                            │
│ is_dumb_terminal = False                                            │
│   is_interactive = True                                             │
│       is_jupyter = False                                            │
│      is_terminal = True                                             │
│   legacy_windows = False                                            │
│         no_color = False                                            │
│          options = ConsoleOptions(                                  │
│                        size=ConsoleDimensions(width=71, height=51), │
│                        legacy_windows=False,                        │
│                        min_width=1,                                 │
│                        max_width=71,                                │
│                        is_terminal=True,                            │
│                        encoding='utf-8',                            │
│                        max_height=51,                               │
│                        justify=None,                                │
│                        overflow=None,                               │
│                        no_wrap=False,                               │
│                        highlight=None,                              │
│                        markup=None,                                 │
│                        height=None                                  │
│                    )                                                │
│            quiet = False                                            │
│           record = False                                            │
│         safe_box = True                                             │
│             size = ConsoleDimensions(width=71, height=51)           │
│        soft_wrap = False                                            │
│           stderr = False                                            │
│            style = None                                             │
│         tab_size = 8                                                │
│            width = 71                                               │
╰─────────────────────────────────────────────────────────────────────╯
platform="Darwin"
WindowsConsoleFeatures(vt=False, truecolor=False)
rich==11.0.0

tylerflex avatar Jan 30 '22 22:01 tylerflex

Hey @tylerflex, I haven't been able to reproduce this. Are you running this in VS Code, the Jupyter Notebook web interface, or somewhere else?

I noticed in the diagnostics you included that the environment isn't being detected as a notebook (is_jupyter = False) -- could you run the diagnostic check inside the cell of your notebook?

darrenburns avatar Jan 31 '22 16:01 darrenburns

HI @darrenburns , I'm running in a locally hosted Jupyter lab notebook. Jupyter: Version: 1.0.0 I also see if when I run in a regular jupyter notebook.

And yea the diagnostics I ran outside of the session.

python -m rich.diagnose
python -m rich._windows
pip freeze | grep rich

Are there some other diagnostics I can run that would help? Thanks for looking into it.

tylerflex avatar Jan 31 '22 16:01 tylerflex

This seems to still be an issue.

image

╭──────────────────── <class 'rich.console.Console'> ─────────────────────╮
│ A high level console interface.                                         │
│                                                                         │
│ ╭─────────────────────────────────────────────────────────────────────╮ │
│ │ <console width=115 ColorSystem.TRUECOLOR>                           │ │
│ ╰─────────────────────────────────────────────────────────────────────╯ │
│                                                                         │
│     color_system = 'truecolor'                                          │
│         encoding = 'utf-8'                                              │
│             file = <ipykernel.iostream.OutStream object at 0x10f89b2b0> │
│           height = 100                                                  │
│    is_alt_screen = False                                                │
│ is_dumb_terminal = False                                                │
│   is_interactive = True                                                 │
│       is_jupyter = True                                                 │
│      is_terminal = True                                                 │
│   legacy_windows = False                                                │
│         no_color = False                                                │
│          options = ConsoleOptions(                                      │
│                        size=ConsoleDimensions(width=115, height=100),   │
│                        legacy_windows=False,                            │
│                        min_width=1,                                     │
│                        max_width=115,                                   │
│                        is_terminal=True,                                │
│                        encoding='utf-8',                                │
│                        max_height=100,                                  │
│                        justify=None,                                    │
│                        overflow=None,                                   │
│                        no_wrap=False,                                   │
│                        highlight=None,                                  │
│                        markup=None,                                     │
│                        height=None                                      │
│                    )                                                    │
│            quiet = False                                                │
│           record = False                                                │
│         safe_box = True                                                 │
│             size = ConsoleDimensions(width=115, height=100)             │
│        soft_wrap = False                                                │
│           stderr = False                                                │
│            style = None                                                 │
│         tab_size = 8                                                    │
│            width = 115                                                  │
╰─────────────────────────────────────────────────────────────────────────╯
╭─── <class 'rich._windows.WindowsConsoleFeatures'> ────╮
│ Windows features available.                           │
│                                                       │
│ ╭───────────────────────────────────────────────────╮ │
│ │ WindowsConsoleFeatures(vt=False, truecolor=False) │ │
│ ╰───────────────────────────────────────────────────╯ │
│                                                       │
│ truecolor = False                                     │
│        vt = False                                     │
╰───────────────────────────────────────────────────────╯
╭────── Environment Variables ───────╮
│ {                                  │
│     'TERM': 'xterm-color',         │
│     'COLORTERM': 'truecolor',      │
│     'CLICOLOR': '1',               │
│     'NO_COLOR': None,              │
│     'TERM_PROGRAM': 'iTerm.app',   │
│     'COLUMNS': None,               │
│     'LINES': None,                 │
│     'JUPYTER_COLUMNS': None,       │
│     'JUPYTER_LINES': None,         │
│     'JPY_PARENT_PID': '30168',     │
│     'VSCODE_VERBOSE_LOGGING': None │
│ }                                  │
╰────────────────────────────────────╯
platform="Darwin"

Python 3.10.8

pip freeze:

anyio==3.6.2
appnope==0.1.3
argon2-cffi==21.3.0
argon2-cffi-bindings==21.2.0
arrow==1.2.3
asttokens==2.2.1
attrs==22.2.0
Babel==2.11.0
backcall==0.2.0
beautifulsoup4==4.11.1
bleach==5.0.1
certifi==2022.12.7
cffi==1.15.1
charset-normalizer==2.1.1
comm==0.1.2
commonmark==0.9.1
debugpy==1.6.5
decorator==5.1.1
defusedxml==0.7.1
entrypoints==0.4
executing==1.2.0
fastjsonschema==2.16.2
fqdn==1.5.1
idna==3.4
ipykernel==6.19.4
ipython==8.8.0
ipython-genutils==0.2.0
ipywidgets==8.0.4
isoduration==20.11.0
jedi==0.18.2
Jinja2==3.1.2
json5==0.9.11
jsonpointer==2.3
jsonschema==4.17.3
jupyter==1.0.0
jupyter-console==6.4.4
jupyter-events==0.5.0
jupyter_client==7.4.8
jupyter_core==5.1.2
jupyter_server==2.0.6
jupyter_server_terminals==0.4.3
jupyterlab==3.5.2
jupyterlab-pygments==0.2.2
jupyterlab-widgets==3.0.5
jupyterlab_server==2.18.0
MarkupSafe==2.1.1
matplotlib-inline==0.1.6
mistune==2.0.4
nbclassic==0.4.8
nbclient==0.7.2
nbconvert==7.2.7
nbformat==5.7.1
nest-asyncio==1.5.6
notebook==6.5.2
notebook_shim==0.2.2
packaging==22.0
pandocfilters==1.5.0
parso==0.8.3
pexpect==4.8.0
pickleshare==0.7.5
platformdirs==2.6.2
prometheus-client==0.15.0
prompt-toolkit==3.0.36
psutil==5.9.4
ptyprocess==0.7.0
pure-eval==0.2.2
pycparser==2.21
Pygments==2.14.0
pyrsistent==0.19.3
python-dateutil==2.8.2
python-json-logger==2.0.4
pytz==2022.7
PyYAML==6.0
pyzmq==24.0.1
qtconsole==5.4.0
QtPy==2.3.0
requests==2.28.1
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rich==13.0.1
Send2Trash==1.8.0
six==1.16.0
sniffio==1.3.0
soupsieve==2.3.2.post1
stack-data==0.6.2
terminado==0.17.1
tinycss2==1.2.1
tomli==2.0.1
tornado==6.2
traitlets==5.8.0
uri-template==1.2.0
urllib3==1.26.13
wcwidth==0.2.5
webcolors==1.12
webencodings==0.5.1
websocket-client==1.4.2
widgetsnbextension==4.0.5

barakalon avatar Jan 06 '23 21:01 barakalon

can confirm, reproducible on x86_64 arch linux:

╭────────────────────── <class 'rich.console.Console'> ──────────────────────╮
│ A high level console interface.                                            │
│                                                                            │
│ ╭────────────────────────────────────────────────────────────────────────╮ │
│ │ <console width=115 ColorSystem.TRUECOLOR>                              │ │
│ ╰────────────────────────────────────────────────────────────────────────╯ │
│                                                                            │
│     color_system = 'truecolor'                                             │
│         encoding = 'utf-8'                                                 │
│             file = <ipykernel.iostream.OutStream object at 0x7f962f679b70> │
│           height = 100                                                     │
│    is_alt_screen = False                                                   │
│ is_dumb_terminal = False                                                   │
│   is_interactive = True                                                    │
│       is_jupyter = True                                                    │
│      is_terminal = True                                                    │
│   legacy_windows = False                                                   │
│         no_color = False                                                   │
│          options = ConsoleOptions(                                         │
│                        size=ConsoleDimensions(width=115, height=100),      │
│                        legacy_windows=False,                               │
│                        min_width=1,                                        │
│                        max_width=115,                                      │
│                        is_terminal=True,                                   │
│                        encoding='utf-8',                                   │
│                        max_height=100,                                     │
│                        justify=None,                                       │
│                        overflow=None,                                      │
│                        no_wrap=False,                                      │
│                        highlight=None,                                     │
│                        markup=None,                                        │
│                        height=None                                         │
│                    )                                                       │
│            quiet = False                                                   │
│           record = False                                                   │
│         safe_box = True                                                    │
│             size = ConsoleDimensions(width=115, height=100)                │
│        soft_wrap = False                                                   │
│           stderr = False                                                   │
│            style = None                                                    │
│         tab_size = 8                                                       │
│            width = 115                                                     │
╰────────────────────────────────────────────────────────────────────────────╯

╭─── <class 'rich._windows.WindowsConsoleFeatures'> ────╮
│ Windows features available.                           │
│                                                       │
│ ╭───────────────────────────────────────────────────╮ │
│ │ WindowsConsoleFeatures(vt=False, truecolor=False) │ │
│ ╰───────────────────────────────────────────────────╯ │
│                                                       │
│ truecolor = False                                     │
│        vt = False                                     │
╰───────────────────────────────────────────────────────╯

╭────── Environment Variables ───────╮
│ {                                  │
│     'TERM': 'xterm-color',         │
│     'COLORTERM': 'truecolor',      │
│     'CLICOLOR': '1',               │
│     'NO_COLOR': None,              │
│     'TERM_PROGRAM': None,          │
│     'COLUMNS': None,               │
│     'LINES': None,                 │
│     'JUPYTER_COLUMNS': None,       │
│     'JUPYTER_LINES': None,         │
│     'JPY_PARENT_PID': '17347',     │
│     'VSCODE_VERBOSE_LOGGING': None │
│ }                                  │
╰────────────────────────────────────╯

platform="Linux"

Silur avatar Jan 08 '23 19:01 Silur

Since opening this issue about a year ago, it seemed to be fixed and only recently came back about 1 month ago (if that helps).

tylerflex avatar Jan 09 '23 16:01 tylerflex

Still happening here as well.

Speierers avatar Mar 15 '23 12:03 Speierers