-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
[Proposal] Ensure consistency between code and documentation. #9173
Comments
Thank you @ongchi -- I think this is a really great idea. Thank you Here is a similar issue from @andygrove #7951 that also has a PR #7956 As a pragmatic matter, here is my suggestion for incrementally implementing this without having to make a massive PR that will be a conflict magnet. First, we accept that there will be a period of time where we have a split set of documentation (one auto generated, and one static) Then, build the new automatic documentation system you describe based on the functions in https://github.com/apache/arrow-datafusion/tree/main/datafusion/functions (it is a subset at the moment). That way we can get the tooling and pattern sorted out. Then as we migrate the rest of the functions over, we can migrate the documentation as well |
Here is a quick (and dirty) proof of concept of the doc comments extractor. # Under arrow-datafusion project folder
comment-extract \
--package "datafusion-expr" \
--module-path "datafusion_expr::expr_fn" \
--kind function The output example would be like this: |
I took a quick look and https://gist.github.com/ongchi/ad5b256ddcf0dc5560e910e765e2c225 looks 👌 very nice -- thanks @ongchi |
I believe we now achieve this goal using the doctest! macro -- for example datafusion/datafusion/core/src/lib.rs Lines 618 to 643 in 37e54ee
|
Is your feature request related to a problem or challenge?
There are currently two documentation hosting targets for DataFusion: docs.rs (several crates) and arrow.apache.org.
Parts of the documentation could be shared between each other. For example, built-in functions should also be listed in the Expression API of the user guide. However, each of them maintain its own document source separately, and they are not fully consistant with each other.
Describe the solution you'd like
Merge relevant parts of Sphinx source into Rust doc comments.
Then extract doc comments from JSON output (rfcs#2963 - nightly toolchain required) of the
rustdoc
and generate markdown files. Finally, include these files in Sphinx bydoctree
.A utility to generate markdown files from doc comments is required. It should not take much effort by utilizing rustdoc-json and rustdoc-types.
Describe alternatives you've considered
Create a shared doc folder between Rust and Sphinx source, and merge relevant part into one. Then include external file by doc attribute in Rust, or by
doctree
in Sphinx.This is really annoying to find the right file when writing doc in development. And I don't want to do that.🤪
Additional context
No response
The text was updated successfully, but these errors were encountered: