From 576e8308c269154644110fb04a2ccf9c2c6c105b Mon Sep 17 00:00:00 2001 From: Alenka Frim Date: Wed, 27 Sep 2023 16:23:26 +0200 Subject: [PATCH] GH-36590: [Docs] Support Pydata Sphinx Theme 0.14.0 (#36591) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Preview: http://crossbow.voltrondata.com/pr_docs/36591/ ### Rationale for this change The Pydata Sphinx Theme that we use for our documentation has been pinned due to bigger changes in the theme layout. It needs to be unpinned and our layout needs to be updated. ### What changes are included in this PR? Update of the Pydata Sphinx Theme and changes to our layout/structure: - dark/light mode - top menu bar - search button in the top right navigation bar - drop down from the theme layout in the top right navigation bar - version warnings bar from the theme layout - main landing page and the landing page for the dev docs ⚠️ Needs an update of the [versions.json](https://github.com/apache/arrow-site/blob/AlenkaF-patch-1/docs/_static/versions.json) ### Are these changes tested? Yes, locally. Will also add docs preview via GitHub actions. ### Are there any user-facing changes? No. * Closes: #32451 * Closes: #36590 Lead-authored-by: AlenkaF Co-authored-by: Sutou Kouhei Signed-off-by: Joris Van den Bossche --- ci/conda_env_sphinx.txt | 2 +- dev/release/01-prepare-test.rb | 3 +- dev/release/post-11-bump-versions-test.rb | 3 +- dev/release/utils-update-docs-versions.py | 10 +- docs/requirements.txt | 3 +- docs/source/_static/arrow-dark.png | Bin 0 -> 91541 bytes docs/source/_static/theme_overrides.css | 85 +------- docs/source/_static/versions.json | 47 +++-- docs/source/_static/versionwarning.js | 2 + docs/source/_templates/docs-sidebar.html | 25 --- docs/source/_templates/layout.html | 10 - docs/source/_templates/version-switcher.html | 60 ------ docs/source/c_glib/index.rst | 2 + docs/source/conf.py | 37 +++- docs/source/cpp/index.rst | 55 +++-- .../continuous_integration/index.rst | 1 + .../continuous_integration/overview.rst | 2 +- docs/source/developers/contributing.rst | 190 ----------------- .../developers/images/book-open-solid.svg | 2 +- docs/source/developers/images/bug-solid.svg | 2 +- docs/source/developers/images/code-solid.svg | 2 +- docs/source/developers/images/users-solid.svg | 2 +- docs/source/developers/index.rst | 198 +++++++++++++++++- docs/source/developers/overview.rst | 6 +- docs/source/developers/release.rst | 2 + docs/source/format/index.rst | 7 +- docs/source/index.rst | 115 ++++++---- docs/source/java/index.rst | 3 + docs/source/js/index.rst | 2 + docs/source/python/index.rst | 8 +- docs/source/r/index.rst | 2 + 31 files changed, 416 insertions(+), 472 deletions(-) create mode 100644 docs/source/_static/arrow-dark.png delete mode 100644 docs/source/_templates/docs-sidebar.html delete mode 100644 docs/source/_templates/version-switcher.html delete mode 100644 docs/source/developers/contributing.rst diff --git a/ci/conda_env_sphinx.txt b/ci/conda_env_sphinx.txt index bd08937ae81be..af1bfe9b780f4 100644 --- a/ci/conda_env_sphinx.txt +++ b/ci/conda_env_sphinx.txt @@ -20,7 +20,7 @@ breathe doxygen ipython numpydoc -pydata-sphinx-theme==0.8 +pydata-sphinx-theme sphinx-autobuild sphinx-design sphinx-copybutton diff --git a/dev/release/01-prepare-test.rb b/dev/release/01-prepare-test.rb index 1062e8b06c090..54437e9da60ce 100644 --- a/dev/release/01-prepare-test.rb +++ b/dev/release/01-prepare-test.rb @@ -170,7 +170,8 @@ def test_version_pre_tag "+ \"name\": \"#{@release_compatible_version} (stable)\",", "+ {", "+ \"name\": \"#{@previous_compatible_version}\",", - "+ \"version\": \"#{@previous_compatible_version}/\"", + "+ \"version\": \"#{@previous_compatible_version}/\",", + "+ \"url\": \"https://arrow.apache.org/docs/#{@previous_compatible_version}/\"", "+ },", ], ], diff --git a/dev/release/post-11-bump-versions-test.rb b/dev/release/post-11-bump-versions-test.rb index 0ef4646236740..8253472ccc5b9 100644 --- a/dev/release/post-11-bump-versions-test.rb +++ b/dev/release/post-11-bump-versions-test.rb @@ -148,7 +148,8 @@ def test_version_post_tag "+ \"name\": \"#{@release_compatible_version} (stable)\",", "+ {", "+ \"name\": \"#{@previous_compatible_version}\",", - "+ \"version\": \"#{@previous_compatible_version}/\"", + "+ \"version\": \"#{@previous_compatible_version}/\",", + "+ \"url\": \"https://arrow.apache.org/docs/#{@previous_compatible_version}/\"", "+ },", ], ], diff --git a/dev/release/utils-update-docs-versions.py b/dev/release/utils-update-docs-versions.py index 6e0137b7c84df..7ca4059214db5 100644 --- a/dev/release/utils-update-docs-versions.py +++ b/dev/release/utils-update-docs-versions.py @@ -50,11 +50,15 @@ # Create new versions new_versions = [ {"name": f"{dev_compatible_version} (dev)", - "version": "dev/"}, + "version": "dev/", + "url": "https://arrow.apache.org/docs/dev/"}, {"name": f"{stable_compatible_version} (stable)", - "version": ""}, + "version": "", + "url": "https://arrow.apache.org/docs/", + "preferred": True}, {"name": previous_compatible_version, - "version": f"{previous_compatible_version}/"}, + "version": f"{previous_compatible_version}/", + "url": f"https://arrow.apache.org/docs/{previous_compatible_version}/"}, *old_versions[2:], ] with open(main_versions_path, 'w') as json_file: diff --git a/docs/requirements.txt b/docs/requirements.txt index a4e5f7197b553..37a50d51dd54c 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -5,10 +5,9 @@ breathe ipython numpydoc -pydata-sphinx-theme==0.8 +pydata-sphinx-theme sphinx-autobuild sphinx-design sphinx-copybutton -sphinxcontrib-jquery sphinx==6.2 pandas diff --git a/docs/source/_static/arrow-dark.png b/docs/source/_static/arrow-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..618204a2370a56120e6809228498cac5d98ca54c GIT binary patch literal 91541 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/theme_overrides.css b/docs/source/_static/theme_overrides.css index e64d40f1116e5..eeba0ef4cce6e 100644 --- a/docs/source/_static/theme_overrides.css +++ b/docs/source/_static/theme_overrides.css @@ -21,43 +21,15 @@ /* Customizing with theme CSS variables */ :root { - --pst-color-active-navigation: 215, 70, 51; - --pst-color-link-hover: 215, 70, 51; - --pst-color-headerlink: 215, 70, 51; - /* Use normal text color (like h3, ..) instead of primary color */ - --pst-color-h1: var(--color-text-base); - --pst-color-h2: var(--color-text-base); - /* Use softer blue from bootstrap's default info color */ - --pst-color-info: 23, 162, 184; - --pst-header-height: 0px; -} - -code { - color: rgb(215, 70, 51); -} - -.footer { - text-align: center; -} - -/* Ensure the logo is properly displayed */ - -.navbar-brand { - height: auto; - width: auto; -} - -a.navbar-brand img { - height: auto; - width: auto; - max-height: 15vh; - max-width: 100%; + /* Change header hight to make the logo a bit larger */ + --pst-header-height: 6rem; + /* Make headings more bold */ + --pst-font-weight-heading: 600; } /* Contibuting landing page overview cards */ .contrib-card { - background: #fff; border-radius: 0; padding: 30px 10px 20px 10px; margin: 10px 0px; @@ -70,12 +42,12 @@ a.navbar-brand img { .contrib-card .sd-card-img-top { margin: 2px; height: 75px; + background: none !important; } .contrib-card .sd-card-title { - /* color: rgb(var(--pst-color-h1)) !important; */ + color: var(--pst-color-primary); font-size: var(--pst-font-size-h3); - /* font-weight: bold; */ padding: 1rem 0rem 0.5rem 0rem; } @@ -112,48 +84,3 @@ dl.cpp.enumerator { p.breathe-sectiondef-title { margin-top: 1rem; } - -/* Limit the max height of the sidebar navigation section. Because in our -custimized template, there is more content above the navigation, i.e. -larger logo: if we don't decrease the max-height, it will overlap with -the footer. -Details: min(15vh, 110px) for the logo size, 8rem for search box etc*/ - -@media (min-width:720px) { - @supports (position:-webkit-sticky) or (position:sticky) { - .bd-links { - max-height: calc(100vh - min(15vh, 110px) - 8rem) - } - } -} - -/* Styling to get the version dropdown and search box side-by-side on wide screens */ - -#version-search-wrapper { - width: inherit; - display: flex; - flex-wrap: wrap; - justify-content: left; - align-items: center; -} - -#version-button { - padding-left: 0.5rem; - padding-right: 1rem; -} - -#search-box { - flex: 1 0 12em; -} - -/* Fix table text wrapping in RTD theme, - * see https://rackerlabs.github.io/docs-rackspace/tools/rtd-tables.html - */ - -@media screen { - table.docutils td { - /* !important prevents the common CSS stylesheets from overriding - this as on RTD they are loaded after this stylesheet */ - white-space: normal !important; - } -} diff --git a/docs/source/_static/versions.json b/docs/source/_static/versions.json index f91b0a17e7774..8d9c5878c8213 100644 --- a/docs/source/_static/versions.json +++ b/docs/source/_static/versions.json @@ -1,62 +1,73 @@ [ { "name": "14.0 (dev)", - "version": "dev/" + "version": "dev/", + "url": "https://arrow.apache.org/docs/dev/" }, { "name": "13.0 (stable)", - "version": "" + "version": "", + "url": "https://arrow.apache.org/docs/", + "preferred": true }, { "name": "12.0", - "version": "12.0/" - }, - { - "name": "12.0", - "version": "12.0/" + "version": "12.0/", + "url": "https://arrow.apache.org/docs/12.0/" }, { "name": "11.0", - "version": "11.0/" + "version": "11.0/", + "url": "https://arrow.apache.org/docs/11.0/" }, { "name": "10.0", - "version": "10.0/" + "version": "10.0/", + "url": "https://arrow.apache.org/docs/10.0/" }, { "name": "9.0", - "version": "9.0/" + "version": "9.0/", + "url": "https://arrow.apache.org/docs/9.0/" }, { "name": "8.0", - "version": "8.0/" + "version": "8.0/", + "url": "https://arrow.apache.org/docs/8.0/" }, { "name": "7.0", - "version": "7.0/" + "version": "7.0/", + "url": "https://arrow.apache.org/docs/7.0/" }, { "name": "6.0", - "version": "6.0/" + "version": "6.0/", + "url": "https://arrow.apache.org/docs/6.0/" }, { "name": "5.0", - "version": "5.0/" + "version": "5.0/", + "url": "https://arrow.apache.org/docs/5.0/" }, { "name": "4.0", - "version": "4.0/" + "version": "4.0/", + "url": "https://arrow.apache.org/docs/4.0/" }, { "name": "3.0", - "version": "3.0/" + "version": "3.0/", + "url": "https://arrow.apache.org/docs/3.0/" }, { "name": "2.0", - "version": "2.0/" + "version": "2.0/", + "url": "https://arrow.apache.org/docs/2.0/" }, { "name": "1.0", - "version": "1.0/" + "version": "1.0/", + "url": "https://arrow.apache.org/docs/dev/" } ] diff --git a/docs/source/_static/versionwarning.js b/docs/source/_static/versionwarning.js index 601b93b75ddd8..e53c160ed98f7 100644 --- a/docs/source/_static/versionwarning.js +++ b/docs/source/_static/versionwarning.js @@ -17,6 +17,8 @@ (function() { // adapted 2022-11 from https://mne.tools/versionwarning.js + // Not used anymore for versions 14.0.0 and higher + // Kept for older docs versions (13.0.0 and lower) if (location.hostname == 'arrow.apache.org') { $.getJSON("https://arrow.apache.org/docs/_static/versions.json", function(data){ var latestStable = data[1].name.replace(" (stable)",""); diff --git a/docs/source/_templates/docs-sidebar.html b/docs/source/_templates/docs-sidebar.html deleted file mode 100644 index 26d42a82f1d5c..0000000000000 --- a/docs/source/_templates/docs-sidebar.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -
- -{% include "version-switcher.html" %} - - - -
- - diff --git a/docs/source/_templates/layout.html b/docs/source/_templates/layout.html index ca39e8e5a8fae..956e0142c5062 100644 --- a/docs/source/_templates/layout.html +++ b/docs/source/_templates/layout.html @@ -22,13 +22,3 @@ {% endblock %} - -{# Silence the navbar #} -{% block docs_navbar %} -{% endblock %} - -{# Add version warnings #} -{% block footer %} - {{ super() }} - -{% endblock %} diff --git a/docs/source/_templates/version-switcher.html b/docs/source/_templates/version-switcher.html deleted file mode 100644 index 24a8c15ac0102..0000000000000 --- a/docs/source/_templates/version-switcher.html +++ /dev/null @@ -1,60 +0,0 @@ - - - diff --git a/docs/source/c_glib/index.rst b/docs/source/c_glib/index.rst index 56db23f2a2040..b10524eb2e8a5 100644 --- a/docs/source/c_glib/index.rst +++ b/docs/source/c_glib/index.rst @@ -15,6 +15,8 @@ .. specific language governing permissions and limitations .. under the License. +.. _c-glib: + C/GLib docs =========== diff --git a/docs/source/conf.py b/docs/source/conf.py index 23b7070c4a84e..e9e8969f55254 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -115,7 +115,6 @@ 'IPython.sphinxext.ipython_console_highlighting', 'IPython.sphinxext.ipython_directive', 'numpydoc', - "sphinxcontrib.jquery", 'sphinx_design', 'sphinx_copybutton', 'sphinx.ext.autodoc', @@ -288,16 +287,37 @@ # further. For a list of options available for each theme, see the # documentation. # + html_theme_options = { "show_toc_level": 2, "use_edit_page_button": True, + "logo": { + "image_light": "_static/arrow.png", + "image_dark": "_static/arrow-dark.png", + }, + "header_links_before_dropdown": 2, + "header_dropdown_text": "Language implementations", + "navbar_end": ["version-switcher", "theme-switcher", "navbar-icon-links"], + "icon_links": [ + { + "name": "GitHub", + "url": "https://github.com/apache/arrow", + "icon": "fa-brands fa-square-github", + }, + { + "name": "Twitter", + "url": "https://twitter.com/ApacheArrow", + "icon": "fa-brands fa-square-twitter", + }, + ], + "show_version_warning_banner": True, + "switcher": { + "json_url": "/docs/_static/versions.json", + "version_match": version, + }, } html_context = { - "switcher_json_url": "/docs/_static/versions.json", - "switcher_template_url": "https://arrow.apache.org/docs/{version}", - # for local testing - # "switcher_template_url": "http://0.0.0.0:8000/docs/{version}", "github_user": "apache", "github_repo": "arrow", "github_version": "main", @@ -319,7 +339,7 @@ # The name of an image file (relative to this directory) to place at the top # of the sidebar. # -html_logo = "_static/arrow.png" +# html_logo = "_static/arrow.png" # The name of an image file (relative to this directory) to use as a favicon of # the docs. This file should be a Windows icon file (.ico) being 16x16 or @@ -354,10 +374,9 @@ # Custom sidebar templates, maps document names to template names. # -html_sidebars = { +# html_sidebars = { # '**': ['sidebar-logo.html', 'sidebar-search-bs.html', 'sidebar-nav-bs.html'], - '**': ['docs-sidebar.html'], -} +# } # The base URL which points to the root of the HTML documentation, # used for canonical url diff --git a/docs/source/cpp/index.rst b/docs/source/cpp/index.rst index e06453e202979..6d4d4aaa8148c 100644 --- a/docs/source/cpp/index.rst +++ b/docs/source/cpp/index.rst @@ -15,6 +15,8 @@ .. specific language governing permissions and limitations .. under the License. +.. _cpp: + C++ Implementation ================== @@ -25,9 +27,9 @@ Welcome to the Apache Arrow C++ implementation documentation! :padding: 2 2 0 0 :class-container: sd-text-center - .. grid-item-card:: Basic understanding + .. grid-item-card:: Getting started :class-card: contrib-card - :shadow: md + :shadow: none Start here to gain a basic understanding of Arrow with an installation and linking guide, documentation of @@ -37,14 +39,14 @@ Welcome to the Apache Arrow C++ implementation documentation! .. button-link:: getting_started.html :click-parent: - :color: secondary + :color: primary :expand: - Getting started + To Getting started .. grid-item-card:: User Guide :class-card: contrib-card - :shadow: md + :shadow: none Explore more specific topics and underlying concepts of Arrow C++ @@ -53,19 +55,19 @@ Welcome to the Apache Arrow C++ implementation documentation! .. button-link:: user_guide.html :click-parent: - :color: secondary + :color: primary :expand: - User Guide + To the User Guide .. grid:: 2 :gutter: 4 :padding: 2 2 0 0 :class-container: sd-text-center - .. grid-item-card:: Examples of use + .. grid-item-card:: Examples :class-card: contrib-card - :shadow: md + :shadow: none Find the description and location of the examples using Arrow C++ library @@ -74,14 +76,14 @@ Welcome to the Apache Arrow C++ implementation documentation! .. button-link:: examples/index.html :click-parent: - :color: secondary + :color: primary :expand: - Examples + To the Examples - .. grid-item-card:: Reference documentation + .. grid-item-card:: API Reference :class-card: contrib-card - :shadow: md + :shadow: none Explore Arrow’s API reference documentation @@ -89,10 +91,32 @@ Welcome to the Apache Arrow C++ implementation documentation! .. button-link:: api.html :click-parent: - :color: secondary + :color: primary + :expand: + + To the API Reference + +.. grid:: 1 + :gutter: 4 + :padding: 2 2 0 0 + :class-container: sd-text-center + + .. grid-item-card:: Cookbook + :class-card: contrib-card + :shadow: none + + Collection of recipes which demonstrate how to + solve many common tasks that users might need + to perform when working with arrow data + + +++ + + .. button-link:: https://arrow.apache.org/cookbook/cpp/ + :click-parent: + :color: primary :expand: - API Reference + To the Cookbook .. toctree:: :maxdepth: 2 @@ -102,3 +126,4 @@ Welcome to the Apache Arrow C++ implementation documentation! user_guide Examples api + C++ cookbook diff --git a/docs/source/developers/continuous_integration/index.rst b/docs/source/developers/continuous_integration/index.rst index 6e8e26981c549..f988b5ab69d50 100644 --- a/docs/source/developers/continuous_integration/index.rst +++ b/docs/source/developers/continuous_integration/index.rst @@ -15,6 +15,7 @@ .. specific language governing permissions and limitations .. under the License. +.. _continuous_integration: ********************** Continuous Integration diff --git a/docs/source/developers/continuous_integration/overview.rst b/docs/source/developers/continuous_integration/overview.rst index 1d82e845a3360..3e155bf6001e9 100644 --- a/docs/source/developers/continuous_integration/overview.rst +++ b/docs/source/developers/continuous_integration/overview.rst @@ -20,7 +20,7 @@ Continuous Integration ====================== -Continuous Integration for Arrow is fairly complex as it needs to run across different combinations of package managers, compilers, versions of multiple sofware libraries, operating systems, and other potential sources of variation. In this article, we will give an overview of its main components and the relevant files and directories. +Continuous Integration for Arrow is fairly complex as it needs to run across different combinations of package managers, compilers, versions of multiple software libraries, operating systems, and other potential sources of variation. In this article, we will give an overview of its main components and the relevant files and directories. Some files central to Arrow CI are: diff --git a/docs/source/developers/contributing.rst b/docs/source/developers/contributing.rst deleted file mode 100644 index 6dc2a4e0147d6..0000000000000 --- a/docs/source/developers/contributing.rst +++ /dev/null @@ -1,190 +0,0 @@ -.. Licensed to the Apache Software Foundation (ASF) under one -.. or more contributor license agreements. See the NOTICE file -.. distributed with this work for additional information -.. regarding copyright ownership. The ASF licenses this file -.. to you under the Apache License, Version 2.0 (the -.. "License"); you may not use this file except in compliance -.. with the License. You may obtain a copy of the License at - -.. http://www.apache.org/licenses/LICENSE-2.0 - -.. Unless required by applicable law or agreed to in writing, -.. software distributed under the License is distributed on an -.. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -.. KIND, either express or implied. See the License for the -.. specific language governing permissions and limitations -.. under the License. - -.. highlight:: console - -.. _contributing: - -**************************** -Contributing to Apache Arrow -**************************** - -**Thanks for your interest in the Apache Arrow project.** - -Arrow is a large project and may seem overwhelming when you're -first getting involved. Contributing code is great, but that's -probably not the first place to start. There are lots of ways to -make valuable contributions to the project and community. - -This page provides some orientation for how to get involved. It also offers -some recommendations on how to get the best results when engaging with the -community. - -Code of Conduct -=============== - -All participation in the Apache Arrow project is governed by the ASF's -`Code of Conduct `_. - -.. grid:: 2 - :gutter: 4 - :padding: 2 2 0 0 - :class-container: sd-text-center - - .. grid-item-card:: Community - :img-top: ./images/users-solid.svg - :class-card: contrib-card - :shadow: md - - A good first step to getting involved in the Arrow project is to join - the mailing lists and participate in discussions where you can. - - +++ - - .. button-link:: https://arrow.apache.org/community/ - :click-parent: - :color: secondary - :expand: - - Apache Arrow Community - - .. grid-item-card:: Bug reports - :img-top: ./images/bug-solid.svg - :class-card: contrib-card - :shadow: md - - Alerting us to unexpected behavior and missing features, even - if you can't solve the problems yourself, help us understand - and prioritize work to improve the libraries. - - +++ - - .. button-ref:: bug-reports - :ref-type: ref - :click-parent: - :color: secondary - :expand: - - Bugs and Features - -.. dropdown:: Communicating through the mailing lists - :animate: fade-in-slide-down - :class-title: sd-fs-5 - :class-container: sd-shadow-md - - Projects in The Apache Software Foundation ("the ASF") use public, archived - mailing lists to create a public record of each project's development - activities and decision-making process. - - While lacking the immediacy of chat or other forms of communication, - the mailing lists give participants the opportunity to slow down and be - thoughtful in their responses, and they help developers who are spread across - many timezones to participate more equally. - - Read more on the `Apache Arrow Community `_ - page. - -.. dropdown:: Improve documentation - :animate: fade-in-slide-down - :class-title: sd-fs-5 - :class-container: sd-shadow-md - - A great way to contribute to the project is to improve documentation. If you - found some docs to be incomplete or inaccurate, share your hard-earned knowledge - with the rest of the community. - - Documentation improvements are also a great way to gain some experience with - our submission and review process, discussed below, without requiring a lot - of local development environment setup. In fact, many documentation-only changes - can be made directly in the GitHub web interface by clicking the "edit" button. - This will handle making a fork and a pull request for you. - - * :ref:`documentation` - * :ref:`building-docs` - -.. grid:: 2 - :gutter: 4 - :padding: 2 2 0 0 - :class-container: sd-text-center - - .. grid-item-card:: New Contributors - :img-top: ./images/book-open-solid.svg - :class-card: contrib-card - :shadow: md - - First time contributing? - - The New Contributor's Guide provides necessary information for - contributing to the Apache Arrow project. - - +++ - - .. button-ref:: guide-introduction - :ref-type: ref - :click-parent: - :color: secondary - :expand: - - New Contributor's guide - - .. grid-item-card:: Overview - :img-top: ./images/code-solid.svg - :class-card: contrib-card - :shadow: md - - A short overview of the contributing process we follow - and some additional information you might need if you are not - new to the contributing process in general. - +++ - - .. button-ref:: contrib-overview - :ref-type: ref - :click-parent: - :color: secondary - :expand: - - Contributing overview - -Language specific -================= - -Connection to the specific language development pages: - -.. tab-set:: - - .. tab-item:: C++ - - * :ref:`cpp-development` - * :ref:`C++ Development Guidelines ` - * :ref:`building-arrow-cpp` - - .. tab-item:: Java - - * :doc:`java/index` - - .. tab-item:: Python - - * :ref:`python-development` - - .. tab-item:: R - - * `Arrow R Package: Developer environment setup `_ - * `Arrow R Package: Common developer workflow tasks `_ - - .. tab-item:: Ruby - - * `Red Arrow - Apache Arrow Ruby `_ diff --git a/docs/source/developers/images/book-open-solid.svg b/docs/source/developers/images/book-open-solid.svg index cbc8ed27256ca..9586e249be060 100644 --- a/docs/source/developers/images/book-open-solid.svg +++ b/docs/source/developers/images/book-open-solid.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/source/developers/images/bug-solid.svg b/docs/source/developers/images/bug-solid.svg index f842cb240544f..49cc04a1f0f6e 100644 --- a/docs/source/developers/images/bug-solid.svg +++ b/docs/source/developers/images/bug-solid.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/source/developers/images/code-solid.svg b/docs/source/developers/images/code-solid.svg index 725f767148b2c..4bbd567528ef8 100644 --- a/docs/source/developers/images/code-solid.svg +++ b/docs/source/developers/images/code-solid.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/source/developers/images/users-solid.svg b/docs/source/developers/images/users-solid.svg index a04d7fe2fd4a0..4bdf638a70f89 100644 --- a/docs/source/developers/images/users-solid.svg +++ b/docs/source/developers/images/users-solid.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/source/developers/index.rst b/docs/source/developers/index.rst index f6a15a6c5452e..c2f10c9e95c47 100644 --- a/docs/source/developers/index.rst +++ b/docs/source/developers/index.rst @@ -15,12 +15,206 @@ .. specific language governing permissions and limitations .. under the License. +.. highlight:: console + +.. _developers: + +Development +=========== + +Connection to the specific language development pages: + +.. tab-set:: + + .. tab-item:: C++ + + * :ref:`cpp-development` + * :ref:`C++ Development Guidelines ` + * :ref:`building-arrow-cpp` + + .. tab-item:: Java + + * :doc:`java/index` + + .. tab-item:: Python + + * :ref:`python-development` + + .. tab-item:: R + + * `Arrow R Package: Developer environment setup `_ + * `Arrow R Package: Common developer workflow tasks `_ + + .. tab-item:: Ruby + + * `Red Arrow - Apache Arrow Ruby `_ + +.. _contributing: + +Contributing to Apache Arrow +============================ + +**Thanks for your interest in the Apache Arrow project.** + +Arrow is a large project and may seem overwhelming when you're +first getting involved. Contributing code is great, but that's +probably not the first place to start. There are lots of ways to +make valuable contributions to the project and community. + +This page provides some orientation for how to get involved. It also offers +some recommendations on how to get the best results when engaging with the +community. + +Code of Conduct +--------------- + +All participation in the Apache Arrow project is governed by the ASF's +`Code of Conduct `_. + +.. grid:: 2 + :gutter: 4 + :padding: 2 2 0 0 + :class-container: sd-text-center + + .. grid-item-card:: Apache Arrow Community + :img-top: ./images/users-solid.svg + :class-card: contrib-card + :shadow: none + + A good first step to getting involved in the Arrow project is to join + the mailing lists and participate in discussions where you can. + + +++ + + .. button-link:: https://arrow.apache.org/community/ + :click-parent: + :color: primary + :expand: + + To Apache Arrow Community + + .. grid-item-card:: Bug reports and feature requests + :img-top: ./images/bug-solid.svg + :class-card: contrib-card + :shadow: none + + Alerting us to unexpected behavior and missing features, even + if you can't solve the problems yourself, help us understand + and prioritize work to improve the libraries. + + +++ + + .. button-ref:: bug-reports + :ref-type: ref + :click-parent: + :color: primary + :expand: + + To Bug reports and feature requests + +.. dropdown:: Communicating through the mailing lists + :animate: fade-in-slide-down + :class-title: sd-fs-5 + :class-container: sd-shadow-none + + Projects in The Apache Software Foundation ("the ASF") use public, archived + mailing lists to create a public record of each project's development + activities and decision-making process. + + While lacking the immediacy of chat or other forms of communication, + the mailing lists give participants the opportunity to slow down and be + thoughtful in their responses, and they help developers who are spread across + many timezones to participate more equally. + + Read more on the `Apache Arrow Community `_ + page. + +.. dropdown:: Improve documentation + :animate: fade-in-slide-down + :class-title: sd-fs-5 + + A great way to contribute to the project is to improve documentation. If you + found some docs to be incomplete or inaccurate, share your hard-earned knowledge + with the rest of the community. + + Documentation improvements are also a great way to gain some experience with + our submission and review process, discussed below, without requiring a lot + of local development environment setup. In fact, many documentation-only changes + can be made directly in the GitHub web interface by clicking the "edit" button. + This will handle making a fork and a pull request for you. + + * :ref:`documentation` + * :ref:`building-docs` + +.. grid:: 2 + :gutter: 4 + :padding: 2 2 0 0 + :class-container: sd-text-center + + .. grid-item-card:: New Contributor's guide + :img-top: ./images/book-open-solid.svg + :class-card: contrib-card + + First time contributing? + + The New Contributor's Guide provides necessary information for + contributing to the Apache Arrow project. + + +++ + + .. button-ref:: guide-introduction + :ref-type: ref + :click-parent: + :color: primary + :expand: + + To the New Contributor's guide + + .. grid-item-card:: Contributing Overview + :img-top: ./images/code-solid.svg + :class-card: contrib-card + + A short overview of the contributing process we follow + and some additional information you might need if you are not + new to the contributing process in general. + +++ + + .. button-ref:: contrib-overview + :ref-type: ref + :click-parent: + :color: primary + :expand: + + To Contributing overview + +.. dropdown:: Continuous Integration + :animate: fade-in-slide-down + :class-title: sd-fs-5 + :class-container: sd-shadow-none + + Continuous Integration needs to run across different combinations of package managers, compilers, versions of multiple + software libraries, operating systems, and other potential sources of variation. + + Read more on the :ref:`continuous_integration` page. + +.. dropdown:: Benchmarks + :animate: fade-in-slide-down + :class-title: sd-fs-5 + :class-container: sd-shadow-none + + How to use the benchmark suite can be found on the :ref:`benchmarks` page. + +.. dropdown:: Release Guide + :animate: fade-in-slide-down + :class-title: sd-fs-5 + :class-container: sd-shadow-none + + To learn about the detailed information on the steps followed to perform a release, see :ref:`release`. + .. toctree:: :maxdepth: 2 - :caption: Development :hidden: - contributing bug_reports guide/index overview diff --git a/docs/source/developers/overview.rst b/docs/source/developers/overview.rst index 272f3dbd98074..c7bc4273313bc 100644 --- a/docs/source/developers/overview.rst +++ b/docs/source/developers/overview.rst @@ -45,7 +45,7 @@ checklist for using ``git``: .. dropdown:: How to squash local commits? :animate: fade-in-slide-down - :class-container: sd-shadow-md + :class-container: sd-shadow-none Abort the rebase with: @@ -78,7 +78,7 @@ checklist for using ``git``: .. dropdown:: Setting rebase to be default :animate: fade-in-slide-down - :class-container: sd-shadow-md + :class-container: sd-shadow-none If you set the following in your repo's ``.git/config``, the ``--rebase`` option can be omitted from the ``git pull`` command, as it is implied by default. @@ -136,7 +136,7 @@ will merge the pull request. This is done with a .. dropdown:: Details on squash merge :animate: fade-in-slide-down - :class-container: sd-shadow-md + :class-container: sd-shadow-none A pull request is merged with a squash merge so that all of your commits will be registered as a single commit to the main branch; this simplifies the diff --git a/docs/source/developers/release.rst b/docs/source/developers/release.rst index 066400b33ffb5..6924c2d714e8b 100644 --- a/docs/source/developers/release.rst +++ b/docs/source/developers/release.rst @@ -15,6 +15,8 @@ .. specific language governing permissions and limitations .. under the License. +.. _release: + ======================== Release Management Guide ======================== diff --git a/docs/source/format/index.rst b/docs/source/format/index.rst index 1771b36d76128..ae2baf128b472 100644 --- a/docs/source/format/index.rst +++ b/docs/source/format/index.rst @@ -15,10 +15,13 @@ .. specific language governing permissions and limitations .. under the License. +.. _format: + +Specifications and Protocols +============================ + .. toctree:: :maxdepth: 2 - :caption: Specifications and Protocols - :hidden: Versioning Columnar diff --git a/docs/source/index.rst b/docs/source/index.rst index b348d3dab22b7..e8cdf50c5b1ec 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -15,6 +15,8 @@ .. specific language governing permissions and limitations .. under the License. +:html_theme.sidebar_secondary.remove: + Apache Arrow ============ @@ -35,11 +37,71 @@ such topics as: **To learn how to use Arrow refer to the documentation specific to your target environment.** +.. grid:: 2 + :gutter: 4 + :padding: 2 2 0 0 + :class-container: sd-text-center + + .. grid-item-card:: Specifications and Protocols + :class-card: contrib-card + :shadow: none + + Read about the Apache Arrow format + specifications and Protocols. + + +++ + + .. button-ref:: format + :ref-type: ref + :click-parent: + :color: primary + :expand: + + To the Specifications and Protocols + + .. grid-item-card:: Development + :class-card: contrib-card + :shadow: none + + Find the documentation on the topic of + contributions, reviews, building of the libraries + from source, building of the documentation, + continuous integration, benchmarks and the + release process. + + +++ + + .. button-ref:: developers + :ref-type: ref + :click-parent: + :color: primary + :expand: + + To the Development + +.. _toc.columnar: + +.. toctree:: + :maxdepth: 2 + :hidden: + + format/index + +.. _toc.development: + +.. toctree:: + :maxdepth: 2 + :hidden: + + developers/index + +Implementations +--------------- + .. _toc.usage: .. toctree:: :maxdepth: 1 - :caption: Supported Environments C/GLib C++ @@ -55,52 +117,15 @@ target environment.** Rust status +Examples +-------- + .. _toc.cookbook: .. toctree:: :maxdepth: 1 - :caption: Cookbooks - - C++ - Java - Python - R -.. _toc.columnar: - -.. toctree:: - :maxdepth: 2 - :caption: Specifications and Protocols - - format/Versioning - format/Columnar - format/CanonicalExtensions - format/Flight - format/FlightSql - format/Integration - format/CDataInterface - format/CStreamInterface - format/CDeviceDataInterface - format/ADBC - format/Other - format/Changing - format/Glossary - -.. _toc.development: - -.. toctree:: - :maxdepth: 2 - :caption: Development - - developers/contributing - developers/bug_reports - developers/guide/index - developers/overview - developers/reviewing - developers/cpp/index - developers/java/index - developers/python - developers/continuous_integration/index - developers/benchmarks - developers/documentation - developers/release + C++ cookbook + Java cookbook + Python cookbook + R cookbook diff --git a/docs/source/java/index.rst b/docs/source/java/index.rst index 9b555e297b0f9..cf93b0e897832 100644 --- a/docs/source/java/index.rst +++ b/docs/source/java/index.rst @@ -15,6 +15,8 @@ .. specific language governing permissions and limitations .. under the License. +.. _java: + Java Implementation =================== @@ -41,3 +43,4 @@ on the Arrow format and other language bindings see the :doc:`parent documentati cdata jdbc Reference (javadoc) + Java cookbook diff --git a/docs/source/js/index.rst b/docs/source/js/index.rst index 77813c1372dfe..2ab205a08b850 100644 --- a/docs/source/js/index.rst +++ b/docs/source/js/index.rst @@ -15,6 +15,8 @@ .. specific language governing permissions and limitations .. under the License. +.. _js: + JavaScript docs =============== diff --git a/docs/source/python/index.rst b/docs/source/python/index.rst index b80cbc7de594e..6a3de3d42b149 100644 --- a/docs/source/python/index.rst +++ b/docs/source/python/index.rst @@ -15,8 +15,13 @@ .. specific language governing permissions and limitations .. under the License. +.. _python: + +Python +====== + PyArrow - Apache Arrow Python bindings -====================================== +-------------------------------------- This is the documentation of the Python API of Apache Arrow. @@ -62,3 +67,4 @@ files into Arrow structures. api getting_involved benchmarks + Python cookbook diff --git a/docs/source/r/index.rst b/docs/source/r/index.rst index b799544bb6bb3..8ccbec132ad3d 100644 --- a/docs/source/r/index.rst +++ b/docs/source/r/index.rst @@ -15,6 +15,8 @@ .. specific language governing permissions and limitations .. under the License. +.. _r: + R docs ======