Skip to content
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
00371ce
Update doc dependencies for furo migration
vlad-perevezentsev May 27, 2026
2a2b216
Switch Sphinx theme to furo in conf.py
vlad-perevezentsev May 27, 2026
3ff2adf
Redesign landing page with sphinx-design grid cards
vlad-perevezentsev May 27, 2026
7530aa9
Comment lines for future dpnp logo
vlad-perevezentsev May 28, 2026
1e5dfe6
Add custom CSS and JS for furo theme styling
vlad-perevezentsev May 28, 2026
4355506
Use html_title as interim sidebar branding for furo theme
vlad-perevezentsev May 28, 2026
b5464e3
Fix warnings in index.rst
vlad-perevezentsev May 28, 2026
bb95bb0
Merge remote-tracking branch 'origin/master' into update_dpnp_docs
vlad-perevezentsev May 28, 2026
b748d2e
Rename css/js custom files
vlad-perevezentsev May 28, 2026
bacc702
Add js file manually in setup()
vlad-perevezentsev May 28, 2026
48f18ff
Add debug step for check js file
vlad-perevezentsev May 29, 2026
bf5dcd1
Fix custom JS not executing
vlad-perevezentsev May 29, 2026
0f1f80c
Handle both EN DASH and double-hyphen separators in parameter reforma…
vlad-perevezentsev May 29, 2026
7bc144a
Remove Debug JS step
vlad-perevezentsev May 29, 2026
0bdc775
Merge master into update_dpnp_docs
vlad-perevezentsev Jun 11, 2026
e0bb48e
Merge remote-tracking branch 'origin/master' into update_dpnp_docs
vlad-perevezentsev Jun 24, 2026
ac4b390
Apply remarks
vlad-perevezentsev Jun 24, 2026
3d3ae8f
Update changelog
vlad-perevezentsev Jun 24, 2026
8c610e7
Merge remote-tracking branch 'origin/master' into update_dpnp_docs
vlad-perevezentsev Jun 25, 2026
d39cd2a
Apply remarks
vlad-perevezentsev Jun 25, 2026
b5ff034
Merge remote-tracking branch 'origin/master' into update_dpnp_docs
vlad-perevezentsev Jun 25, 2026
c4ccfda
A small update .css file
vlad-perevezentsev Jun 25, 2026
ba6e1e7
Merge branch 'master' into update_dpnp_docs
antonwolfy Jun 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions doc/_static/dpnp-custom.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
/* Autosummary tables: left-aligned */
Comment thread
vlad-perevezentsev marked this conversation as resolved.
Comment thread
vlad-perevezentsev marked this conversation as resolved.
.longtable.docutils {
margin-left: 0;
margin-right: auto;
}

/* Admonitions: normal font size, no left accent bar */
div.admonition {
font-size: inherit !important;
border-left: 0 !important;
}

/* Table borders and alternating row backgrounds */
body table.docutils tbody tr.row-odd,
body table.docutils tbody tr.row-even {
background: transparent !important;
}

body table.docutils td,
body table.docutils th {
border: 1px solid var(--color-foreground-border) !important;
padding: 8px 12px;
}

body table.docutils thead th {
background-color: #e8edf2 !important;
}

body table.docutils tbody tr.row-odd {
background-color: #f5f5f5 !important;
}

/* Docstring section titles: normal case, bold, gray background */
dd p.rubric,
dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list > dt,
.admonition > .admonition-title {
text-transform: none !important;
font-size: inherit !important;
font-weight: 700 !important;
background-color: #f5f5f5;
padding: 4px 8px;
}

/* Constants page: lighter section headers */
#constants dd p.rubric {
background-color: transparent;
padding: 0;
border-bottom: 1px solid #ccc;
}

/* Function signatures: normal weight, bold only for name and param names */
dt.sig.sig-object,
dt.sig.sig-object * {
font-weight: 400 !important;
}

dt.sig.sig-object .sig-name,
dt.sig.sig-object .sig-name *,
dt.sig.sig-object .sig-param > .n,
dt.sig.sig-object .sig-param > .n * {
font-weight: 700 !important;
}

/* Parameter/return descriptions: indented on new line (via custom.js) */
dl.field-list dd .param-desc {
display: inline-block;
padding-left: 1.5em;
}

/* Parameter lists: no bullets, keep indentation */
dl.field-list dd ul.simple {
list-style: none !important;
padding-left: 1.2em !important;
}

/* Dark mode */
@media (prefers-color-scheme: dark) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The dark-mode blocks only override table colors. The hardcoded background-color: #f5f5f5 on dd p.rubric / .admonition-title (line 40) is not overridden in dark mode → light text on a near-white background = unreadable section headers and admonition titles.

An an option we can either add matching dark-mode overrides, or better, use furo CSS variables (e.g. --color-background-secondary) which auto-adapt and would let you delete the duplicated dark-mode block entirely.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@media (prefers-color-scheme: dark) table rules (lines 77–84) still apply if the OS is dark but the user toggles furo to light. Furo's own CSS gates these with body:not([data-theme="light"]).

body table.docutils thead th {
background-color: #2a2e33 !important;
}
body table.docutils tbody tr.row-odd {
background-color: #1e2227 !important;
}
}

body[data-theme="dark"] table.docutils thead th {
background-color: #2a2e33 !important;
}
body[data-theme="dark"] table.docutils tbody tr.row-odd {
background-color: #1e2227 !important;
}
42 changes: 42 additions & 0 deletions doc/_static/dpnp-custom.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
(function() {
var separator = " – ";
var separatorAlt = " -- ";

function reformatEntry(container)
{
var paragraphs = container.querySelectorAll(":scope > p");
if (!paragraphs.length)
return;

var firstP = paragraphs[0];
var idx = firstP.innerHTML.indexOf(separator);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the separator appears inside an HTML tag/attribute (e.g. a title= with an en dash), substring splits mid-tag and corrupts markup. Locating the boundary via textContent (or DOM walking) might be safer.

var sep = separator;
if (idx === -1) {
idx = firstP.innerHTML.indexOf(separatorAlt);
sep = separatorAlt;
}
if (idx === -1)
return;

var before = firstP.innerHTML.substring(0, idx);
var after = firstP.innerHTML.substring(idx + sep.length);

var extra = [];
for (var i = 1; i < paragraphs.length; i++) {
extra.push(paragraphs[i].innerHTML);
paragraphs[i].remove();
}
if (extra.length)
after += (after ? "<br>" : "") + extra.join("<br>");

firstP.innerHTML =
before + '<br><span class="param-desc">' + after + "</span>";
}

document.querySelectorAll("dl.field-list dd ul.simple li")
.forEach(reformatEntry);
document.querySelectorAll("dl.field-list dd").forEach(function(dd) {
if (!dd.querySelector("ul.simple"))
reformatEntry(dd);
});
})();
37 changes: 20 additions & 17 deletions doc/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,14 @@
"sphinx.ext.napoleon",
"sphinx.ext.autodoc",
"sphinx.ext.autosummary",
"sphinx_copybutton",
"sphinx_design",
"sphinxcontrib.googleanalytics",
"sphinxcontrib.spelling",
]

copybutton_prompt_text = ">>> "
Comment thread
antonwolfy marked this conversation as resolved.
Outdated

googleanalytics_id = "G-554F8VNE28"
googleanalytics_enabled = True

Expand Down Expand Up @@ -106,20 +110,23 @@
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]

# The name of the Pygments (syntax highlighting) style to use.
pygments_style = "sphinx"
pygments_style = "default"


# -- Options for HTML output -------------------------------------------------

# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
# html_theme = 'alabaster'
html_theme = "sphinx_rtd_theme"
html_theme_options = {
"sidebarwidth": 30,
"nosidebar": False,
}
html_theme = "furo"
# TODO: Remove html_title and uncomment html_logo once dpnp.svg is available
html_title = (
'<span style="font-size:2em;font-weight:700">dpnp</span><br>'
'<small style="font-size:0.75em">Data Parallel Extension for NumPy<br>'
+ release
+ " documentation</small>"
)
html_theme_options = {}

# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
Expand All @@ -130,7 +137,12 @@
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = []
html_static_path = ["_static"]

# html_logo = "_static/dpnp.svg"
# html_favicon = "_static/dpnp.svg"
html_css_files = ["dpnp-custom.css"]
html_js_files = ["dpnp-custom.js"]

# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
Expand All @@ -140,15 +152,6 @@
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
# 'searchbox.html']``.
#
# html_sidebars = {}
html_sidebars = {
"**": [
"globaltoc.html",
"relations.html",
"sourcelink.html",
"searchbox.html",
]
}


# -- Options for HTMLHelp output ---------------------------------------------
Expand Down
77 changes: 71 additions & 6 deletions doc/index.rst
Original file line number Diff line number Diff line change
@@ -1,22 +1,87 @@
.. _index:
.. include:: ./ext_links.txt

===================================
Data Parallel Extension for NumPy*
==================================
===================================

.. module:: dpnp
:no-index:

Python package :py:mod:`dpnp` implements a subset of `NumPy*`_ that can be
Comment thread
vlad-perevezentsev marked this conversation as resolved.
Outdated
executed on any data parallel device. The subset is a drop-in replacement of
core `NumPy*`_ functions and numerical data types.

.. grid:: 2
:gutter: 3

.. grid-item-card:: Overview

Learn about the Data Parallel Extension for NumPy*, its design
principles, and what it provides.

+++

.. button-ref:: overview
:ref-type: doc
:expand:
:color: secondary
:click-parent:

To the overview

.. grid-item-card:: Quick Start Guide

Get started with installation, setup, and your first dpnp program.

+++

.. button-ref:: quick_start_guide
:ref-type: doc
:expand:
:color: secondary
:click-parent:

To the quick start guide

.. grid-item-card:: API Reference

Detailed documentation of all supported NumPy functions and classes
in :py:mod:`dpnp`.

+++

.. button-ref:: dpnp_reference
:ref-type: ref
:expand:
:color: secondary
:click-parent:

Access API Reference

.. grid-item-card:: Tensor (dpnp.tensor)

The underlying Array API-compliant implementation based on
Comment thread
antonwolfy marked this conversation as resolved.
data-parallel algorithms for accelerators.

+++

.. button-ref:: tensor
:ref-type: doc
:expand:
:color: secondary
:click-parent:

To the tensor documentation


.. toctree::
:maxdepth: 2
:hidden:
:caption: Contents:

overview
quick_start_guide
reference/index
tensor

.. toctree::
:maxdepth: 1
:caption: Development information
Comment thread
vlad-perevezentsev marked this conversation as resolved.

dpnp_backend_api
2 changes: 2 additions & 0 deletions environments/base_build_docs.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
pyenchant==3.2.2
sphinx-copybutton==0.5.2
sphinx-design==0.6.1
sphinxcontrib-googleanalytics==0.4
sphinxcontrib-spelling==8.0.1
2 changes: 1 addition & 1 deletion environments/building_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ dependencies:
- python=3.13 # no dpctl package on PyPI with enabled python 3.14 support
- cupy
- sphinx
- sphinx_rtd_theme
- furo
- pip:
- -r base_build_docs.txt
4 changes: 3 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,10 @@ coverage = [
docs = [
"Cython",
"cupy",
"furo",
"sphinx",
"sphinx_rtd_theme",
"sphinx-copybutton",
"sphinx-design",
"pyenchant",
"sphinxcontrib-googleanalytics",
"sphinxcontrib-spelling"
Expand Down
Loading