wslink 2.3.0__py3-none-any.whl → 2.3.2__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
wslink/emitter.py CHANGED
@@ -1,26 +1,28 @@
1
- from typing import TypeVar, Generic, LiteralString
2
-
3
1
  import asyncio
4
2
  import functools
5
3
 
6
4
 
7
- T = TypeVar("T", bound=LiteralString)
5
+ class EventEmitter:
6
+ def __init__(self, allowed_events=None):
7
+ self._listeners = {}
8
8
 
9
+ if allowed_events is None:
10
+ allowed_events = []
9
11
 
10
- class EventEmitter(Generic[T]):
11
- def __init__(self):
12
- self._listeners = {}
12
+ self._allowed_events = set(allowed_events)
13
+
14
+ for event in self._allowed_events:
15
+ setattr(self, event, functools.partial(self.emit, event))
13
16
 
14
17
  def clear(self):
15
18
  self._listeners = {}
16
19
 
17
- def __call__(self, event: T, *args, **kwargs):
20
+ def __call__(self, event, *args, **kwargs):
18
21
  self.emit(event, *args, **kwargs)
19
22
 
20
- def __getattr__(self, name: T):
21
- return functools.partial(self.emit, name)
23
+ def emit(self, event, *args, **kwargs):
24
+ self._validate_event(event)
22
25
 
23
- def emit(self, event: T, *args, **kwargs):
24
26
  listeners = self._listeners.get(event)
25
27
  if listeners is None:
26
28
  return
@@ -36,7 +38,9 @@ class EventEmitter(Generic[T]):
36
38
  else:
37
39
  listener(*args, **kwargs)
38
40
 
39
- def add_event_listener(self, event: T, listener):
41
+ def add_event_listener(self, event, listener):
42
+ self._validate_event(event)
43
+
40
44
  listeners = self._listeners.get(event)
41
45
  if listeners is None:
42
46
  listeners = set()
@@ -44,7 +48,9 @@ class EventEmitter(Generic[T]):
44
48
 
45
49
  listeners.add(listener)
46
50
 
47
- def remove_event_listener(self, event: T, listener):
51
+ def remove_event_listener(self, event, listener):
52
+ self._validate_event(event)
53
+
48
54
  listeners = self._listeners.get(event)
49
55
  if listeners is None:
50
56
  return
@@ -52,12 +58,27 @@ class EventEmitter(Generic[T]):
52
58
  if listener in listeners:
53
59
  listeners.remove(listener)
54
60
 
55
- def has(self, event: T):
61
+ def has(self, event):
56
62
  return self.listeners_count(event) > 0
57
63
 
58
- def listeners_count(self, event: T):
64
+ def listeners_count(self, event):
65
+ self._validate_event(event)
66
+
59
67
  listeners = self._listeners.get(event)
60
68
  if listeners is None:
61
69
  return 0
62
70
 
63
71
  return len(listeners)
72
+
73
+ @property
74
+ def allowed_events(self):
75
+ return self._allowed_events
76
+
77
+ def _validate_event(self, event):
78
+ if len(self.allowed_events) == 0:
79
+ return
80
+
81
+ if event not in self.allowed_events:
82
+ raise ValueError(
83
+ f"'{event}' is not a known event of this EventEmitter: {self.allowed_events}"
84
+ )
wslink/websocket.py CHANGED
@@ -6,8 +6,6 @@ ServerProtocol to hook all the needed LinkProtocols together.
6
6
 
7
7
  import logging
8
8
  import asyncio
9
- from typing import Literal
10
- from dataclasses import dataclass
11
9
 
12
10
  from wslink import register as exportRpc
13
11
  from wslink import schedule_callback
@@ -120,9 +118,6 @@ class NetworkMonitor:
120
118
  await self.event.wait()
121
119
 
122
120
 
123
- LogEmitterEvents = Literal["exception", "error", "critical", "info", "debug"]
124
-
125
-
126
121
  class ServerProtocol(object):
127
122
  """
128
123
  Defines the core server protocol for wslink. Gathers a list of LinkProtocol
@@ -131,7 +126,9 @@ class ServerProtocol(object):
131
126
 
132
127
  def __init__(self):
133
128
  self.network_monitor = NetworkMonitor()
134
- self.log_emitter = EventEmitter[LogEmitterEvents]()
129
+ self.log_emitter = EventEmitter(
130
+ allowed_events=["exception", "error", "critical", "info", "debug"]
131
+ )
135
132
  self.linkProtocols = []
136
133
  self.secret = None
137
134
  self.initialize()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wslink
3
- Version: 2.3.0
3
+ Version: 2.3.2
4
4
  Summary: Python/JavaScript library for communicating over WebSocket
5
5
  Home-page: https://github.com/kitware/wslink
6
6
  Author: Kitware, Inc.
@@ -1,7 +1,7 @@
1
1
  wslink/LICENSE,sha256=I44UH7kDVqxDLnnlOWw_hFL2Fz7RjQ_4vPzZv9NYgTU,1483
2
2
  wslink/__init__.py,sha256=qdLGVhzpEXBoraTnLr5S-8bX9oK8pZCQWe8rZRlwAco,2946
3
3
  wslink/chunking.py,sha256=1DJlGG6fjknGFrqPOtqUUc5tCrijldP7Kdx56d5e3Wg,7337
4
- wslink/emitter.py,sha256=4nm5fOwfvSb5tHq5cZtUsF8YNpuphl05QZQzNHljfRU,1669
4
+ wslink/emitter.py,sha256=eniDanfasJeEa5rDC92nmgaAVWKjjmgZaqbCZwlwQIw,2228
5
5
  wslink/launcher.py,sha256=8VMs3juObLkyGYQFNLjMoo4qFpKIcxWz0kS-af-DKO4,21170
6
6
  wslink/protocol.py,sha256=IUvdYzXaaKP4qllJps6uQ8zvbipbH6MVwU6o6f60Kuc,17265
7
7
  wslink/publish.py,sha256=Xyv9piZT4HxO5l_SA7zeReH8t6tisVHUgU57Hjzgkcg,1595
@@ -9,7 +9,7 @@ wslink/relay.py,sha256=E8Lzu2Ay7KbOheN1-ArAZawo8lLqdDgJXOZSBuMknYs,86
9
9
  wslink/server.py,sha256=yvhCjpzPOfhbZrpDvW9i4H_uSyuQAe3ZOP-BRBmgHQA,9326
10
10
  wslink/ssl_context.py,sha256=hNOJJCdrStws1Qf6vPvY4vTk9Bf8J5d90W3fS0cRv8o,2290
11
11
  wslink/uri.py,sha256=woCQ4yChUqTMg9IT6YYDtUYeKmCg7OUCEgeBGA-19DY,384
12
- wslink/websocket.py,sha256=T47xgY6fgQQqDqcxmZpamIEvhQtvw_TWGeF2Es1dIpI,6350
12
+ wslink/websocket.py,sha256=mQCcKHM4xAjlMj3gHeuIDgk9TM9cfNniOb5y_hMMQVg,6279
13
13
  wslink/backends/__init__.py,sha256=cyJGjm-YyBSyOEX81owyTbJ3YnrA6dB7--B4LnsEtHI,1214
14
14
  wslink/backends/aiohttp/__init__.py,sha256=SSK5a_lxuEZGyW_mMMipgvAhJQQLhxAImR3jRokFchM,9301
15
15
  wslink/backends/aiohttp/launcher.py,sha256=gHNMvtgNHEwBN_QBRDSCrTp2B4K1PsfV81rKaHi7Cxo,8897
@@ -20,7 +20,7 @@ wslink/backends/jupyter/__init__.py,sha256=Qu65gWsd2xCSsxybnDtEDI5vMjHN-F5jgPZOy
20
20
  wslink/backends/jupyter/core.py,sha256=F8R3uH4m6RHCrHHRiA5UAgDOLdyGbpuCSAgCZxANREk,2794
21
21
  wslink/backends/tornado/__init__.py,sha256=Qu65gWsd2xCSsxybnDtEDI5vMjHN-F5jgPZOyNIxnGs,112
22
22
  wslink/backends/tornado/core.py,sha256=tPMkkhWuO_ovkisVim0zcegwZKEAG4IRUdd_O_0a_R0,2157
23
- wslink-2.3.0.dist-info/METADATA,sha256=hisMCyrZAwxLjXz24KZ74-VaFyHvusXzfpnzU0U5wJM,3120
24
- wslink-2.3.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
25
- wslink-2.3.0.dist-info/top_level.txt,sha256=N0d8eqvhwhfW1p1yPTmvxlbzhjz7ZyhBfysNvaFqpQY,7
26
- wslink-2.3.0.dist-info/RECORD,,
23
+ wslink-2.3.2.dist-info/METADATA,sha256=XfA7lfjUyU-5hJJjQKquzZOjyTLQZDOjOjDeELLnxk0,3120
24
+ wslink-2.3.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
25
+ wslink-2.3.2.dist-info/top_level.txt,sha256=N0d8eqvhwhfW1p1yPTmvxlbzhjz7ZyhBfysNvaFqpQY,7
26
+ wslink-2.3.2.dist-info/RECORD,,
File without changes