Skip to content

Commit 91aa271

Browse files
Lorenzo CurcioLorenzo Curcio
Lorenzo Curcio
authored and
Lorenzo Curcio
committed
now requires #type: ignore
1 parent e180073 commit 91aa271

File tree

9 files changed

+149
-66
lines changed

9 files changed

+149
-66
lines changed

dapr/actor/runtime/mock_actor.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
from dapr.actor.runtime._timer_data import TIMER_CALLBACK, ActorTimerData
2222
from dapr.actor.runtime.actor import Actor
2323
from dapr.actor.runtime.mock_state_manager import MockStateManager
24-
from dapr.actor.runtime.state_manager import ActorStateManager
2524

2625

2726
class MockActor(Actor):
@@ -72,15 +71,15 @@ async def register_timer(
7271
"""
7372
name = name or self.__get_new_timer_name()
7473
timer = ActorTimerData(name, callback, state, due_time, period, ttl)
75-
self._state_manager._mock_timers[name] = timer
74+
self._state_manager._mock_timers[name] = timer # type: ignore
7675

7776
async def unregister_timer(self, name: str) -> None:
7877
"""Unregisters actor timer from self._state_manager._mock_timers.
7978
8079
Args:
8180
name (str): the name of the timer to unregister.
8281
"""
83-
self._state_manager._mock_timers.pop(name, None)
82+
self._state_manager._mock_timers.pop(name, None) # type: ignore
8483

8584
async def register_reminder(
8685
self,
@@ -102,15 +101,15 @@ async def register_reminder(
102101
ttl (datetime.timedelta): the time interval before the reminder stops firing
103102
"""
104103
reminder = ActorReminderData(name, state, due_time, period, ttl)
105-
self._state_manager._mock_reminders[name] = reminder
104+
self._state_manager._mock_reminders[name] = reminder # type: ignore
106105

107106
async def unregister_reminder(self, name: str) -> None:
108107
"""Unregisters actor reminder from self._state_manager._mock_reminders..
109108
110109
Args:
111110
name (str): the name of the reminder to unregister.
112111
"""
113-
self._state_manager._mock_reminders.pop(name, None)
112+
self._state_manager._mock_reminders.pop(name, None) # type: ignore
114113

115114

116115
T = TypeVar('T', bound=Actor)

dapr/actor/runtime/state_manager.py

-5
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
from dapr.actor.runtime.state_change import ActorStateChange, StateChangeKind
2222

2323
if TYPE_CHECKING:
24-
from dapr.actor.runtime._reminder_data import ActorReminderData
25-
from dapr.actor.runtime._timer_data import ActorTimerData
2624
from dapr.actor.runtime.actor import Actor
2725

2826
T = TypeVar('T')
@@ -70,9 +68,6 @@ def __init__(self, actor: 'Actor'):
7068
self._type_name = actor.runtime_ctx.actor_type_info.type_name
7169

7270
self._default_state_change_tracker: Dict[str, StateMetadata] = {}
73-
self._mock_state: Dict[str, Any]
74-
self._mock_timers: Dict[str, ActorTimerData]
75-
self._mock_reminders: Dict[str, ActorReminderData]
7671

7772
async def add_state(self, state_name: str, value: T) -> None:
7873
if not await self.try_add_state(state_name, value):

daprdocs/content/en/python-sdk-docs/python-actor.md

+3
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ assert mockactor._state_manager._mock_state['mystate'] == 5 #True
8282
Mock actors are created by passing your actor class and an actor ID (a string) to the create_mock_actor function. This function returns an instance of the actor with many internal methods overridden. Instead of interacting with Dapr for tasks like saving state or managing timers, the mock actor uses in-memory state to simulate these behaviors.
8383

8484
This state can be accessed through the following variables:
85+
86+
**IMPORTANT NOTE: Due to type hinting issues as discussed further down, these variables will not be visible to type hinters/linters/etc, who will think they are invalid variables. You will need to use them with #type: ignore in order to satisfy any such systems.**
87+
8588
- **_state_manager._mock_state()**
8689
A `[str, object]` dict where all the actor state is stored. Any variable saved via `_state_manager.save_state(key, value)`, or any other statemanager method is stored in the dict as that key, value pair. Any value loaded via `try_get_state` or any other statemanager method is taken from this dict.
8790

docs/clients/clients.grpc.rst

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
clients.grpc package
2+
====================
3+
4+
Submodules
5+
----------
6+
7+
8+
.. automodule:: clients.grpc.client
9+
:members:
10+
:undoc-members:
11+
:show-inheritance:
12+
13+
14+
.. automodule:: clients.grpc.interceptors
15+
:members:
16+
:undoc-members:
17+
:show-inheritance:
18+
19+
20+
.. automodule:: clients.grpc.subscription
21+
:members:
22+
:undoc-members:
23+
:show-inheritance:
24+
25+
Module contents
26+
---------------
27+
28+
.. automodule:: clients.grpc
29+
:members:
30+
:undoc-members:
31+
:show-inheritance:

docs/proto/proto.runtime.rst

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
proto.runtime package
2+
=====================
3+
4+
Subpackages
5+
-----------
6+
7+
.. toctree::
8+
:maxdepth: 4
9+
10+
proto.runtime.v1
11+
12+
Module contents
13+
---------------
14+
15+
.. automodule:: proto.runtime
16+
:members:
17+
:undoc-members:
18+
:show-inheritance:

docs/proto/proto.runtime.v1.rst

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
proto.runtime.v1 package
2+
========================
3+
4+
Submodules
5+
----------
6+
7+
8+
.. automodule:: proto.runtime.v1.appcallback_pb2
9+
:members:
10+
:undoc-members:
11+
:show-inheritance:
12+
13+
14+
.. automodule:: proto.runtime.v1.appcallback_pb2_grpc
15+
:members:
16+
:undoc-members:
17+
:show-inheritance:
18+
19+
20+
.. automodule:: proto.runtime.v1.dapr_pb2
21+
:members:
22+
:undoc-members:
23+
:show-inheritance:
24+
25+
26+
.. automodule:: proto.runtime.v1.dapr_pb2_grpc
27+
:members:
28+
:undoc-members:
29+
:show-inheritance:
30+
31+
Module contents
32+
---------------
33+
34+
.. automodule:: proto.runtime.v1
35+
:members:
36+
:undoc-members:
37+
:show-inheritance:

examples/demo_actor/demo_actor/test_demo_actor.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def test_create_actor(self):
1212

1313
async def test_get_data(self):
1414
mockactor = create_mock_actor(DemoActor, '1')
15-
self.assertFalse(mockactor._state_manager._mock_state)
15+
self.assertFalse(mockactor._state_manager._mock_state) # type: ignore
1616
val = await mockactor.get_my_data()
1717
self.assertIsNone(val)
1818

@@ -33,8 +33,8 @@ async def test_clear_data(self):
3333

3434
async def test_reminder(self):
3535
mockactor = create_mock_actor(DemoActor, '1')
36-
self.assertFalse(mockactor._state_manager._mock_reminders)
36+
self.assertFalse(mockactor._state_manager._mock_reminders) # type: ignore
3737
await mockactor.set_reminder(True)
38-
self.assertTrue('demo_reminder' in mockactor._state_manager._mock_reminders)
38+
self.assertTrue('demo_reminder' in mockactor._state_manager._mock_reminders) # type: ignore
3939
await mockactor.set_reminder(False)
40-
self.assertFalse(mockactor._state_manager._mock_reminders)
40+
self.assertFalse(mockactor._state_manager._mock_reminders) # type: ignore

tests/actor/test_mock_actor.py

+40-40
Original file line numberDiff line numberDiff line change
@@ -150,14 +150,14 @@ def test_create_actor(self):
150150

151151
async def test_inistate(self):
152152
mockactor = create_mock_actor(MockTestActor, '1', initstate={'state': 5})
153-
self.assertTrue('state' in mockactor._state_manager._mock_state)
154-
self.assertEqual(mockactor._state_manager._mock_state['state'], 5)
153+
self.assertTrue('state' in mockactor._state_manager._mock_state) # type: ignore
154+
self.assertEqual(mockactor._state_manager._mock_state['state'], 5) # type: ignore
155155

156156
async def test_on_activate(self):
157157
mockactor = create_mock_actor(MockTestActor, '1')
158158
await mockactor._on_activate()
159-
self.assertTrue('state' in mockactor._state_manager._mock_state)
160-
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 5})
159+
self.assertTrue('state' in mockactor._state_manager._mock_state) # type: ignore
160+
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 5}) # type: ignore
161161

162162
async def test_get_data(self):
163163
mockactor = create_mock_actor(MockTestActor, '1')
@@ -173,48 +173,48 @@ async def test_get_data_initstate(self):
173173
async def test_set_data(self):
174174
mockactor = create_mock_actor(MockTestActor, '1')
175175
await mockactor._on_activate()
176-
self.assertTrue('state' in mockactor._state_manager._mock_state)
177-
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 5})
176+
self.assertTrue('state' in mockactor._state_manager._mock_state) # type: ignore
177+
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 5}) # type: ignore
178178
await mockactor.set_data({'test': 10})
179-
self.assertTrue('state' in mockactor._state_manager._mock_state)
180-
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 10})
179+
self.assertTrue('state' in mockactor._state_manager._mock_state) # type: ignore
180+
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 10}) # type: ignore
181181
out1 = await mockactor.get_data()
182182
self.assertEqual(out1, {'test': 10})
183183

184184
async def test_clear_data(self):
185185
mockactor = create_mock_actor(MockTestActor, '1')
186186
await mockactor._on_activate()
187-
self.assertTrue('state' in mockactor._state_manager._mock_state)
188-
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 5})
187+
self.assertTrue('state' in mockactor._state_manager._mock_state) # type: ignore
188+
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 5}) # type: ignore
189189
await mockactor.clear_data()
190-
self.assertFalse('state' in mockactor._state_manager._mock_state)
191-
self.assertIsNone(mockactor._state_manager._mock_state.get('state'))
190+
self.assertFalse('state' in mockactor._state_manager._mock_state) # type: ignore
191+
self.assertIsNone(mockactor._state_manager._mock_state.get('state')) # type: ignore
192192
out1 = await mockactor.get_data()
193193
self.assertIsNone(out1)
194194

195195
async def test_toggle_reminder(self):
196196
mockactor = create_mock_actor(MockTestActor, '1')
197197
await mockactor._on_activate()
198-
self.assertEqual(len(mockactor._state_manager._mock_reminders), 0)
198+
self.assertEqual(len(mockactor._state_manager._mock_reminders), 0) # type: ignore
199199
await mockactor.toggle_reminder('test', True)
200-
self.assertEqual(len(mockactor._state_manager._mock_reminders), 1)
201-
self.assertTrue('test' in mockactor._state_manager._mock_reminders)
202-
reminderstate = mockactor._state_manager._mock_reminders['test']
200+
self.assertEqual(len(mockactor._state_manager._mock_reminders), 1) # type: ignore
201+
self.assertTrue('test' in mockactor._state_manager._mock_reminders) # type: ignore
202+
reminderstate = mockactor._state_manager._mock_reminders['test'] # type: ignore
203203
self.assertTrue(reminderstate.reminder_name, 'test')
204204
await mockactor.toggle_reminder('test', False)
205-
self.assertEqual(len(mockactor._state_manager._mock_reminders), 0)
205+
self.assertEqual(len(mockactor._state_manager._mock_reminders), 0) # type: ignore
206206

207207
async def test_toggle_timer(self):
208208
mockactor = create_mock_actor(MockTestActor, '1')
209209
await mockactor._on_activate()
210-
self.assertEqual(len(mockactor._state_manager._mock_timers), 0)
210+
self.assertEqual(len(mockactor._state_manager._mock_timers), 0) # type: ignore
211211
await mockactor.toggle_timer('test', True)
212-
self.assertEqual(len(mockactor._state_manager._mock_timers), 1)
213-
self.assertTrue('test' in mockactor._state_manager._mock_timers)
214-
timerstate = mockactor._state_manager._mock_timers['test']
212+
self.assertEqual(len(mockactor._state_manager._mock_timers), 1) # type: ignore
213+
self.assertTrue('test' in mockactor._state_manager._mock_timers) # type: ignore
214+
timerstate = mockactor._state_manager._mock_timers['test'] # type: ignore
215215
self.assertTrue(timerstate.timer_name, 'test')
216216
await mockactor.toggle_timer('test', False)
217-
self.assertEqual(len(mockactor._state_manager._mock_timers), 0)
217+
self.assertEqual(len(mockactor._state_manager._mock_timers), 0) # type: ignore
218218

219219
async def test_activate_reminder(self):
220220
mockactor = create_mock_actor(MockTestActor, '1')
@@ -225,7 +225,7 @@ async def test_activate_reminder(self):
225225
datetime.timedelta(days=1),
226226
datetime.timedelta(days=1),
227227
)
228-
self.assertEqual(mockactor._state_manager._mock_state['test'], True)
228+
self.assertEqual(mockactor._state_manager._mock_state['test'], True) # type: ignore
229229

230230
async def test_test_data(self):
231231
mockactor = create_mock_actor(MockTestActor, '1')
@@ -246,27 +246,27 @@ async def test_test_data(self):
246246

247247
async def test_add_state(self):
248248
mockactor = create_mock_actor(MockTestActor, '1')
249-
self.assertFalse(mockactor._state_manager._mock_state)
249+
self.assertFalse(mockactor._state_manager._mock_state) # type: ignore
250250
await mockactor.add_state('test', 5)
251-
self.assertTrue('test' in mockactor._state_manager._mock_state)
252-
self.assertEqual(mockactor._state_manager._mock_state['test'], 5)
251+
self.assertTrue('test' in mockactor._state_manager._mock_state) # type: ignore
252+
self.assertEqual(mockactor._state_manager._mock_state['test'], 5) # type: ignore
253253
await mockactor.add_state('test2', 10)
254-
self.assertTrue('test2' in mockactor._state_manager._mock_state)
255-
self.assertEqual(mockactor._state_manager._mock_state['test2'], 10)
256-
self.assertEqual(len(mockactor._state_manager._mock_state), 2)
254+
self.assertTrue('test2' in mockactor._state_manager._mock_state) # type: ignore
255+
self.assertEqual(mockactor._state_manager._mock_state['test2'], 10) # type: ignore
256+
self.assertEqual(len(mockactor._state_manager._mock_state), 2) # type: ignore
257257
with self.assertRaises(ValueError):
258258
await mockactor.add_state('test', 10)
259259

260260
async def test_update_state(self):
261261
mockactor = create_mock_actor(MockTestActor, '1')
262-
self.assertFalse(mockactor._state_manager._mock_state)
262+
self.assertFalse(mockactor._state_manager._mock_state) # type: ignore
263263
await mockactor.update_state('test', 10)
264-
self.assertTrue('test' in mockactor._state_manager._mock_state)
265-
self.assertEqual(mockactor._state_manager._mock_state['test'], 10)
264+
self.assertTrue('test' in mockactor._state_manager._mock_state) # type: ignore
265+
self.assertEqual(mockactor._state_manager._mock_state['test'], 10) # type: ignore
266266
await mockactor.update_state('test', 10)
267-
self.assertTrue('test' in mockactor._state_manager._mock_state)
268-
self.assertEqual(mockactor._state_manager._mock_state['test'], 20)
269-
self.assertEqual(len(mockactor._state_manager._mock_state), 1)
267+
self.assertTrue('test' in mockactor._state_manager._mock_state) # type: ignore
268+
self.assertEqual(mockactor._state_manager._mock_state['test'], 20) # type: ignore
269+
self.assertEqual(len(mockactor._state_manager._mock_state), 1) # type: ignore
270270

271271
async def test_state_change_tracker(self):
272272
mockactor = create_mock_actor(MockTestActor, '1')
@@ -281,7 +281,7 @@ async def test_state_change_tracker(self):
281281
self.assertEqual(
282282
mockactor._state_manager._default_state_change_tracker['state'].value, {'test': 5}
283283
)
284-
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 5})
284+
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 5}) # type: ignore
285285
await mockactor.remove_data_no_save()
286286
self.assertEqual(
287287
mockactor._state_manager._default_state_change_tracker['state'].change_kind,
@@ -290,10 +290,10 @@ async def test_state_change_tracker(self):
290290
self.assertEqual(
291291
mockactor._state_manager._default_state_change_tracker['state'].value, {'test': 5}
292292
)
293-
self.assertTrue('state' not in mockactor._state_manager._mock_state)
293+
self.assertTrue('state' not in mockactor._state_manager._mock_state) # type: ignore
294294
await mockactor.save_state()
295295
self.assertEqual(len(mockactor._state_manager._default_state_change_tracker), 0)
296-
self.assertTrue('state' not in mockactor._state_manager._mock_state)
296+
self.assertTrue('state' not in mockactor._state_manager._mock_state) # type: ignore
297297
await mockactor.add_data_no_save({'test': 6})
298298
self.assertEqual(
299299
mockactor._state_manager._default_state_change_tracker['state'].change_kind,
@@ -302,7 +302,7 @@ async def test_state_change_tracker(self):
302302
self.assertEqual(
303303
mockactor._state_manager._default_state_change_tracker['state'].value, {'test': 6}
304304
)
305-
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 6})
305+
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 6}) # type: ignore
306306
await mockactor.save_state()
307307
self.assertEqual(
308308
mockactor._state_manager._default_state_change_tracker['state'].change_kind,
@@ -311,4 +311,4 @@ async def test_state_change_tracker(self):
311311
self.assertEqual(
312312
mockactor._state_manager._default_state_change_tracker['state'].value, {'test': 6}
313313
)
314-
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 6})
314+
self.assertEqual(mockactor._state_manager._mock_state['state'], {'test': 6}) # type: ignore

0 commit comments

Comments
 (0)