Skip to content

Commit 98e8938

Browse files
author
Mohamed Koubaa
committed
add option to disable warning
1 parent f2058b4 commit 98e8938

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

clr_loader/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def get_mono(
3131
debug: bool = False,
3232
jit_options: Optional[Sequence[str]] = None,
3333
assembly_dir: Optional[str] = None,
34+
disable_warning: Optional[bool] = False,
3435
config_dir: Optional[str] = None,
3536
set_signal_chaining: bool = False
3637
) -> Runtime:
@@ -53,6 +54,9 @@ def get_mono(
5354
"Command line options" passed to Mono's ``mono_jit_parse_options``
5455
:param assembly_dir:
5556
The base directory for assemblies, passed to ``mono_set_dirs``
57+
:param disable_warning:
58+
Whether to disable the warning message that is printed for Mono versions
59+
older than 6.12
5660
:param config_dir:
5761
The base directory for configuration files, passed to ``mono_set_dirs``
5862
:param set_signal_chaining:
@@ -80,8 +84,9 @@ def get_mono(
8084
global_config_file=_maybe_path(global_config_file),
8185
libmono=libmono,
8286
assembly_dir=assembly_dir,
87+
disable_warning=disable_warning,
8388
config_dir=config_dir,
84-
set_signal_chaining=set_signal_chaining,
89+
set_signal_chaining=set_signal_chaining
8590
)
8691
return impl
8792

clr_loader/mono.py

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,28 @@ def __call__(self, ptr, size):
121121
return unboxed[0]
122122

123123

124+
def _warn_mono_version(ver_str: str):
125+
ver = re.match(r"^(?P<major>\d+)\.(?P<minor>\d+)\.[\d.]+", ver_str)
126+
if ver is not None:
127+
major = int(ver.group("major"))
128+
minor = int(ver.group("minor"))
129+
130+
if major < 6 or (major == 6 and minor < 12):
131+
import warnings
132+
133+
warnings.warn(
134+
"Hosting Mono versions before v6.12 is known to be problematic. "
135+
"If the process crashes shortly after you see this message, try "
136+
"updating Mono to at least v6.12."
137+
)
138+
139+
124140
def initialize(
125141
libmono: Optional[Path],
126142
debug: bool = False,
127143
jit_options: Optional[Sequence[str]] = None,
128144
config_file: Optional[str] = None,
145+
disable_warning: Optional[bool] = False,
129146
global_config_file: Optional[str] = None,
130147
assembly_dir: Optional[str] = None,
131148
config_dir: Optional[str] = None,
@@ -168,20 +185,8 @@ def initialize(
168185
build = _MONO.mono_get_runtime_build_info()
169186
_check_result(build, "Failed to get Mono version")
170187
ver_str = ffi.string(build).decode("utf8") # e.g. '6.12.0.122 (tarball)'
171-
172-
ver = re.match(r"^(?P<major>\d+)\.(?P<minor>\d+)\.[\d.]+", ver_str)
173-
if ver is not None:
174-
major = int(ver.group("major"))
175-
minor = int(ver.group("minor"))
176-
177-
if major < 6 or (major == 6 and minor < 12):
178-
import warnings
179-
180-
warnings.warn(
181-
"Hosting Mono versions before v6.12 is known to be problematic. "
182-
"If the process crashes shortly after you see this message, try "
183-
"updating Mono to at least v6.12."
184-
)
188+
if not disable_warning:
189+
_warn_mono_version(ver_str)
185190

186191
atexit.register(_release)
187192
return ver_str

0 commit comments

Comments
 (0)