11import atexit
22import re
33from pathlib import Path
4- from typing import Any , Dict , Optional , Sequence
4+ from typing import Any
5+ from collections .abc import Sequence
56
67from .ffi import ffi , load_mono
78from .types import Runtime , RuntimeInfo , StrOrPath
1718class Mono (Runtime ):
1819 def __init__ (
1920 self ,
20- libmono : Optional [ Path ] ,
21+ libmono : Path | None ,
2122 * ,
22- domain : Optional [ str ] = None ,
23+ domain : str | None = None ,
2324 debug : bool = False ,
24- jit_options : Optional [ Sequence [str ]] = None ,
25- config_file : Optional [ Path ] = None ,
26- global_config_file : Optional [ Path ] = None ,
27- assembly_dir : Optional [ str ] = None ,
28- config_dir : Optional [ str ] = None ,
25+ jit_options : Sequence [str ] | None = None ,
26+ config_file : Path | None = None ,
27+ global_config_file : Path | None = None ,
28+ assembly_dir : StrOrPath | None = None ,
29+ config_dir : StrOrPath | None = None ,
2930 set_signal_chaining : bool = False ,
30- trace_mask : Optional [ str ] = None ,
31- trace_level : Optional [ str ] = None ,
31+ trace_mask : str | None = None ,
32+ trace_level : str | None = None ,
3233 ):
33- self ._assemblies : Dict [Path , Any ] = {}
34+ self ._assemblies : dict [Path , Any ] = {}
3435
3536 self ._version : str = initialize (
3637 config_file = optional_path_as_string (config_file ),
@@ -129,16 +130,16 @@ def __call__(self, ptr, size):
129130
130131
131132def initialize (
132- libmono : Optional [ Path ] ,
133+ libmono : Path | None ,
133134 debug : bool = False ,
134- jit_options : Optional [ Sequence [str ]] = None ,
135- config_file : Optional [ str ] = None ,
136- global_config_file : Optional [ str ] = None ,
137- assembly_dir : Optional [ str ] = None ,
138- config_dir : Optional [ str ] = None ,
135+ jit_options : Sequence [str ] | None = None ,
136+ config_file : str | None = None ,
137+ global_config_file : str | None = None ,
138+ assembly_dir : StrOrPath | None = None ,
139+ config_dir : StrOrPath | None = None ,
139140 set_signal_chaining : bool = False ,
140- trace_mask : Optional [ str ] = None ,
141- trace_level : Optional [ str ] = None ,
141+ trace_mask : str | None = None ,
142+ trace_level : str | None = None ,
142143) -> str :
143144 global _MONO , _ROOT_DOMAIN
144145 if _MONO is None :
@@ -151,7 +152,10 @@ def initialize(
151152 _MONO .mono_trace_set_level_string (trace_level .encode ("utf8" ))
152153
153154 if assembly_dir is not None and config_dir is not None :
154- _MONO .mono_set_dirs (assembly_dir .encode ("utf8" ), config_dir .encode ("utf8" ))
155+ _MONO .mono_set_dirs (
156+ path_as_string (assembly_dir ).encode ("utf8" ),
157+ path_as_string (config_dir ).encode ("utf8" ),
158+ )
155159
156160 # Load in global config (i.e /etc/mono/config)
157161 global_encoded = global_config_file or ffi .NULL
0 commit comments