matlab-proxy 0.27.0__py3-none-any.whl → 0.27.3__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.

@@ -1,4 +1,4 @@
1
- # Copyright 2020-2024 The MathWorks, Inc.
1
+ # Copyright 2020-2025 The MathWorks, Inc.
2
2
  import argparse
3
3
  import inspect
4
4
  import os
@@ -26,7 +26,7 @@ logger = mwi.logger.get()
26
26
  interrupt_signal_caught = False
27
27
 
28
28
 
29
- def parse_cli_args():
29
+ def parse_main_cli_args():
30
30
  """Parses CLI arguments passed to the main() function.
31
31
 
32
32
  Returns:
@@ -56,6 +56,28 @@ def parse_cli_args():
56
56
  return parsed_args
57
57
 
58
58
 
59
+ def parse_list_cli_args():
60
+ """Parses CLI arguments passed to the matlab-proxy-app-list-servers entrypoint.
61
+
62
+ Returns:
63
+ dict: Containing the parsed arguments
64
+ """
65
+ # Parse the --config flag provided to the console script executable.
66
+ parsed_args = {}
67
+ parser = argparse.ArgumentParser()
68
+ parser.add_argument(
69
+ "-q",
70
+ "--quiet",
71
+ help="Return the server list without any additional text.",
72
+ action="store_true",
73
+ )
74
+ args = parser.parse_args()
75
+
76
+ parsed_args["quiet"] = args.quiet
77
+
78
+ return parsed_args
79
+
80
+
59
81
  def prepare_site(app, runner):
60
82
  """Prepares to launch a TCPSite. If MWI_APP_PORT env variable is set,
61
83
  it will setup a site to launch on that port, else will launch on a random available port.
@@ -148,47 +170,6 @@ def add_signal_handlers(loop):
148
170
  return loop
149
171
 
150
172
 
151
- def prettify(boundary_filler=" ", text_arr=[]):
152
- """Prettify array of strings with borders for stdout
153
-
154
- Args:
155
- boundary_filler (str, optional): Upper and lower border filler for text. Defaults to " ".
156
- text_arr (list, optional):The text array to prettify. Each element will be added to a newline. Defaults to [].
157
-
158
- Returns:
159
- [str]: Prettified String
160
- """
161
-
162
- import sys
163
-
164
- if not sys.stdout.isatty():
165
- return (
166
- "\n============================\n"
167
- + "\n".join(text_arr)
168
- + "\n============================\n"
169
- )
170
-
171
- size = os.get_terminal_size()
172
- cols, _ = size.columns, size.lines
173
-
174
- if any(len(text) > cols for text in text_arr):
175
- result = ""
176
- for text in text_arr:
177
- result += text + "\n"
178
- return result
179
-
180
- upper = "\n" + "".ljust(cols, boundary_filler) + "\n" if len(text_arr) > 0 else ""
181
- lower = "".ljust(cols, boundary_filler) if len(text_arr) > 0 else ""
182
-
183
- content = ""
184
- for text in text_arr:
185
- content += text.center(cols) + "\n"
186
-
187
- result = upper + content + lower
188
-
189
- return result
190
-
191
-
192
173
  def get_child_processes(parent_process, max_attempts=10, sleep_interval=1):
193
174
  """Get list of child processes from a parent process.
194
175
 
@@ -312,7 +293,7 @@ class TrackingLock:
312
293
  self._acquired_by = None
313
294
  self._lock = asyncio.Lock()
314
295
  if not purpose:
315
- logger.warn("Provide a purpose for this instance of TrackingLock")
296
+ logger.warning("Provide a purpose for this instance of TrackingLock")
316
297
  self._purpose = purpose
317
298
 
318
299
  @property
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2020-2022 The MathWorks, Inc.
1
+ # Copyright (c) 2020-2025 The MathWorks, Inc.
2
2
  # Script to print information about all running matlab-proxy servers for current user on current machine.
3
3
 
4
4
  import glob
@@ -7,6 +7,66 @@ import os
7
7
  import matlab_proxy.settings as mwi_settings
8
8
  import matlab_proxy.util as mwi_util
9
9
 
10
+ from datetime import datetime
11
+ from rich.console import Console
12
+ from rich.table import Table
13
+
14
+ __NO_SERVERS_MSG = "No MATLAB-PROXY Servers are currently running."
15
+
16
+
17
+ def _extract_version_and_session(title):
18
+ """Extracts session name and MATLAB version from the title."""
19
+ parts = title.split("-")
20
+ if len(parts) < 2:
21
+ return title.replace("MATLAB ", ""), ""
22
+ session_name = parts[0].strip()
23
+ matlab_version = parts[1].strip().replace("MATLAB ", "")
24
+ return matlab_version, session_name
25
+
26
+
27
+ def _get_server_info(server):
28
+ """Helper function to parse info from server file."""
29
+ with open(server) as f:
30
+ # Assumes that the server file contains the address on the first line,
31
+ # the browser_title on the second line, and the timestamp is derived from the file's last modified time.
32
+ address = f.readline().strip()
33
+ browser_title = f.readline().strip()
34
+ matlab_version, session_name = _extract_version_and_session(browser_title)
35
+ timestamp = _get_timestamp(server)
36
+ return timestamp, matlab_version, session_name, address
37
+
38
+
39
+ def _print_server_info_as_table(servers):
40
+ console = Console()
41
+ table = Table(
42
+ title="MATLAB Proxy Servers",
43
+ title_style="cyan",
44
+ title_justify="center",
45
+ caption="No servers found." if not servers else "",
46
+ caption_style="bold red",
47
+ show_header=True,
48
+ header_style="yellow",
49
+ show_lines=True,
50
+ show_edge=True,
51
+ )
52
+ table.add_column("Created On")
53
+ table.add_column("MATLAB\nVersion")
54
+ table.add_column("Session Name")
55
+ table.add_column("Server URL", overflow="fold")
56
+
57
+ # Build server information
58
+ for server in servers:
59
+ table.add_row(*_get_server_info(server))
60
+
61
+ console.print(table)
62
+
63
+
64
+ def _get_timestamp(filename):
65
+ """Get the last modified timestamp of the file in a human-readable format."""
66
+ timestamp = os.path.getmtime(filename)
67
+ readable_time = datetime.fromtimestamp(timestamp).strftime("%d/%m/%y %H:%M:%S")
68
+ return readable_time
69
+
10
70
 
11
71
  def print_server_info():
12
72
  """Print information about all matlab-proxy servers (with version > 0.4.0) running on this machine"""
@@ -15,30 +75,15 @@ def print_server_info():
15
75
  # Look for files in port folders
16
76
  ports_folder = home_folder / "ports"
17
77
  search_string = str(ports_folder) + "/**/mwi_server.info"
78
+ servers = sorted(glob.glob(search_string), key=os.path.getmtime)
18
79
 
19
- print_output = str(
20
- mwi_util.prettify(
21
- boundary_filler="-",
22
- text_arr=["Your running servers are:"],
23
- )
24
- )
25
- print_output += "\n"
26
- search_results = sorted(glob.glob(search_string), key=os.path.getmtime)
27
- if len(search_results) == 0:
28
- print_output += "No MATLAB-PROXY Servers are currently running."
29
- else:
30
- server_number = 0
31
- for server in search_results:
32
- server_number += 1
80
+ args = mwi_util.parse_list_cli_args()
81
+
82
+ if args["quiet"]:
83
+ for server in servers:
33
84
  with open(server) as f:
34
85
  server_info = f.readline().strip()
35
- print_output += str(server_number) + ". " + str(server_info) + "\n"
36
-
37
- print_output += str(
38
- mwi_util.prettify(
39
- boundary_filler="-",
40
- text_arr=["Thank you."],
41
- )
42
- )
43
-
44
- return print_output
86
+ print(f"{server_info}", end="\n")
87
+ else:
88
+ _print_server_info_as_table(servers)
89
+ return
@@ -213,3 +213,13 @@ class Experimental:
213
213
  def should_use_cookie_cache():
214
214
  """Returns true if the cookie jar support is enabled."""
215
215
  return _is_env_set_to_true(Experimental.get_env_name_use_cookie_cache())
216
+
217
+ @staticmethod
218
+ def get_env_name_use_rich_logging():
219
+ """Set to True to enable rich logging to console."""
220
+ return "MWI_USE_RICH_LOGGING"
221
+
222
+ @staticmethod
223
+ def use_rich_logger():
224
+ """Returns true if the cookie jar support is enabled."""
225
+ return _is_env_set_to_true(Experimental.get_env_name_use_rich_logging())
@@ -1,13 +1,15 @@
1
- # Copyright 2020-2024 The MathWorks, Inc.
1
+ # Copyright 2020-2025 The MathWorks, Inc.
2
2
  """Functions to access & control the logging behavior of the app"""
3
3
 
4
+ from . import environment_variables as mwi_env
5
+
6
+ from pathlib import Path
7
+ from rich.console import Console
8
+ from rich.table import Table
4
9
  import logging
5
10
  import os
6
11
  import sys
7
- from pathlib import Path
8
-
9
- from . import environment_variables as mwi_env
10
-
12
+ import time
11
13
 
12
14
  logging.getLogger("aiohttp_session").setLevel(logging.ERROR)
13
15
 
@@ -48,26 +50,43 @@ def __set_logging_configuration():
48
50
  Returns:
49
51
  Logger: Logger object with the set configuration.
50
52
  """
51
- # query for user specified environment variables
53
+ # Create the Logger for MATLABProxy
54
+ logger = __get_mw_logger()
55
+
56
+ # log_level is either set by environment or is the default value.
52
57
  log_level = os.getenv(
53
58
  mwi_env.get_env_name_logging_level(), __get_default_log_level()
54
59
  ).upper()
55
60
 
56
- valid = __is_valid_log_level(log_level)
57
-
58
- if not valid:
61
+ if __is_invalid_log_level(log_level):
59
62
  default_log_level = __get_default_log_level()
60
- logging.warn(
63
+ logging.warning(
61
64
  f"Unknown log level '{log_level}' set. Defaulting to log level '{default_log_level}'..."
62
65
  )
63
66
  log_level = default_log_level
64
67
 
65
- log_file = os.getenv(mwi_env.get_env_name_log_file(), None)
66
-
67
68
  ## Set logging object
68
- logger = __get_mw_logger()
69
- try:
70
- if log_file:
69
+ if mwi_env.Experimental.use_rich_logger():
70
+ from rich.logging import RichHandler
71
+
72
+ rich_handler = RichHandler(
73
+ keywords=[__get_mw_logger_name()],
74
+ )
75
+ rich_handler.setFormatter(logging.Formatter("%(name)s %(message)s"))
76
+ logger.addHandler(rich_handler)
77
+ else:
78
+ colored_formatter = _ColoredFormatter(
79
+ "%(color)s[%(levelname)1.1s %(asctime)s %(name)s]%(end_color)s %(message)s"
80
+ )
81
+ stream_handler = logging.StreamHandler()
82
+ stream_handler.setFormatter(colored_formatter)
83
+ logger.addHandler(stream_handler)
84
+
85
+ logger.setLevel(log_level)
86
+
87
+ log_file = os.getenv(mwi_env.get_env_name_log_file(), None)
88
+ if log_file:
89
+ try:
71
90
  log_file = Path(log_file)
72
91
  # Need to create the file if it doesn't exist or else logging.FileHandler
73
92
  # would open it in 'write' mode instead of 'append' mode.
@@ -75,27 +94,21 @@ def __set_logging_configuration():
75
94
  logger.info(f"Initializing logger with log file:{log_file}")
76
95
  file_handler = logging.FileHandler(filename=log_file, mode="a")
77
96
  formatter = logging.Formatter(
78
- fmt="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
97
+ fmt="[%(levelname)s %(asctime)s %(name)s] %(message)s"
79
98
  )
80
99
  file_handler.setFormatter(formatter)
81
100
  file_handler.setLevel(log_level)
82
101
  logger.addHandler(file_handler)
83
102
 
84
- except PermissionError:
85
- print(f"PermissionError: Permission denied to create log file at: {log_file}")
86
- sys.exit(1)
87
-
88
- except Exception as err:
89
- print(f"Failed to use log file: {log_file} with error: {err}")
90
- sys.exit(1)
91
-
92
- # log_level is either set by environment or is the default value.
93
- logger.info(f"Initializing logger with log_level: {log_level}")
94
- logger.setLevel(log_level)
103
+ except PermissionError:
104
+ print(
105
+ f"PermissionError: Permission denied to create log file at: {log_file}"
106
+ )
107
+ sys.exit(1)
95
108
 
96
- # Allow other libraries used by this integration to
97
- # also print their logs at the specified level
98
- logging.basicConfig(level=log_level)
109
+ except Exception as err:
110
+ print(f"Failed to use log file: {log_file} with error: {err}")
111
+ sys.exit(1)
99
112
 
100
113
  return logger
101
114
 
@@ -121,11 +134,82 @@ def __get_default_log_level():
121
134
  return "INFO"
122
135
 
123
136
 
124
- def __is_valid_log_level(log_level):
137
+ def __is_invalid_log_level(log_level):
125
138
  """Helper to check if the log level is valid.
126
139
 
127
140
  Returns:
128
141
  Boolean: Whether log level exists
129
142
  """
130
143
 
131
- return hasattr(logging, log_level)
144
+ return not hasattr(logging, log_level)
145
+
146
+
147
+ def log_startup_info(title=None, matlab_url=None):
148
+ """Logs the startup information to the console and log file if specified."""
149
+ logger = __get_mw_logger()
150
+ print_as_table = False
151
+ header_info = "Access MATLAB at:"
152
+
153
+ if sys.stdout.isatty():
154
+ # Width cannot be determined in non-interactive sessions
155
+ console = Console()
156
+ # Number of additional characters used by the table
157
+ padding = 4
158
+ print_as_table = len(matlab_url) + padding <= console.width
159
+
160
+ if print_as_table:
161
+ table = Table(
162
+ caption=title,
163
+ show_header=False,
164
+ show_lines=True,
165
+ show_edge=True,
166
+ highlight=True,
167
+ expand=True,
168
+ )
169
+ table.add_column(overflow="fold", style="bold green", justify="center")
170
+ table.add_row(header_info)
171
+ table.add_row(matlab_url)
172
+ console.print(table)
173
+
174
+ if os.getenv(mwi_env.get_env_name_log_file(), None) or not print_as_table:
175
+ logger.critical(f"{header_info} {matlab_url}")
176
+
177
+
178
+ class _ColoredFormatter(logging.Formatter):
179
+ """Custom formatter to add colors based on log level and modify time format."""
180
+
181
+ def format(self, record):
182
+ # Example: Add 'color' and 'end_color' attributes based on log level
183
+ if record.levelno == logging.INFO:
184
+ record.color = "\033[32m" # Green
185
+ record.end_color = "\033[0m"
186
+ elif record.levelno == logging.DEBUG:
187
+ record.color = "\033[94m" # Blue
188
+ record.end_color = "\033[0m"
189
+ elif record.levelno == logging.WARNING:
190
+ record.color = "\033[93m" # Yellow
191
+ record.end_color = "\033[0m"
192
+ elif record.levelno == logging.ERROR:
193
+ record.color = "\033[91m" # Red
194
+ record.end_color = "\033[0m"
195
+ elif record.levelno == logging.CRITICAL:
196
+ record.color = "\033[35m" # Magenta
197
+ record.end_color = "\033[0m"
198
+ else:
199
+ record.color = ""
200
+ record.end_color = ""
201
+
202
+ # Call the original format method
203
+ return super().format(record)
204
+
205
+ def formatTime(self, record, datefmt=None):
206
+ # Default behavior of formatTime
207
+ ct = self.converter(record.created)
208
+ if datefmt:
209
+ s = time.strftime(datefmt, ct)
210
+ else:
211
+ t = time.strftime("%Y-%m-%d %H:%M:%S", ct)
212
+ s = "%s,%03d" % (t, record.msecs)
213
+
214
+ # Replace the comma with a period
215
+ return s.replace(",", ".")
@@ -1,4 +1,4 @@
1
- # Copyright 2020-2024 The MathWorks, Inc.
1
+ # Copyright 2020-2025 The MathWorks, Inc.
2
2
 
3
3
  # This file contains functions required to enable token based authentication in the server.
4
4
 
@@ -39,7 +39,7 @@ def generate_mwi_auth_token_and_hash():
39
39
 
40
40
  if enable_token_auth == "false":
41
41
  if auth_token:
42
- logger.warn(
42
+ logger.warning(
43
43
  f"Ignoring {env_name_mwi_auth_token}, as {env_name_enable_mwi_token_auth} explicitly set to false"
44
44
  )
45
45
  return _format_token_as_dictionary(None)
@@ -70,7 +70,7 @@ def validate_mlm_license_file(nlm_connections_str):
70
70
  # regex = Start of Line, Any number of 0-9 digits , @, any number of nonwhite space characters with "- _ ." allowed
71
71
  # "^[0-9]+[@](\w|\_|\-|\.)+$"
72
72
  # Server triad is of the form : port@host1 or port@host1,port@host2,port@host3
73
- nlm_connection_str_regex = "(^[0-9]+[@](\w|\_|\-|\.)+$)"
73
+ nlm_connection_str_regex = r"(^[0-9]+[@](\w|\_|\-|\.)+$)"
74
74
  error_message = (
75
75
  f"MLM_LICENSE_FILE validation failed for {nlm_connections_str}. "
76
76
  f"If set, the MLM_LICENSE_FILE environment variable must contain server names (each of the form port@hostname) separated by ':' on unix or ';' on windows(server triads however must be comma seperated)"
@@ -380,7 +380,7 @@ def validate_idle_timeout(timeout):
380
380
  return timeout
381
381
 
382
382
  except ValueError:
383
- logger.warn(
383
+ logger.warning(
384
384
  f"Invalid value supplied for {mwi_env.get_env_name_shutdown_on_idle_timeout()}: {timeout}. Continuing without any IDLE timeout."
385
385
  )
386
386
  return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: matlab-proxy
3
- Version: 0.27.0
3
+ Version: 0.27.3
4
4
  Summary: Python® package enables you to launch MATLAB® and access it from a web browser.
5
5
  Project-URL: Homepage, https://github.com/mathworks/matlab-proxy/
6
6
  Project-URL: Documentation, https://github.com/mathworks/matlab-proxy/blob/main/README.md
@@ -23,6 +23,7 @@ Requires-Dist: importlib-metadata
23
23
  Requires-Dist: importlib-resources
24
24
  Requires-Dist: psutil
25
25
  Requires-Dist: requests
26
+ Requires-Dist: rich
26
27
  Requires-Dist: watchdog
27
28
  Provides-Extra: dev
28
29
  Requires-Dist: aiohttp-devtools; extra == 'dev'
@@ -1,20 +1,20 @@
1
1
  matlab_proxy/__init__.py,sha256=6cwi8buKCMtw9OeWaOYUHEoqwl5MyJ_s6GxgNuqPuNg,1673
2
- matlab_proxy/app.py,sha256=QPBSPDneHvqH7T6NHN-bGxluEjHS-fkYGDC0TVDZKvE,37490
3
- matlab_proxy/app_state.py,sha256=oijVEr2iBSu1bf-Pc7Mr8-mVFsPDqE81xkDrOcwN504,73559
2
+ matlab_proxy/app.py,sha256=GKZ7X99Wp3GYG6uBymgURz0iskSi5TvoXn3LX4AkXm0,38036
3
+ matlab_proxy/app_state.py,sha256=XTonzW869Uaco1du3wI4suI_QqZkP-Vycj4zifOF3aE,73498
4
4
  matlab_proxy/constants.py,sha256=gYpS3mls1i3cO4eExbqQO-z_h8QIWTkM9h2S_EAMWSU,1257
5
5
  matlab_proxy/default_configuration.py,sha256=7xjsCzma4c6u0rEzio8xhHaDRy0wY2xtGXuARY2v0hc,1881
6
6
  matlab_proxy/devel.py,sha256=nR6XPVBUEdQ-RZGtYvX1YHTp8gj9cuw5Hp8ahasMBc8,14310
7
- matlab_proxy/settings.py,sha256=yKnjprDNml-wO4Ae-6MiGa9EG1NIzvh-HaCGu-loQBg,29480
7
+ matlab_proxy/settings.py,sha256=x3N7DJXh4DMPlllYFGI9iAIzVsHPLvrFWawJLmO04t8,29400
8
8
  matlab_proxy/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  matlab_proxy/gui/favicon.ico,sha256=7w7Ki1uQP2Rgwc64dOV4-NrTu97I3WsZw8OvRSoY1A0,130876
10
- matlab_proxy/gui/index.html,sha256=DsOZs5RaM72cflhcqV8UUZ8NwS09JlcZG-zlN5XfUcE,720
10
+ matlab_proxy/gui/index.html,sha256=pe177w98jAUrizWJ7DPQB87_rWobCK5QDHD1YfERSs8,720
11
11
  matlab_proxy/gui/manifest.json,sha256=NwDbrALM5auYyj2bbEf4aGwAUDqNl1FzMFQpPiG2Ty4,286
12
12
  matlab_proxy/gui/robots.txt,sha256=kNJLw79pisHhc3OVAimMzKcq3x9WT6sF9IS4xI0crdI,67
13
13
  matlab_proxy/gui/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  matlab_proxy/gui/static/css/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- matlab_proxy/gui/static/css/index.BSVLACuY.css,sha256=LzuRvV10Z0pF0ugGSnj5zKJvT4AHwwBbCd-wSH4mHjg,305333
15
+ matlab_proxy/gui/static/css/index.BLxKpbak.css,sha256=rNBdRyL5Zk8qS_xRLRsjsShsvGxdxWWCA5Da2lofjog,296313
16
16
  matlab_proxy/gui/static/js/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- matlab_proxy/gui/static/js/index.BcDShXfH.js,sha256=9_MsXzl9doo6Lniy_MxwMZe3VlJGepCDsdJ_3mxsKQk,280073
17
+ matlab_proxy/gui/static/js/index.CKi3IRxe.js,sha256=4ZSEclpZ913uQ61EL1L8HVz4k_eSGfUU-JqhwTfeLdo,280015
18
18
  matlab_proxy/gui/static/media/MATLAB-env-blur.NupTbPv_.png,sha256=QpmQTLDvBu2-b7ev83Rvpt0Q72R6wdQGkuJMPPpjv7M,220290
19
19
  matlab_proxy/gui/static/media/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  matlab_proxy/gui/static/media/glyphicons-halflings-regular.BKjkU69z.woff,sha256=omOU9-3hAMoRjv8u2ghZYnWpg5uVnCJuFUOVV6WoB0I,23424
@@ -39,22 +39,22 @@ matlab_proxy/gui/static/media/trigger-ok.Dzg8OIrk.svg,sha256=mD-7N9cc4ARdMBFcpln
39
39
  matlab_proxy/icons/matlab.svg,sha256=xh5uYebQd8I-ISvenjU9A-PkClzW_lU9wvm3doXOFKM,13366
40
40
  matlab_proxy/matlab/evaluateUserMatlabCode.m,sha256=R8w6nPdGtadR4UUFJaspcrGQL7cJwUItdrfc531w3bM,2420
41
41
  matlab_proxy/matlab/startup.m,sha256=UcA4i2lAMytwBsO783uPIQoP5Pzw1R0xrUywbBBtTjw,533
42
- matlab_proxy/util/__init__.py,sha256=JkVIsTOae5giDK0cQ7jcxQSHa8zo1umdq-1C0grDZwk,11712
42
+ matlab_proxy/util/__init__.py,sha256=pelRJiSNKkEcE6dxj609QJCJ-NByq_FBHMUXGnJZRy0,11155
43
43
  matlab_proxy/util/cookie_jar.py,sha256=GceKyB53lTX5r2wp9myvf0JDWDfvSamvjb4zmjkoOtY,2401
44
44
  matlab_proxy/util/event_loop.py,sha256=sX_0tKlirCY5ImLxkss_XO4Ksj65u6JHtwMj25oGL94,1816
45
- matlab_proxy/util/list_servers.py,sha256=vdagTACoNM9zxJHeagAF7EbQNV-BjFsinf4JSX8H3SE,1388
45
+ matlab_proxy/util/list_servers.py,sha256=so6nj32xGNGLrua4qu5FA5jiDsocVDP-RehthtLwctk,3004
46
46
  matlab_proxy/util/mw.py,sha256=dLGSdfcTZiwKR1MMZA-39o-8na13IEPZOGBqcaHmKVI,11086
47
47
  matlab_proxy/util/system.py,sha256=XoT3Rv5MwPkdfhk2oMvUwxxlzZmADMlxzi9IRQyGgbA,1692
48
48
  matlab_proxy/util/windows.py,sha256=_5gl2IyHIfw8-D3_G5uHkycZVGGFVXtjkd6_aP3g2Ts,3785
49
49
  matlab_proxy/util/mwi/__init__.py,sha256=zI-X1lafr8H3j17PyA0oSZ0q5nINfK-WDA7VmJKmSAQ,158
50
50
  matlab_proxy/util/mwi/custom_http_headers.py,sha256=kfDjSnEXEVzoF2pZuEn76LKayeD2WKoQEDu2Y9EMOAo,7154
51
51
  matlab_proxy/util/mwi/download.py,sha256=-GJj3yOsL4vF_9baqRXkgBI-vu_OwjZMQVkJXFS8GMc,4965
52
- matlab_proxy/util/mwi/environment_variables.py,sha256=1toY2D1vybmNin0jq-vhx86B2bXAUpb5Njw0soyaiTQ,7134
52
+ matlab_proxy/util/mwi/environment_variables.py,sha256=2diNgBbDDaM67aVHycYNczjViY3zc-w7QN2TVTJv43o,7485
53
53
  matlab_proxy/util/mwi/exceptions.py,sha256=8o4PZmira_ZonnOROzu8ERIiSn9y-456JO89gqjCags,5446
54
- matlab_proxy/util/mwi/logger.py,sha256=GoisSphy3Jyi5-6-X0WRl1YkdrKx2xzjSxBN_w3oTU8,3802
54
+ matlab_proxy/util/mwi/logger.py,sha256=1ndW0VPqPNjuGT8wK8x771qD5JBtUoQe-kZFluzS_RA,6785
55
55
  matlab_proxy/util/mwi/session_name.py,sha256=HQAGMlJo6KMb2f9MBcavni48nw9H-cHWMeJKmXxpeys,915
56
- matlab_proxy/util/mwi/token_auth.py,sha256=UbIWqo7qADaZdijFvorLYsZbxzaB8TycGP8nk305ru0,9997
57
- matlab_proxy/util/mwi/validators.py,sha256=tofVI81DT0KinxZ99XeN96ybkwz-6Lt-e-tN7PXkolk,13235
56
+ matlab_proxy/util/mwi/token_auth.py,sha256=CEmWcz8LCBnt4Z73CTLhz2-awZaJgw8oi4eqaHN0MRU,10000
57
+ matlab_proxy/util/mwi/validators.py,sha256=wLVU0M7on1PvHDhwH25qx_TxeYSHh5RoF3sJQvHMrBI,13239
58
58
  matlab_proxy/util/mwi/embedded_connector/__init__.py,sha256=Vfl2hNC7V1IwoK9_wrwfENs4BC8P-Mvvqh4BNGi2n48,119
59
59
  matlab_proxy/util/mwi/embedded_connector/helpers.py,sha256=kpIgJN0AqYLeX56UylWgB0t07fg8sh0RhIlUH_8JitM,3654
60
60
  matlab_proxy/util/mwi/embedded_connector/request.py,sha256=RXoVvrm5fibVb2A6EZnkMWwAQkYX3J5kqDTGQDZo9p0,4316
@@ -80,8 +80,8 @@ matlab_proxy_manager/web/__init__.py,sha256=KfwQxxM5a1kMRtNbhz8tb7YfHp8e2d0tNLB5
80
80
  matlab_proxy_manager/web/app.py,sha256=-sfeJ4ltvcT1-8m0rOZkn357XQTSSNSPIUb3fidT71Y,20643
81
81
  matlab_proxy_manager/web/monitor.py,sha256=PWkwV0kP3XHCxDRHpurPh74Zg-SgaIXnCnX2xZSW_R8,1541
82
82
  matlab_proxy_manager/web/watcher.py,sha256=89JHjBAQtOrllstaJFxqrjHwckpRmu3qfUqeqPLmH2Q,2130
83
- matlab_proxy-0.27.0.dist-info/METADATA,sha256=80E3g1CABuNM_zS6w8lhzJ8IbkfzvM1Nny7pui82kO4,11323
84
- matlab_proxy-0.27.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
85
- matlab_proxy-0.27.0.dist-info/entry_points.txt,sha256=3wztwXpt6wdGfTwscc4qHbCeWzi0E2XhyJbMDndyQKc,304
86
- matlab_proxy-0.27.0.dist-info/licenses/LICENSE.md,sha256=oF0h3UdSF-rlUiMGYwi086ZHqelzz7yOOk9HFDv9ELo,2344
87
- matlab_proxy-0.27.0.dist-info/RECORD,,
83
+ matlab_proxy-0.27.3.dist-info/METADATA,sha256=txtH2wTi8d3bjLrALZVMJwJtcPuzWICJB3sg6j8L8Kw,11343
84
+ matlab_proxy-0.27.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
85
+ matlab_proxy-0.27.3.dist-info/entry_points.txt,sha256=3wztwXpt6wdGfTwscc4qHbCeWzi0E2XhyJbMDndyQKc,304
86
+ matlab_proxy-0.27.3.dist-info/licenses/LICENSE.md,sha256=oF0h3UdSF-rlUiMGYwi086ZHqelzz7yOOk9HFDv9ELo,2344
87
+ matlab_proxy-0.27.3.dist-info/RECORD,,