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

[Docs][CI] Investigate linting C++ and other docs in CI #39990

Closed
4 tasks done
amoeba opened this issue Feb 8, 2024 · 5 comments · Fixed by #40022
Closed
4 tasks done

[Docs][CI] Investigate linting C++ and other docs in CI #39990

amoeba opened this issue Feb 8, 2024 · 5 comments · Fixed by #40022

Comments

@amoeba
Copy link
Member

amoeba commented Feb 8, 2024

Describe the enhancement requested

It would be good to look into what we currently have enabled and what we could easily add for linting docs PRs. #39989 found two types of errors, both of which would be good to avoid. I think sphinx-build already offers some form of reStructuredText linting and there appear to be other tools such as https://github.com/sphinx-contrib/sphinx-lint.

  • Find a tool we can use for linting in developer and CI environments
  • Add an archery lint tasks for this
  • Integrate said tool into developer workflows (like pre-commit hooks)
  • Integrate said tool into CI

Component(s)

Continuous Integration, Documentation

@amoeba
Copy link
Member Author

amoeba commented Feb 8, 2024

take

@kou kou changed the title [Documentation][CI] Investigate linting C++ and other docs in CI [Docs][CI] Investigate linting C++ and other docs in CI Feb 8, 2024
@amoeba
Copy link
Member Author

amoeba commented Feb 8, 2024

I did a bit of research and I think sphinx-lint might work here.

I first checked whether sphinx had anything in-built and I didn't find anything. There are reStructuredText linters but at least one of those doesn't understand Sphinx directives so I think we need something Sphinx-aware here. Another option would be to implement checks using one or more shell utilities but that's probably not a good route to go down.

sphinx-lint has a number of checks that can be disabled or enabled selectively, and it uses exit codes to indicate a clean run so it would be easy to adapt into CI. The full list of checks are:

$ sphinx-lint --list
22 checkers selected:
- backtick-before-role: Search for roles preceded by a backtick.
- bad-dedent: Check for mis-alignment in indentation in code blocks.
- carriage-return: Check for carriage returns (\r) in lines.
- dangling-hyphen: Check for lines ending in a hyphen.
- directive-missing-colons: Search for directive wrongly typed as comments.
- directive-with-three-dots: Search for directives with three dots instead of two.
- horizontal-tab: Check for horizontal tabs (\t) in lines.
- hyperlink-reference-missing-backtick: Search for missing backticks in front of hyperlink references.
- missing-backtick-after-role: Search for roles missing their closing backticks.
- missing-colon-in-role: Search for missing colons in roles.
- missing-final-newline: Check that the last line of the file ends with a newline.
- missing-space-after-literal: Search for inline literals immediately followed by a character.
- missing-space-after-role: Search for roles immediately followed by a character.
- missing-space-before-default-role: Search for missing spaces before default role.
- missing-space-before-role: Search for missing spaces before roles.
- missing-space-in-hyperlink: Search for hyperlinks missing a space.
- missing-underscore-after-hyperlink: Search for hyperlinks missing underscore after their closing backtick.
- python-syntax: Search invalid syntax in Python examples.
- role-with-double-backticks: Search for roles with double backticks.
- role-without-backticks: Search roles without backticks.
- trailing-whitespace: Check for trailing whitespaces at end of lines.
- unbalanced-inline-literals-delimiters: Search for unbalanced inline literals delimiters.

And it finds quite a few errors in the

sphinx-lint output against main
$ sphinx-lint
source/conf.py:508: OMG TABS!!!1 (horizontal-tab)
source/python/json.rst:24: trailing whitespace (trailing-whitespace)
source/python/orc.rst:115: trailing whitespace (trailing-whitespace)
source/python/compute.rst:26: trailing whitespace (trailing-whitespace)
source/python/compute.rst:94: trailing whitespace (trailing-whitespace)
source/python/compute.rst:303: trailing whitespace (trailing-whitespace)
source/python/compute.rst:328: trailing whitespace (trailing-whitespace)
source/python/compute.rst:395: trailing whitespace (trailing-whitespace)
source/python/compute.rst:444: trailing whitespace (trailing-whitespace)
source/python/compute.rst:500: trailing whitespace (trailing-whitespace)
source/python/compute.rst:502: trailing whitespace (trailing-whitespace)
source/python/getstarted.rst:40: trailing whitespace (trailing-whitespace)
source/python/getstarted.rst:66: trailing whitespace (trailing-whitespace)
source/python/getstarted.rst:78: trailing whitespace (trailing-whitespace)
source/python/getstarted.rst:95: trailing whitespace (trailing-whitespace)
source/python/getstarted.rst:102: trailing whitespace (trailing-whitespace)
source/python/getstarted.rst:125: trailing whitespace (trailing-whitespace)
source/python/getstarted.rst:154: trailing whitespace (trailing-whitespace)
source/python/getstarted.rst:155: trailing whitespace (trailing-whitespace)
source/python/data.rst:243: trailing whitespace (trailing-whitespace)
source/python/data.rst:285: trailing whitespace (trailing-whitespace)
source/python/data.rst:287: trailing whitespace (trailing-whitespace)
source/python/data.rst:288: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:578: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:579: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:581: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:582: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:583: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:585: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:586: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:587: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:591: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:595: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:599: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:614: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:621: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:628: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:629: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:635: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:637: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:642: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:656: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:660: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:661: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:662: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:663: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:669: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:670: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:671: trailing whitespace (trailing-whitespace)
source/python/dataset.rst:722: trailing whitespace (trailing-whitespace)
source/python/getting_involved.rst:57: trailing whitespace (trailing-whitespace)
source/python/getting_involved.rst:76: No newline at end of file. (missing-final-newline)
source/python/dlpack.rst:93: trailing whitespace (trailing-whitespace)
source/python/timestamps.rst:54: trailing whitespace (trailing-whitespace)
source/python/timestamps.rst:55: trailing whitespace (trailing-whitespace)
source/python/timestamps.rst:65: trailing whitespace (trailing-whitespace)
source/python/timestamps.rst:66: trailing whitespace (trailing-whitespace)
source/python/timestamps.rst:80: trailing whitespace (trailing-whitespace)
source/python/timestamps.rst:132: trailing whitespace (trailing-whitespace)
source/python/timestamps.rst:144: trailing whitespace (trailing-whitespace)
source/python/timestamps.rst:161: trailing whitespace (trailing-whitespace)
source/python/timestamps.rst:162: trailing whitespace (trailing-whitespace)
source/python/timestamps.rst:163: trailing whitespace (trailing-whitespace)
source/python/timestamps.rst:182: trailing whitespace (trailing-whitespace)
source/python/timestamps.rst:184: trailing whitespace (trailing-whitespace)
source/python/timestamps.rst:192: trailing whitespace (trailing-whitespace)
source/python/filesystems.rst:236: trailing whitespace (trailing-whitespace)
source/python/filesystems.rst:317: trailing whitespace (trailing-whitespace)
source/python/ipc.rst:79: trailing whitespace (trailing-whitespace)
source/python/ipc.rst:84: trailing whitespace (trailing-whitespace)
source/python/ipc.rst:105: trailing whitespace (trailing-whitespace)
source/python/ipc.rst:129: trailing whitespace (trailing-whitespace)
source/python/ipc.rst:167: trailing whitespace (trailing-whitespace)
source/python/parquet.rst:35: trailing whitespace (trailing-whitespace)
source/python/api/compute.rst:55: trailing whitespace (trailing-whitespace)
source/python/api/compute.rst:56: trailing whitespace (trailing-whitespace)
source/python/api/compute.rst:57: trailing whitespace (trailing-whitespace)
source/python/api/compute.rst:58: trailing whitespace (trailing-whitespace)
source/python/api/substrait.rst:53: No newline at end of file. (missing-final-newline)
source/python/integration/python_r.rst:32: trailing whitespace (trailing-whitespace)
source/python/integration/python_r.rst:55: trailing whitespace (trailing-whitespace)
source/python/integration/python_r.rst:94: trailing whitespace (trailing-whitespace)
source/python/integration/python_r.rst:99: trailing whitespace (trailing-whitespace)
source/python/integration/python_r.rst:192: trailing whitespace (trailing-whitespace)
source/python/integration/python_r.rst:222: trailing whitespace (trailing-whitespace)
source/python/integration/python_r.rst:264: trailing whitespace (trailing-whitespace)
source/python/integration/python_r.rst:277: trailing whitespace (trailing-whitespace)
source/python/integration/python_r.rst:292: trailing whitespace (trailing-whitespace)
source/python/integration/python_r.rst:296: trailing whitespace (trailing-whitespace)
source/python/integration/python_r.rst:301: trailing whitespace (trailing-whitespace)
source/python/integration/python_r.rst:307: No newline at end of file. (missing-final-newline)
source/java/quickstartguide.rst:198: OMG TABS!!!1 (horizontal-tab)
source/java/quickstartguide.rst:199: OMG TABS!!!1 (horizontal-tab)
source/java/quickstartguide.rst:200: OMG TABS!!!1 (horizontal-tab)
source/java/quickstartguide.rst:201: OMG TABS!!!1 (horizontal-tab)
source/java/quickstartguide.rst:309: OMG TABS!!!1 (horizontal-tab)
source/java/quickstartguide.rst:310: OMG TABS!!!1 (horizontal-tab)
source/java/quickstartguide.rst:311: OMG TABS!!!1 (horizontal-tab)
source/java/quickstartguide.rst:312: OMG TABS!!!1 (horizontal-tab)
source/java/quickstartguide.rst:316: No newline at end of file. (missing-final-newline)
source/java/install.rst:64: trailing whitespace (trailing-whitespace)
source/java/install.rst:77: trailing whitespace (trailing-whitespace)
source/java/install.rst:78: trailing whitespace (trailing-whitespace)
source/java/install.rst:63: found an unbalanced inline literal markup. (unbalanced-inline-literals-delimiters)
source/java/jdbc.rst:98: Line ends with dangling hyphen (dangling-hyphen)
source/java/jdbc.rst:174: Line ends with dangling hyphen (dangling-hyphen)
source/java/jdbc.rst:175: Line ends with dangling hyphen (dangling-hyphen)
source/java/flight.rst:187: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:23: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:28: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:39: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:44: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:47: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:51: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:57: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:60: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:62: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:75: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:79: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:81: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:86: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:87: trailing whitespace (trailing-whitespace)
source/java/algorithm.rst:85: inline literal missing (escaped) space after literal: '``k``t' (missing-space-after-literal)
source/java/algorithm.rst:85: found an unbalanced inline literal markup. (unbalanced-inline-literals-delimiters)
source/java/algorithm.rst:85: found an unbalanced inline literal markup. (unbalanced-inline-literals-delimiters)
source/java/flight_sql_jdbc_driver.rst:172: trailing whitespace (trailing-whitespace)
source/java/flight_sql_jdbc_driver.rst:173: trailing whitespace (trailing-whitespace)
source/java/substrait.rst:103: OMG TABS!!!1 (horizontal-tab)
source/java/substrait.rst:104: OMG TABS!!!1 (horizontal-tab)
source/java/substrait.rst:105: OMG TABS!!!1 (horizontal-tab)
source/java/substrait.rst:441: OMG TABS!!!1 (horizontal-tab)
source/java/substrait.rst:442: OMG TABS!!!1 (horizontal-tab)
source/java/substrait.rst:443: OMG TABS!!!1 (horizontal-tab)
source/java/substrait.rst:444: OMG TABS!!!1 (horizontal-tab)
source/java/substrait.rst:445: OMG TABS!!!1 (horizontal-tab)
source/java/substrait.rst:446: OMG TABS!!!1 (horizontal-tab)
source/java/substrait.rst:447: OMG TABS!!!1 (horizontal-tab)
source/cpp/getting_started.rst:27: trailing whitespace (trailing-whitespace)
source/cpp/getting_started.rst:28: trailing whitespace (trailing-whitespace)
source/cpp/getting_started.rst:30: trailing whitespace (trailing-whitespace)
source/cpp/getting_started.rst:36: trailing whitespace (trailing-whitespace)
source/cpp/getting_started.rst:37: trailing whitespace (trailing-whitespace)
source/cpp/getting_started.rst:47: trailing whitespace (trailing-whitespace)
source/cpp/getting_started.rst:48: trailing whitespace (trailing-whitespace)
source/java/vector.rst:229: trailing whitespace (trailing-whitespace)
source/java/vector.rst:243: trailing whitespace (trailing-whitespace)
source/cpp/threading.rst:102: No newline at end of file. (missing-final-newline)
source/java/memory.rst:23: trailing whitespace (trailing-whitespace)
source/java/memory.rst:42: trailing whitespace (trailing-whitespace)
source/java/memory.rst:70: trailing whitespace (trailing-whitespace)
source/java/memory.rst:71: trailing whitespace (trailing-whitespace)
source/java/memory.rst:72: trailing whitespace (trailing-whitespace)
source/java/memory.rst:103: trailing whitespace (trailing-whitespace)
source/java/memory.rst:104: trailing whitespace (trailing-whitespace)
source/java/memory.rst:110: trailing whitespace (trailing-whitespace)
source/java/memory.rst:111: trailing whitespace (trailing-whitespace)
source/java/memory.rst:116: trailing whitespace (trailing-whitespace)
source/java/memory.rst:117: trailing whitespace (trailing-whitespace)
source/java/memory.rst:292: trailing whitespace (trailing-whitespace)
source/java/memory.rst:373: trailing whitespace (trailing-whitespace)
source/java/memory.rst:387: trailing whitespace (trailing-whitespace)
source/java/memory.rst:388: trailing whitespace (trailing-whitespace)
source/java/memory.rst:392: trailing whitespace (trailing-whitespace)
source/java/memory.rst:393: trailing whitespace (trailing-whitespace)
source/java/memory.rst:396: trailing whitespace (trailing-whitespace)
source/java/memory.rst:397: trailing whitespace (trailing-whitespace)
source/java/memory.rst:414: trailing whitespace (trailing-whitespace)
source/java/memory.rst:339: Line ends with dangling hyphen (dangling-hyphen)
source/java/memory.rst:343: Line ends with dangling hyphen (dangling-hyphen)
source/cpp/build_system.rst:170: OMG TABS!!!1 (horizontal-tab)
source/cpp/build_system.rst:50: trailing whitespace (trailing-whitespace)
source/cpp/gandiva.rst:32: trailing whitespace (trailing-whitespace)
source/cpp/gandiva.rst:33: trailing whitespace (trailing-whitespace)
source/cpp/gandiva.rst:45: trailing whitespace (trailing-whitespace)
source/cpp/gandiva.rst:46: trailing whitespace (trailing-whitespace)
source/cpp/gandiva.rst:48: trailing whitespace (trailing-whitespace)
source/cpp/gandiva.rst:53: trailing whitespace (trailing-whitespace)
source/cpp/gandiva.rst:54: trailing whitespace (trailing-whitespace)
source/cpp/gandiva.rst:55: trailing whitespace (trailing-whitespace)
source/cpp/gandiva.rst:56: trailing whitespace (trailing-whitespace)
source/cpp/gandiva.rst:57: trailing whitespace (trailing-whitespace)
source/cpp/gandiva.rst:58: trailing whitespace (trailing-whitespace)
source/cpp/gandiva.rst:60: trailing whitespace (trailing-whitespace)
source/cpp/gandiva.rst:66: No newline at end of file. (missing-final-newline)
source/cpp/tables.rst:84: trailing whitespace (trailing-whitespace)
source/cpp/tables.rst:86: trailing whitespace (trailing-whitespace)
source/cpp/tables.rst:90: trailing whitespace (trailing-whitespace)
source/cpp/io.rst:94: No newline at end of file. (missing-final-newline)
source/cpp/datatypes.rst:75: trailing whitespace (trailing-whitespace)
source/cpp/datatypes.rst:76: trailing whitespace (trailing-whitespace)
source/cpp/datatypes.rst:99: trailing whitespace (trailing-whitespace)
source/cpp/datatypes.rst:131: trailing whitespace (trailing-whitespace)
source/cpp/datatypes.rst:179: trailing whitespace (trailing-whitespace)
source/cpp/datatypes.rst:186: trailing whitespace (trailing-whitespace)
source/cpp/datatypes.rst:192: trailing whitespace (trailing-whitespace)
source/cpp/dataset.rst:381: trailing whitespace (trailing-whitespace)
source/cpp/dataset.rst:382: trailing whitespace (trailing-whitespace)
source/cpp/dataset.rst:384: trailing whitespace (trailing-whitespace)
source/cpp/dataset.rst:385: trailing whitespace (trailing-whitespace)
source/cpp/dataset.rst:386: trailing whitespace (trailing-whitespace)
source/cpp/dataset.rst:388: trailing whitespace (trailing-whitespace)
source/cpp/dataset.rst:389: trailing whitespace (trailing-whitespace)
source/cpp/dataset.rst:390: trailing whitespace (trailing-whitespace)
source/cpp/dataset.rst:394: trailing whitespace (trailing-whitespace)
source/cpp/dataset.rst:398: trailing whitespace (trailing-whitespace)
source/cpp/dataset.rst:402: trailing whitespace (trailing-whitespace)
source/cpp/flight.rst:353: trailing whitespace (trailing-whitespace)
source/cpp/flight.rst:356: trailing whitespace (trailing-whitespace)
source/cpp/examples/compute_and_write_example.rst:24: trailing whitespace (trailing-whitespace)
source/cpp/examples/compute_and_write_example.rst:25: trailing whitespace (trailing-whitespace)
source/cpp/examples/compute_and_write_example.rst:26: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:208: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:237: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:240: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:241: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:242: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:243: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:244: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:252: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:255: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:256: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:257: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:258: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:280: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:282: trailing whitespace (trailing-whitespace)
source/cpp/memory.rst:357: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:54: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:55: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:70: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:109: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:110: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:177: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:194: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:195: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:196: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:269: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:272: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:273: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:275: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:278: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:279: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:282: trailing whitespace (trailing-whitespace)
source/cpp/parquet.rst:562: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:114: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:149: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:152: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:155: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:158: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:161: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:164: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:167: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:170: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:173: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:176: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:179: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:182: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:185: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:187: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:190: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:193: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:196: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:199: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:203: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:206: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:211: trailing whitespace (trailing-whitespace)
source/cpp/acero/substrait.rst:215: trailing whitespace (trailing-whitespace)
source/cpp/acero/overview.rst:209: trailing whitespace (trailing-whitespace)
source/cpp/acero/overview.rst:220: trailing whitespace (trailing-whitespace)
source/cpp/acero/overview.rst:269: trailing whitespace (trailing-whitespace)
source/cpp/acero/overview.rst:270: No newline at end of file. (missing-final-newline)
source/cpp/gandiva/expr_projector_filter.rst:33: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/expr_projector_filter.rst:42: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/expr_projector_filter.rst:87: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/expr_projector_filter.rst:102: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/expr_projector_filter.rst:103: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/expr_projector_filter.rst:104: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/expr_projector_filter.rst:106: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/expr_projector_filter.rst:107: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/expr_projector_filter.rst:108: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/expr_projector_filter.rst:109: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/expr_projector_filter.rst:126: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/expr_projector_filter.rst:129: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/expr_projector_filter.rst:137: No newline at end of file. (missing-final-newline)
source/cpp/api/array.rst:89: No newline at end of file. (missing-final-newline)
source/cpp/api/scalar.rst:47: No newline at end of file. (missing-final-newline)
source/cpp/gandiva/external_func.rst:82: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/external_func.rst:156: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/external_func.rst:159: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/external_func.rst:182: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/external_func.rst:203: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/external_func.rst:205: trailing whitespace (trailing-whitespace)
source/cpp/gandiva/external_func.rst:206: trailing whitespace (trailing-whitespace)
source/cpp/acero/developer_guide.rst:190: trailing whitespace (trailing-whitespace)
source/cpp/acero/developer_guide.rst:274: trailing whitespace (trailing-whitespace)
source/cpp/acero/developer_guide.rst:475: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/compute_tutorial.rst:37: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/compute_tutorial.rst:52: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/compute_tutorial.rst:56: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/compute_tutorial.rst:60: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/compute_tutorial.rst:61: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/compute_tutorial.rst:343: No newline at end of file. (missing-final-newline)
source/cpp/tutorials/io_tutorial.rst:36: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/io_tutorial.rst:53: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/io_tutorial.rst:61: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/io_tutorial.rst:62: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/io_tutorial.rst:159: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/io_tutorial.rst:160: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/io_tutorial.rst:297: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/io_tutorial.rst:298: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/io_tutorial.rst:361: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/io_tutorial.rst:404: No newline at end of file. (missing-final-newline)
source/cpp/tutorials/datasets_tutorial.rst:36: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:53: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:61: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:62: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:209: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:231: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:232: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:233: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:237: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:238: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:308: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:346: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:438: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:442: trailing whitespace (trailing-whitespace)
source/cpp/tutorials/datasets_tutorial.rst:453: No newline at end of file. (missing-final-newline)
source/format/CDeviceDataInterface.rst:692: No newline at end of file. (missing-final-newline)
source/format/Integration.rst:504: trailing whitespace (trailing-whitespace)
source/format/Integration.rst:511: trailing whitespace (trailing-whitespace)
source/format/Integration.rst:552: trailing whitespace (trailing-whitespace)
source/format/Integration.rst:566: trailing whitespace (trailing-whitespace)
source/format/Integration.rst:504: missing underscore after closing backtick in hyperlink (missing-underscore-after-hyperlink)
source/format/Glossary.rst:214: trailing whitespace (trailing-whitespace)
source/format/CDataInterface/PyCapsuleInterface.rst:67: trailing whitespace (trailing-whitespace)
source/format/CDataInterface/PyCapsuleInterface.rst:136: trailing whitespace (trailing-whitespace)
source/format/CDataInterface/PyCapsuleInterface.rst:137: trailing whitespace (trailing-whitespace)
source/format/CDataInterface/PyCapsuleInterface.rst:155: trailing whitespace (trailing-whitespace)
source/format/CDataInterface/PyCapsuleInterface.rst:156: trailing whitespace (trailing-whitespace)
source/format/CDataInterface/PyCapsuleInterface.rst:195: trailing whitespace (trailing-whitespace)
source/format/CDataInterface/PyCapsuleInterface.rst:251: trailing whitespace (trailing-whitespace)
source/format/CDataInterface/PyCapsuleInterface.rst:273: trailing whitespace (trailing-whitespace)
source/format/CDataInterface/PyCapsuleInterface.rst:275: trailing whitespace (trailing-whitespace)
source/format/CDataInterface/PyCapsuleInterface.rst:308: trailing whitespace (trailing-whitespace)
source/format/CDataInterface/PyCapsuleInterface.rst:319: trailing whitespace (trailing-whitespace)
source/format/CDataInterface/PyCapsuleInterface.rst:432: trailing whitespace (trailing-whitespace)
source/format/CDataInterface/PyCapsuleInterface.rst:435: No newline at end of file. (missing-final-newline)
source/developers/overview.rst:78: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:35: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:42: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:318: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:329: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:371: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:374: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:390: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:418: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:459: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:484: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:485: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:491: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:529: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:534: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:544: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:546: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:570: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:571: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:572: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:573: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:577: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:596: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:597: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:598: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:599: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:603: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:620: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:640: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:686: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:689: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:707: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:708: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:710: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:712: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:713: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:715: trailing whitespace (trailing-whitespace)
source/cpp/acero/user_guide.rst:729: trailing whitespace (trailing-whitespace)
source/developers/continuous_integration/index.rst:30: No newline at end of file. (missing-final-newline)
source/developers/reviewing.rst:263: trailing whitespace (trailing-whitespace)
source/developers/reviewing.rst:270: trailing whitespace (trailing-whitespace)
source/developers/reviewing.rst:278: trailing whitespace (trailing-whitespace)
source/developers/release.rst:83: trailing whitespace (trailing-whitespace)
source/developers/release.rst:86: trailing whitespace (trailing-whitespace)
source/developers/release.rst:146: trailing whitespace (trailing-whitespace)
source/developers/release.rst:154: trailing whitespace (trailing-whitespace)
source/developers/release.rst:167: trailing whitespace (trailing-whitespace)
source/developers/release.rst:170: trailing whitespace (trailing-whitespace)
source/developers/release.rst:173: trailing whitespace (trailing-whitespace)
source/developers/release.rst:177: trailing whitespace (trailing-whitespace)
source/developers/release.rst:183: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/index.rst:28: No newline at end of file. (missing-final-newline)
source/developers/guide/index.rst:86: trailing whitespace (trailing-whitespace)
source/developers/guide/index.rst:90: trailing whitespace (trailing-whitespace)
source/developers/guide/index.rst:94: trailing whitespace (trailing-whitespace)
source/developers/guide/index.rst:96: trailing whitespace (trailing-whitespace)
source/developers/guide/index.rst:158: trailing whitespace (trailing-whitespace)
source/developers/guide/architectural_overview.rst:32: trailing whitespace (trailing-whitespace)
source/developers/guide/architectural_overview.rst:33: trailing whitespace (trailing-whitespace)
source/developers/guide/documentation.rst:52: trailing whitespace (trailing-whitespace)
source/developers/guide/resources.rst:81: trailing whitespace (trailing-whitespace)
source/developers/guide/communication.rst:30: trailing whitespace (trailing-whitespace)
source/developers/guide/communication.rst:53: trailing whitespace (trailing-whitespace)
source/developers/guide/step_by_step/finding_issues.rst:68: trailing whitespace (trailing-whitespace)
source/developers/guide/step_by_step/styling.rst:62: No newline at end of file. (missing-final-newline)
source/developers/guide/step_by_step/set_up.rst:121: OMG TABS!!!1 (horizontal-tab)
source/developers/guide/step_by_step/set_up.rst:122: OMG TABS!!!1 (horizontal-tab)
source/developers/guide/step_by_step/set_up.rst:123: OMG TABS!!!1 (horizontal-tab)
source/developers/guide/step_by_step/set_up.rst:124: OMG TABS!!!1 (horizontal-tab)
source/developers/guide/step_by_step/set_up.rst:63: trailing whitespace (trailing-whitespace)
source/developers/guide/step_by_step/arrow_codebase.rst:102: OMG TABS!!!1 (horizontal-tab)
source/developers/guide/step_by_step/arrow_codebase.rst:103: OMG TABS!!!1 (horizontal-tab)
source/developers/guide/tutorials/python_tutorial.rst:140: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:150: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:153: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:281: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:306: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:311: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:316: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:318: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:323: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:342: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:433: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:451: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:454: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:456: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:481: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:484: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:493: trailing whitespace (trailing-whitespace)
source/developers/guide/tutorials/python_tutorial.rst:530: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:52: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:53: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:575: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:576: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:577: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:584: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:586: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:590: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:591: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:592: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:595: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:596: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:637: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:638: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1624: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1625: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1626: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1627: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1628: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1629: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1652: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1653: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1864: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1866: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1880: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1881: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1882: trailing whitespace (trailing-whitespace)
source/cpp/compute.rst:1883: trailing whitespace (trailing-whitespace)
source/developers/cpp/windows.rst:382: trailing whitespace (trailing-whitespace)
source/developers/cpp/windows.rst:384: trailing whitespace (trailing-whitespace)
source/developers/cpp/building.rst:70: trailing whitespace (trailing-whitespace)
source/developers/cpp/building.rst:102: trailing whitespace (trailing-whitespace)
source/developers/cpp/building.rst:365: trailing whitespace (trailing-whitespace)
source/developers/cpp/building.rst:378: trailing whitespace (trailing-whitespace)
source/developers/cpp/building.rst:475: trailing whitespace (trailing-whitespace)

It mostly found trailing whitespace issues but I am going to look into the other ones they do what we want. After that I'll work up a PR that,

  1. Adds this to the docs CI
  2. Adds it to our arrow-docs conda env file so developers have access to it
  3. Make a note of it in the docs for building the docs so developers know to run it
  4. Look into whether it makes sense to run it locally automatically (i.e., when we call make html)

@jorisvandenbossche
Copy link
Member

Looks useful!

source/java/jdbc.rst:98: Line ends with dangling hyphen (dangling-hyphen)

This one seems to be a false positive. The other ones of this type might be similar, so I suppose one solution would be to just disable the full rule.

@jorisvandenbossche
Copy link
Member

It would also be nice, if we add it to CI, if this could also be integrated in the pre-commit hook

@amoeba
Copy link
Member Author

amoeba commented Feb 10, 2024

This is mostly done and I put up a draft PR at #40022. I'm seeing some strange behavior with the pre-commit hook that I don't understand yet so I'll keep working on that.

amoeba added a commit that referenced this issue May 1, 2024
### What changes are included in this PR?

This adds developer tooling to the repo for linting the docs by adding the sphinx-lint tool to archery and our pre-commit hooks. In both locations, only two rules are enabled at the moment (Discussed in #40006): `trailing-whitespace` and `missing-final-newline`.

This PR also fixes the individual issues covered by the new tooling. 

### Are these changes tested?

Yes, though manually. I tested this works by running `archery lint --docs` and `pre-commit` without and without changes that should get caught by the rules. It works as expected.

### Are there any user-facing changes?

Yes,

1. Developers that use pre-commit hooks will see a change in behavior when they modify docs
2. Developers using archery will see a new --docs option in `archery lint`
3. Developers working on the docs may see CI failures related to the new checks

* Closes: #39990
* GitHub Issue: #39990

Authored-by: Bryce Mecum <[email protected]>
Signed-off-by: Bryce Mecum <[email protected]>
@amoeba amoeba added this to the 17.0.0 milestone May 1, 2024
tolleybot pushed a commit to tmct/arrow that referenced this issue May 2, 2024
…0022)

### What changes are included in this PR?

This adds developer tooling to the repo for linting the docs by adding the sphinx-lint tool to archery and our pre-commit hooks. In both locations, only two rules are enabled at the moment (Discussed in apache#40006): `trailing-whitespace` and `missing-final-newline`.

This PR also fixes the individual issues covered by the new tooling. 

### Are these changes tested?

Yes, though manually. I tested this works by running `archery lint --docs` and `pre-commit` without and without changes that should get caught by the rules. It works as expected.

### Are there any user-facing changes?

Yes,

1. Developers that use pre-commit hooks will see a change in behavior when they modify docs
2. Developers using archery will see a new --docs option in `archery lint`
3. Developers working on the docs may see CI failures related to the new checks

* Closes: apache#39990
* GitHub Issue: apache#39990

Authored-by: Bryce Mecum <[email protected]>
Signed-off-by: Bryce Mecum <[email protected]>
tolleybot pushed a commit to tmct/arrow that referenced this issue May 4, 2024
…0022)

### What changes are included in this PR?

This adds developer tooling to the repo for linting the docs by adding the sphinx-lint tool to archery and our pre-commit hooks. In both locations, only two rules are enabled at the moment (Discussed in apache#40006): `trailing-whitespace` and `missing-final-newline`.

This PR also fixes the individual issues covered by the new tooling. 

### Are these changes tested?

Yes, though manually. I tested this works by running `archery lint --docs` and `pre-commit` without and without changes that should get caught by the rules. It works as expected.

### Are there any user-facing changes?

Yes,

1. Developers that use pre-commit hooks will see a change in behavior when they modify docs
2. Developers using archery will see a new --docs option in `archery lint`
3. Developers working on the docs may see CI failures related to the new checks

* Closes: apache#39990
* GitHub Issue: apache#39990

Authored-by: Bryce Mecum <[email protected]>
Signed-off-by: Bryce Mecum <[email protected]>
rok pushed a commit to tmct/arrow that referenced this issue May 8, 2024
…0022)

### What changes are included in this PR?

This adds developer tooling to the repo for linting the docs by adding the sphinx-lint tool to archery and our pre-commit hooks. In both locations, only two rules are enabled at the moment (Discussed in apache#40006): `trailing-whitespace` and `missing-final-newline`.

This PR also fixes the individual issues covered by the new tooling. 

### Are these changes tested?

Yes, though manually. I tested this works by running `archery lint --docs` and `pre-commit` without and without changes that should get caught by the rules. It works as expected.

### Are there any user-facing changes?

Yes,

1. Developers that use pre-commit hooks will see a change in behavior when they modify docs
2. Developers using archery will see a new --docs option in `archery lint`
3. Developers working on the docs may see CI failures related to the new checks

* Closes: apache#39990
* GitHub Issue: apache#39990

Authored-by: Bryce Mecum <[email protected]>
Signed-off-by: Bryce Mecum <[email protected]>
rok pushed a commit to tmct/arrow that referenced this issue May 8, 2024
…0022)

### What changes are included in this PR?

This adds developer tooling to the repo for linting the docs by adding the sphinx-lint tool to archery and our pre-commit hooks. In both locations, only two rules are enabled at the moment (Discussed in apache#40006): `trailing-whitespace` and `missing-final-newline`.

This PR also fixes the individual issues covered by the new tooling. 

### Are these changes tested?

Yes, though manually. I tested this works by running `archery lint --docs` and `pre-commit` without and without changes that should get caught by the rules. It works as expected.

### Are there any user-facing changes?

Yes,

1. Developers that use pre-commit hooks will see a change in behavior when they modify docs
2. Developers using archery will see a new --docs option in `archery lint`
3. Developers working on the docs may see CI failures related to the new checks

* Closes: apache#39990
* GitHub Issue: apache#39990

Authored-by: Bryce Mecum <[email protected]>
Signed-off-by: Bryce Mecum <[email protected]>
vibhatha pushed a commit to vibhatha/arrow that referenced this issue May 25, 2024
…0022)

### What changes are included in this PR?

This adds developer tooling to the repo for linting the docs by adding the sphinx-lint tool to archery and our pre-commit hooks. In both locations, only two rules are enabled at the moment (Discussed in apache#40006): `trailing-whitespace` and `missing-final-newline`.

This PR also fixes the individual issues covered by the new tooling. 

### Are these changes tested?

Yes, though manually. I tested this works by running `archery lint --docs` and `pre-commit` without and without changes that should get caught by the rules. It works as expected.

### Are there any user-facing changes?

Yes,

1. Developers that use pre-commit hooks will see a change in behavior when they modify docs
2. Developers using archery will see a new --docs option in `archery lint`
3. Developers working on the docs may see CI failures related to the new checks

* Closes: apache#39990
* GitHub Issue: apache#39990

Authored-by: Bryce Mecum <[email protected]>
Signed-off-by: Bryce Mecum <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants