Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Documentation: dark theme & images #103960

Closed
denballakh opened this issue Apr 27, 2023 · 8 comments
Closed

Documentation: dark theme & images #103960

denballakh opened this issue Apr 27, 2023 · 8 comments
Labels
docs Documentation in the Doc dir

Comments

@denballakh
Copy link
Contributor

denballakh commented Apr 27, 2023

Documentation

Starting from version 3.12, the Docs now have a dark theme. However, this feature does not affect the images. As an example, please visit https://docs.python.org/3.12/library/pathlib.html.
The page contains an image of an inheritance tree. In the dark theme, the rectangles remain white, which is not visually appealing: image

To address this issue, I propose making these images compatible with the dark theme:
example of image with dark theme

Although I'm not an expert in HTML/CSS, a quick search suggests that adding style="filter:invert(1)" to <img> element can help achieve this.

Linked PRs

@denballakh denballakh added the docs Documentation in the Doc dir label Apr 27, 2023
@denballakh
Copy link
Contributor Author

I think this issue is also relevant to https://github.com/python/python-docs-theme

Also filter: hue-rotate(180deg) invert(1) instead of filter: invert(1) works a bit better.
Without hue rotation:
image
With hue rotation:
image

@hugovk
Copy link
Member

hugovk commented Apr 28, 2023

Thanks for the report.

Images/pages to review:

howto/logging.rst - logging_flow.png

https://docs.python.org/3.12/howto/logging.html#logging-flow
Image has white background and no transparency, but filter:invert(1) would help

image

image

using/windows.rst - win_installer.png

https://docs.python.org/3.12/using/windows.html#installation-steps
The installer image above. We might need to leave this one because it's a screenshot and might not want to modify the logo colours:

image

Or, the actual installer dialog now also supports dark mode (at least on macOS, also Windows?), perhaps we could create new screenshots and show the relevant one?

library/pathlib.rst - pathlib-inheritance.png

https://docs.python.org/3.12/library/pathlib.html
The inheritance tree above. Needs fixing, e.g. filter:invert(1)

library/tkinter.messagebox.rst - tk_msg.png

https://docs.python.org/3.12/library/tkinter.messagebox.html
Image has white background and no transparency:

image

filter:invert(1) might work, but it's a screenshot so maybe we don't want to show a dark mode version if it doesn't have one in reality (I've not checked).

image

library/hashlib.rst - hashlib-blake2-tree.png

https://docs.python.org/3.12/library/hashlib.html#creating-hash-objects
White background, no transparency, can be inverted:

image

image

@hugovk
Copy link
Member

hugovk commented Apr 28, 2023

See also python/peps#2409 and python/peps#2949 for how we dealt with some images for dark mode on the PEPs site.

@hugovk
Copy link
Member

hugovk commented Apr 28, 2023

Please see PR python/python-docs-theme#128 to add the class to the theme.

@hugovk
Copy link
Member

hugovk commented Apr 28, 2023

And please see PR #103983 to add the class to the three diagrams.

I didn't invert the installer or tkinter.messagebox screenshots shown in #103960 (comment) because they're screenshots of real dialogs and inverting would be misleading and potentially confusing. It's okay to have some lighter screenshots in dark mode.

@barneygale
Copy link
Contributor

Inverting the hashlib image makes the shaded areas almost invisible!

@hugovk
Copy link
Member

hugovk commented Apr 29, 2023

In contrast (no pun intended) to the above, here's how PR #103983 renders it with inverted brightness, but not inverted contrast:

image

It's not so visible in the original:

image

What does the shading actually signify here?

miss-islington pushed a commit to miss-islington/cpython that referenced this issue May 10, 2023
(cherry picked from commit 13ac176)

Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
hugovk added a commit that referenced this issue May 10, 2023
…4358)

Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
carljm added a commit to carljm/cpython that referenced this issue May 10, 2023
* main:
  pythonGH-102181: Improve specialization stats for SEND (pythonGH-102182)
  pythongh-103000: Optimise `dataclasses.asdict` for the common case (python#104364)
  pythongh-103538: Remove unused TK_AQUA code (pythonGH-103539)
  pythonGH-87695: Fix OSError from `pathlib.Path.glob()` (pythonGH-104292)
  pythongh-104263: Rely on Py_NAN and introduce Py_INFINITY (pythonGH-104202)
  pythongh-104010: Separate and improve docs for `typing.get_origin` and `typing.get_args` (python#104013)
  pythongh-101819: Adapt _io._BufferedIOBase_Type methods to Argument Clinic (python#104355)
  pythongh-103960: Dark mode: invert image brightness (python#103983)
  pythongh-104252: Immortalize Py_EMPTY_KEYS (pythongh-104253)
  pythongh-101819: Clean up _io windows console io after pythongh-104197 (python#104354)
  pythongh-101819: Harden _io init (python#104352)
  pythongh-103247: clear the module cache in a test in test_importlib/extensions/test_loader.py (pythonGH-104226)
  pythongh-103848: Adds checks to ensure that bracketed hosts found by urlsplit are of IPv6 or IPvFuture format (python#103849)
  pythongh-74895: adjust tests to work on Solaris (python#104326)
  pythongh-101819: Refactor _io in preparation for module isolation (python#104334)
  pythongh-90953: Don't use deprecated AST nodes in clinic.py (python#104322)
  pythongh-102327: Extend docs for "url" and "headers" parameters to HTTPConnection.request()
  pythongh-104328: Fix typo in ``typing.Generic`` multiple inheritance error message (python#104335)
carljm added a commit to carljm/cpython that referenced this issue May 11, 2023
* main: (27 commits)
  pythongh-87849: fix SEND specialization family definition (pythonGH-104268)
  pythongh-101819: Adapt _io.IOBase.seek and _io.IOBase.truncate to Argument Clinic (python#104384)
  pythongh-101819: Adapt _io._Buffered* methods to Argument Clinic (python#104367)
  pythongh-101819: Refactor `_io` futher in preparation for module isolation (python#104369)
  pythongh-101819: Adapt _io.TextIOBase methods to Argument Clinic (python#104383)
  pythongh-101117: Improve accuracy of sqlite3.Cursor.rowcount docs (python#104287)
  pythonGH-92184: Convert os.altsep to '/' in filenames when creating ZipInfo objects (python#92185)
  pythongh-104357: fix inlined comprehensions that close over iteration var (python#104368)
  pythonGH-90208: Suppress OSError exceptions from `pathlib.Path.glob()` (pythonGH-104141)
  pythonGH-102181: Improve specialization stats for SEND (pythonGH-102182)
  pythongh-103000: Optimise `dataclasses.asdict` for the common case (python#104364)
  pythongh-103538: Remove unused TK_AQUA code (pythonGH-103539)
  pythonGH-87695: Fix OSError from `pathlib.Path.glob()` (pythonGH-104292)
  pythongh-104263: Rely on Py_NAN and introduce Py_INFINITY (pythonGH-104202)
  pythongh-104010: Separate and improve docs for `typing.get_origin` and `typing.get_args` (python#104013)
  pythongh-101819: Adapt _io._BufferedIOBase_Type methods to Argument Clinic (python#104355)
  pythongh-103960: Dark mode: invert image brightness (python#103983)
  pythongh-104252: Immortalize Py_EMPTY_KEYS (pythongh-104253)
  pythongh-101819: Clean up _io windows console io after pythongh-104197 (python#104354)
  pythongh-101819: Harden _io init (python#104352)
  ...
@hauntsaninja
Copy link
Contributor

Thanks for fixing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs Documentation in the Doc dir
Projects
None yet
Development

No branches or pull requests

4 participants