matlab-proxy 0.24.2__tar.gz → 0.25.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of matlab-proxy might be problematic. Click here for more details.
- matlab_proxy-0.25.0/PKG-INFO +246 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/README.md +26 -12
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/index.jsx +5 -11
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/reducers/index.js +0 -22
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/selectors/index.js +0 -2
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/test/utils/responses.js +0 -2
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/test/utils/state.js +0 -2
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/app.py +1 -3
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/app_state.py +39 -13
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/constants.py +2 -1
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/matlab/startup.m +1 -4
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/settings.py +15 -11
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/mwi/environment_variables.py +2 -27
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/mwi/exceptions.py +14 -1
- matlab_proxy-0.25.0/matlab_proxy.egg-info/PKG-INFO +246 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy.egg-info/entry_points.txt +0 -1
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy.egg-info/requires.txt +2 -3
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/setup.py +4 -4
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/integration/integration_tests_with_license/test_http_end_points.py +4 -5
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/test_app.py +94 -45
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/test_app_state.py +8 -7
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/test_non_dev_mode.py +4 -4
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/test_settings.py +0 -15
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/util/mwi/test_token_auth.py +5 -5
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/util/test_mw.py +2 -2
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/util/test_util.py +7 -7
- matlab-proxy-0.24.2/PKG-INFO +0 -213
- matlab-proxy-0.24.2/matlab_proxy.egg-info/PKG-INFO +0 -213
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/LICENSE.md +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/MANIFEST.in +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/.eslintrc.json +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/.gitignore +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/README.md +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/eslint.config.js +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/index.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/index.html +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/package-lock.json +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/package.json +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/public/favicon.ico +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/public/manifest.json +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/public/robots.txt +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/actionCreators/actionCreators.spec.js +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/actionCreators/index.js +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/actions/index.js +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/css/bootstrap.min.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/css/site7.min.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/glyphicons-halflings-regular.eot +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/glyphicons-halflings-regular.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/glyphicons-halflings-regular.ttf +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/glyphicons-halflings-regular.woff +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/glyphicons-halflings-regular.woff2 +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/mathworks-eps.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/mathworks-eps.ttf +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/mathworks-eps.woff +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/mathworks-pictograms.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/mathworks-pictograms.ttf +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/mathworks-pictograms.woff +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/mathworks.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/mathworks.ttf +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/fonts/mathworks.woff +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/images/bug_reports/workaround.gif +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/images/responsive/global/ico-header-account-hover.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/images/responsive/global/ico-header-account.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/images/responsive/global/ico-header-contact-hover.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/images/responsive/global/ico-header-contact.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/3p/images/responsive/global/ico-sprite.png +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/App.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/App.spec.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/IdleBufferTimeouts.spec.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/App/MATLAB-env-blur.png +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Confirmation/Confirmation.spec.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Confirmation/index.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Controls/Controls.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Controls/Controls.spec.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Controls/feedback.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Controls/help.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Controls/index.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Controls/restart.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Controls/sign-out.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Controls/start.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Controls/stop.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Controls/terminate.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/EntitlementSelector/EntitlementSelector.spec.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/EntitlementSelector/index.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Error/Error.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Error/Error.spec.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Error/index.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Help/Help.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Help/Help.spec.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Help/index.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Information/Information.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Information/Information.spec.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Information/index.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/LicensingGatherer/ExistingLicense.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/LicensingGatherer/ExistingLicense.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/LicensingGatherer/LicenseGatherer.spec.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/LicensingGatherer/LicensingGatherer.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/LicensingGatherer/MHLM.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/LicensingGatherer/NLM.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/LicensingGatherer/index.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/MatlabJsd/MatlabJsd.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/MatlabJsd/MatlabJsd.spec.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/MatlabJsd/index.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Overlay/Overlay.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Overlay/Overlay.spec.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/Overlay/index.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/OverlayTrigger/OverlayTrigger.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/OverlayTrigger/OverlayTrigger.spec.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/OverlayTrigger/ResizeOverlayTrigger.spec.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/OverlayTrigger/arrow.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/OverlayTrigger/gripper.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/OverlayTrigger/index.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/OverlayTrigger/trigger-error.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/OverlayTrigger/trigger-ok.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/ShutdownWarning/ShutdownWarning.css +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/components/ShutdownWarning/index.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/constants.js +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/main.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/reducers/reducers.spec.js +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/selectors/selectors.spec.js +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/setupTests.js +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/src/test/utils/react-test.jsx +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/gui/vite.config.js +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/default_configuration.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/devel.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/icons/matlab.svg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/matlab/evaluateUserMatlabCode.m +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/event_loop.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/list_servers.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/mw.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/mwi/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/mwi/custom_http_headers.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/mwi/download.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/mwi/embedded_connector/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/mwi/embedded_connector/helpers.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/mwi/embedded_connector/request.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/mwi/logger.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/mwi/token_auth.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/mwi/validators.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/system.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy/util/windows.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy.egg-info/SOURCES.txt +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy.egg-info/dependency_links.txt +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy.egg-info/not-zip-safe +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy.egg-info/top_level.txt +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/lib/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/lib/api.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/storage/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/storage/file_repository.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/storage/interface.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/storage/server.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/utils/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/utils/auth.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/utils/constants.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/utils/environment_variables.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/utils/helpers.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/utils/logger.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/web/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/web/app.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/web/monitor.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/matlab_proxy_manager/web/watcher.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/setup.cfg +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/integration/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/integration/integration_tests_with_license/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/integration/integration_tests_with_license/conftest.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/integration/integration_tests_without_license/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/integration/integration_tests_without_license/conftest.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/integration/integration_tests_without_license/test_matlab_is_down_if_unlicensed.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/integration/utils/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/integration/utils/integration_tests_utils.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/integration/utils/licensing.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/conftest.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/test_constants.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/test_ddux.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/test_devel.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/util/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/util/mwi/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/util/mwi/embedded_connector/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/util/mwi/embedded_connector/test_helpers.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/util/mwi/embedded_connector/test_request.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/util/mwi/test_custom_http_headers.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/util/mwi/test_download.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/util/mwi/test_logger.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/unit/util/mwi/test_validators.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/utils/__init__.py +0 -0
- {matlab-proxy-0.24.2 → matlab_proxy-0.25.0}/tests/utils/logging_util.py +0 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: matlab-proxy
|
|
3
|
+
Version: 0.25.0
|
|
4
|
+
Summary: Python® package enables you to launch MATLAB® and access it from a web browser.
|
|
5
|
+
Home-page: https://github.com/mathworks/matlab-proxy/
|
|
6
|
+
Author: The MathWorks, Inc.
|
|
7
|
+
Author-email: cloud@mathworks.com
|
|
8
|
+
License: MATHWORKS CLOUD REFERENCE ARCHITECTURE LICENSE
|
|
9
|
+
Keywords: Proxy,MATLAB Proxy,MATLAB,MATLAB Javascript Desktop,MATLAB Web Desktop,Remote MATLAB Web Access
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Natural Language :: English
|
|
12
|
+
Classifier: Programming Language :: Python
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Requires-Python: ~=3.8
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE.md
|
|
20
|
+
Requires-Dist: aiohttp>=3.7.4
|
|
21
|
+
Requires-Dist: aiohttp_session[secure]
|
|
22
|
+
Requires-Dist: importlib-metadata
|
|
23
|
+
Requires-Dist: importlib-resources
|
|
24
|
+
Requires-Dist: psutil
|
|
25
|
+
Requires-Dist: watchdog
|
|
26
|
+
Requires-Dist: requests
|
|
27
|
+
Provides-Extra: dev
|
|
28
|
+
Requires-Dist: aiohttp-devtools; extra == "dev"
|
|
29
|
+
Requires-Dist: black; extra == "dev"
|
|
30
|
+
Requires-Dist: pytest; extra == "dev"
|
|
31
|
+
Requires-Dist: pytest-env; extra == "dev"
|
|
32
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
33
|
+
Requires-Dist: pytest-timeout; extra == "dev"
|
|
34
|
+
Requires-Dist: pytest-mock; extra == "dev"
|
|
35
|
+
Requires-Dist: pytest-aiohttp; extra == "dev"
|
|
36
|
+
Requires-Dist: pytest-timeout; extra == "dev"
|
|
37
|
+
Requires-Dist: psutil; extra == "dev"
|
|
38
|
+
Requires-Dist: urllib3; extra == "dev"
|
|
39
|
+
Requires-Dist: pytest-playwright; extra == "dev"
|
|
40
|
+
|
|
41
|
+
# MATLAB Proxy
|
|
42
|
+
[](https://github.com/mathworks/matlab-proxy/actions) [](https://pypi.python.org/pypi/matlab-proxy) [](https://codecov.io/gh/mathworks/matlab-proxy) [](https://pepy.tech/project/matlab-proxy)
|
|
43
|
+
|
|
44
|
+
----
|
|
45
|
+
|
|
46
|
+
Use this Python® package `matlab-proxy` to start MATLAB® and access it from a web browser.
|
|
47
|
+
|
|
48
|
+
Install this package to create an executable `matlab-proxy-app`, which starts MATLAB and provides you a URL to access it.
|
|
49
|
+
|
|
50
|
+
MATLAB Proxy is under active development. For support or to report issues, see [Feedback](#feedback).
|
|
51
|
+
|
|
52
|
+
----
|
|
53
|
+
|
|
54
|
+
**Table of Contents**
|
|
55
|
+
- [Requirements](#requirements)
|
|
56
|
+
- [Installation](#installation)
|
|
57
|
+
- [PyPI](#pypi)
|
|
58
|
+
- [Building From Sources](#building-from-sources)
|
|
59
|
+
- [Usage](#usage)
|
|
60
|
+
- [Examples](#examples)
|
|
61
|
+
- [Limitations](#limitations)
|
|
62
|
+
- [Security](#security)
|
|
63
|
+
- [Feedback](#feedback)
|
|
64
|
+
|
|
65
|
+
## Requirements
|
|
66
|
+
* MATLAB® R2020b or later, installed and added to the system PATH.
|
|
67
|
+
```bash
|
|
68
|
+
# Confirm MATLAB is on the PATH
|
|
69
|
+
which matlab
|
|
70
|
+
```
|
|
71
|
+
* The dependencies required to run MATLAB.
|
|
72
|
+
For details, refer to the Dockerfiles in the [matlab-deps](https://github.com/mathworks-ref-arch/container-images/tree/master/matlab-deps) repository for your desired version of MATLAB.
|
|
73
|
+
|
|
74
|
+
* X Virtual Frame Buffer (Xvfb) (only for Linux® based systems):
|
|
75
|
+
|
|
76
|
+
Installing Xvfb is optional (starting v0.11.0 of matlab-proxy) but highly recommended. Xvfb enables graphical abilities like plots and figures in the MATLAB desktop.
|
|
77
|
+
To install Xvfb on your Linux machine, use:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# On a Debian/Ubuntu based system:
|
|
81
|
+
$ sudo apt install xvfb
|
|
82
|
+
```
|
|
83
|
+
```bash
|
|
84
|
+
# On a RHEL based system:
|
|
85
|
+
$ yum search Xvfb
|
|
86
|
+
xorg-x11-server-Xvfb.x86_64 : A X Windows System virtual framebuffer X server.
|
|
87
|
+
|
|
88
|
+
$ sudo yum install xorg-x11-server-Xvfb
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
* Fluxbox Window Manager (only for Linux® based systems):
|
|
93
|
+
|
|
94
|
+
Installing fluxbox is optional but required to use Simulink Online.
|
|
95
|
+
|
|
96
|
+
Install fluxbox using:
|
|
97
|
+
```bash
|
|
98
|
+
# On a Debian/Ubuntu based system:
|
|
99
|
+
$ sudo apt install fluxbox
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
* Python versions: **3.8** | **3.9** | **3.10** | **3.11**
|
|
103
|
+
* [Browser Requirements](https://www.mathworks.com/support/requirements/browser-requirements.html)
|
|
104
|
+
* Supported Operating Systems:
|
|
105
|
+
* Linux®
|
|
106
|
+
* Windows® Operating System ( starting v0.4.0 of matlab-proxy )
|
|
107
|
+
* MacOS (starting v0.5.0 of matlab-proxy )
|
|
108
|
+
See [Platform Support](#platform-support) for more information
|
|
109
|
+
|
|
110
|
+
## Installation
|
|
111
|
+
|
|
112
|
+
### PyPI
|
|
113
|
+
This repository can be installed directly from the Python Package Index.
|
|
114
|
+
```bash
|
|
115
|
+
python -m pip install matlab-proxy
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Building From Sources
|
|
119
|
+
Building from sources requires Node.js® version 18 or higher. [Click here to install Node.js](https://nodejs.org/en/)
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
git clone https://github.com/mathworks/matlab-proxy.git
|
|
123
|
+
|
|
124
|
+
cd matlab-proxy
|
|
125
|
+
|
|
126
|
+
python -m pip install .
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Installing the package creates an executable called `matlab-proxy-app`, which is placed onto your system PATH by `pip`, usually in: `$HOME/.local/bin/`
|
|
130
|
+
```bash
|
|
131
|
+
# Confirm it is on the PATH
|
|
132
|
+
which matlab-proxy-app
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Usage
|
|
136
|
+
|
|
137
|
+
Once the `matlab-proxy` package is installed.
|
|
138
|
+
|
|
139
|
+
* Open a terminal and start `matlab-proxy-app`. On Linux, the command would be
|
|
140
|
+
```bash
|
|
141
|
+
env MWI_BASE_URL="/matlab" matlab-proxy-app
|
|
142
|
+
```
|
|
143
|
+
`MWI_BASE_URL` is an environment variable which controls the link on which MATLAB can be accessed.
|
|
144
|
+
For a detailed listing of all environment variables. See [Advanced-Usage.md](./Advanced-Usage.md)
|
|
145
|
+
|
|
146
|
+
Running the above command will print text out on your terminal, which will contain the URL to access MATLAB. For example:
|
|
147
|
+
```
|
|
148
|
+
Access MATLAB at
|
|
149
|
+
http://localhost:44549/matlab/index.html
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
* Open the the link above in a web browser. If prompted to do so, enter credentials for a MathWorks account associated with a MATLAB license. If you are using a network license manager, then change to the _Network License Manager_ tab and enter the license server address instead. To determine the appropriate method for your license type, consult [MATLAB Licensing Info](./MATLAB-Licensing-Info.md).
|
|
153
|
+
<p align="center">
|
|
154
|
+
<img width="400" src="https://github.com/mathworks/matlab-proxy/raw/main/img/licensing_GUI.png">
|
|
155
|
+
</p>
|
|
156
|
+
|
|
157
|
+
* Wait for the MATLAB session to start. *This can take several minutes*.
|
|
158
|
+
<p align="center">
|
|
159
|
+
<img width="800" src="https://github.com/mathworks/matlab-proxy/raw/main/img/MATLAB_Desktop.png">
|
|
160
|
+
</p>
|
|
161
|
+
|
|
162
|
+
* To manage the MATLAB session, click the tools icon shown below.
|
|
163
|
+
<p align="center">
|
|
164
|
+
<img width="100" src="https://github.com/mathworks/matlab-proxy/raw/main/img/tools_icon.png">
|
|
165
|
+
</p>
|
|
166
|
+
|
|
167
|
+
* Clicking the tools icon opens a status panel with buttons like the ones below:
|
|
168
|
+
<p align="center">
|
|
169
|
+
<img width="800" src="https://github.com/mathworks/matlab-proxy/raw/main/img/status_panel.png">
|
|
170
|
+
</p>
|
|
171
|
+
|
|
172
|
+
The following options are available in the status panel (some options are only available in a specific context):
|
|
173
|
+
|
|
174
|
+
| Option | Description |
|
|
175
|
+
| ---- | ---- |
|
|
176
|
+
| Start MATLAB | Start your MATLAB session. Available if MATLAB is stopped.|
|
|
177
|
+
| Restart MATLAB | Restart your MATLAB session. Available if MATLAB is running or starting.|
|
|
178
|
+
| Stop MATLAB | Stop your MATLAB session. Use this option if you want to free up RAM and CPU resources. Available if MATLAB is running or starting.|
|
|
179
|
+
| Sign Out | Sign out of MATLAB session. Use this to stop MATLAB and sign in with an alternative account. Available if using online licensing.|
|
|
180
|
+
| Unset License Server Address | Unset network license manager server address. Use this to stop MATLAB and enter new licensing information. Available if using network license manager.|
|
|
181
|
+
| Feedback | Provide feedback. Opens a new tab to create an issue on GitHub.|
|
|
182
|
+
| Help | Open a help pop-up for a detailed description of the options.|
|
|
183
|
+
|
|
184
|
+
## Examples
|
|
185
|
+
* For installing/usage in a Docker container, see this [Dockerfile](./examples/Dockerfile) and its [README](./examples/README.md).
|
|
186
|
+
* For upgrading **matlab-proxy** in an existing Docker image, see this [Dockerfile.upgrade.matlab-proxy](./examples/Dockerfile.upgrade.matlab-proxy) and its [README](./examples/README.md#upgrading-matlab-proxy-package-in-a-docker-image).
|
|
187
|
+
* For usage in a Jupyter environment, see [jupyter-matlab-proxy](https://github.com/mathworks/jupyter-matlab-proxy).
|
|
188
|
+
|
|
189
|
+
## Platform Support
|
|
190
|
+
|
|
191
|
+
### Linux
|
|
192
|
+
This package is fully supported for the Linux Operating System.
|
|
193
|
+
|
|
194
|
+
### Windows
|
|
195
|
+
|
|
196
|
+
Windows® Operating System support was introduced in package version `v0.4.0`.
|
|
197
|
+
Install the version >=0.4.0 to use the package on Windows.
|
|
198
|
+
```bash
|
|
199
|
+
# To upgrade an existing installation of matlab-proxy package:
|
|
200
|
+
$ pip install --upgrade matlab-proxy>=0.4.0
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### MacOS
|
|
204
|
+
|
|
205
|
+
MacOS support was introduced in package version `v0.5.0`.
|
|
206
|
+
It works best for MATLAB versions newer than R2022b.
|
|
207
|
+
Note: Figures *also* open in a separate windows on versions of MATLAB older than R2022b.
|
|
208
|
+
|
|
209
|
+
Install the version >=0.5.0 to use the package on MacOS.
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
# To upgrade an existing installation of matlab-proxy package:
|
|
213
|
+
$ pip install --upgrade matlab-proxy>=0.5.0
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Windows Subsystem for Linux (WSL 2)
|
|
217
|
+
|
|
218
|
+
To install `matlab-proxy` in WSL 2, follow the steps mentioned in the [Installation Guide for WSL 2](./install_guides/wsl2/README.md).
|
|
219
|
+
|
|
220
|
+
## Using an already activated MATLAB with matlab-proxy
|
|
221
|
+
`matlab-proxy` version `v0.7.0` introduces support for using an existing MATLAB license. Use the Existing License option only if you have an activated MATLAB. This allows you to start MATLAB without authenticating every time.
|
|
222
|
+
|
|
223
|
+
## Limitations
|
|
224
|
+
This package supports the same set of MATLAB features and commands as MATLAB® Online. For the full list, see
|
|
225
|
+
[Specifications and Limitations for MATLAB Online](https://www.mathworks.com/products/matlab-online/limitations.html).
|
|
226
|
+
|
|
227
|
+
Simulink Online is supported exclusively on Linux platforms starting from MATLAB R2024b.
|
|
228
|
+
|
|
229
|
+
## Security
|
|
230
|
+
We take your security concerns seriously, and will attempt to address all concerns.
|
|
231
|
+
`matlab-proxy` uses several other python packages, and depend on them to fix their own vulnerabilities.
|
|
232
|
+
|
|
233
|
+
All security patches will be released as a new version of the package.
|
|
234
|
+
Patches are never backported to older versions or releases of the package.
|
|
235
|
+
Using the latest version will provide the latest available security updates or patches.
|
|
236
|
+
|
|
237
|
+
## Feedback
|
|
238
|
+
|
|
239
|
+
We encourage you to try this repository with your environment and provide feedback.
|
|
240
|
+
If you encounter a technical issue or have an enhancement request, create an issue [here](https://github.com/mathworks/matlab-proxy/issues)
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
Copyright 2020-2025 The MathWorks, Inc.
|
|
245
|
+
|
|
246
|
+
---
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
----
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
Use this Python® package `matlab-proxy` to start MATLAB® and access it from a web browser.
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Install this package to create an executable `matlab-proxy-app`, which starts MATLAB and provides you a URL to access it.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
MATLAB Proxy is under active development. For support or to report issues, see [Feedback](#feedback).
|
|
11
11
|
|
|
12
12
|
----
|
|
13
13
|
|
|
@@ -23,17 +23,19 @@ The MATLAB Proxy is under active development. For support or to report issues, s
|
|
|
23
23
|
- [Feedback](#feedback)
|
|
24
24
|
|
|
25
25
|
## Requirements
|
|
26
|
-
* MATLAB® R2020b or later
|
|
26
|
+
* MATLAB® R2020b or later, installed and added to the system PATH.
|
|
27
27
|
```bash
|
|
28
28
|
# Confirm MATLAB is on the PATH
|
|
29
29
|
which matlab
|
|
30
30
|
```
|
|
31
31
|
* The dependencies required to run MATLAB.
|
|
32
|
-
|
|
32
|
+
For details, refer to the Dockerfiles in the [matlab-deps](https://github.com/mathworks-ref-arch/container-images/tree/master/matlab-deps) repository for your desired version of MATLAB.
|
|
33
33
|
|
|
34
|
-
* X Virtual Frame Buffer (Xvfb)
|
|
34
|
+
* X Virtual Frame Buffer (Xvfb) (only for Linux® based systems):
|
|
35
|
+
|
|
36
|
+
Installing Xvfb is optional (starting v0.11.0 of matlab-proxy) but highly recommended. Xvfb enables graphical abilities like plots and figures in the MATLAB desktop.
|
|
37
|
+
To install Xvfb on your Linux machine, use:
|
|
35
38
|
|
|
36
|
-
Install it on your linux machine using:
|
|
37
39
|
```bash
|
|
38
40
|
# On a Debian/Ubuntu based system:
|
|
39
41
|
$ sudo apt install xvfb
|
|
@@ -46,7 +48,17 @@ The MATLAB Proxy is under active development. For support or to report issues, s
|
|
|
46
48
|
$ sudo yum install xorg-x11-server-Xvfb
|
|
47
49
|
```
|
|
48
50
|
|
|
49
|
-
|
|
51
|
+
|
|
52
|
+
* Fluxbox Window Manager (only for Linux® based systems):
|
|
53
|
+
|
|
54
|
+
Installing fluxbox is optional but required to use Simulink Online.
|
|
55
|
+
|
|
56
|
+
Install fluxbox using:
|
|
57
|
+
```bash
|
|
58
|
+
# On a Debian/Ubuntu based system:
|
|
59
|
+
$ sudo apt install fluxbox
|
|
60
|
+
```
|
|
61
|
+
|
|
50
62
|
* Python versions: **3.8** | **3.9** | **3.10** | **3.11**
|
|
51
63
|
* [Browser Requirements](https://www.mathworks.com/support/requirements/browser-requirements.html)
|
|
52
64
|
* Supported Operating Systems:
|
|
@@ -84,7 +96,7 @@ which matlab-proxy-app
|
|
|
84
96
|
|
|
85
97
|
Once the `matlab-proxy` package is installed.
|
|
86
98
|
|
|
87
|
-
* Open a
|
|
99
|
+
* Open a terminal and start `matlab-proxy-app`. On Linux, the command would be
|
|
88
100
|
```bash
|
|
89
101
|
env MWI_BASE_URL="/matlab" matlab-proxy-app
|
|
90
102
|
```
|
|
@@ -131,7 +143,7 @@ The following options are available in the status panel (some options are only a
|
|
|
131
143
|
|
|
132
144
|
## Examples
|
|
133
145
|
* For installing/usage in a Docker container, see this [Dockerfile](./examples/Dockerfile) and its [README](./examples/README.md).
|
|
134
|
-
* For upgrading **matlab-proxy** in an existing Docker image, see this [Dockerfile.upgrade.matlab-proxy](./examples/Dockerfile.upgrade.matlab-proxy) and its [README](./examples/README.md#upgrading-matlab-proxy-package-in-a-docker-image)
|
|
146
|
+
* For upgrading **matlab-proxy** in an existing Docker image, see this [Dockerfile.upgrade.matlab-proxy](./examples/Dockerfile.upgrade.matlab-proxy) and its [README](./examples/README.md#upgrading-matlab-proxy-package-in-a-docker-image).
|
|
135
147
|
* For usage in a Jupyter environment, see [jupyter-matlab-proxy](https://github.com/mathworks/jupyter-matlab-proxy).
|
|
136
148
|
|
|
137
149
|
## Platform Support
|
|
@@ -169,8 +181,10 @@ To install `matlab-proxy` in WSL 2, follow the steps mentioned in the [Installat
|
|
|
169
181
|
`matlab-proxy` version `v0.7.0` introduces support for using an existing MATLAB license. Use the Existing License option only if you have an activated MATLAB. This allows you to start MATLAB without authenticating every time.
|
|
170
182
|
|
|
171
183
|
## Limitations
|
|
172
|
-
This package supports the same
|
|
173
|
-
[
|
|
184
|
+
This package supports the same set of MATLAB features and commands as MATLAB® Online. For the full list, see
|
|
185
|
+
[Specifications and Limitations for MATLAB Online](https://www.mathworks.com/products/matlab-online/limitations.html).
|
|
186
|
+
|
|
187
|
+
Simulink Online is supported exclusively on Linux platforms starting from MATLAB R2024b.
|
|
174
188
|
|
|
175
189
|
## Security
|
|
176
190
|
We take your security concerns seriously, and will attempt to address all concerns.
|
|
@@ -31,8 +31,6 @@ import {
|
|
|
31
31
|
selectLicensingMhlmHasEntitlements,
|
|
32
32
|
selectIsEntitled,
|
|
33
33
|
selectLicensingInfo,
|
|
34
|
-
selectUseMOS,
|
|
35
|
-
selectUseMRE,
|
|
36
34
|
selectIsConcurrent,
|
|
37
35
|
selectWasEverActive,
|
|
38
36
|
selectIsConcurrencyEnabled,
|
|
@@ -73,8 +71,6 @@ function App () {
|
|
|
73
71
|
const isAuthenticated = useSelector(selectIsAuthenticated);
|
|
74
72
|
const authEnabled = useSelector(selectAuthEnabled);
|
|
75
73
|
const licensingInfo = useSelector(selectLicensingInfo);
|
|
76
|
-
const useMOS = useSelector(selectUseMOS);
|
|
77
|
-
const useMRE = useSelector(selectUseMRE);
|
|
78
74
|
const isSessionConcurrent = useSelector(selectIsConcurrent);
|
|
79
75
|
const isActiveClient = useSelector(selectIsActiveClient);
|
|
80
76
|
const isConcurrencyEnabled = useSelector(selectIsConcurrencyEnabled);
|
|
@@ -163,12 +159,11 @@ function App () {
|
|
|
163
159
|
}, []);
|
|
164
160
|
|
|
165
161
|
const htmlToRenderMATLAB = () => {
|
|
166
|
-
let theHtmlToRenderMATLAB =
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
162
|
+
let theHtmlToRenderMATLAB = 'index-jsd-cr.html';
|
|
163
|
+
|
|
164
|
+
// Add mre query parameter
|
|
165
|
+
theHtmlToRenderMATLAB += `?mre=${encodeURIComponent(fullyQualifiedUrl)}`;
|
|
166
|
+
|
|
172
167
|
return theHtmlToRenderMATLAB;
|
|
173
168
|
};
|
|
174
169
|
|
|
@@ -377,7 +372,6 @@ function App () {
|
|
|
377
372
|
// process in development mode
|
|
378
373
|
|
|
379
374
|
// MW Internal Comment: See g2992889 for a discussion on why a FQDN is required in the MRE parameter.
|
|
380
|
-
// MW Internal Comment: Using websocket on breaks some UI components : `./index-matlabonlineserver.html?websocket=on&mre=${fullyQualifiedUrl}`;
|
|
381
375
|
const matlabUrl = process.env.NODE_ENV === 'development'
|
|
382
376
|
? 'http://localhost:31515/index-jsd-cr.html'
|
|
383
377
|
: `./${htmlToRenderMATLAB()}`;
|
|
@@ -41,26 +41,6 @@ export function authEnabled (state = false, action) {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
// Stores information on whether to use MOS HTML while rendering MATLAB.
|
|
45
|
-
export function useMOS (state = false, action) {
|
|
46
|
-
switch (action.type) {
|
|
47
|
-
case RECEIVE_ENV_CONFIG:
|
|
48
|
-
return action.config.useMOS;
|
|
49
|
-
default:
|
|
50
|
-
return state;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Stores information on whether to provide MRE parameter to HTML while rendering MATLAB.
|
|
55
|
-
export function useMRE (state = false, action) {
|
|
56
|
-
switch (action.type) {
|
|
57
|
-
case RECEIVE_ENV_CONFIG:
|
|
58
|
-
return action.config.useMRE;
|
|
59
|
-
default:
|
|
60
|
-
return state;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
44
|
// Stores timeout duration for idle timer.
|
|
65
45
|
export function idleTimeoutDuration (state = null, action) {
|
|
66
46
|
switch (action.type) {
|
|
@@ -413,8 +393,6 @@ export const matlab = combineReducers({
|
|
|
413
393
|
versionOnPath: matlabVersionOnPath,
|
|
414
394
|
supportedVersions: supportedMatlabVersions,
|
|
415
395
|
busyStatus: matlabBusyStatus,
|
|
416
|
-
useMOS,
|
|
417
|
-
useMRE
|
|
418
396
|
});
|
|
419
397
|
|
|
420
398
|
export const serverStatus = combineReducers({
|
|
@@ -19,8 +19,6 @@ export const selectServerStatusFetchFailCount = state => state.serverStatus.fetc
|
|
|
19
19
|
export const selectLoadUrl = state => state.loadUrl;
|
|
20
20
|
export const selectError = state => state.error;
|
|
21
21
|
export const selectWarnings = state => state.warnings;
|
|
22
|
-
export const selectUseMOS = state => state.matlab.useMOS === true;
|
|
23
|
-
export const selectUseMRE = state => state.matlab.useMRE === true;
|
|
24
22
|
export const selectAuthEnabled = state => state.authentication.enabled;
|
|
25
23
|
export const selectAuthToken = state => state.authentication.token;
|
|
26
24
|
export const selectIsAuthenticated = state => state.authentication.status === true;
|
|
@@ -28,8 +28,6 @@ export const getEnvConfigResponse = {
|
|
|
28
28
|
doc_url: state.envConfig.doc_url,
|
|
29
29
|
extension_name: state.envConfig.extension_name,
|
|
30
30
|
extension_name_short_description: state.envConfig.extension_name_short_description,
|
|
31
|
-
useMOS: state.matlab.useMOS,
|
|
32
|
-
useMRE: state.matlab.useMRE,
|
|
33
31
|
authentication: state.authentication,
|
|
34
32
|
matlab: {
|
|
35
33
|
version: state.matlab.versionOnPath,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2020-
|
|
1
|
+
# Copyright 2020-2025 The MathWorks, Inc.
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import json
|
|
@@ -197,8 +197,6 @@ async def get_env_config(req):
|
|
|
197
197
|
state = req.app["state"]
|
|
198
198
|
config = state.settings["env_config"]
|
|
199
199
|
|
|
200
|
-
config["useMOS"] = mwi_env.Experimental.should_use_mos_html()
|
|
201
|
-
config["useMRE"] = mwi_env.Experimental.should_use_mre_html()
|
|
202
200
|
config["isConcurrencyEnabled"] = IS_CONCURRENCY_CHECK_ENABLED
|
|
203
201
|
# In a previously authenticated session, if the url is accessed without the token(using session cookie), send the token as well.
|
|
204
202
|
config["authentication"] = {
|
|
@@ -34,6 +34,7 @@ from matlab_proxy.util.mwi.exceptions import (
|
|
|
34
34
|
OnlineLicensingError,
|
|
35
35
|
UIVisibleFatalError,
|
|
36
36
|
XvfbError,
|
|
37
|
+
WindowManagerError,
|
|
37
38
|
log_error,
|
|
38
39
|
)
|
|
39
40
|
|
|
@@ -548,7 +549,7 @@ class AppState:
|
|
|
548
549
|
|
|
549
550
|
if system.is_linux():
|
|
550
551
|
# If Xvfb is on system PATH, check if it up and running.
|
|
551
|
-
if self.settings
|
|
552
|
+
if self.settings.get("is_xvfb_available", None) and (
|
|
552
553
|
xvfb_process is None or xvfb_process.returncode is not None
|
|
553
554
|
):
|
|
554
555
|
logger.debug(
|
|
@@ -994,17 +995,11 @@ class AppState:
|
|
|
994
995
|
# The mwi_logs_dir is where MATLAB will write any subsequent logs
|
|
995
996
|
matlab_env["MATLAB_LOG_DIR"] = str(self.mwi_logs_dir)
|
|
996
997
|
|
|
997
|
-
# Set MW_CONNECTOR_CONTEXT_ROOT
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
)
|
|
1003
|
-
|
|
1004
|
-
# Setup Simulink Online which requires a pre-warm stage
|
|
1005
|
-
if mwi_env.Experimental.is_simulink_enabled():
|
|
1006
|
-
logger.info("Enabling usage of Simulink Online...")
|
|
1007
|
-
matlab_env["PREWARM_SIMULINK"] = "true"
|
|
998
|
+
# Set MW_CONNECTOR_CONTEXT_ROOT
|
|
999
|
+
matlab_env["MW_CONNECTOR_CONTEXT_ROOT"] = self.settings.get("base_url", "/")
|
|
1000
|
+
logger.info(
|
|
1001
|
+
f"MW_CONNECTOR_CONTEXT_ROOT is set to: {matlab_env['MW_CONNECTOR_CONTEXT_ROOT']}"
|
|
1002
|
+
)
|
|
1008
1003
|
|
|
1009
1004
|
# Env setup related to logging
|
|
1010
1005
|
# Very verbose logging in debug mode
|
|
@@ -1053,6 +1048,31 @@ class AppState:
|
|
|
1053
1048
|
key: value for key, value in env_vars.items() if not key.startswith(prefix)
|
|
1054
1049
|
}
|
|
1055
1050
|
|
|
1051
|
+
async def __start_window_manager(self, display=None):
|
|
1052
|
+
if display is None:
|
|
1053
|
+
logger.info("Not starting fluxbox as display is not provided")
|
|
1054
|
+
return None
|
|
1055
|
+
|
|
1056
|
+
wm_env = os.environ.copy()
|
|
1057
|
+
wm_env["DISPLAY"] = display
|
|
1058
|
+
wm_cmd = ["fluxbox", "-screen", "0", "-log", "/dev/null"]
|
|
1059
|
+
|
|
1060
|
+
try:
|
|
1061
|
+
logger.info(f"Starting window manager with DISPLAY={wm_env['DISPLAY']}")
|
|
1062
|
+
return await asyncio.create_subprocess_exec(
|
|
1063
|
+
*wm_cmd, close_fds=False, env=wm_env, stderr=asyncio.subprocess.PIPE
|
|
1064
|
+
)
|
|
1065
|
+
|
|
1066
|
+
except Exception as err:
|
|
1067
|
+
self.error = WindowManagerError(
|
|
1068
|
+
"Unable to start the Fluxbox Window Manager due to the following error: "
|
|
1069
|
+
+ err
|
|
1070
|
+
)
|
|
1071
|
+
# Log the error on the console.
|
|
1072
|
+
log_error(logger, self.error)
|
|
1073
|
+
|
|
1074
|
+
return None
|
|
1075
|
+
|
|
1056
1076
|
async def __start_xvfb_process(self):
|
|
1057
1077
|
"""Private method to start the xvfb process. Will set appropriate
|
|
1058
1078
|
errors to self.error and return None when any exceptions are raised.
|
|
@@ -1074,7 +1094,7 @@ class AppState:
|
|
|
1074
1094
|
)
|
|
1075
1095
|
self.settings["matlab_display"] = ":" + str(display_port)
|
|
1076
1096
|
|
|
1077
|
-
logger.
|
|
1097
|
+
logger.info(f"Started Xvfb with PID={xvfb.pid} on DISPLAY={display_port}")
|
|
1078
1098
|
|
|
1079
1099
|
return xvfb
|
|
1080
1100
|
|
|
@@ -1304,7 +1324,13 @@ class AppState:
|
|
|
1304
1324
|
|
|
1305
1325
|
self.processes["xvfb"] = xvfb
|
|
1306
1326
|
|
|
1327
|
+
# Start Window Manager on linux if possible
|
|
1328
|
+
if system.is_linux() and self.settings["is_windowmanager_available"]:
|
|
1329
|
+
display = self.settings.get("matlab_display", None)
|
|
1330
|
+
await self.__start_window_manager(display)
|
|
1331
|
+
|
|
1307
1332
|
try:
|
|
1333
|
+
|
|
1308
1334
|
# Prepare ready file for the MATLAB process.
|
|
1309
1335
|
self.create_logs_dir_for_MATLAB()
|
|
1310
1336
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2023-
|
|
1
|
+
# Copyright 2023-2025 The MathWorks, Inc.
|
|
2
2
|
from typing import Final, List
|
|
3
3
|
|
|
4
4
|
"""This module defines project-level constants"""
|
|
@@ -24,6 +24,7 @@ SUPPORTED_MATLAB_VERSIONS: Final[List[str]] = [
|
|
|
24
24
|
"R2023b",
|
|
25
25
|
"R2024a",
|
|
26
26
|
"R2024b",
|
|
27
|
+
"R2025a",
|
|
27
28
|
]
|
|
28
29
|
|
|
29
30
|
# This constant when set to True restricts the number of active sessions to one
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
% Copyright 2020-
|
|
1
|
+
% Copyright 2020-2025 The MathWorks, Inc.
|
|
2
2
|
|
|
3
|
-
if (strlength(getenv('MWI_BASE_URL')) > 0)
|
|
4
|
-
connector.internal.setConfig('contextRoot', getenv('MWI_BASE_URL'));
|
|
5
|
-
end
|
|
6
3
|
evalc('connector.internal.Worker.start');
|
|
7
4
|
|
|
8
5
|
% Add-on explorer is not supported in this environment.
|
|
@@ -218,6 +218,7 @@ def get_dev_settings(config):
|
|
|
218
218
|
),
|
|
219
219
|
"warnings": [],
|
|
220
220
|
"is_xvfb_available": False,
|
|
221
|
+
"is_windowmanager_available": False,
|
|
221
222
|
"mwi_idle_timeout": None,
|
|
222
223
|
}
|
|
223
224
|
|
|
@@ -271,12 +272,21 @@ def get(config_name=matlab_proxy.get_default_config_name(), dev=False):
|
|
|
271
272
|
settings.update(get_server_settings(config_name))
|
|
272
273
|
|
|
273
274
|
settings["is_xvfb_available"] = True if shutil.which("Xvfb") else False
|
|
275
|
+
settings["is_windowmanager_available"] = (
|
|
276
|
+
True if shutil.which("fluxbox") else False
|
|
277
|
+
)
|
|
274
278
|
|
|
275
279
|
# Warn user if xvfb is not available on system path.
|
|
276
|
-
if system.is_linux()
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
+
if system.is_linux():
|
|
281
|
+
if not settings["is_xvfb_available"]:
|
|
282
|
+
warning = " Unable to find Xvfb on the system PATH. Xvfb enables graphical abilities like plots and figures in the MATLAB desktop.\nConsider adding Xvfb to the system PATH and restart matlab-proxy.\nFor details, see https://github.com/mathworks/matlab-proxy#requirements."
|
|
283
|
+
logger.warning(warning)
|
|
284
|
+
settings["warnings"].append(warning)
|
|
285
|
+
|
|
286
|
+
if not settings["is_windowmanager_available"]:
|
|
287
|
+
warning = " Unable to find fluxbox on the system PATH. To use Simulink Online, add Fluxbox to the system PATH and restart matlab-proxy. For details, see https://github.com/mathworks/matlab-proxy#requirements."
|
|
288
|
+
logger.warning(warning)
|
|
289
|
+
settings["warnings"].append(warning)
|
|
280
290
|
|
|
281
291
|
settings.update(get_matlab_settings())
|
|
282
292
|
|
|
@@ -674,12 +684,6 @@ def _get_matlab_cmd(matlab_executable_path, code_to_execute, nlm_conn_str):
|
|
|
674
684
|
if system.is_windows():
|
|
675
685
|
flag_to_hide_desktop.extend(["-noDisplayDesktop", "-wait", "-log"])
|
|
676
686
|
|
|
677
|
-
mpa_flags = (
|
|
678
|
-
mwi_env.Experimental.get_mpa_flags()
|
|
679
|
-
if mwi_env.Experimental.is_mpa_enabled()
|
|
680
|
-
else ""
|
|
681
|
-
)
|
|
682
|
-
|
|
683
687
|
profile_matlab_startup = (
|
|
684
688
|
"-timing" if mwi_env.Experimental.is_matlab_startup_profiling_enabled() else ""
|
|
685
689
|
)
|
|
@@ -691,7 +695,7 @@ def _get_matlab_cmd(matlab_executable_path, code_to_execute, nlm_conn_str):
|
|
|
691
695
|
"-softwareopengl",
|
|
692
696
|
# " v=mvm ",
|
|
693
697
|
*matlab_lic_mode,
|
|
694
|
-
|
|
698
|
+
"-externalUI",
|
|
695
699
|
profile_matlab_startup,
|
|
696
700
|
"-r",
|
|
697
701
|
code_to_execute,
|