') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); [Python][Docs] Enable building documentation with pyarrow nightly builds · Issue #32383 · apache/arrow · GitHub
Skip to content

[Python][Docs] Enable building documentation with pyarrow nightly builds #32383

Description

@asfimport

The instructions for building documentation describes needing pyarrow to successfully build the docs. It also highlights that certain optional pyarrow features must be enabled to successfully build:

Notethatbuildingthedocumentationmayfailifyourbuildofpyarrowisnotsufficientlycomprehensive. PortionsofthePythonAPIdocumentationwillalsonotbuildwithoutCUDAsupporthavingbeenbuilt. 

"Sufficiently comprehensive" is relatively ambiguous, leaving users to repeat a sequence of steps to identify and resolve required elements:

  • Build C++

  • Build Python

  • Attempt to build docs

  • Evaluate missing features based on error messages

    This adds significant overhead to simply building docs, limiting accessibility for less experienced users to offer docs improvements.

    Rather than attempt to follow the steps above, I attempted to use a nightly pyarrow build to satisfy docs build requirements. This did not work, though, because nightly builds are not built with the options needed to build docs:
    {code:java}
    (base) todd@pop-os:~/arrow$ pushd docs
    make html
    popd
    ~/arrow/docs ~/arrow
    sphinx-build -b html -d _build/doctrees -j8 source _build/html
    Running Sphinx v5.0.2
    WARNING: Invalid configuration value found: 'language = None'. Update your configuration to a valid langauge code. Falling back to 'en' (English).
    making output directory... done
    [autosummary] generating autosummary for: c_glib/index.rst, cpp/api.rst, cpp/api/array.rst, cpp/api/async.rst, cpp/api/builder.rst, cpp/api/c_abi.rst, cpp/api/compute.rst, cpp/api/cuda.rst, cpp/api/dataset.rst, cpp/api/datatype.rst, ..., python/json.rst, python/memory.rst, python/numpy.rst, python/orc.rst, python/pandas.rst, python/parquet.rst, python/plasma.rst, python/timestamps.rst, r/index.rst, status.rst
    WARNING: [autosummary] failed to import pyarrow.compute.CumulativeSumOptions.
    Possible hints:

  • ModuleNotFoundError: No module named 'pyarrow.compute.CumulativeSumOptions'; 'pyarrow.compute' is not a package

  • AttributeError: module 'pyarrow.compute' has no attribute 'CumulativeSumOptions'

  • ImportError: 
    WARNING: [autosummary] failed to import pyarrow.compute.cumulative_sum.
    Possible hints:

  • ModuleNotFoundError: No module named 'pyarrow.compute.cumulative_sum'; 'pyarrow.compute' is not a package

  • ImportError: 

  • AttributeError: module 'pyarrow.compute' has no attribute 'cumulative_sum'
    WARNING: [autosummary] failed to import pyarrow.compute.cumulative_sum_checked.
    Possible hints:

  • ImportError: 

  • AttributeError: module 'pyarrow.compute' has no attribute 'cumulative_sum_checked'

  • ModuleNotFoundError: No module named 'pyarrow.compute.cumulative_sum_checked'; 'pyarrow.compute' is not a package
    WARNING: [autosummary] failed to import pyarrow.dataset.WrittenFile.
    Possible hints:

  • ModuleNotFoundError: No module named 'pyarrow.dataset.WrittenFile'; 'pyarrow.dataset' is not a package

  • ImportError: 

  • AttributeError: module 'pyarrow.dataset' has no attribute 'WrittenFile'Extension error (sphinx.ext.autosummary):
    Handler <function process_generate_options at 0x7f6f49ebe820> for event 'builder-inited' threw an exception (exception: no module named pyarrow.parquet.encryption)
    make: *** [Makefile:81: html] Error 2
    ~/arrow
    {code}
    Nightly builds should be made sufficient to build documentation.

Reporter: Todd Farmer / @toddfarmer

Related issues:

Note: This issue was originally created as ARROW-17076. Please see the migration documentation for further details.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions