Skip to content

chore: Include a README in the NuGet packages - #485

Open
ump45nose wants to merge 3 commits into
apache:mainfrom
ump45nose:chore/45-nuget-readme
Open

ump45nose wants to merge 3 commits into
apache:mainfrom
ump45nose:chore/45-nuget-readme

Conversation

@ump45nose

Copy link
Copy Markdown
Contributor

What's Changed

dotnet nuget push warns that our packages have no readme. This adds a short package readme (src/README.md) and wires it up in the shared NuGet properties in Directory.Build.props (PackageReadmeFile plus a packed Content item next to the license and icon), so every packable project under src/ gets it.

The root README.md is aimed at people building the repo (build steps, relative links to source folders), so I wrote a separate, smaller one for nuget.org: what Apache Arrow is, the list of packages, a short IPC reading example and links to the docs and the repository. All links are absolute so they work on nuget.org. It carries the usual ASF license header like the other Markdown files.

Checked with dotnet pack -c Release for each project in src/: all seven .nupkg files now contain README.md at the package root and their nuspec has <readme>README.md</readme>, with no new pack warnings.

This PR was prepared with AI assistance and reviewed by me.

Closes #45.

@adamreeve adamreeve left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for addressing this @ump45nose

Comment thread src/README.md Outdated
using Apache.Arrow;
using Apache.Arrow.Ipc;

public static async Task<RecordBatch> ReadArrowAsync(string filename)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please add a short description of what this example does. Eg. "Example of reading an Arrow IPC file".

Also, this example only reads the first batch of data from the file. It could mislead people if they copy this code, thinking it will read a whole file. Maybe it should return a List<RecordBatch> instead?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @adamreeve. In 27ade26 the example now starts with "Example of reading all record batches from an Arrow IPC file", and it reads every batch into a List<RecordBatch> until ReadNextRecordBatchAsync() returns null, so copying it no longer silently drops data. (AI-assisted reply.)

The package README caused the Bash verification jobs on Linux, macOS,
and Windows to request a nonexistent README.md NuGet package. Iterate
only source directories and preserve package names containing spaces.

Validated with bash -n, whitespace checks, and eight isolated enumeration
assertions covering baseline packages, README files, spaces, and no
package directories. Full .NET and RC validation was not run locally.

AI-assisted change.
@CurtHagenlocher
CurtHagenlocher requested a lite review from Copilot October 23, 2026 19:51

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warning

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Copilot review overview

3 open issues
What changed in this PR

Adds a NuGet-specific README and configures packing so all packable projects include it, eliminating dotnet nuget push “missing readme” warnings.

Changes:

  • Add src/README.md tailored for nuget.org (packages list, usage snippet, links).
  • Wire up PackageReadmeFile and pack the README via shared Directory.Build.props.
  • Adjust RC verification script to iterate src directories more directly when fetching NuGet artifacts.
File Description
src/​README.md Adds a NuGet-facing README with package overview, usage example, and links.
dev/​release/​verify_rc.sh Updates artifact-fetch loop to iterate ../src/*/ directories.
Directory.Build.props Sets PackageReadmeFile and packs src/README.md into all packable NuGet packages.

Review effort: Lite

Comment thread Directory.Build.props
Comment on lines 58 to +59
<Content Include="$(CSharpDir)logo_asf.png" Link="logo_asf.png" Pack="true" PackagePath="\" />
<Content Include="$(CSharpDir)src/README.md" Link="README.md" Pack="true" PackagePath="\" />
Comment thread dev/release/verify_rc.sh
Comment on lines +175 to +178
for package in ../src/*/; do
[ -d "${package}" ] || continue
package="${package%/}"
package="${package##*/}"
Comment thread src/README.md
Comment on lines +57 to +61
RecordBatch batch;
while ((batch = await reader.ReadNextRecordBatchAsync()) != null)
{
batches.Add(batch);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

NuGet packages miss README

3 participants