microdot 2.3.4__tar.gz → 2.3.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. {microdot-2.3.4/src/microdot.egg-info → microdot-2.3.5}/PKG-INFO +1 -1
  2. {microdot-2.3.4 → microdot-2.3.5}/pyproject.toml +1 -1
  3. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/asgi.py +2 -0
  4. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/microdot.py +0 -1
  5. microdot-2.3.5/src/microdot/pubsub.py +21 -0
  6. {microdot-2.3.4 → microdot-2.3.5/src/microdot.egg-info}/PKG-INFO +1 -1
  7. {microdot-2.3.4 → microdot-2.3.5}/src/microdot.egg-info/SOURCES.txt +1 -0
  8. {microdot-2.3.4 → microdot-2.3.5}/tests/test_asgi.py +1 -1
  9. {microdot-2.3.4 → microdot-2.3.5}/LICENSE +0 -0
  10. {microdot-2.3.4 → microdot-2.3.5}/MANIFEST.in +0 -0
  11. {microdot-2.3.4 → microdot-2.3.5}/README.md +0 -0
  12. {microdot-2.3.4 → microdot-2.3.5}/docs/Makefile +0 -0
  13. {microdot-2.3.4 → microdot-2.3.5}/docs/_static/css/custom.css +0 -0
  14. {microdot-2.3.4 → microdot-2.3.5}/docs/api.rst +0 -0
  15. {microdot-2.3.4 → microdot-2.3.5}/docs/conf.py +0 -0
  16. {microdot-2.3.4 → microdot-2.3.5}/docs/extensions.rst +0 -0
  17. {microdot-2.3.4 → microdot-2.3.5}/docs/freezing.rst +0 -0
  18. {microdot-2.3.4 → microdot-2.3.5}/docs/index.rst +0 -0
  19. {microdot-2.3.4 → microdot-2.3.5}/docs/intro.rst +0 -0
  20. {microdot-2.3.4 → microdot-2.3.5}/docs/make.bat +0 -0
  21. {microdot-2.3.4 → microdot-2.3.5}/docs/migrating.rst +0 -0
  22. {microdot-2.3.4 → microdot-2.3.5}/setup.cfg +0 -0
  23. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/__init__.py +0 -0
  24. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/auth.py +0 -0
  25. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/cors.py +0 -0
  26. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/helpers.py +0 -0
  27. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/jinja.py +0 -0
  28. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/login.py +0 -0
  29. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/multipart.py +0 -0
  30. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/session.py +0 -0
  31. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/sse.py +0 -0
  32. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/test_client.py +0 -0
  33. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/utemplate.py +0 -0
  34. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/websocket.py +0 -0
  35. {microdot-2.3.4 → microdot-2.3.5}/src/microdot/wsgi.py +0 -0
  36. {microdot-2.3.4 → microdot-2.3.5}/src/microdot.egg-info/dependency_links.txt +0 -0
  37. {microdot-2.3.4 → microdot-2.3.5}/src/microdot.egg-info/not-zip-safe +0 -0
  38. {microdot-2.3.4 → microdot-2.3.5}/src/microdot.egg-info/requires.txt +0 -0
  39. {microdot-2.3.4 → microdot-2.3.5}/src/microdot.egg-info/top_level.txt +0 -0
  40. {microdot-2.3.4 → microdot-2.3.5}/tests/__init__.py +0 -0
  41. {microdot-2.3.4 → microdot-2.3.5}/tests/files/test.bin +0 -0
  42. {microdot-2.3.4 → microdot-2.3.5}/tests/files/test.css +0 -0
  43. {microdot-2.3.4 → microdot-2.3.5}/tests/files/test.gif +0 -0
  44. {microdot-2.3.4 → microdot-2.3.5}/tests/files/test.gz +0 -0
  45. {microdot-2.3.4 → microdot-2.3.5}/tests/files/test.html +0 -0
  46. {microdot-2.3.4 → microdot-2.3.5}/tests/files/test.jpg +0 -0
  47. {microdot-2.3.4 → microdot-2.3.5}/tests/files/test.js +0 -0
  48. {microdot-2.3.4 → microdot-2.3.5}/tests/files/test.json +0 -0
  49. {microdot-2.3.4 → microdot-2.3.5}/tests/files/test.png +0 -0
  50. {microdot-2.3.4 → microdot-2.3.5}/tests/files/test.txt +0 -0
  51. {microdot-2.3.4 → microdot-2.3.5}/tests/files/test.txt.gz +0 -0
  52. {microdot-2.3.4 → microdot-2.3.5}/tests/mock_socket.py +0 -0
  53. {microdot-2.3.4 → microdot-2.3.5}/tests/templates/hello.jinja.txt +0 -0
  54. {microdot-2.3.4 → microdot-2.3.5}/tests/templates/hello.utemplate.txt +0 -0
  55. {microdot-2.3.4 → microdot-2.3.5}/tests/templates/hello_utemplate_txt.py +0 -0
  56. {microdot-2.3.4 → microdot-2.3.5}/tests/test_auth.py +0 -0
  57. {microdot-2.3.4 → microdot-2.3.5}/tests/test_cors.py +0 -0
  58. {microdot-2.3.4 → microdot-2.3.5}/tests/test_end2end.py +0 -0
  59. {microdot-2.3.4 → microdot-2.3.5}/tests/test_jinja.py +0 -0
  60. {microdot-2.3.4 → microdot-2.3.5}/tests/test_login.py +0 -0
  61. {microdot-2.3.4 → microdot-2.3.5}/tests/test_microdot.py +0 -0
  62. {microdot-2.3.4 → microdot-2.3.5}/tests/test_multidict.py +0 -0
  63. {microdot-2.3.4 → microdot-2.3.5}/tests/test_multipart.py +0 -0
  64. {microdot-2.3.4 → microdot-2.3.5}/tests/test_request.py +0 -0
  65. {microdot-2.3.4 → microdot-2.3.5}/tests/test_response.py +0 -0
  66. {microdot-2.3.4 → microdot-2.3.5}/tests/test_session.py +0 -0
  67. {microdot-2.3.4 → microdot-2.3.5}/tests/test_sse.py +0 -0
  68. {microdot-2.3.4 → microdot-2.3.5}/tests/test_url_pattern.py +0 -0
  69. {microdot-2.3.4 → microdot-2.3.5}/tests/test_urlencode.py +0 -0
  70. {microdot-2.3.4 → microdot-2.3.5}/tests/test_utemplate.py +0 -0
  71. {microdot-2.3.4 → microdot-2.3.5}/tests/test_websocket.py +0 -0
  72. {microdot-2.3.4 → microdot-2.3.5}/tests/test_wsgi.py +0 -0
  73. {microdot-2.3.4 → microdot-2.3.5}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: microdot
3
- Version: 2.3.4
3
+ Version: 2.3.5
4
4
  Summary: The impossibly small web framework for MicroPython
5
5
  Author-email: Miguel Grinberg <miguel.grinberg@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/miguelgrinberg/microdot
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "microdot"
3
- version = "2.3.4"
3
+ version = "2.3.5"
4
4
  authors = [
5
5
  { name = "Miguel Grinberg", email = "miguel.grinberg@gmail.com" },
6
6
  ]
@@ -130,6 +130,8 @@ class Microdot(BaseMicrodot):
130
130
  try:
131
131
  while not cancelled: # pragma: no branch
132
132
  res_body = await body_iter.__anext__()
133
+ if isinstance(res_body, str):
134
+ res_body = res_body.encode()
133
135
  await send({'type': 'http.response.body',
134
136
  'body': res_body,
135
137
  'more_body': True})
@@ -944,7 +944,6 @@ class Microdot:
944
944
  self.after_request_handlers = []
945
945
  self.after_error_request_handlers = []
946
946
  self.error_handlers = {}
947
- self.shutdown_requested = False
948
947
  self.options_handler = self.default_options_handler
949
948
  self.debug = False
950
949
  self.server = None
@@ -0,0 +1,21 @@
1
+ class PubSub:
2
+ subscriptions = {}
3
+
4
+ def subscribe(self, observer, topic):
5
+ if topic not in self.subscriptions:
6
+ self.subscriptions[topic] = []
7
+ self.subscriptions[topic].append(observer)
8
+
9
+ def unsubscribe(self, observer, topic):
10
+ if topic in self.subscriptions:
11
+ try:
12
+ self.subscriptions[topic].remove(observer)
13
+ if not self.subscriptions[topic]:
14
+ del self.subscriptions[topic]
15
+ except (ValueError, IndexError):
16
+ pass
17
+
18
+ @classmethod
19
+ async def publish(cls, topic, data):
20
+ for observer in cls.subscriptions.get(topic, []):
21
+ await observer.send(data, event=topic)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: microdot
3
- Version: 2.3.4
3
+ Version: 2.3.5
4
4
  Summary: The impossibly small web framework for MicroPython
5
5
  Author-email: Miguel Grinberg <miguel.grinberg@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/miguelgrinberg/microdot
@@ -22,6 +22,7 @@ src/microdot/jinja.py
22
22
  src/microdot/login.py
23
23
  src/microdot/microdot.py
24
24
  src/microdot/multipart.py
25
+ src/microdot/pubsub.py
25
26
  src/microdot/session.py
26
27
  src/microdot/sse.py
27
28
  src/microdot/test_client.py
@@ -35,7 +35,7 @@ class TestASGI(unittest.TestCase):
35
35
  class R:
36
36
  def __init__(self):
37
37
  self.i = 0
38
- self.body = [b're', b'sp', b'on', b'se', b'']
38
+ self.body = [b're', b'sp', b'on', 'se', b'']
39
39
 
40
40
  async def read(self, n):
41
41
  data = self.body[self.i]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes