-
Notifications
You must be signed in to change notification settings - Fork 97
RHOAIENG-21842: bump JupyterLab-related dependencies in all Python 3.11 Pipfiles #1218
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
base: main
Are you sure you want to change the base?
Changes from all commits
a35a79b
accf2f8
224f423
66c2151
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -31,14 +31,14 @@ mysql-connector-python = "~=9.3.0" | |
|
||
odh-elyra = "==4.2.1" | ||
|
||
jupyterlab = "==4.2.7" | ||
jupyterlab = "==4.4.4" | ||
jupyter-bokeh = "~=4.0.5" | ||
jupyter-server = "~=2.15.0" | ||
jupyter-server = "~=2.16.0" | ||
Comment on lines
-34
to
+36
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @coderabbitai you make an interesting observation
This has been the dependency policy prior this PR already. Any ideas why that decision may have been made? Is strictly pinning both always the best choice? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain@jiridanek Great question about dependency policy! Let me analyze the current patterns across the repository to understand the reasoning behind this approach. The mixed pinning strategy you've observed is indeed interesting and likely intentional. Here are some potential reasons for this approach: Why
Why
Trade-offs of each approach: Strict pinning (==) everywhere:
Compatible release (~=) everywhere:
The current mixed approach seems to balance user experience consistency (exact JupyterLab) with operational safety (flexible server components). This is a reasonable compromise for enterprise notebook environments where UI consistency matters but security updates need to flow through automatically. 🏁 Script executed:
Length of output: 2704 🏁 Script executed:
Length of output: 4383 Perfect! Now I have a clear picture of the dependency strategy. The data reveals a very intentional and well-reasoned approach: Current Dependency Strategy AnalysisCore Why This Mixed Strategy Makes Sense1. JupyterLab Core (
2. JupyterLab Extensions (
3. Server Components (
Is Strict Pinning Always Best?No, and here's why the current approach is actually superior:
The current policy demonstrates sophisticated dependency management that balances user experience consistency with operational security and maintainability. This is exactly the kind of nuanced approach you'd want in an enterprise notebook platform. ✏️ Learnings added
🧠 Learnings used
|
||
jupyter-server-proxy = "~=4.4.0" | ||
jupyter-server-terminals = "~=0.5.3" | ||
jupyterlab-git = "~=0.50.1" | ||
jupyterlab-lsp = "~=5.1.0" | ||
jupyterlab-widgets = "~=3.0.13" | ||
jupyterlab-lsp = "~=5.1.1" | ||
jupyterlab-widgets = "~=3.0.15" | ||
jupyter-resource-usage = "~=1.1.1" | ||
nbdime = "~=4.0.2" | ||
nbgitpuller = "~=1.2.2" | ||
|
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -41,14 +41,14 @@ mysql-connector-python = "~=9.3.0" | |
|
||
odh-elyra = "==4.2.1" | ||
|
||
jupyterlab = "==4.2.7" | ||
jupyterlab = "==4.4.4" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @coderabbitai this update will require thorough support by automated tests; can you please suggest additions to our There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed:
Length of output: 3985 🏁 Script executed:
Length of output: 15049 🏁 Script executed:
Length of output: 4544 @jiridanek Based on my analysis of your current test structure, here's a comprehensive test strategy for JupyterLab updates: Current Test Infrastructure AnalysisYour existing tests provide a solid foundation with:
Recommended Test Additions1. JupyterLab UI Automation TestsLocation: // jupyterlab-ui.spec.ts
test('JupyterLab interface loads correctly', async ({ page }) => {
// Test file tree, launcher, menu bar, status bar
});
test('notebook operations work', async ({ page }) => {
// Create, open, execute cells, save notebooks
});
test('extensions load properly', async ({ page }) => {
// Verify jupyterlab-git, jupyterlab-lsp, jupyterlab-widgets load
}); 2. Extension Compatibility TestsLocation: # test_extensions_compatibility.py
class TestJupyterLabExtensions:
def test_git_extension_functionality(self, jupyterlab_image):
# Test git operations, UI components
def test_lsp_extension_functionality(self, jupyterlab_image):
# Test language server features
def test_widgets_extension_functionality(self, jupyterlab_image):
# Test interactive widgets 3. Server API Compatibility TestsLocation: # test_jupyter_server_api.py
class TestJupyterServerAPI:
def test_kernels_api(self, jupyterlab_image):
# Test /api/kernels endpoints
def test_contents_api(self, jupyterlab_image):
# Test /api/contents endpoints
def test_sessions_api(self, jupyterlab_image):
# Test /api/sessions endpoints 4. Cross-Image Consistency TestsLocation: # test_jupyterlab_consistency.py
class TestJupyterLabConsistency:
@pytest.mark.parametrize("image_type", ["datascience", "pytorch", "tensorflow", "trustyai"])
def test_jupyterlab_version_consistency(self, image_type):
# Verify same JupyterLab version across all images
def test_core_extensions_consistency(self, image_type):
# Verify core extensions are consistent 5. Performance & Regression TestsLocation: # test_performance_regression.py
class TestJupyterLabPerformance:
def test_startup_time_regression(self, jupyterlab_image):
# Measure and compare startup times
def test_memory_usage_regression(self, jupyterlab_image):
# Monitor memory consumption patterns
def test_large_notebook_handling(self, jupyterlab_image):
# Test with notebooks containing many cells/outputs 6. Backward Compatibility TestsLocation: # test_backward_compatibility.py
class TestBackwardCompatibility:
def test_old_notebook_format_support(self, jupyterlab_image):
# Test notebooks created with older JupyterLab versions
def test_legacy_extension_compatibility(self, jupyterlab_image):
# Test extensions that might not be updated yet 7. Enhanced Browser Test InfrastructureLocation: export class JupyterLab {
constructor(private page: Page, private url: string) {}
async openNotebook(path: string) { /* ... */ }
async executeCell(cellIndex: number) { /* ... */ }
async waitForKernelReady() { /* ... */ }
async openLauncher() { /* ... */ }
async toggleFileTree() { /* ... */ }
} 8. Integration Test SuiteLocation: # test_end_to_end_workflows.py
class TestJupyterLabWorkflows:
def test_data_science_workflow(self, jupyterlab_datascience_image):
# Complete workflow: load data → analyze → visualize → export
def test_ml_training_workflow(self, jupyterlab_pytorch_image):
# ML workflow: prep data → train model → evaluate → save 9. Configuration-Specific TestsLocation: # test_jupyterlab_configuration.py
class TestJupyterLabConfiguration:
def test_odh_dashboard_integration(self, jupyterlab_image):
# Test with ODH Dashboard NOTEBOOK_ARGS
def test_custom_server_settings(self, jupyterlab_image):
# Test various ServerApp configurations 10. Test Automation EnhancementsAdd to your CI pipeline: # .github/workflows/jupyterlab-tests.yml
- name: Run JupyterLab UI Tests
run: |
cd tests/browser
pnpm test -- --grep="jupyterlab"
- name: Run Extension Compatibility Tests
run: pytest tests/containers/workbenches/jupyterlab/extensions/ -v
- name: Performance Regression Check
run: pytest tests/containers/workbenches/jupyterlab/performance/ --benchmark Implementation Priority
This comprehensive testing strategy will give you confidence in JupyterLab updates and catch regressions early. Start with the high-priority tests and gradually expand coverage. 🧠 Learnings used
|
||
jupyter-bokeh = "~=4.0.5" | ||
jupyter-server = "~=2.15.0" | ||
jupyter-server = "~=2.16.0" | ||
jupyter-server-proxy = "~=4.4.0" | ||
jupyter-server-terminals = "~=0.5.3" | ||
jupyterlab-git = "~=0.50.1" | ||
jupyterlab-lsp = "~=5.1.0" | ||
jupyterlab-widgets = "~=3.0.13" | ||
jupyterlab-lsp = "~=5.1.1" | ||
jupyterlab-widgets = "~=3.0.15" | ||
jupyter-resource-usage = "~=1.1.1" | ||
nbdime = "~=4.0.2" | ||
nbgitpuller = "~=1.2.2" | ||
|
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@coderabbitai I've examined the release notes of jupyterlab and also investigated the opened regressions and bugs in the bug tracker at https://github.com/jupyterlab/jupyterlab/issues?q=is%3Aissue%20state%3Aopen%20label%3Atag%3ARegression. Do you see anything disconcerting there that I should know when considering this version update?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🌐 Web query:
💡 Result:
JupyterLab 4.4.x and 4.3.x: Known Issues, Regression Bugs, and Open Problems
Recent versions of JupyterLab (4.4.0, 4.4.1, 4.4.2, 4.4.3, 4.4.4, and 4.3.x) have introduced several new features and enhancements, but they have also seen the emergence of notable bugs, including some regressions and persistent issues. Below is a summary of the currently open and documented problems impacting these releases, with references to GitHub issues and community feedback.
Regression and High-Impact Bugs
use_pending_kernels=True
, refreshing the page can block UI if kernels are pendingperCommTarget
fails with multiple kernelsUser-Reported Usability Regressions and Glitches
Cell insertion and scrolling glitches:
Users on JupyterLab 4.2.x and newer report severe UI disruptions, including:
Cells not rendering while scrolling:
Several issues where notebook cells intermittently do not render after scrolling, particularly in long notebooks or after executing cells that produce long outputs. The problem is hard to reliably reproduce, occurs across browsers and platforms, and may be related to the notebook "lazy scrolling" feature#4. A fix is reportedly in progress but not confirmed as of June 2025.
Erratic scroll jumps:
Notebooks experience sudden view "jumps" especially after executing cells with
display.clear_output(wait=True)
, impacting navigation in long documents. This is linked to windowing mode and known in milestone 4.2.x#7.Open Bugs from GitHub
After submitting input to an input() prompt and executing with Shift+Enter, focus returns to the input box instead of advancing to the next cell. This is intentional but has generated debate regarding usability#5.
The
JUPYTER_CONFIG_DIR
environment variable is reportedly ignored in recent releases, impacting custom configuration workflows#17637.Addressed but Still Active Community Concerns
Users have highlighted the loss of certain behaviors (such as automatic prompt resizing in the console) and lack of configuration options to restore them. These regressions have drawn significant feedback but aren't slated for immediate fixes#6.
The changelog for 4.4.x lists several bug fixes addressing rendering, stream output, and UI polish, but some rendering and performance problems (especially with scrolling and large documents) remain as open issues#8.
Summary Table: Key Regression and Usability Issues
jupyterlab-execute-time
bug on empty cellsJUPYTER_CONFIG_DIR
)Where to Track and Report Issues
For the latest regression bugs, monitor the JupyterLab regression-tagged issues on GitHub.
All open and recently closed issues, including for 4.4.x and 4.3.x, are tracked on the JupyterLab GitHub issues page.
The Jupyter Discourse forums6 host active discussions on user experience regressions.
Conclusion
JupyterLab releases 4.4.x and 4.3.x introduced several improvements but also surfaced critical regressions and usability issues. Major pain points include console prompt resizing, scrolling bugs, unpredictable UI behavior with cells, configuration problems, and rendering/load glitches—some of which remain unresolved as of late June 2025. Users experiencing these or related issues are encouraged to check open GitHub issues, contribute reproducible reports, and follow updates for pending fixes.
Citations:
🌐 Web query:
💡 Result:
There is no official release of JupyterLab version 4.4.4 as of June 28, 2025. The latest documented stable releases are JupyterLab 4.4.0 and 4.4.114. However, here is a summary of relevant information about the 4.4 series, including release notes, changelog, and information relevant to breaking changes, regressions, and known issues:
JupyterLab 4.4 Series Highlights
Release Notes and Changelog
ServiceManager
with pluginsnone
windowing modeBreaking Changes and Extension Migration
@jupyterlab/application
and related packages bumped major versions to allow alternateServiceManager
implementations and more permissive options.@jupyterlab/documentsearch
and@jupyterlab/toc
APIs have been fully reworked.ICompletionProvider
and register withICompletionProviderManager
.Regressions and Known Issues
@jupyterlab/services
importSummary Table
Note
There is no mention of a JupyterLab 4.4.4 release in official documentation or changelogs as of this date. If you are looking for the latest stable release, it is either 4.4.0 or 4.4.114. For extension authors, review the 4.x migration guide for breaking changes6.
Citations:
🌐 Web query:
💡 Result:
As of June 28, 2025, there are no open issues labeled as "Regression" in the JupyterLab repository on GitHub for the years 2024 and 2025. This suggests that any regression-related issues identified during this period have been addressed and resolved.
For instance, in November 2024, an issue titled "Disappearing cells regression in JupyterLab 4.3.1" was reported. This issue was subsequently fixed in a later release. (github.com)
Similarly, in June 2024, a regression related to the "jupyterlab-gridwidth" extension was identified and addressed. (github.com)
These examples indicate that the JupyterLab development team actively monitors and resolves regression issues to maintain the stability and performance of the platform.
Citations:
@jiridanek Based on my investigation, there are several significant concerns you should be aware of before proceeding with the JupyterLab upgrade from 4.2.7 to 4.4.4:
Critical Issues Identified
🚨 High-Impact Regressions
Console Prompt Auto-Resize Removed - From 4.4.0+, IPython console prompts no longer auto-resize, which was standard behavior in 4.3.x and earlier. This impacts multiline code entry usability.
Severe Scrolling and Cell Issues - Users report:
Stream Output Persistence Bug - After cleaning cells, some stream outputs remain visible (this is a regression - previously fixed, now reappeared)
use_pending_kernels=True
JUPYTER_CONFIG_DIR
reportedly ignoredVersion Availability Concern
Important: One source indicates that JupyterLab 4.4.4 may not be officially released yet, with 4.4.0/4.4.1 being the latest documented stable releases. You should verify the actual availability and stability of 4.4.4.
Recommendation
Given the severity of the scrolling/cell rendering issues and the console prompt regression, I'd recommend caution with this upgrade, especially for production environments. Consider:
The scrolling and cell manipulation issues alone could significantly impact user productivity in notebook environments.
🧠 Learnings used
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you provide a list of links into the issue tracker for the issues mentioned, and any additional impactful issues you can find?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Length of output: 8483
@jiridanek Here are the direct GitHub issue tracker links for the problems I mentioned, plus additional impactful issues I found:
🚨 Critical Regression Issues (4.4.x series)
Issues I specifically mentioned:
Console prompt auto-resize removal regression
Stream output persistence bug (regression)
Execute-time extension bug in 4.4.2
📜 Scrolling & Cell Rendering Issues
Issues I mentioned:
Notebooks jumping back while scrolling
Cells not rendering when scrolling
Additional scrolling issues:
🔧 Additional Impactful Issues
📊 Summary of Most Critical Issues for 4.4.x Upgrade
The highest impact issues that directly affect the 4.2.7 → 4.4.4 upgrade are:
Note: Interestingly, there are currently no issues labeled as High Priority or Critical in the repository, which might suggest either different labeling practices or that the most severe issues have been resolved.
The concentration of 20 open regression-labeled issues is concerning for a production upgrade, especially with several affecting core notebook functionality like scrolling, cell execution, and console interaction.
🧠 Learnings used