Repository navigation
Conversation
|
|
There was a problem hiding this comment.
Pull request overview
This PR aligns the R write_dataset() format handling with open_dataset() by treating format = "text" as an alias of CSV, so users can write delimited text datasets with the same expectations as when opening them.
Changes:
- Map
format = "text"to"csv"insidewrite_dataset()so it uses CSV defaults (notably comma delimiter) and generates.csvfilenames. - Narrow the “delimiter required” validation to only apply to
format = "txt", avoiding the previous error forformat = "text". - Update tests to cover the new
format = "text"behavior and remove the old expectation that it errors.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| r/R/dataset-write.R | Adds text -> csv mapping and updates delimiter validation to only enforce a delimiter for txt. |
| r/tests/testthat/test-dataset-write.R | Replaces the previous error expectation for format="text" with a round-trip test asserting .csv output and correct data. |
d048f45 to
4292634
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.
Suppressed comments (1)
r/R/dataset-write.R:156
- PR description says there are no user-facing changes, but this change makes
write_dataset(format = "text")succeed where it previously errored (a user-visible behavior change). Consider updating the PR description/release-note wording to reflect this bugfix.
if (format == "text") {
format <- "csv"
}
4292634 to
85d49ac
Compare
There was a problem hiding this comment.
🟢 Approval recommended
The change is narrowly scoped, matches the linked issue’s acceptance criteria, and is covered by an explicit regression test.
Review details
- Files reviewed: 2/2 changed files
- Comments generated: 0 new
- Review effort level: Lite
jonkeane
left a comment
There was a problem hiding this comment.
I'm fine with this in principle but the distinction between "text" and "txt" (if I'm reading that correctly?) seems very strange.
| if (format %in% c("txt", "text") && !any(c("delimiter", "delim") %in% names(dots))) { | ||
| if (format == "txt" && !any(c("delimiter", "delim") %in% names(dots))) { |
There was a problem hiding this comment.
Does this mean that "text" and "txt" will behave differently now? As in: "text" will automagically be CSV, but "txt" one needs to supply a delimiter (which might be a comma)?
There was a problem hiding this comment.
Yeah, mapping "text" to "csv" is to mirror open_dataset() but it's a bit weird.
"txt" is what write_delim_dataset() passes internally and it always sends a delimiter, so I've left that check alone rather than also defaulting it to comma.
There was a problem hiding this comment.
How bad would it be to make open_dataset() be consistent with this? (and also internally 😂 )?
There was a problem hiding this comment.
Yeah, this is a super weird one, I think we can actually just totally get rid of "txt" given it was originally added so that write_delim_dataset() could force users to specify a delimiter, and isn't even documented, it just happens to work. We could probably clean up the API a bit by deprecating it tbh. I'll update the PR so both sides are symmetrical but without this weirdness!
f8b53f5 to
71a2932
Compare


Rationale for this change
write_dataset()errors onformat="text"even thoughopen_dataset()allows it.What changes are included in this PR?
Map "text" to "csv" so
write_dataset()mirrorsopen_dataset()Are these changes tested?
Yes
Are there any user-facing changes?
No
format = "texttoformat = "csv"inwrite_dataset()#38217