You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@texera.apache.org by "zyratlo (via GitHub)" <gi...@apache.org> on 2026/10/07 19:04:19 UTC
[PR] feat(notebook-migration): add an r option to the import modal [texera]
zyratlo opened a new pull request, #8912:
URL: https://github.com/apache/texera/pull/8912
### What changes were proposed in this PR?
> [!NOTE]
> Stacked on #8911, which is stacked on #8910. Until those merge, this diff also shows their commits.
This is the last of three PRs adding R support to the migration tool (#8009). It puts the R conversion from #8911 in front of users, behind the `rNotebookMigrationEnabled` flag added there.
**Import modal.** An "R Code" tab appears when the R flag is on. Its upload row has a Notebook / File switch in front of the upload button, accepting `.ipynb` or `.R` / `.r`. R gets one tab rather than one per input kind so the tab bar still fits once R folders are added: they become a third option in the switch. The switch is a `FormControl`, so it keeps its value when the tab re-renders, and changing it clears the staged file the same way changing tabs does. To fit the switch, the shared upload row template gains an optional slot rendered in front of the button. The modal now passes a `language` to `requestImport`, `"r"` on this tab and `"python"` everywhere else.
**Dispatch.** The dashboard routes by language first, then by extension. Each language's accepted script extension and its error messages come from one small table, so Python's messages are word for word unchanged. An `.ipynb` uploaded on the R tab whose `kernelspec.language` is set and is not R is rejected with a message pointing to the Jupyter Notebook tab, before any model call. A notebook without a kernelspec is accepted.
**Assets.** A new diagram for the tab, at the same size and border as the other three. It reuses the Material Symbols icons the others use, so `frontend/LICENSE-binary` adds its path to that entry.
#### Demo video
https://github.com/user-attachments/assets/5b825d66-6b52-41c7-976b-28e3f5c3d574
### Any related issues, documentation, discussions?
Part of #8009
Parent-issue #4301
The plan is in https://github.com/apache/texera/discussions/8866. R notebooks open in the Jupyter panel without a kernel, since the Jupyter image has no R kernel. #8909 (#8908) makes that work: without it, the panel shows a "Kernel not found" dialog and the cells stay editable.
R folders are the remaining part of #8009, so this PR does not close it.
### How was this PR tested?
* `notebook-import-modal.component.spec.ts`, five new tests: the tab is hidden while the R flag is off; it shows its diagram, the "R Code" title and the switch inside the upload row; clicking File switches the accepted extensions and drops the staged notebook; the switch keeps its value across a re-render; and submit passes `"r"`. Existing assertions now expect `"python"`.
* `user-workflow.component.spec.ts`, seven new tests: `.R` and `.r` convert as R scripts; R notebooks convert as R, with or without a kernelspec; a Python kernel notebook and a `.py` are rejected on the R tab; and an unreadable R file gets R wording.
Coverage of both components covers every new line and branch. The dashboard's three uncovered branches predate this change. The full frontend suite passes.
End to end with a live model, against a local stack with texera-rudf installed:
* A Python kernel notebook on the R tab is rejected, and the modal stays open with the selection kept.
* An R script converts to five Table API `RUDF` operators. Connected to the dataset and run, it reports the same accuracies as the original script in `Rscript`, and its ggplot boxplot renders through an HTML Visualizer. Clicking an operator highlights its cell in the Jupyter panel.
* An R notebook converts to seven `RUDF` operators following the same rules, and the panel shows the uploaded notebook.
* A Python file still converts to `PythonUDFV2` operators, unchanged.
### Was this PR authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Claude Opus 5.5)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat(notebook-migration): add an r option to the import modal [texera]
Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #8912:
URL: https://github.com/apache/texera/pull/8912#issuecomment-6045017698
<!-- texera-reviewer-suggestion -->
### Automated Reviewer Suggestions
Based on the `git blame` history of the changed files, we recommend the following reviewers:
- **Contributors with relevant context:** `@mengw15`, `@yangzhang75`, `@Neilk1021`
You can notify them by mentioning `@mengw15`, `@yangzhang75`, `@Neilk1021` in a comment.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat(notebook-migration): add an r option to the import modal [texera]
Posted by "codecov-commenter (via GitHub)" <gi...@apache.org>.
codecov-commenter commented on PR #8912:
URL: https://github.com/apache/texera/pull/8912#issuecomment-6045255396
## [Codecov](https://app.codecov.io/gh/apache/texera/pull/8912?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report
:white_check_mark: All modified and coverable lines are covered by tests.
:white_check_mark: Project coverage is 92.60%. Comparing base ([`4c982a7`](https://app.codecov.io/gh/apache/texera/commit/4c982a7a8abba119b326b19456f4ef7fda78f059?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)) to head ([`613908a`](https://app.codecov.io/gh/apache/texera/commit/613908a255d10fda2ecf9f1ab1f15b8115a54521?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)).
<details><summary>Additional details and impacted files</summary>
```diff
@@ Coverage Diff @@
## main #8912 +/- ##
=========================================
Coverage 92.60% 92.60%
Complexity 5044 5044
=========================================
Files 1252 1253 +1
Lines 53580 53601 +21
Branches 6672 6675 +3
=========================================
+ Hits 49616 49637 +21
+ Misses 2317 2316 -1
- Partials 1647 1648 +1
```
| [Flag](https://app.codecov.io/gh/apache/texera/pull/8912/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage Δ | | *Carryforward flag |
|---|---|---|---|
| [access-control-service](https://app.codecov.io/gh/apache/texera/pull/8912/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `77.38% <ø> (ø)` | | Carriedforward from [960adc5](https://app.codecov.io/gh/apache/texera/commit/960adc570043afee54f599ee18053f1d952ebc62?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [agent-service](https://app.codecov.io/gh/apache/texera/pull/8912/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `99.16% <ø> (ø)` | | Carriedforward from [960adc5](https://app.codecov.io/gh/apache/texera/commit/960adc570043afee54f599ee18053f1d952ebc62?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [amber](https://app.codecov.io/gh/apache/texera/pull/8912/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `88.10% <100.00%> (+<0.01%)` | :arrow_up: | Carriedforward from [960adc5](https://app.codecov.io/gh/apache/texera/commit/960adc570043afee54f599ee18053f1d952ebc62?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [computing-unit-managing-service](https://app.codecov.io/gh/apache/texera/pull/8912/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `60.48% <ø> (ø)` | | Carriedforward from [960adc5](https://app.codecov.io/gh/apache/texera/commit/960adc570043afee54f599ee18053f1d952ebc62?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [config-service](https://app.codecov.io/gh/apache/texera/pull/8912/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `87.50% <100.00%> (+0.12%)` | :arrow_up: | |
| [file-service](https://app.codecov.io/gh/apache/texera/pull/8912/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `81.53% <ø> (ø)` | | Carriedforward from [960adc5](https://app.codecov.io/gh/apache/texera/commit/960adc570043afee54f599ee18053f1d952ebc62?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [frontend](https://app.codecov.io/gh/apache/texera/pull/8912/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `96.59% <100.00%> (-0.01%)` | :arrow_down: | Carriedforward from [960adc5](https://app.codecov.io/gh/apache/texera/commit/960adc570043afee54f599ee18053f1d952ebc62?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [notebook-migration-service](https://app.codecov.io/gh/apache/texera/pull/8912/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `83.73% <ø> (ø)` | | Carriedforward from [960adc5](https://app.codecov.io/gh/apache/texera/commit/960adc570043afee54f599ee18053f1d952ebc62?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [pyamber](https://app.codecov.io/gh/apache/texera/pull/8912/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `98.52% <ø> (ø)` | | Carriedforward from [960adc5](https://app.codecov.io/gh/apache/texera/commit/960adc570043afee54f599ee18053f1d952ebc62?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [workflow-compiling-service](https://app.codecov.io/gh/apache/texera/pull/8912/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `74.09% <ø> (ø)` | | Carriedforward from [960adc5](https://app.codecov.io/gh/apache/texera/commit/960adc570043afee54f599ee18053f1d952ebc62?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
*This pull request uses carry forward flags. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) to find out more.
</details>
[:umbrella: View full report in Codecov by Harness](https://app.codecov.io/gh/apache/texera/pull/8912?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).
<details><summary> :rocket: New features to boost your workflow: </summary>
- :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] feat(notebook-migration): add an r option to the import modal [texera]
Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #8912:
URL: https://github.com/apache/texera/pull/8912#issuecomment-6045354270
<!-- texera-benchmarks-comment -->
## ⚠️ Benchmark changes need a look
🟢 4 better · 🔴 2 worse · ⚪ 9 noise (<±5%) · 0 without baseline
> Compared against main `4c982a7` benchmarked on **this same runner**, so the delta is largely free of cross-runner hardware noise. The "7d avg" column still reflects the gh-pages dashboard. Treat <±5% as noise unless repeated.
[Dashboard](https://apache.github.io/texera/dev/bench/) · [Run](https://github.com/apache/texera/actions/runs/37671698344)
| | config | throughput | MB/s | latency | max Δ latest / 7d |
|---|---|---:|---:|---:|---:|
| 🔴 | bs=10 sw=10 sl=64 | 353 | 0.215 | 26,239/36,799/36,799 us | 🟢 -7.2% / 🔴 +171.2% |
| 🟢 | bs=100 sw=10 sl=64 | 795 | 0.485 | 124,126/143,188/143,188 us | 🟢 -5.3% / 🔴 +52.5% |
| ⚪ | bs=1000 sw=10 sl=64 | 914 | 0.558 | 1,087,674/1,210,795/1,210,795 us | ⚪ within ±5% / 🔴 +33.4% |
<details><summary>Baseline details</summary>
Latest main `4c982a7` from same runner
| config | metric | PR | latest main | 7d avg | Δ latest | Δ 7d |
|---|---|---:|---:|---:|---:|---:|
| bs=10 sw=10 sl=64 | throughput | 353 tuples/sec | 372 tuples/sec | 960.16 tuples/sec | -5.1% | -63.2% |
| bs=10 sw=10 sl=64 | MB/s | 0.215 MB/s | 0.227 MB/s | 0.586 MB/s | -5.3% | -63.3% |
| bs=10 sw=10 sl=64 | p50 | 26,239 us | 25,109 us | 11,059 us | +4.5% | +137.3% |
| bs=10 sw=10 sl=64 | p95 | 36,799 us | 39,638 us | 13,567 us | -7.2% | +171.2% |
| bs=10 sw=10 sl=64 | p99 | 36,799 us | 39,638 us | 16,824 us | -7.2% | +118.7% |
| bs=100 sw=10 sl=64 | throughput | 795 tuples/sec | 801 tuples/sec | 1,235 tuples/sec | -0.7% | -35.6% |
| bs=100 sw=10 sl=64 | MB/s | 0.485 MB/s | 0.489 MB/s | 0.754 MB/s | -0.8% | -35.6% |
| bs=100 sw=10 sl=64 | p50 | 124,126 us | 122,720 us | 87,809 us | +1.1% | +41.4% |
| bs=100 sw=10 sl=64 | p95 | 143,188 us | 151,179 us | 93,907 us | -5.3% | +52.5% |
| bs=100 sw=10 sl=64 | p99 | 143,188 us | 151,179 us | 106,076 us | -5.3% | +35.0% |
| bs=1000 sw=10 sl=64 | throughput | 914 tuples/sec | 925 tuples/sec | 1,272 tuples/sec | -1.2% | -28.1% |
| bs=1000 sw=10 sl=64 | MB/s | 0.558 MB/s | 0.565 MB/s | 0.776 MB/s | -1.2% | -28.1% |
| bs=1000 sw=10 sl=64 | p50 | 1,087,674 us | 1,077,373 us | 863,168 us | +1.0% | +26.0% |
| bs=1000 sw=10 sl=64 | p95 | 1,210,795 us | 1,156,635 us | 907,700 us | +4.7% | +33.4% |
| bs=1000 sw=10 sl=64 | p99 | 1,210,795 us | 1,156,635 us | 933,684 us | +4.7% | +29.7% |
</details>
<details><summary>Raw CSV</summary>
```csv
config_idx,batch_size,schema_width,string_len,num_batches,total_ms,total_tuples,total_bytes,tuples_per_sec,mb_per_sec,lat_p50_us,lat_p95_us,lat_p99_us
0,10,10,64,20,567.20,200,128000,353,0.215,26239.19,36799.46,36799.46
1,100,10,64,20,2514.48,2000,1280000,795,0.485,124125.88,143188.41,143188.41
2,1000,10,64,20,21872.85,20000,12800000,914,0.558,1087674.27,1210795.01,1210795.01
```
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@texera.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org