matlab-proxy 0.23.1__tar.gz → 0.23.4__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.

Files changed (189) hide show
  1. {matlab-proxy-0.23.1/matlab_proxy.egg-info → matlab-proxy-0.23.4}/PKG-INFO +1 -1
  2. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/package-lock.json +32 -32
  3. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/app_state.py +55 -45
  4. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/settings.py +1 -1
  5. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/__init__.py +1 -1
  6. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/mwi/validators.py +1 -1
  7. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4/matlab_proxy.egg-info}/PKG-INFO +1 -1
  8. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/lib/api.py +90 -49
  9. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/storage/server.py +2 -2
  10. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/utils/helpers.py +38 -21
  11. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/web/app.py +92 -49
  12. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/web/monitor.py +1 -2
  13. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/web/watcher.py +11 -0
  14. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/setup.py +1 -1
  15. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/test_app_state.py +79 -4
  16. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/LICENSE.md +0 -0
  17. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/MANIFEST.in +0 -0
  18. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/README.md +0 -0
  19. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/.eslintrc.json +0 -0
  20. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/.gitignore +0 -0
  21. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/README.md +0 -0
  22. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/package.json +0 -0
  23. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/public/favicon.ico +0 -0
  24. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/public/index.html +0 -0
  25. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/public/manifest.json +0 -0
  26. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/public/robots.txt +0 -0
  27. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/actionCreators/actionCreators.spec.js +0 -0
  28. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/actionCreators/index.js +0 -0
  29. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/actions/index.js +0 -0
  30. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/css/bootstrap.min.css +0 -0
  31. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/css/site7.min.css +0 -0
  32. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/glyphicons-halflings-regular.eot +0 -0
  33. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/glyphicons-halflings-regular.svg +0 -0
  34. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/glyphicons-halflings-regular.ttf +0 -0
  35. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/glyphicons-halflings-regular.woff +0 -0
  36. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/glyphicons-halflings-regular.woff2 +0 -0
  37. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/mathworks-eps.svg +0 -0
  38. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/mathworks-eps.ttf +0 -0
  39. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/mathworks-eps.woff +0 -0
  40. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/mathworks-pictograms.svg +0 -0
  41. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/mathworks-pictograms.ttf +0 -0
  42. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/mathworks-pictograms.woff +0 -0
  43. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/mathworks.svg +0 -0
  44. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/mathworks.ttf +0 -0
  45. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/fonts/mathworks.woff +0 -0
  46. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/images/bug_reports/workaround.gif +0 -0
  47. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/images/responsive/global/ico-header-account-hover.svg +0 -0
  48. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/images/responsive/global/ico-header-account.svg +0 -0
  49. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/images/responsive/global/ico-header-contact-hover.svg +0 -0
  50. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/images/responsive/global/ico-header-contact.svg +0 -0
  51. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/3p/images/responsive/global/ico-sprite.png +0 -0
  52. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/App.css +0 -0
  53. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/App.spec.js +0 -0
  54. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/IdleBufferTimeouts.spec.js +0 -0
  55. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/MATLAB-env-blur.png +0 -0
  56. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/App/index.js +0 -0
  57. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Confirmation/Confirmation.spec.js +0 -0
  58. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Confirmation/index.js +0 -0
  59. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Controls/Controls.css +0 -0
  60. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Controls/Controls.spec.js +0 -0
  61. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Controls/feedback.svg +0 -0
  62. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Controls/help.svg +0 -0
  63. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Controls/index.js +0 -0
  64. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Controls/restart.svg +0 -0
  65. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Controls/sign-out.svg +0 -0
  66. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Controls/start.svg +0 -0
  67. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Controls/stop.svg +0 -0
  68. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Controls/terminate.svg +0 -0
  69. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/EntitlementSelector/EntitlementSelector.spec.js +0 -0
  70. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/EntitlementSelector/index.js +0 -0
  71. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Error/Error.css +0 -0
  72. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Error/Error.spec.js +0 -0
  73. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Error/index.js +0 -0
  74. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Help/Help.css +0 -0
  75. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Help/Help.spec.js +0 -0
  76. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Help/index.js +0 -0
  77. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Information/Information.css +0 -0
  78. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Information/Information.spec.js +0 -0
  79. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Information/index.js +0 -0
  80. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/LicensingGatherer/ExistingLicense.css +0 -0
  81. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/LicensingGatherer/ExistingLicense.js +0 -0
  82. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/LicensingGatherer/LicenseGatherer.spec.js +0 -0
  83. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/LicensingGatherer/LicensingGatherer.css +0 -0
  84. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/LicensingGatherer/MHLM.js +0 -0
  85. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/LicensingGatherer/NLM.js +0 -0
  86. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/LicensingGatherer/index.js +0 -0
  87. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/MatlabJsd/MatlabJsd.css +0 -0
  88. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/MatlabJsd/MatlabJsd.spec.js +0 -0
  89. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/MatlabJsd/index.js +0 -0
  90. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Overlay/Overlay.css +0 -0
  91. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Overlay/Overlay.spec.js +0 -0
  92. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/Overlay/index.js +0 -0
  93. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/OverlayTrigger/OverlayTrigger.css +0 -0
  94. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/OverlayTrigger/OverlayTrigger.spec.js +0 -0
  95. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/OverlayTrigger/ResizeOverlayTrigger.spec.js +0 -0
  96. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/OverlayTrigger/arrow.svg +0 -0
  97. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/OverlayTrigger/gripper.svg +0 -0
  98. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/OverlayTrigger/index.js +0 -0
  99. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/OverlayTrigger/trigger-error.svg +0 -0
  100. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/OverlayTrigger/trigger-ok.svg +0 -0
  101. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/ShutdownWarning/ShutdownWarning.css +0 -0
  102. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/components/ShutdownWarning/index.js +0 -0
  103. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/constants.js +0 -0
  104. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/index.css +0 -0
  105. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/index.js +0 -0
  106. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/jest.config.json +0 -0
  107. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/logo.svg +0 -0
  108. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/reducers/index.js +0 -0
  109. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/reducers/reducers.spec.js +0 -0
  110. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/selectors/index.js +0 -0
  111. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/selectors/selectors.spec.js +0 -0
  112. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/serviceWorker.js +0 -0
  113. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/setupTests.js +0 -0
  114. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/test/utils/react-test.js +0 -0
  115. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/test/utils/responses.js +0 -0
  116. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/gui/src/test/utils/state.js +0 -0
  117. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/__init__.py +0 -0
  118. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/app.py +0 -0
  119. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/constants.py +0 -0
  120. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/default_configuration.py +0 -0
  121. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/devel.py +0 -0
  122. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/icons/matlab.svg +0 -0
  123. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/matlab/evaluateUserMatlabCode.m +0 -0
  124. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/matlab/startup.m +0 -0
  125. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/event_loop.py +0 -0
  126. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/list_servers.py +0 -0
  127. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/mw.py +0 -0
  128. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/mwi/__init__.py +0 -0
  129. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/mwi/custom_http_headers.py +0 -0
  130. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/mwi/download.py +0 -0
  131. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/mwi/embedded_connector/__init__.py +0 -0
  132. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/mwi/embedded_connector/helpers.py +0 -0
  133. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/mwi/embedded_connector/request.py +0 -0
  134. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/mwi/environment_variables.py +0 -0
  135. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/mwi/exceptions.py +0 -0
  136. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/mwi/logger.py +0 -0
  137. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/mwi/token_auth.py +0 -0
  138. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/system.py +0 -0
  139. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy/util/windows.py +0 -0
  140. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy.egg-info/SOURCES.txt +0 -0
  141. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy.egg-info/dependency_links.txt +0 -0
  142. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy.egg-info/entry_points.txt +0 -0
  143. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy.egg-info/not-zip-safe +0 -0
  144. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy.egg-info/requires.txt +0 -0
  145. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy.egg-info/top_level.txt +0 -0
  146. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/__init__.py +0 -0
  147. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/lib/__init__.py +0 -0
  148. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/storage/__init__.py +0 -0
  149. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/storage/file_repository.py +0 -0
  150. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/storage/interface.py +0 -0
  151. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/utils/__init__.py +0 -0
  152. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/utils/auth.py +0 -0
  153. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/utils/constants.py +0 -0
  154. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/utils/environment_variables.py +0 -0
  155. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/utils/logger.py +0 -0
  156. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/matlab_proxy_manager/web/__init__.py +0 -0
  157. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/setup.cfg +0 -0
  158. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/integration/__init__.py +0 -0
  159. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/integration/integration_tests_with_license/__init__.py +0 -0
  160. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/integration/integration_tests_with_license/conftest.py +0 -0
  161. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/integration/integration_tests_with_license/test_http_end_points.py +0 -0
  162. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/integration/integration_tests_without_license/__init__.py +0 -0
  163. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/integration/integration_tests_without_license/conftest.py +0 -0
  164. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/integration/integration_tests_without_license/test_matlab_is_down_if_unlicensed.py +0 -0
  165. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/integration/utils/__init__.py +0 -0
  166. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/integration/utils/integration_tests_utils.py +0 -0
  167. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/integration/utils/licensing.py +0 -0
  168. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/__init__.py +0 -0
  169. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/conftest.py +0 -0
  170. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/test_app.py +0 -0
  171. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/test_constants.py +0 -0
  172. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/test_ddux.py +0 -0
  173. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/test_devel.py +0 -0
  174. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/test_non_dev_mode.py +0 -0
  175. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/test_settings.py +0 -0
  176. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/util/__init__.py +0 -0
  177. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/util/mwi/__init__.py +0 -0
  178. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/util/mwi/embedded_connector/__init__.py +0 -0
  179. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/util/mwi/embedded_connector/test_helpers.py +0 -0
  180. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/util/mwi/embedded_connector/test_request.py +0 -0
  181. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/util/mwi/test_custom_http_headers.py +0 -0
  182. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/util/mwi/test_download.py +0 -0
  183. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/util/mwi/test_logger.py +0 -0
  184. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/util/mwi/test_token_auth.py +0 -0
  185. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/util/mwi/test_validators.py +0 -0
  186. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/util/test_mw.py +0 -0
  187. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/unit/util/test_util.py +0 -0
  188. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/utils/__init__.py +0 -0
  189. {matlab-proxy-0.23.1 → matlab-proxy-0.23.4}/tests/utils/logging_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: matlab-proxy
3
- Version: 0.23.1
3
+ Version: 0.23.4
4
4
  Summary: Python® package enables you to launch MATLAB® and access it from a web browser.
5
5
  Home-page: https://github.com/mathworks/matlab-proxy/
6
6
  Author: The MathWorks, Inc.
@@ -6131,9 +6131,9 @@
6131
6131
  }
6132
6132
  },
6133
6133
  "node_modules/cookie": {
6134
- "version": "0.6.0",
6135
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
6136
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
6134
+ "version": "0.7.1",
6135
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
6136
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
6137
6137
  "engines": {
6138
6138
  "node": ">= 0.6"
6139
6139
  }
@@ -6213,9 +6213,9 @@
6213
6213
  }
6214
6214
  },
6215
6215
  "node_modules/cross-spawn": {
6216
- "version": "7.0.3",
6217
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
6218
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
6216
+ "version": "7.0.6",
6217
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
6218
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
6219
6219
  "dependencies": {
6220
6220
  "path-key": "^3.1.0",
6221
6221
  "shebang-command": "^2.0.0",
@@ -8449,16 +8449,16 @@
8449
8449
  }
8450
8450
  },
8451
8451
  "node_modules/express": {
8452
- "version": "4.21.0",
8453
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz",
8454
- "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==",
8452
+ "version": "4.21.1",
8453
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
8454
+ "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
8455
8455
  "dependencies": {
8456
8456
  "accepts": "~1.3.8",
8457
8457
  "array-flatten": "1.1.1",
8458
8458
  "body-parser": "1.20.3",
8459
8459
  "content-disposition": "0.5.4",
8460
8460
  "content-type": "~1.0.4",
8461
- "cookie": "0.6.0",
8461
+ "cookie": "0.7.1",
8462
8462
  "cookie-signature": "1.0.6",
8463
8463
  "debug": "2.6.9",
8464
8464
  "depd": "2.0.0",
@@ -9648,9 +9648,9 @@
9648
9648
  }
9649
9649
  },
9650
9650
  "node_modules/http-proxy-middleware": {
9651
- "version": "2.0.6",
9652
- "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
9653
- "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
9651
+ "version": "2.0.7",
9652
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz",
9653
+ "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==",
9654
9654
  "dependencies": {
9655
9655
  "@types/http-proxy": "^1.17.8",
9656
9656
  "http-proxy": "^1.18.1",
@@ -16208,9 +16208,9 @@
16208
16208
  }
16209
16209
  },
16210
16210
  "node_modules/rollup": {
16211
- "version": "2.79.1",
16212
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
16213
- "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
16211
+ "version": "2.79.2",
16212
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
16213
+ "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
16214
16214
  "bin": {
16215
16215
  "rollup": "dist/bin/rollup"
16216
16216
  },
@@ -23297,9 +23297,9 @@
23297
23297
  }
23298
23298
  },
23299
23299
  "cookie": {
23300
- "version": "0.6.0",
23301
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
23302
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw=="
23300
+ "version": "0.7.1",
23301
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
23302
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w=="
23303
23303
  },
23304
23304
  "cookie-signature": {
23305
23305
  "version": "1.0.6",
@@ -23358,9 +23358,9 @@
23358
23358
  }
23359
23359
  },
23360
23360
  "cross-spawn": {
23361
- "version": "7.0.3",
23362
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
23363
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
23361
+ "version": "7.0.6",
23362
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
23363
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
23364
23364
  "requires": {
23365
23365
  "path-key": "^3.1.0",
23366
23366
  "shebang-command": "^2.0.0",
@@ -24922,16 +24922,16 @@
24922
24922
  }
24923
24923
  },
24924
24924
  "express": {
24925
- "version": "4.21.0",
24926
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz",
24927
- "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==",
24925
+ "version": "4.21.1",
24926
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
24927
+ "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
24928
24928
  "requires": {
24929
24929
  "accepts": "~1.3.8",
24930
24930
  "array-flatten": "1.1.1",
24931
24931
  "body-parser": "1.20.3",
24932
24932
  "content-disposition": "0.5.4",
24933
24933
  "content-type": "~1.0.4",
24934
- "cookie": "0.6.0",
24934
+ "cookie": "0.7.1",
24935
24935
  "cookie-signature": "1.0.6",
24936
24936
  "debug": "2.6.9",
24937
24937
  "depd": "2.0.0",
@@ -25788,9 +25788,9 @@
25788
25788
  }
25789
25789
  },
25790
25790
  "http-proxy-middleware": {
25791
- "version": "2.0.6",
25792
- "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
25793
- "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
25791
+ "version": "2.0.7",
25792
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz",
25793
+ "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==",
25794
25794
  "requires": {
25795
25795
  "@types/http-proxy": "^1.17.8",
25796
25796
  "http-proxy": "^1.18.1",
@@ -30385,9 +30385,9 @@
30385
30385
  }
30386
30386
  },
30387
30387
  "rollup": {
30388
- "version": "2.79.1",
30389
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
30390
- "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
30388
+ "version": "2.79.2",
30389
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
30390
+ "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
30391
30391
  "requires": {
30392
30392
  "fsevents": "~2.3.2"
30393
30393
  }
@@ -58,13 +58,13 @@ class AppState:
58
58
  self.settings = settings
59
59
  self.processes = {"matlab": None, "xvfb": None}
60
60
 
61
- # Timeout for processes launched by matlab-proxy
61
+ # Timeout for processes started by matlab-proxy
62
62
  self.PROCESS_TIMEOUT = get_process_startup_timeout()
63
63
 
64
- # The port on which MATLAB(launched by this matlab-proxy process) starts on.
64
+ # The port on which MATLAB(started by this matlab-proxy process) starts on.
65
65
  self.matlab_port = None
66
66
 
67
- # The directory in which the instance of MATLAB (launched by this matlab-proxy process) will write logs to.
67
+ # The directory in which the instance of MATLAB (started by this matlab-proxy process) will write logs to.
68
68
  self.mwi_logs_dir = None
69
69
 
70
70
  # Dictionary of all files used to manage the MATLAB session.
@@ -99,7 +99,7 @@ class AppState:
99
99
  self.embedded_connector_start_time = None
100
100
 
101
101
  # Keep track of the state of the Embedded Connector.
102
- # If there is some problem with launching the Embedded Connector(say an issue with licensing),
102
+ # If there is some problem with starting the Embedded Connector(say an issue with licensing),
103
103
  # the state of MATLAB process in app_state will continue to be in a 'starting' indefinitely.
104
104
  # This variable can be either "up" or "down"
105
105
  self.embedded_connector_state = "down"
@@ -222,7 +222,7 @@ class AppState:
222
222
  def __delete_cached_config_file(self):
223
223
  """Deletes the cached config file"""
224
224
  try:
225
- logger.info(f"Deleting any cached config files!")
225
+ logger.debug(f"Deleting any cached config files!")
226
226
  os.remove(self.__get_cached_config_file())
227
227
  except FileNotFoundError:
228
228
  # The file being absent is acceptable.
@@ -230,7 +230,7 @@ class AppState:
230
230
 
231
231
  def __reset_and_delete_cached_config(self):
232
232
  """Reset licensing variable of the class and removes the cached config file."""
233
- logger.info(f"Resetting cached config information...")
233
+ logger.debug(f"Resetting cached config information...")
234
234
  self.licensing = None
235
235
  self.__delete_cached_config_file()
236
236
 
@@ -259,14 +259,14 @@ class AppState:
259
259
  # Default value
260
260
  self.licensing = None
261
261
 
262
- # If MWI_USE_EXISTING_LICENSE is set in environment, try launching MATLAB directly
262
+ # If MWI_USE_EXISTING_LICENSE is set in environment, try starting MATLAB directly
263
263
  if self.settings["mwi_use_existing_license"]:
264
264
  self.licensing = {"type": "existing_license"}
265
265
  logger.debug(
266
266
  f"{mwi_env.get_env_name_mwi_use_existing_license()} variable set in environment"
267
267
  )
268
268
  logger.info(
269
- f"!!! Launching MATLAB without providing any additional licensing information. This requires MATLAB to have been activated on the machine from which its being launched !!!"
269
+ f"!!! Starting MATLAB without providing any additional licensing information. This requires MATLAB to have been activated on the machine from which its being started !!!"
270
270
  )
271
271
 
272
272
  # Delete old config info from cache to ensure its wiped out first before persisting new info.
@@ -276,7 +276,7 @@ class AppState:
276
276
  elif self.settings.get("nlm_conn_str", None) is not None:
277
277
  nlm_licensing_str = self.settings.get("nlm_conn_str")
278
278
  logger.debug(f"Found NLM:[{nlm_licensing_str}] set in environment")
279
- logger.debug(f"Using NLM string to connect ... ")
279
+ logger.info(f"Using NLM:{nlm_licensing_str} to connect...")
280
280
  self.licensing = {
281
281
  "type": "nlm",
282
282
  "conn_str": nlm_licensing_str,
@@ -307,7 +307,7 @@ class AppState:
307
307
  "type": "nlm",
308
308
  "conn_str": licensing["conn_str"],
309
309
  }
310
- logger.info("Using cached NLM licensing to launch MATLAB")
310
+ logger.debug("Using cached NLM licensing to start MATLAB")
311
311
 
312
312
  elif licensing["type"] == "mhlm":
313
313
  self.licensing = {
@@ -335,12 +335,12 @@ class AppState:
335
335
  )
336
336
  if successful_update:
337
337
  logger.debug(
338
- "Using cached Online Licensing to launch MATLAB."
338
+ "Using cached Online Licensing to start MATLAB."
339
339
  )
340
340
  else:
341
341
  self.__reset_and_delete_cached_config()
342
342
  elif licensing["type"] == "existing_license":
343
- logger.info("Using cached existing license to launch MATLAB")
343
+ logger.debug("Using cached existing license to start MATLAB")
344
344
  self.licensing = licensing
345
345
  else:
346
346
  # Somethings wrong, licensing is neither NLM or MHLM
@@ -920,14 +920,14 @@ class AppState:
920
920
  try:
921
921
  for session_file in self.mwi_server_session_files.items():
922
922
  if session_file[1] is not None:
923
- logger.info(f"Deleting:{session_file[1]}")
923
+ logger.debug(f"Deleting:{session_file[1]}")
924
924
  session_file[1].unlink()
925
925
  except FileNotFoundError:
926
926
  # Files may not exist if cleanup is called before they are created
927
927
  pass
928
928
 
929
929
  async def __setup_env_for_matlab(self) -> dict:
930
- """Configure the environment variables required for launching MATLAB by matlab-proxy.
930
+ """Configure the environment variables required for starting MATLAB by matlab-proxy.
931
931
 
932
932
  Returns:
933
933
  [dict]: Containing keys as the Env variable names and values are its corresponding values.
@@ -979,17 +979,17 @@ class AppState:
979
979
  if system.is_linux():
980
980
  if self.settings.get("matlab_display", None):
981
981
  matlab_env["DISPLAY"] = self.settings["matlab_display"]
982
- logger.info(
983
- f"Using the display number supplied by Xvfb process'{matlab_env['DISPLAY']}' for launching MATLAB"
982
+ logger.debug(
983
+ f"Using the display number supplied by Xvfb process'{matlab_env['DISPLAY']}' for starting MATLAB"
984
984
  )
985
985
  else:
986
986
  if "DISPLAY" in matlab_env:
987
- logger.info(
988
- f"Using the existing DISPLAY environment variable with value:{matlab_env['DISPLAY']} for launching MATLAB"
987
+ logger.debug(
988
+ f"Using the existing DISPLAY environment variable with value:{matlab_env['DISPLAY']} for starting MATLAB"
989
989
  )
990
990
  else:
991
- logger.info(
992
- "No DISPLAY environment variable found. Launching MATLAB without it."
991
+ logger.debug(
992
+ "No DISPLAY environment variable found. Starting MATLAB without it."
993
993
  )
994
994
 
995
995
  # The matlab ready file is written into this location(self.mwi_logs_dir) by MATLAB
@@ -1080,11 +1080,11 @@ class AppState:
1080
1080
 
1081
1081
  return xvfb
1082
1082
 
1083
- # If something went wrong ie. exception is raised in launching Xvfb process, capture error for logging
1083
+ # If something went wrong ie. exception is raised in starting Xvfb process, capture error for logging
1084
1084
  # and for showing the error on the frontend.
1085
1085
 
1086
1086
  # FileNotFoundError: is thrown if Xvfb is not found on System Path.
1087
- # XvfbError: is thrown if something went wrong when launching Xvfb process.
1087
+ # XvfbError: is thrown if something went wrong when starting Xvfb process.
1088
1088
  except (FileNotFoundError, XvfbError) as err:
1089
1089
  self.error = XvfbError(
1090
1090
  """Unable to start the Xvfb process. Ensure Xvfb is installed and is available on the System Path. See https://github.com/mathworks/matlab-proxy#requirements for information on Xvfb"""
@@ -1178,7 +1178,7 @@ class AppState:
1178
1178
  else:
1179
1179
  time_diff = time.time() - self.embedded_connector_start_time
1180
1180
  if time_diff > self.PROCESS_TIMEOUT:
1181
- # Since max allowed startup time has elapsed, it means that MATLAB is in a stuck state and cannot be launched.
1181
+ # Since max allowed startup time has elapsed, it means that MATLAB is stuck and is unable to start.
1182
1182
  # Set the error and stop matlab.
1183
1183
  user_visible_error = "Unable to start MATLAB.\nTry again by clicking Start MATLAB."
1184
1184
 
@@ -1187,32 +1187,27 @@ class AppState:
1187
1187
  # So, raise a generic error wherever appropriate
1188
1188
  generic_error = f"MATLAB did not start in {int(self.PROCESS_TIMEOUT)} seconds. Use Windows Remote Desktop to check for any errors."
1189
1189
  logger.error(f":{this_task}: {generic_error}")
1190
- if len(self.logs["matlab"]) == 0:
1191
- await self.__force_stop_matlab(
1192
- user_visible_error, this_task
1193
- )
1194
- # Breaking out of the loop to end this task as matlab-proxy was unable to launch MATLAB successfully
1195
- # even after waiting for self.PROCESS_TIMEOUT
1196
- break
1197
- else:
1198
- # Do not stop the MATLAB process or break from the loop (the error type is unknown)
1199
- self.error = MatlabError(generic_error)
1200
- await asyncio.sleep(5)
1201
- continue
1190
+
1191
+ # Stopping the MATLAB process would remove the UI window displaying the error too.
1192
+ # Do not stop the MATLAB or break from the loop (as the error is still unknown)
1193
+ self.error = MatlabError(generic_error)
1194
+ await asyncio.sleep(5)
1195
+ continue
1202
1196
 
1203
1197
  else:
1204
- # If there are no logs after the max startup time has elapsed, it means that MATLAB is in a stuck state and cannot be launched.
1198
+ # If there are no logs after the max startup time has elapsed, it means that MATLAB is stuck and is unable to start.
1205
1199
  # Set the error and stop matlab.
1206
1200
  logger.error(
1207
1201
  f":{this_task}: MATLAB did not start in {int(self.PROCESS_TIMEOUT)} seconds!"
1208
1202
  )
1209
- if len(self.logs["matlab"]) == 0:
1210
- await self.__force_stop_matlab(
1211
- user_visible_error, this_task
1212
- )
1213
- # Breaking out of the loop to end this task as matlab-proxy was unable to launch MATLAB successfully
1214
- # even after waiting for self.PROCESS_TIMEOUT
1215
- break
1203
+ # MATLAB can be stopped on posix systems because the stderr pipe of the MATLAB process is
1204
+ # read (by __matlab_stderr_reader_posix() task) and is logged by matlab-proxy appropriately.
1205
+ await self.__force_stop_matlab(
1206
+ user_visible_error, this_task
1207
+ )
1208
+ # Breaking out of the loop to end this task as matlab-proxy was unable to start MATLAB successfully
1209
+ # even after waiting for self.PROCESS_TIMEOUT
1210
+ break
1216
1211
 
1217
1212
  else:
1218
1213
  logger.debug(
@@ -1410,7 +1405,7 @@ class AppState:
1410
1405
  if session_file_path is not None:
1411
1406
  self.matlab_session_files[session_file_name] = None
1412
1407
  with contextlib.suppress(FileNotFoundError):
1413
- logger.info(f"Deleting:{session_file_path}")
1408
+ logger.debug(f"Deleting:{session_file_path}")
1414
1409
  session_file_path.unlink()
1415
1410
 
1416
1411
  # In posix systems, variable matlab is an instance of asyncio.subprocess.Process()
@@ -1432,11 +1427,26 @@ class AppState:
1432
1427
  else:
1433
1428
  logger.debug("Sending HTTP request to stop the MATLAB process...")
1434
1429
  try:
1430
+ import sys
1431
+
1435
1432
  # Send HTTP request
1436
1433
  await self.__send_stop_request_to_matlab()
1437
1434
 
1435
+ # Close the stderr stream to prevent indefinite hanging on it due to a child
1436
+ # process inheriting it, fixes https://github.com/mathworks/matlab-proxy/issues/44
1437
+ stderr_stream = matlab._transport.get_pipe_transport(
1438
+ sys.stderr.fileno()
1439
+ )
1440
+ if stderr_stream:
1441
+ logger.debug(
1442
+ "Closing matlab process stderr stream: %s",
1443
+ stderr_stream,
1444
+ )
1445
+ stderr_stream.close()
1446
+
1438
1447
  # Wait for matlab to shutdown gracefully
1439
1448
  await matlab.wait()
1449
+
1440
1450
  assert (
1441
1451
  matlab.returncode == 0
1442
1452
  ), "Failed to gracefully shutdown MATLAB via the embedded connector"
@@ -1496,7 +1506,7 @@ class AppState:
1496
1506
  if system.is_posix():
1497
1507
  xvfb = self.processes["xvfb"]
1498
1508
  if xvfb is not None and xvfb.returncode is None:
1499
- logger.info(f"Terminating Xvfb (PID={xvfb.pid})")
1509
+ logger.debug(f"Terminating Xvfb (PID={xvfb.pid})")
1500
1510
  xvfb.terminate()
1501
1511
  waiters.append(xvfb.wait())
1502
1512
 
@@ -103,7 +103,7 @@ def get_matlab_executable_and_root_path():
103
103
  # Note, error messages are formatted as multi-line strings and the front end displays them as is.
104
104
  error_message = "Unable to find MATLAB on the system PATH. Add MATLAB to the system PATH, and restart matlab-proxy."
105
105
 
106
- logger.info(error_message)
106
+ logger.error(error_message)
107
107
  raise MatlabInstallError(error_message)
108
108
 
109
109
 
@@ -98,7 +98,7 @@ def prepare_site(app, runner):
98
98
  )
99
99
  break
100
100
  except:
101
- logger.info(f"Failed to launch the site on port {p}")
101
+ logger.error(f"Failed to launch the site on port {p}")
102
102
 
103
103
  return site
104
104
 
@@ -326,7 +326,7 @@ def validate_matlab_root_path(matlab_root: Path, is_custom_matlab_root: bool):
326
326
 
327
327
  try:
328
328
  __validate_if_paths_exist([matlab_root])
329
- logger.info(
329
+ logger.debug(
330
330
  f"MATLAB root path: {matlab_root} exists, continuing to verify its validity..."
331
331
  )
332
332
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: matlab-proxy
3
- Version: 0.23.1
3
+ Version: 0.23.4
4
4
  Summary: Python® package enables you to launch MATLAB® and access it from a web browser.
5
5
  Home-page: https://github.com/mathworks/matlab-proxy/
6
6
  Author: The MathWorks, Inc.