Skip to content

Hide boilerplate in documentation examples #14557

Closed

Description

@alamb

Is your feature request related to a problem or challenge?

Part of #7013

@ugoa has updated our examples in the following PR to all compile and be tested

One major problem I have with using # to hide setup code, is that the sphinx won't respect the leading # and still renders the whole block, which leading huge chunk of ugly code blocks.

Image

Describe the solution you'd like

I would like to be able to hide the setup code for the examples, following the rustdoc convention of ignoring lines that begin with #

For example, in our docs here:

//! ```rust
//! # use datafusion::prelude::*;
//! # use datafusion::error::Result;
//! # use datafusion::functions_aggregate::expr_fn::min;
//! # use datafusion::arrow::record_batch::RecordBatch;
//!
//! # #[tokio::main]
//! # async fn main() -> Result<()> {
//! let ctx = SessionContext::new();
//!
//! // create the dataframe
//! let df = ctx.read_csv("tests/data/example.csv", CsvReadOptions::new()).await?;
//!
//! // create a plan
//! let df = df.filter(col("a").lt_eq(col("b")))?
//! .aggregate(vec![col("a")], vec![min(col("b"))])?
//! .limit(0, Some(100))?;
//!
//! // execute the plan
//! let results: Vec<RecordBatch> = df.collect().await?;
//!
//! // format the results
//! let pretty_results = arrow::util::pretty::pretty_format_batches(&results)?
//! .to_string();
//!
//! let expected = vec![
//! "+---+----------------+",
//! "| a | min(?table?.b) |",
//! "+---+----------------+",
//! "| 1 | 2 |",
//! "+---+----------------+"
//! ];
//!
//! assert_eq!(pretty_results.trim().lines().collect::<Vec<_>>(), expected);
//! # Ok(())
//! # }

Lines that start with # are not rendered in the markdown docs on https://docs.rs/datafusion/latest/datafusion/index.html

Image

Describe alternatives you've considered

I wonder if we can find find some way to add a sphinx plugin or something to avoid rendering the blocks of ugly code.

You can build and test the documentation locally by following the instructions here: https://github.com/apache/datafusion/blob/main/docs/README.md

I normally do

cd docs
./build.sh
open build/html/index.html

Additional context

No response

Activity

  1. alamb commented on Feb 8, 2025

    @alamb
    ContributorAuthor

    I think this would be a good first issue as it is super helpful, well specified, and doesn't need deep DataFusion internals expertise

  2. bhavesh26 commented on Feb 8, 2025

    @bhavesh26

    @alamb assign this to me

  3. alamb commented on Feb 8, 2025

    @alamb
    ContributorAuthor

    @alamb assign this to me

    Thanks @bhavesh26

    Note in the future you can put the comment take and the bot will automatically assign it to you

  4. ugoa commented on Feb 8, 2025

    @ugoa
    Contributor

    Please help review workaround solution in 997504f in #14544

  5. alamb commented on Feb 10, 2025

    @alamb
    ContributorAuthor

    Please help review workaround solution in 997504f in #14544

    From my perspective the solution your PR is a real fix @ugoa (not just a workaround)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions