66#
77# Mozilla Public License, version 2.0 (see LICENSE or https://www.mozilla.org/en-US/MPL/2.0/)
88import uuid
9- from typing import Any , Dict , Type , Union
9+ from typing import TYPE_CHECKING , Any , Dict , Type , Union
1010from weakref import WeakValueDictionary
1111
1212import structlog
13- from fasteners import InterProcessLock
1413
1514from kiara .defaults import KIARA_MAIN_CONTEXT_LOCKS_PATH
16- from kiara .utils import is_debug , is_develop
15+ from kiara .utils import is_debug , is_develop , is_emscripten
16+
17+ if TYPE_CHECKING :
18+ from fasteners import InterProcessLock
1719
1820logger = structlog .getLogger ()
1921
@@ -30,26 +32,32 @@ def __init__(self) -> None:
3032 self ._process_context_locks : Dict [uuid .UUID , InterProcessLock ] = {}
3133
3234 def lock_context (self , context_id : uuid .UUID ) -> bool :
33- if context_id not in self ._process_context_locks .keys ():
34- lock = InterProcessLock (
35- os .path .join (
36- KIARA_MAIN_CONTEXT_LOCKS_PATH , f"context_{ context_id } .lock"
35+ if not is_emscripten ():
36+ from fasteners import InterProcessLock
37+
38+ if context_id not in self ._process_context_locks .keys ():
39+ lock = InterProcessLock (
40+ os .path .join (
41+ KIARA_MAIN_CONTEXT_LOCKS_PATH , f"context_{ context_id } .lock"
42+ )
3743 )
38- )
39- self ._process_context_locks [context_id ] = lock
40- else :
41- lock = self ._process_context_locks [context_id ]
44+ self ._process_context_locks [context_id ] = lock
45+ else :
46+ lock = self ._process_context_locks [context_id ]
4247
43- aquired : bool = lock .acquire (blocking = False )
44- return aquired
48+ aquired : bool = lock .acquire (blocking = False )
49+ return aquired
50+ else :
51+ return True
4552
4653 def unlock_context (self , context_id : uuid .UUID ):
47- if context_id not in self ._process_context_locks .keys ():
48- return
54+ if not is_emscripten ():
55+ if context_id not in self ._process_context_locks .keys ():
56+ return
4957
50- lock = self ._process_context_locks [context_id ]
51- if lock .acquired :
52- lock .release ()
58+ lock = self ._process_context_locks [context_id ]
59+ if lock .acquired :
60+ lock .release ()
5361
5462 def generate (
5563 self ,
0 commit comments