matlab-proxy 0.23.4__py3-none-any.whl → 0.24.2__py3-none-any.whl
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/app_state.py +48 -29
- matlab_proxy/gui/index.html +20 -1
- matlab_proxy/gui/static/css/index.BSVLACuY.css +10 -0
- matlab_proxy/gui/static/js/index.c3NLxnRM.js +64 -0
- matlab_proxy/settings.py +136 -86
- matlab_proxy/util/mwi/embedded_connector/helpers.py +2 -2
- matlab_proxy/util/mwi/embedded_connector/request.py +1 -1
- matlab_proxy/util/mwi/logger.py +1 -2
- matlab_proxy/util/mwi/validators.py +19 -11
- {matlab_proxy-0.23.4.dist-info → matlab_proxy-0.24.2.dist-info}/METADATA +3 -3
- {matlab_proxy-0.23.4.dist-info → matlab_proxy-0.24.2.dist-info}/RECORD +42 -57
- matlab_proxy_manager/lib/api.py +21 -18
- matlab_proxy_manager/storage/server.py +26 -1
- tests/unit/conftest.py +1 -2
- tests/unit/test_app_state.py +30 -3
- tests/unit/test_settings.py +190 -11
- tests/unit/util/mwi/test_logger.py +1 -2
- tests/unit/util/mwi/test_validators.py +12 -7
- matlab_proxy/gui/asset-manifest.json +0 -44
- matlab_proxy/gui/static/css/main.efa05ff9.css +0 -13
- matlab_proxy/gui/static/css/main.efa05ff9.css.map +0 -1
- matlab_proxy/gui/static/js/main.ce0f5505.js +0 -3
- matlab_proxy/gui/static/js/main.ce0f5505.js.LICENSE.txt +0 -59
- matlab_proxy/gui/static/js/main.ce0f5505.js.map +0 -1
- matlab_proxy/gui/static/media/arrow.0c2968b90bd9a64c8c3f.svg +0 -4
- matlab_proxy/gui/static/media/feedback.6e8d50eb812cf35e0e76.svg +0 -1
- matlab_proxy/gui/static/media/gripper.9defbc5e76d0de8bb6e0.svg +0 -1
- matlab_proxy/gui/static/media/help.15e5bfab03a2b9c7148e.svg +0 -1
- matlab_proxy/gui/static/media/ico-header-contact-hover.0958c44200d781def822.svg +0 -17
- matlab_proxy/gui/static/media/ico-header-contact.ae9169c8dcae37c6e04b.svg +0 -17
- matlab_proxy/gui/static/media/restart.7987508a01e84678361a.svg +0 -1
- matlab_proxy/gui/static/media/sign-out.08356b675ec854afaa77.svg +0 -1
- matlab_proxy/gui/static/media/start.50c4596fab2049b4a3a3.svg +0 -1
- matlab_proxy/gui/static/media/stop.30c9a9ab6d625032235a.svg +0 -1
- matlab_proxy/gui/static/media/terminate.7ea1363ee0fa72344ef6.svg +0 -1
- /matlab_proxy/gui/static/media/{MATLAB-env-blur.4fc94edbc82d3184e5cb.png → MATLAB-env-blur.NupTbPv_.png} +0 -0
- /matlab_proxy/gui/static/media/{glyphicons-halflings-regular.82b1212e45a2bc35dd73.woff → glyphicons-halflings-regular.BKjkU69z.woff} +0 -0
- /matlab_proxy/gui/static/media/{glyphicons-halflings-regular.5be1347c682810f199c7.eot → glyphicons-halflings-regular.BUJKDMgK.eot} +0 -0
- /matlab_proxy/gui/static/media/{glyphicons-halflings-regular.060b2710bdbbe3dfe48b.svg → glyphicons-halflings-regular.CSehLiBc.svg} +0 -0
- /matlab_proxy/gui/static/media/{glyphicons-halflings-regular.4692b9ec53fd5972caa2.ttf → glyphicons-halflings-regular.DrwTMapi.ttf} +0 -0
- /matlab_proxy/gui/static/media/{glyphicons-halflings-regular.be810be3a3e14c682a25.woff2 → glyphicons-halflings-regular.DzqM6ju8.woff2} +0 -0
- /matlab_proxy/gui/static/media/{ico-header-account-hover.89438e91d0632893b106.svg → ico-header-account-hover.-jQHo6Wx.svg} +0 -0
- /matlab_proxy/gui/static/media/{ico-header-account.86b10d7b4a2a511f6ca9.svg → ico-header-account.CJCFoo5a.svg} +0 -0
- /matlab_proxy/gui/static/media/{ico-sprite.cbdb66c0ea4c2a7fd21c.png → ico-sprite.DXGLgzq9.png} +0 -0
- /matlab_proxy/gui/static/media/{mathworks-eps.4d20e0ee46ea74bccfc1.ttf → mathworks-eps.CGNQALa9.ttf} +0 -0
- /matlab_proxy/gui/static/media/{mathworks-eps.df1428dfa69cea896c05.svg → mathworks-eps.DrkCtQtG.svg} +0 -0
- /matlab_proxy/gui/static/media/{mathworks-eps.e5c41e8478df02cbdce1.woff → mathworks-eps.Ds7lQbql.woff} +0 -0
- /matlab_proxy/gui/static/media/{mathworks-pictograms.3fc6513a06dce552eeb1.woff → mathworks-pictograms.BdqxEfBR.woff} +0 -0
- /matlab_proxy/gui/static/media/{mathworks-pictograms.f6f087b008b5a9435f26.svg → mathworks-pictograms.CCLweoD4.svg} +0 -0
- /matlab_proxy/gui/static/media/{mathworks-pictograms.6e128c0e7fc1a11f92ee.ttf → mathworks-pictograms.DZhFdRSm.ttf} +0 -0
- /matlab_proxy/gui/static/media/{mathworks.80a3218e1ba29f0573fb.svg → mathworks.C-qsbhDy.svg} +0 -0
- /matlab_proxy/gui/static/media/{mathworks.c422935b9ae545ac2ab5.ttf → mathworks.Ceplx86V.ttf} +0 -0
- /matlab_proxy/gui/static/media/{mathworks.37a563ef6aeda1593bf6.woff → mathworks.D08X1Vp8.woff} +0 -0
- /matlab_proxy/gui/static/media/{trigger-error.3f1c4ef23ab8f3e60b0e.svg → trigger-error.QEdsGL-m.svg} +0 -0
- /matlab_proxy/gui/static/media/{trigger-ok.7b9c238be42f685c4fa7.svg → trigger-ok.Dzg8OIrk.svg} +0 -0
- {matlab_proxy-0.23.4.dist-info → matlab_proxy-0.24.2.dist-info}/LICENSE.md +0 -0
- {matlab_proxy-0.23.4.dist-info → matlab_proxy-0.24.2.dist-info}/WHEEL +0 -0
- {matlab_proxy-0.23.4.dist-info → matlab_proxy-0.24.2.dist-info}/entry_points.txt +0 -0
- {matlab_proxy-0.23.4.dist-info → matlab_proxy-0.24.2.dist-info}/top_level.txt +0 -0
matlab_proxy/settings.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2020-
|
|
1
|
+
# Copyright 2020-2025 The MathWorks, Inc.
|
|
2
2
|
|
|
3
3
|
import datetime
|
|
4
4
|
import os
|
|
@@ -47,7 +47,7 @@ def get_process_startup_timeout():
|
|
|
47
47
|
return int(custom_startup_timeout)
|
|
48
48
|
|
|
49
49
|
else:
|
|
50
|
-
logger.
|
|
50
|
+
logger.warning(
|
|
51
51
|
f"The value set for {mwi_env.get_env_name_process_startup_timeout()}:{custom_startup_timeout} is not a number. Using {constants.DEFAULT_PROCESS_START_TIMEOUT} as the default value"
|
|
52
52
|
)
|
|
53
53
|
return constants.DEFAULT_PROCESS_START_TIMEOUT
|
|
@@ -74,7 +74,7 @@ def get_matlab_executable_and_root_path():
|
|
|
74
74
|
matlab_root_path = Path(custom_matlab_root_path)
|
|
75
75
|
|
|
76
76
|
# Terminate process if invalid Custom Path was provided!
|
|
77
|
-
mwi.validators.validate_matlab_root_path(
|
|
77
|
+
matlab_root_path = mwi.validators.validate_matlab_root_path(
|
|
78
78
|
matlab_root_path, is_custom_matlab_root=True
|
|
79
79
|
)
|
|
80
80
|
|
|
@@ -101,10 +101,9 @@ def get_matlab_executable_and_root_path():
|
|
|
101
101
|
|
|
102
102
|
# Control only gets here if custom matlab root was not set AND which matlab returned no results.
|
|
103
103
|
# Note, error messages are formatted as multi-line strings and the front end displays them as is.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
raise MatlabInstallError(error_message)
|
|
104
|
+
raise MatlabInstallError(
|
|
105
|
+
"Unable to find MATLAB on the system PATH. Add MATLAB to the system PATH, and restart matlab-proxy."
|
|
106
|
+
)
|
|
108
107
|
|
|
109
108
|
|
|
110
109
|
def get_matlab_version(matlab_root_path):
|
|
@@ -126,7 +125,16 @@ def get_matlab_version(matlab_root_path):
|
|
|
126
125
|
tree = ET.parse(version_info_file_path)
|
|
127
126
|
root = tree.getroot()
|
|
128
127
|
|
|
129
|
-
|
|
128
|
+
matlab_version = root.find("release").text
|
|
129
|
+
|
|
130
|
+
# If the matlab on system PATH is a wrapper script, then it would not be possible to determine MATLAB root (inturn not being able to determine MATLAB version)
|
|
131
|
+
# unless MWI_CUSTOM_MATLAB_ROOT is set. Raising only a warning as the matlab version is only required for communicating with MHLM.
|
|
132
|
+
if not matlab_version:
|
|
133
|
+
logger.warning(
|
|
134
|
+
f"Could not determine MATLAB version from MATLAB root path: {matlab_root_path}. Set {mwi_env.get_env_name_custom_matlab_root()} to a valid MATLAB root path"
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
return matlab_version
|
|
130
138
|
|
|
131
139
|
|
|
132
140
|
def get_ws_env_settings():
|
|
@@ -270,15 +278,7 @@ def get(config_name=matlab_proxy.get_default_config_name(), dev=False):
|
|
|
270
278
|
logger.warning(warning)
|
|
271
279
|
settings["warnings"].append(warning)
|
|
272
280
|
|
|
273
|
-
|
|
274
|
-
# Update settings with matlab specific values.
|
|
275
|
-
settings.update(get_matlab_settings())
|
|
276
|
-
except UIVisibleFatalError as error:
|
|
277
|
-
logger.error(f"Exception raised during initialization: {error}")
|
|
278
|
-
settings["error"] = error
|
|
279
|
-
# Exceptions of this kind must propagate to the UI.
|
|
280
|
-
# Returning settings that have been created without exceptions
|
|
281
|
-
pass
|
|
281
|
+
settings.update(get_matlab_settings())
|
|
282
282
|
|
|
283
283
|
return settings
|
|
284
284
|
|
|
@@ -362,84 +362,33 @@ def get_matlab_settings():
|
|
|
362
362
|
Unless they are of type UIVisibleFatalError
|
|
363
363
|
"""
|
|
364
364
|
|
|
365
|
-
matlab_executable_path, matlab_root_path = get_matlab_executable_and_root_path()
|
|
366
|
-
|
|
367
365
|
ws_env, ws_env_suffix = get_ws_env_settings()
|
|
366
|
+
mw_licensing_urls = _get_mw_licensing_urls(ws_env_suffix)
|
|
367
|
+
nlm_conn_str = _get_nlm_conn_str()
|
|
368
|
+
has_custom_code_to_execute, code_to_execute = _get_matlab_code_to_execute()
|
|
369
|
+
err = None
|
|
368
370
|
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
# other ways of licensing. But existence of license_info.xml in matlab/licenses
|
|
372
|
-
# folder may cause hinderance in this workflow. So specifying -licmode as 'file'
|
|
373
|
-
# overrides license_info.xml and enforces MLM_LICENSE_FILE to be the topmost priority
|
|
374
|
-
|
|
375
|
-
# NLM Connection String provided by MLM_LICENSE_FILE environment variable
|
|
376
|
-
nlm_conn_str = mwi.validators.validate_mlm_license_file(
|
|
377
|
-
os.environ.get(mwi_env.get_env_name_network_license_manager())
|
|
378
|
-
)
|
|
379
|
-
matlab_lic_mode = ["-licmode", "file"] if nlm_conn_str else ""
|
|
380
|
-
# flag to hide MATLAB Window
|
|
381
|
-
flag_to_hide_desktop = ["-nodesktop"]
|
|
382
|
-
if system.is_windows():
|
|
383
|
-
flag_to_hide_desktop.extend(["-noDisplayDesktop", "-wait", "-log"])
|
|
371
|
+
try:
|
|
372
|
+
matlab_executable_path, matlab_root_path = get_matlab_executable_and_root_path()
|
|
384
373
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
374
|
+
except UIVisibleFatalError as error:
|
|
375
|
+
logger.error(f"Exception raised during initialization: {error}")
|
|
376
|
+
# Set matlab root and executable path to None as MATLAB root could not be determined
|
|
377
|
+
matlab_executable_path = matlab_root_path = None
|
|
378
|
+
err = error
|
|
388
379
|
|
|
389
380
|
matlab_version = get_matlab_version(matlab_root_path)
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
# unless MWI_CUSTOM_MATLAB_ROOT is set. Raising only a warning as the matlab version is only required for communicating with MHLM.
|
|
393
|
-
if not matlab_version:
|
|
394
|
-
logger.warn(
|
|
395
|
-
f"Could not determine MATLAB version from MATLAB root path: {matlab_root_path}"
|
|
396
|
-
)
|
|
397
|
-
logger.warn(
|
|
398
|
-
f"Set {mwi_env.get_env_name_custom_matlab_root()} to a valid MATLAB root path"
|
|
399
|
-
)
|
|
400
|
-
|
|
401
|
-
mpa_flags = (
|
|
402
|
-
mwi_env.Experimental.get_mpa_flags()
|
|
403
|
-
if mwi_env.Experimental.is_mpa_enabled()
|
|
404
|
-
else ""
|
|
405
|
-
)
|
|
406
|
-
profile_matlab_startup = (
|
|
407
|
-
"-timing" if mwi_env.Experimental.is_matlab_startup_profiling_enabled() else ""
|
|
408
|
-
)
|
|
409
|
-
|
|
410
|
-
has_custom_code_to_execute = (
|
|
411
|
-
len(os.getenv(mwi_env.get_env_name_custom_matlab_code(), "").strip()) > 0
|
|
412
|
-
)
|
|
413
|
-
|
|
414
|
-
# Sanitize file paths to avoid MATLAB not running the script due to early breakup of character array.
|
|
415
|
-
mp_code_to_execute = f"try; run('{_sanitize_file_path_for_matlab(matlab_startup_file)}'); catch MATLABProxyInitializationError; disp(MATLABProxyInitializationError.message); end;"
|
|
416
|
-
custom_code_to_execute = f"try; run('{_sanitize_file_path_for_matlab(matlab_code_file)}'); catch MATLABCustomStartupCodeError; disp(MATLABCustomStartupCodeError.message); end;"
|
|
417
|
-
code_to_execute = (
|
|
418
|
-
mp_code_to_execute + custom_code_to_execute
|
|
419
|
-
if has_custom_code_to_execute
|
|
420
|
-
else mp_code_to_execute
|
|
421
|
-
)
|
|
381
|
+
matlab_version_determined_on_startup = bool(matlab_version)
|
|
382
|
+
matlab_cmd = _get_matlab_cmd(matlab_executable_path, code_to_execute, nlm_conn_str)
|
|
422
383
|
|
|
423
384
|
return {
|
|
424
|
-
"
|
|
385
|
+
"error": err,
|
|
425
386
|
"matlab_version": matlab_version,
|
|
426
|
-
"
|
|
427
|
-
"
|
|
428
|
-
|
|
429
|
-
"-nosplash",
|
|
430
|
-
*flag_to_hide_desktop,
|
|
431
|
-
"-softwareopengl",
|
|
432
|
-
# " v=mvm ",
|
|
433
|
-
*matlab_lic_mode,
|
|
434
|
-
*mpa_flags,
|
|
435
|
-
profile_matlab_startup,
|
|
436
|
-
"-r",
|
|
437
|
-
code_to_execute,
|
|
438
|
-
],
|
|
387
|
+
"matlab_path": matlab_root_path,
|
|
388
|
+
"matlab_version_determined_on_startup": matlab_version_determined_on_startup,
|
|
389
|
+
"matlab_cmd": matlab_cmd,
|
|
439
390
|
"ws_env": ws_env,
|
|
440
|
-
|
|
441
|
-
"mhlm_api_endpoint": f"https://licensing{ws_env_suffix}.mathworks.com/mls/service/v1/entitlement/list",
|
|
442
|
-
"mwa_login": f"https://login{ws_env_suffix}.mathworks.com",
|
|
391
|
+
**mw_licensing_urls,
|
|
443
392
|
"nlm_conn_str": nlm_conn_str,
|
|
444
393
|
"has_custom_code_to_execute": has_custom_code_to_execute,
|
|
445
394
|
}
|
|
@@ -646,3 +595,104 @@ def _sanitize_file_path_for_matlab(filepath: str) -> str:
|
|
|
646
595
|
"""
|
|
647
596
|
filepath_with_single_quotes_escaped = filepath.replace("'", "''")
|
|
648
597
|
return filepath_with_single_quotes_escaped
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
def _get_matlab_code_to_execute():
|
|
601
|
+
"""Returns the code that needs to run on MATLAB startup.
|
|
602
|
+
Will check for user provided custom MATLAB code and execute it along with the default startup script.
|
|
603
|
+
|
|
604
|
+
Returns:
|
|
605
|
+
tuple: With the first value representing whether there is custom MATLAB code to execute, and the second value representing the MATLAB code to execute.
|
|
606
|
+
"""
|
|
607
|
+
matlab_code_dir = Path(__file__).resolve().parent / "matlab"
|
|
608
|
+
matlab_startup_file = str(matlab_code_dir / "startup.m")
|
|
609
|
+
matlab_code_file = str(matlab_code_dir / "evaluateUserMatlabCode.m")
|
|
610
|
+
|
|
611
|
+
has_custom_code_to_execute = (
|
|
612
|
+
len(os.getenv(mwi_env.get_env_name_custom_matlab_code(), "").strip()) > 0
|
|
613
|
+
)
|
|
614
|
+
|
|
615
|
+
# Sanitize file paths to avoid MATLAB not running the script due to early breakup of character array.
|
|
616
|
+
mp_code_to_execute = f"try; run('{_sanitize_file_path_for_matlab(matlab_startup_file)}'); catch MATLABProxyInitializationError; disp(MATLABProxyInitializationError.message); end;"
|
|
617
|
+
custom_code_to_execute = f"try; run('{_sanitize_file_path_for_matlab(matlab_code_file)}'); catch MATLABCustomStartupCodeError; disp(MATLABCustomStartupCodeError.message); end;"
|
|
618
|
+
code_to_execute = (
|
|
619
|
+
mp_code_to_execute + custom_code_to_execute
|
|
620
|
+
if has_custom_code_to_execute
|
|
621
|
+
else mp_code_to_execute
|
|
622
|
+
)
|
|
623
|
+
|
|
624
|
+
return has_custom_code_to_execute, code_to_execute
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
def _get_nlm_conn_str():
|
|
628
|
+
"""Get the Network License Manager (NLM) connection string.
|
|
629
|
+
|
|
630
|
+
Returns:
|
|
631
|
+
str: The NLM connection string provided by the MLM_LICENSE_FILE environment variable.
|
|
632
|
+
"""
|
|
633
|
+
# NLM Connection String provided by MLM_LICENSE_FILE environment variable
|
|
634
|
+
nlm_conn_str = mwi.validators.validate_mlm_license_file(
|
|
635
|
+
os.environ.get(mwi_env.get_env_name_network_license_manager())
|
|
636
|
+
)
|
|
637
|
+
|
|
638
|
+
return nlm_conn_str
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
def _get_mw_licensing_urls(ws_env_suffix):
|
|
642
|
+
"""Get the MathWorks licensing URLs.
|
|
643
|
+
|
|
644
|
+
Args:
|
|
645
|
+
ws_env_suffix (str): The environment suffix for the licensing URLs.
|
|
646
|
+
|
|
647
|
+
Returns:
|
|
648
|
+
dict: A dictionary containing the MathWorks licensing URLs for authentication and entitlement.
|
|
649
|
+
"""
|
|
650
|
+
return {
|
|
651
|
+
"mwa_api_endpoint": f"https://login{ws_env_suffix}.mathworks.com/authenticationws/service/v4",
|
|
652
|
+
"mhlm_api_endpoint": f"https://licensing{ws_env_suffix}.mathworks.com/mls/service/v1/entitlement/list",
|
|
653
|
+
"mwa_login": f"https://login{ws_env_suffix}.mathworks.com",
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
def _get_matlab_cmd(matlab_executable_path, code_to_execute, nlm_conn_str):
|
|
658
|
+
"""Construct the MATLAB command with appropriate flags and arguments.
|
|
659
|
+
|
|
660
|
+
Args:
|
|
661
|
+
matlab_executable_path (str): The path to the MATLAB executable.
|
|
662
|
+
code_to_execute (str): The MATLAB code to execute on startup.
|
|
663
|
+
nlm_conn_str (str): The Network License Manager connection string.
|
|
664
|
+
|
|
665
|
+
Returns:
|
|
666
|
+
list: A list of command-line arguments to launch MATLAB with the specified configuration.
|
|
667
|
+
"""
|
|
668
|
+
if not matlab_executable_path:
|
|
669
|
+
return None
|
|
670
|
+
|
|
671
|
+
matlab_lic_mode = ["-licmode", "file"] if nlm_conn_str else ""
|
|
672
|
+
# flag to hide MATLAB Window
|
|
673
|
+
flag_to_hide_desktop = ["-nodesktop"]
|
|
674
|
+
if system.is_windows():
|
|
675
|
+
flag_to_hide_desktop.extend(["-noDisplayDesktop", "-wait", "-log"])
|
|
676
|
+
|
|
677
|
+
mpa_flags = (
|
|
678
|
+
mwi_env.Experimental.get_mpa_flags()
|
|
679
|
+
if mwi_env.Experimental.is_mpa_enabled()
|
|
680
|
+
else ""
|
|
681
|
+
)
|
|
682
|
+
|
|
683
|
+
profile_matlab_startup = (
|
|
684
|
+
"-timing" if mwi_env.Experimental.is_matlab_startup_profiling_enabled() else ""
|
|
685
|
+
)
|
|
686
|
+
|
|
687
|
+
return [
|
|
688
|
+
matlab_executable_path,
|
|
689
|
+
"-nosplash",
|
|
690
|
+
*flag_to_hide_desktop,
|
|
691
|
+
"-softwareopengl",
|
|
692
|
+
# " v=mvm ",
|
|
693
|
+
*matlab_lic_mode,
|
|
694
|
+
*mpa_flags,
|
|
695
|
+
profile_matlab_startup,
|
|
696
|
+
"-r",
|
|
697
|
+
code_to_execute,
|
|
698
|
+
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Copyright 2020-2024 The MathWorks, Inc.
|
|
2
2
|
|
|
3
|
-
"""
|
|
4
|
-
a HTTP request to the Embedded Connector.
|
|
3
|
+
"""This file contains helper methods which return the details required for sending
|
|
4
|
+
a HTTP request to the Embedded Connector."""
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
from matlab_proxy.util import mwi
|
matlab_proxy/util/mwi/logger.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2020-
|
|
1
|
+
# Copyright 2020-2025 The MathWorks, Inc.
|
|
2
2
|
"""This file contains validators for various runtime artifacts.
|
|
3
3
|
A validator is defined as a function which verifies the input and
|
|
4
4
|
returns it unchanged if validation passes.
|
|
@@ -320,9 +320,10 @@ def validate_matlab_root_path(matlab_root: Path, is_custom_matlab_root: bool):
|
|
|
320
320
|
Raises:
|
|
321
321
|
MatlabInstallError
|
|
322
322
|
"""
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
323
|
+
|
|
324
|
+
# When Custom MATLAB root is provided, validate the existence of the
|
|
325
|
+
# VersionInfo.xml file at the specified path else, its optional (for matlab wrapper usecase)
|
|
326
|
+
custom_matlab_root_warn_str = f"Edit the environment variable {mwi_env.get_env_name_custom_matlab_root()} to the correct path, and restart matlab-proxy. "
|
|
326
327
|
|
|
327
328
|
try:
|
|
328
329
|
__validate_if_paths_exist([matlab_root])
|
|
@@ -332,18 +333,25 @@ def validate_matlab_root_path(matlab_root: Path, is_custom_matlab_root: bool):
|
|
|
332
333
|
|
|
333
334
|
except OSError as exc:
|
|
334
335
|
logger.error(". ".join(exc.args))
|
|
335
|
-
raise MatlabInstallError(
|
|
336
|
+
raise MatlabInstallError(
|
|
337
|
+
custom_matlab_root_warn_str if is_custom_matlab_root else ""
|
|
338
|
+
)
|
|
336
339
|
|
|
337
340
|
version_info_file_path = matlab_root / VERSION_INFO_FILE_NAME
|
|
338
341
|
|
|
339
342
|
if not version_info_file_path.is_file():
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
343
|
+
warn_str = f"Unable to locate {VERSION_INFO_FILE_NAME} at {matlab_root}"
|
|
344
|
+
# If VersionInfo.xml file is missing when a custom MATLAB root is provided, then
|
|
345
|
+
# raise an error with a detailed message
|
|
346
|
+
if is_custom_matlab_root:
|
|
347
|
+
log_error_string = custom_matlab_root_warn_str + warn_str
|
|
348
|
+
raise MatlabInstallError(log_error_string)
|
|
344
349
|
|
|
345
|
-
|
|
346
|
-
|
|
350
|
+
else:
|
|
351
|
+
# No VersionInfo.xml file is present and its not a custom MATLAB root, implies a matlab wrapper is
|
|
352
|
+
# being used, so warn the user and return None as MATLAB root could not be determined
|
|
353
|
+
logger.warning(warn_str)
|
|
354
|
+
return None
|
|
347
355
|
|
|
348
356
|
return matlab_root
|
|
349
357
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: matlab-proxy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.24.2
|
|
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.
|
|
@@ -103,7 +103,7 @@ python -m pip install matlab-proxy
|
|
|
103
103
|
```
|
|
104
104
|
|
|
105
105
|
### Building From Sources
|
|
106
|
-
Building from sources requires Node.js® version
|
|
106
|
+
Building from sources requires Node.js® version 18 or higher. [Click here to install Node.js](https://nodejs.org/en/)
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
109
|
git clone https://github.com/mathworks/matlab-proxy.git
|
|
@@ -226,7 +226,7 @@ If you encounter a technical issue or have an enhancement request, create an iss
|
|
|
226
226
|
|
|
227
227
|
---
|
|
228
228
|
|
|
229
|
-
Copyright 2020-
|
|
229
|
+
Copyright 2020-2025 The MathWorks, Inc.
|
|
230
230
|
|
|
231
231
|
---
|
|
232
232
|
|
|
@@ -1,56 +1,41 @@
|
|
|
1
1
|
matlab_proxy/__init__.py,sha256=6cwi8buKCMtw9OeWaOYUHEoqwl5MyJ_s6GxgNuqPuNg,1673
|
|
2
2
|
matlab_proxy/app.py,sha256=7BsHSM3PxTjN6eN10HLj74Y1wtu-Gl92g1RLbaTGz9U,34698
|
|
3
|
-
matlab_proxy/app_state.py,sha256=
|
|
3
|
+
matlab_proxy/app_state.py,sha256=e1AnmZ22gegzZ9N26Ha-IQR1ZhDukNC_LAQYP5k09Lc,72542
|
|
4
4
|
matlab_proxy/constants.py,sha256=L9fhXdcGH7Eu56h0aB_TNm3d6aNFr2nP6-HyQJ96TAA,1175
|
|
5
5
|
matlab_proxy/default_configuration.py,sha256=tBHaEq_bYsX2uC9pPA9mi_8M6o94ij-rxq8mbvcYpFc,1874
|
|
6
6
|
matlab_proxy/devel.py,sha256=nR6XPVBUEdQ-RZGtYvX1YHTp8gj9cuw5Hp8ahasMBc8,14310
|
|
7
|
-
matlab_proxy/settings.py,sha256
|
|
7
|
+
matlab_proxy/settings.py,sha256=-_r5JtUfuid6CUydRYTb_0rsAF4z2AzBqieAc65tQ8Y,28109
|
|
8
8
|
matlab_proxy/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
-
matlab_proxy/gui/asset-manifest.json,sha256=VW67P_Jg7RPTCNDkMCWmphyXKJvv-KE-DjFQvQxm8aM,3516
|
|
10
9
|
matlab_proxy/gui/favicon.ico,sha256=7w7Ki1uQP2Rgwc64dOV4-NrTu97I3WsZw8OvRSoY1A0,130876
|
|
11
|
-
matlab_proxy/gui/index.html,sha256=
|
|
10
|
+
matlab_proxy/gui/index.html,sha256=R-jJ3X8sD0wD4OEsS6esTybLzO6l7jizBsMvwdvCDs8,720
|
|
12
11
|
matlab_proxy/gui/manifest.json,sha256=NwDbrALM5auYyj2bbEf4aGwAUDqNl1FzMFQpPiG2Ty4,286
|
|
13
12
|
matlab_proxy/gui/robots.txt,sha256=kNJLw79pisHhc3OVAimMzKcq3x9WT6sF9IS4xI0crdI,67
|
|
14
13
|
matlab_proxy/gui/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
14
|
matlab_proxy/gui/static/css/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
-
matlab_proxy/gui/static/css/
|
|
17
|
-
matlab_proxy/gui/static/css/main.efa05ff9.css.map,sha256=y9dh-GxZmqmtSCOwW6szE68iuVhO7gEhm80yqvRX4oU,350512
|
|
15
|
+
matlab_proxy/gui/static/css/index.BSVLACuY.css,sha256=LzuRvV10Z0pF0ugGSnj5zKJvT4AHwwBbCd-wSH4mHjg,305333
|
|
18
16
|
matlab_proxy/gui/static/js/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
|
-
matlab_proxy/gui/static/js/
|
|
20
|
-
matlab_proxy/gui/static/
|
|
21
|
-
matlab_proxy/gui/static/js/main.ce0f5505.js.map,sha256=drUlJe9d8w69Djdw-LIdrt7sRRjZl9Zw_PaZd-MlSdo,912523
|
|
22
|
-
matlab_proxy/gui/static/media/MATLAB-env-blur.4fc94edbc82d3184e5cb.png,sha256=QpmQTLDvBu2-b7ev83Rvpt0Q72R6wdQGkuJMPPpjv7M,220290
|
|
17
|
+
matlab_proxy/gui/static/js/index.c3NLxnRM.js,sha256=VsDAyIfCMENbdJIcG2416ttyvYg8rmSqI_ogax2bIio,280258
|
|
18
|
+
matlab_proxy/gui/static/media/MATLAB-env-blur.NupTbPv_.png,sha256=QpmQTLDvBu2-b7ev83Rvpt0Q72R6wdQGkuJMPPpjv7M,220290
|
|
23
19
|
matlab_proxy/gui/static/media/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
-
matlab_proxy/gui/static/media/
|
|
25
|
-
matlab_proxy/gui/static/media/
|
|
26
|
-
matlab_proxy/gui/static/media/glyphicons-halflings-regular.
|
|
27
|
-
matlab_proxy/gui/static/media/glyphicons-halflings-regular.
|
|
28
|
-
matlab_proxy/gui/static/media/glyphicons-halflings-regular.
|
|
29
|
-
matlab_proxy/gui/static/media/
|
|
30
|
-
matlab_proxy/gui/static/media/
|
|
31
|
-
matlab_proxy/gui/static/media/
|
|
32
|
-
matlab_proxy/gui/static/media/
|
|
33
|
-
matlab_proxy/gui/static/media/
|
|
34
|
-
matlab_proxy/gui/static/media/
|
|
35
|
-
matlab_proxy/gui/static/media/
|
|
36
|
-
matlab_proxy/gui/static/media/
|
|
37
|
-
matlab_proxy/gui/static/media/
|
|
38
|
-
matlab_proxy/gui/static/media/mathworks-
|
|
39
|
-
matlab_proxy/gui/static/media/mathworks
|
|
40
|
-
matlab_proxy/gui/static/media/mathworks
|
|
41
|
-
matlab_proxy/gui/static/media/
|
|
42
|
-
matlab_proxy/gui/static/media/
|
|
43
|
-
matlab_proxy/gui/static/media/mathworks-pictograms.f6f087b008b5a9435f26.svg,sha256=VAHOeLtlzJKPcF6ue6ygCceljdflnBxNMrU8QaG9aSU,289658
|
|
44
|
-
matlab_proxy/gui/static/media/mathworks.37a563ef6aeda1593bf6.woff,sha256=IDXclqMxIqQK8ddT-mwCAZZgyPBo9Gi9rwavy6Zgv98,38732
|
|
45
|
-
matlab_proxy/gui/static/media/mathworks.80a3218e1ba29f0573fb.svg,sha256=RRmK93Ob-yNiqq8_eoNERc5fWUQUnYwhfts0339SdHc,138707
|
|
46
|
-
matlab_proxy/gui/static/media/mathworks.c422935b9ae545ac2ab5.ttf,sha256=HTmIvVEDta9_tU2RMitYA_skj5RLXrAqXgN1w_GO88U,38656
|
|
47
|
-
matlab_proxy/gui/static/media/restart.7987508a01e84678361a.svg,sha256=C4JMX34980kbiQSARH5plOsgR7CTZTFBEOqIKB6LAXs,1273
|
|
48
|
-
matlab_proxy/gui/static/media/sign-out.08356b675ec854afaa77.svg,sha256=P5uyzCjDL3vHqEox80uGP1ti5bghQ949sOz-EW8IYUE,1077
|
|
49
|
-
matlab_proxy/gui/static/media/start.50c4596fab2049b4a3a3.svg,sha256=7iJXXp-HD-I4pg7p5eHo4zklchxYuTx3gNTs6hxKwsM,1017
|
|
50
|
-
matlab_proxy/gui/static/media/stop.30c9a9ab6d625032235a.svg,sha256=gR3cmABnmOIODGPBMMo_PY1rQ2pP5AjokB6WODo4uCM,1218
|
|
51
|
-
matlab_proxy/gui/static/media/terminate.7ea1363ee0fa72344ef6.svg,sha256=LDLYNWk_1VwIgow_H0ZC4uGafDogFwr-4ht-z5iMhfo,1875
|
|
52
|
-
matlab_proxy/gui/static/media/trigger-error.3f1c4ef23ab8f3e60b0e.svg,sha256=3zzT0uTrl4M_HlAjjVy_9F6fJDY9TifdQCFYX36LCOY,5017
|
|
53
|
-
matlab_proxy/gui/static/media/trigger-ok.7b9c238be42f685c4fa7.svg,sha256=mD-7N9cc4ARdMBFcplnogJv6nA4Yh3jQuYbZDUi18LU,4997
|
|
20
|
+
matlab_proxy/gui/static/media/glyphicons-halflings-regular.BKjkU69z.woff,sha256=omOU9-3hAMoRjv8u2ghZYnWpg5uVnCJuFUOVV6WoB0I,23424
|
|
21
|
+
matlab_proxy/gui/static/media/glyphicons-halflings-regular.BUJKDMgK.eot,sha256=E2NNqH2eI_jD7ZEIzhck0YOjmtBy5z4bPYy_ZG0tBAc,20127
|
|
22
|
+
matlab_proxy/gui/static/media/glyphicons-halflings-regular.CSehLiBc.svg,sha256=QvYGWdJlwaPDD5-kKry7Vr1KU69Ng9MW1t16NpA8Q-U,108738
|
|
23
|
+
matlab_proxy/gui/static/media/glyphicons-halflings-regular.DrwTMapi.ttf,sha256=45UEQJN1fYKvyxOJV9BqHqk2G9zwtELQahioBRr1dFY,45404
|
|
24
|
+
matlab_proxy/gui/static/media/glyphicons-halflings-regular.DzqM6ju8.woff2,sha256=_hhdEaSWdokNR7t4MxKgzaWkTEA5IUCU55V7TAQO8Rw,18028
|
|
25
|
+
matlab_proxy/gui/static/media/ico-header-account-hover.-jQHo6Wx.svg,sha256=SOFeac2wYLE7Q1JXVx99TJ4XWlsBU_IJ36EaMiWCDEo,4774
|
|
26
|
+
matlab_proxy/gui/static/media/ico-header-account.CJCFoo5a.svg,sha256=QBTrSvJ1PuqFdr4RdFO1-3TPBhjztEvF37YYMm4vJYc,4774
|
|
27
|
+
matlab_proxy/gui/static/media/ico-sprite.DXGLgzq9.png,sha256=2gk_PEau5Friw5q0K5tjVf1cvkZ9PA1MznGgShQgsg4,11438
|
|
28
|
+
matlab_proxy/gui/static/media/mathworks-eps.CGNQALa9.ttf,sha256=1kBy6J9LTaAtVnE7hnQGkxk4jzFhEXB_Q2vxWoxEkVA,6448
|
|
29
|
+
matlab_proxy/gui/static/media/mathworks-eps.DrkCtQtG.svg,sha256=vCnXHeXq43vl4ZapcF5kWDf95Hthuv2xFjftt8sDsY8,16377
|
|
30
|
+
matlab_proxy/gui/static/media/mathworks-eps.Ds7lQbql.woff,sha256=e6k22TjtuLMkqCYnQt_yA6UlEa1ETjaZyMg1SRHbFP8,6528
|
|
31
|
+
matlab_proxy/gui/static/media/mathworks-pictograms.BdqxEfBR.woff,sha256=rJckfPFgMSriJQ-UWH4acc60LXLUelh7YCJazNm2fOo,70288
|
|
32
|
+
matlab_proxy/gui/static/media/mathworks-pictograms.CCLweoD4.svg,sha256=VAHOeLtlzJKPcF6ue6ygCceljdflnBxNMrU8QaG9aSU,289658
|
|
33
|
+
matlab_proxy/gui/static/media/mathworks-pictograms.DZhFdRSm.ttf,sha256=c0YyfXeIMwTXPp27qf1hJyFsqBX_jk7RxhAQ8l8-FHQ,70212
|
|
34
|
+
matlab_proxy/gui/static/media/mathworks.C-qsbhDy.svg,sha256=RRmK93Ob-yNiqq8_eoNERc5fWUQUnYwhfts0339SdHc,138707
|
|
35
|
+
matlab_proxy/gui/static/media/mathworks.Ceplx86V.ttf,sha256=HTmIvVEDta9_tU2RMitYA_skj5RLXrAqXgN1w_GO88U,38656
|
|
36
|
+
matlab_proxy/gui/static/media/mathworks.D08X1Vp8.woff,sha256=IDXclqMxIqQK8ddT-mwCAZZgyPBo9Gi9rwavy6Zgv98,38732
|
|
37
|
+
matlab_proxy/gui/static/media/trigger-error.QEdsGL-m.svg,sha256=3zzT0uTrl4M_HlAjjVy_9F6fJDY9TifdQCFYX36LCOY,5017
|
|
38
|
+
matlab_proxy/gui/static/media/trigger-ok.Dzg8OIrk.svg,sha256=mD-7N9cc4ARdMBFcplnogJv6nA4Yh3jQuYbZDUi18LU,4997
|
|
54
39
|
matlab_proxy/icons/matlab.svg,sha256=xh5uYebQd8I-ISvenjU9A-PkClzW_lU9wvm3doXOFKM,13366
|
|
55
40
|
matlab_proxy/matlab/evaluateUserMatlabCode.m,sha256=R8w6nPdGtadR4UUFJaspcrGQL7cJwUItdrfc531w3bM,2420
|
|
56
41
|
matlab_proxy/matlab/startup.m,sha256=Rgb1Y3F2pFgByKAaXxWWcYOA2594D7V2HXuyuVmGYjs,653
|
|
@@ -65,19 +50,19 @@ matlab_proxy/util/mwi/custom_http_headers.py,sha256=kfDjSnEXEVzoF2pZuEn76LKayeD2
|
|
|
65
50
|
matlab_proxy/util/mwi/download.py,sha256=-GJj3yOsL4vF_9baqRXkgBI-vu_OwjZMQVkJXFS8GMc,4965
|
|
66
51
|
matlab_proxy/util/mwi/environment_variables.py,sha256=sOfmL8PjQONgkJdegdotLbsqHsWJDsjS7kak0TJtVKU,7441
|
|
67
52
|
matlab_proxy/util/mwi/exceptions.py,sha256=3jklFU6br2_pSSsATCRDY3A5fTzk6ekJ4M69sunwxBk,5114
|
|
68
|
-
matlab_proxy/util/mwi/logger.py,sha256=
|
|
53
|
+
matlab_proxy/util/mwi/logger.py,sha256=GoisSphy3Jyi5-6-X0WRl1YkdrKx2xzjSxBN_w3oTU8,3802
|
|
69
54
|
matlab_proxy/util/mwi/token_auth.py,sha256=UbIWqo7qADaZdijFvorLYsZbxzaB8TycGP8nk305ru0,9997
|
|
70
|
-
matlab_proxy/util/mwi/validators.py,sha256=
|
|
55
|
+
matlab_proxy/util/mwi/validators.py,sha256=dg2OXL686vWie_JoTNpFSje2m_UqdpvpTVHJl5tmxSo,13247
|
|
71
56
|
matlab_proxy/util/mwi/embedded_connector/__init__.py,sha256=Vfl2hNC7V1IwoK9_wrwfENs4BC8P-Mvvqh4BNGi2n48,119
|
|
72
|
-
matlab_proxy/util/mwi/embedded_connector/helpers.py,sha256=
|
|
73
|
-
matlab_proxy/util/mwi/embedded_connector/request.py,sha256
|
|
57
|
+
matlab_proxy/util/mwi/embedded_connector/helpers.py,sha256=kpIgJN0AqYLeX56UylWgB0t07fg8sh0RhIlUH_8JitM,3654
|
|
58
|
+
matlab_proxy/util/mwi/embedded_connector/request.py,sha256=RXoVvrm5fibVb2A6EZnkMWwAQkYX3J5kqDTGQDZo9p0,4316
|
|
74
59
|
matlab_proxy_manager/__init__.py,sha256=CMqm2aSYUWo5sxV3vyqWudrQU31muouSqZRDesJNJSA,178
|
|
75
60
|
matlab_proxy_manager/lib/__init__.py,sha256=KfwQxxM5a1kMRtNbhz8tb7YfHp8e2d0tNLB55wYvDS8,37
|
|
76
|
-
matlab_proxy_manager/lib/api.py,sha256=
|
|
61
|
+
matlab_proxy_manager/lib/api.py,sha256=L-yPrDqaBQ-AA1ds5PndzglBO1oglGJxy-x0F1lZZj4,12640
|
|
77
62
|
matlab_proxy_manager/storage/__init__.py,sha256=KfwQxxM5a1kMRtNbhz8tb7YfHp8e2d0tNLB55wYvDS8,37
|
|
78
63
|
matlab_proxy_manager/storage/file_repository.py,sha256=U4FAw0zFN9z7YNlaMsYZXWm5ccs3rp3bzZL-W2BNhxA,5187
|
|
79
64
|
matlab_proxy_manager/storage/interface.py,sha256=pnRRD0Ku3gzbruAOM3J3NI2Kk8do3-_yRw9Pag1IqnE,1883
|
|
80
|
-
matlab_proxy_manager/storage/server.py,sha256=
|
|
65
|
+
matlab_proxy_manager/storage/server.py,sha256=8-kv3R7dJJYfOStYGjYj1nBt2Jn3o3qnn75YVAmwFSc,6010
|
|
81
66
|
matlab_proxy_manager/utils/__init__.py,sha256=KfwQxxM5a1kMRtNbhz8tb7YfHp8e2d0tNLB55wYvDS8,37
|
|
82
67
|
matlab_proxy_manager/utils/auth.py,sha256=60vi16eQ7LWp3I4CNv2easTjObw50irEm518fiMA5YI,2526
|
|
83
68
|
matlab_proxy_manager/utils/constants.py,sha256=pyg-bkk6wWfmy60nvhroZDMZt__FcbZbuvU-b9m2Fkg,163
|
|
@@ -99,31 +84,31 @@ tests/integration/utils/__init__.py,sha256=ttzJ8xKWGxOJZz56qOiWOn6sp5LGomkZMn_w4
|
|
|
99
84
|
tests/integration/utils/integration_tests_utils.py,sha256=IbJ9CedFHiz3k85FBY-8GwotTnjPF3jF4AHdKio7jqk,10321
|
|
100
85
|
tests/integration/utils/licensing.py,sha256=rEBjvMXO8R3mL6KnePu2lojmOsjD4GXl9frf9N0Wacs,4842
|
|
101
86
|
tests/unit/__init__.py,sha256=KfwQxxM5a1kMRtNbhz8tb7YfHp8e2d0tNLB55wYvDS8,37
|
|
102
|
-
tests/unit/conftest.py,sha256=
|
|
87
|
+
tests/unit/conftest.py,sha256=FIL7bhw2-9B5OEspqt9toZ2ZlN18pOsPEFjeQmVNcSk,1916
|
|
103
88
|
tests/unit/test_app.py,sha256=pM8zVyXWLx8nP8RePusXH4admEBYKc5JC8eE2t8xIQE,38487
|
|
104
|
-
tests/unit/test_app_state.py,sha256=
|
|
89
|
+
tests/unit/test_app_state.py,sha256=pIO3hvpddetf4xAdAum05gKfZ0TTS-LAEq-c57h_f40,37961
|
|
105
90
|
tests/unit/test_constants.py,sha256=2nXxTmDP8utr8krsfZ4c_Bh4_mWPcDO5uI8MXeq4Usg,158
|
|
106
91
|
tests/unit/test_ddux.py,sha256=a2J2iM8j_nnfJVuMI38p5AjwrRdoMj3N88gFgS2I4hg,713
|
|
107
92
|
tests/unit/test_devel.py,sha256=A-1iVhSSwmywaW65QIRcUS2Fk7nJxceCcCm7CJtNdEc,7982
|
|
108
93
|
tests/unit/test_non_dev_mode.py,sha256=0v27y27SLOWvw6jf_GhLLNg-RMsZS_OyGAnqoQYPpSA,5515
|
|
109
|
-
tests/unit/test_settings.py,sha256=
|
|
94
|
+
tests/unit/test_settings.py,sha256=SsWLOzossGCjRr8555clsBvDI4Z0jPE4JVhjhx7Ovno,23722
|
|
110
95
|
tests/unit/util/__init__.py,sha256=GInSQBb2SoVD5LZfmSCQa9-UZJT_UP-jNfrojkgCybU,87
|
|
111
96
|
tests/unit/util/test_mw.py,sha256=YC4mjn6G6_XuHELt8uW9F6g2K0_fWtQl1R0kWFvWbAo,18565
|
|
112
97
|
tests/unit/util/test_util.py,sha256=gecUFSVIg4a9s3Ljl0A7eSSY5jN4vH668CbjnTpi198,7431
|
|
113
98
|
tests/unit/util/mwi/__init__.py,sha256=pl5jqyCHEwZEviiL8OC-SHulb1rBecstQCFF6qVjL9Y,37
|
|
114
99
|
tests/unit/util/mwi/test_custom_http_headers.py,sha256=UfrhclS0j6WhShtg1ki2oF1kK8JqRC29uevH4tuDqF4,11182
|
|
115
100
|
tests/unit/util/mwi/test_download.py,sha256=jYwPJFYGrPKqnkIJW42XYSe1fowmzChAkOx0k0xVldo,4779
|
|
116
|
-
tests/unit/util/mwi/test_logger.py,sha256=
|
|
101
|
+
tests/unit/util/mwi/test_logger.py,sha256=S0Q5TirFxysrH2YSxRzGY9mWoWB83hG3q3XpGENCpcw,3150
|
|
117
102
|
tests/unit/util/mwi/test_token_auth.py,sha256=-eBsaQ5JC7pyd9PXt48Rqs4cWjg6I-eOkp_gFVEwYhk,10538
|
|
118
|
-
tests/unit/util/mwi/test_validators.py,sha256=
|
|
103
|
+
tests/unit/util/mwi/test_validators.py,sha256=GvLP3lSvoOQAjoclYunKPfxPIagUsnVGHRskHELResE,11765
|
|
119
104
|
tests/unit/util/mwi/embedded_connector/__init__.py,sha256=pl5jqyCHEwZEviiL8OC-SHulb1rBecstQCFF6qVjL9Y,37
|
|
120
105
|
tests/unit/util/mwi/embedded_connector/test_helpers.py,sha256=vYTWNUTuDeaygo16JGMTvWeI_CLOnvPkwNJmLndvJhE,890
|
|
121
106
|
tests/unit/util/mwi/embedded_connector/test_request.py,sha256=PR-jddnXDEiip-lD7A_QSvRwEkwo3eQ8owZlk-r9vnk,1867
|
|
122
107
|
tests/utils/__init__.py,sha256=ttzJ8xKWGxOJZz56qOiWOn6sp5LGomkZMn_w4KJLRMU,42
|
|
123
108
|
tests/utils/logging_util.py,sha256=VBy_NRvwau3C_CVTBjK5RMROrQimnJYHO2U0aKSZiRw,2234
|
|
124
|
-
matlab_proxy-0.
|
|
125
|
-
matlab_proxy-0.
|
|
126
|
-
matlab_proxy-0.
|
|
127
|
-
matlab_proxy-0.
|
|
128
|
-
matlab_proxy-0.
|
|
129
|
-
matlab_proxy-0.
|
|
109
|
+
matlab_proxy-0.24.2.dist-info/LICENSE.md,sha256=oF0h3UdSF-rlUiMGYwi086ZHqelzz7yOOk9HFDv9ELo,2344
|
|
110
|
+
matlab_proxy-0.24.2.dist-info/METADATA,sha256=ysaPplN9gudFA9lO3lByAYn2Gm1p9TVJ_gruq8HPU6U,10199
|
|
111
|
+
matlab_proxy-0.24.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
112
|
+
matlab_proxy-0.24.2.dist-info/entry_points.txt,sha256=ZAlCUsgKzGcAeQaMZOq31FrTB5tQ8Ypq8Op_8U600-A,305
|
|
113
|
+
matlab_proxy-0.24.2.dist-info/top_level.txt,sha256=KF-347aoRGsfHTpiSqfIPUZ95bzK5-oMIu8S_TUcu-w,40
|
|
114
|
+
matlab_proxy-0.24.2.dist-info/RECORD,,
|
matlab_proxy_manager/lib/api.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2024 The MathWorks, Inc.
|
|
1
|
+
# Copyright 2024-2025 The MathWorks, Inc.
|
|
2
2
|
import asyncio
|
|
3
3
|
import os
|
|
4
4
|
import secrets
|
|
@@ -147,27 +147,30 @@ async def _start_subprocess_and_check_for_readiness(
|
|
|
147
147
|
return None
|
|
148
148
|
|
|
149
149
|
process_id, url, mwi_base_url = result
|
|
150
|
-
|
|
150
|
+
|
|
151
|
+
log.debug("Matlab proxy process info: %s, %s", url, mwi_base_url)
|
|
152
|
+
matlab_proxy_process = ServerProcess(
|
|
153
|
+
server_url=url,
|
|
154
|
+
mwi_base_url=mwi_base_url,
|
|
155
|
+
headers=helpers.convert_mwi_env_vars_to_header_format(matlab_proxy_env, "MWI"),
|
|
156
|
+
pid=str(process_id),
|
|
157
|
+
parent_pid=ctx,
|
|
158
|
+
id=key,
|
|
159
|
+
type="shared" if is_shared_matlab else "named",
|
|
160
|
+
mpm_auth_token=mpm_auth_token,
|
|
161
|
+
)
|
|
151
162
|
|
|
152
163
|
# Check for the matlab proxy server readiness
|
|
153
|
-
if helpers.is_server_ready(
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
headers=helpers.convert_mwi_env_vars_to_header_format(
|
|
159
|
-
matlab_proxy_env, "MWI"
|
|
160
|
-
),
|
|
161
|
-
pid=str(process_id),
|
|
162
|
-
parent_pid=ctx,
|
|
163
|
-
id=key,
|
|
164
|
-
type="shared" if is_shared_matlab else "named",
|
|
165
|
-
mpm_auth_token=mpm_auth_token,
|
|
164
|
+
if not helpers.is_server_ready(
|
|
165
|
+
url=matlab_proxy_process.absolute_url, retries=7, backoff_factor=0.5
|
|
166
|
+
):
|
|
167
|
+
log.error(
|
|
168
|
+
"MATLAB Proxy Server unavailable: matlab-proxy-app failed to start or has timed out."
|
|
166
169
|
)
|
|
167
|
-
|
|
168
|
-
|
|
170
|
+
matlab_proxy_process.shutdown()
|
|
171
|
+
matlab_proxy_process = None
|
|
169
172
|
|
|
170
|
-
return
|
|
173
|
+
return matlab_proxy_process
|
|
171
174
|
|
|
172
175
|
|
|
173
176
|
def _prepare_cmd_and_env_for_matlab_proxy():
|