appier 1.35.0__tar.gz → 1.35.1__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 (114) hide show
  1. {appier-1.35.0/src/appier.egg-info → appier-1.35.1}/PKG-INFO +1 -1
  2. {appier-1.35.0 → appier-1.35.1}/setup.py +1 -1
  3. {appier-1.35.0 → appier-1.35.1}/src/appier/asgi.py +8 -1
  4. {appier-1.35.0 → appier-1.35.1}/src/appier/graph.py +1 -1
  5. {appier-1.35.0 → appier-1.35.1}/src/appier/model.pyi +12 -0
  6. {appier-1.35.0 → appier-1.35.1}/src/appier/test/smtp.py +2 -5
  7. {appier-1.35.0 → appier-1.35.1/src/appier.egg-info}/PKG-INFO +1 -1
  8. {appier-1.35.0 → appier-1.35.1}/MANIFEST.in +0 -0
  9. {appier-1.35.0 → appier-1.35.1}/README.rst +0 -0
  10. {appier-1.35.0 → appier-1.35.1}/pyproject.toml +0 -0
  11. {appier-1.35.0 → appier-1.35.1}/setup.cfg +0 -0
  12. {appier-1.35.0 → appier-1.35.1}/src/appier/__init__.py +0 -0
  13. {appier-1.35.0 → appier-1.35.1}/src/appier/amqp.py +0 -0
  14. {appier-1.35.0 → appier-1.35.1}/src/appier/amqp.pyi +0 -0
  15. {appier-1.35.0 → appier-1.35.1}/src/appier/api.py +0 -0
  16. {appier-1.35.0 → appier-1.35.1}/src/appier/api.pyi +0 -0
  17. {appier-1.35.0 → appier-1.35.1}/src/appier/asgi.pyi +0 -0
  18. {appier-1.35.0 → appier-1.35.1}/src/appier/async_neo.py +0 -0
  19. {appier-1.35.0 → appier-1.35.1}/src/appier/async_old.py +0 -0
  20. {appier-1.35.0 → appier-1.35.1}/src/appier/asynchronous.py +0 -0
  21. {appier-1.35.0 → appier-1.35.1}/src/appier/asynchronous.pyi +0 -0
  22. {appier-1.35.0 → appier-1.35.1}/src/appier/base.py +0 -0
  23. {appier-1.35.0 → appier-1.35.1}/src/appier/base.pyi +0 -0
  24. {appier-1.35.0 → appier-1.35.1}/src/appier/bus.py +0 -0
  25. {appier-1.35.0 → appier-1.35.1}/src/appier/bus.pyi +0 -0
  26. {appier-1.35.0 → appier-1.35.1}/src/appier/cache.py +0 -0
  27. {appier-1.35.0 → appier-1.35.1}/src/appier/cache.pyi +0 -0
  28. {appier-1.35.0 → appier-1.35.1}/src/appier/common.py +0 -0
  29. {appier-1.35.0 → appier-1.35.1}/src/appier/component.py +0 -0
  30. {appier-1.35.0 → appier-1.35.1}/src/appier/component.pyi +0 -0
  31. {appier-1.35.0 → appier-1.35.1}/src/appier/compress.py +0 -0
  32. {appier-1.35.0 → appier-1.35.1}/src/appier/config.py +0 -0
  33. {appier-1.35.0 → appier-1.35.1}/src/appier/controller.py +0 -0
  34. {appier-1.35.0 → appier-1.35.1}/src/appier/crypt.py +0 -0
  35. {appier-1.35.0 → appier-1.35.1}/src/appier/data.py +0 -0
  36. {appier-1.35.0 → appier-1.35.1}/src/appier/data.pyi +0 -0
  37. {appier-1.35.0 → appier-1.35.1}/src/appier/defines.py +0 -0
  38. {appier-1.35.0 → appier-1.35.1}/src/appier/exceptions.py +0 -0
  39. {appier-1.35.0 → appier-1.35.1}/src/appier/execution.py +0 -0
  40. {appier-1.35.0 → appier-1.35.1}/src/appier/export.py +0 -0
  41. {appier-1.35.0 → appier-1.35.1}/src/appier/extra.py +0 -0
  42. {appier-1.35.0 → appier-1.35.1}/src/appier/extra_neo.py +0 -0
  43. {appier-1.35.0 → appier-1.35.1}/src/appier/extra_old.py +0 -0
  44. {appier-1.35.0 → appier-1.35.1}/src/appier/geo.py +0 -0
  45. {appier-1.35.0 → appier-1.35.1}/src/appier/git.py +0 -0
  46. {appier-1.35.0 → appier-1.35.1}/src/appier/http.py +0 -0
  47. {appier-1.35.0 → appier-1.35.1}/src/appier/legacy.py +0 -0
  48. {appier-1.35.0 → appier-1.35.1}/src/appier/log.py +0 -0
  49. {appier-1.35.0 → appier-1.35.1}/src/appier/meta.py +0 -0
  50. {appier-1.35.0 → appier-1.35.1}/src/appier/mock.py +0 -0
  51. {appier-1.35.0 → appier-1.35.1}/src/appier/model.py +0 -0
  52. {appier-1.35.0 → appier-1.35.1}/src/appier/model_a.py +0 -0
  53. {appier-1.35.0 → appier-1.35.1}/src/appier/mongo.py +0 -0
  54. {appier-1.35.0 → appier-1.35.1}/src/appier/observer.py +0 -0
  55. {appier-1.35.0 → appier-1.35.1}/src/appier/part.py +0 -0
  56. {appier-1.35.0 → appier-1.35.1}/src/appier/part.pyi +0 -0
  57. {appier-1.35.0 → appier-1.35.1}/src/appier/preferences.py +0 -0
  58. {appier-1.35.0 → appier-1.35.1}/src/appier/preferences.pyi +0 -0
  59. {appier-1.35.0 → appier-1.35.1}/src/appier/queuing.py +0 -0
  60. {appier-1.35.0 → appier-1.35.1}/src/appier/redisdb.py +0 -0
  61. {appier-1.35.0 → appier-1.35.1}/src/appier/request.py +0 -0
  62. {appier-1.35.0 → appier-1.35.1}/src/appier/res/static/css/base.css +0 -0
  63. {appier-1.35.0 → appier-1.35.1}/src/appier/res/static/images/favicon.ico +0 -0
  64. {appier-1.35.0 → appier-1.35.1}/src/appier/res/static/js/base.js +0 -0
  65. {appier-1.35.0 → appier-1.35.1}/src/appier/res/templates/error.html.tpl +0 -0
  66. {appier-1.35.0 → appier-1.35.1}/src/appier/res/templates/holder.html.tpl +0 -0
  67. {appier-1.35.0 → appier-1.35.1}/src/appier/res/templates/layout.html.tpl +0 -0
  68. {appier-1.35.0 → appier-1.35.1}/src/appier/scheduler.py +0 -0
  69. {appier-1.35.0 → appier-1.35.1}/src/appier/scheduler.pyi +0 -0
  70. {appier-1.35.0 → appier-1.35.1}/src/appier/serialize.py +0 -0
  71. {appier-1.35.0 → appier-1.35.1}/src/appier/session.py +0 -0
  72. {appier-1.35.0 → appier-1.35.1}/src/appier/session.pyi +0 -0
  73. {appier-1.35.0 → appier-1.35.1}/src/appier/settings.py +0 -0
  74. {appier-1.35.0 → appier-1.35.1}/src/appier/smtp.py +0 -0
  75. {appier-1.35.0 → appier-1.35.1}/src/appier/storage.py +0 -0
  76. {appier-1.35.0 → appier-1.35.1}/src/appier/storage.pyi +0 -0
  77. {appier-1.35.0 → appier-1.35.1}/src/appier/structures.py +0 -0
  78. {appier-1.35.0 → appier-1.35.1}/src/appier/test/__init__.py +0 -0
  79. {appier-1.35.0 → appier-1.35.1}/src/appier/test/base.py +0 -0
  80. {appier-1.35.0 → appier-1.35.1}/src/appier/test/cache.py +0 -0
  81. {appier-1.35.0 → appier-1.35.1}/src/appier/test/config.py +0 -0
  82. {appier-1.35.0 → appier-1.35.1}/src/appier/test/crypt.py +0 -0
  83. {appier-1.35.0 → appier-1.35.1}/src/appier/test/data.py +0 -0
  84. {appier-1.35.0 → appier-1.35.1}/src/appier/test/error_handler.py +0 -0
  85. {appier-1.35.0 → appier-1.35.1}/src/appier/test/exception_handler.py +0 -0
  86. {appier-1.35.0 → appier-1.35.1}/src/appier/test/exceptions.py +0 -0
  87. {appier-1.35.0 → appier-1.35.1}/src/appier/test/export.py +0 -0
  88. {appier-1.35.0 → appier-1.35.1}/src/appier/test/graph.py +0 -0
  89. {appier-1.35.0 → appier-1.35.1}/src/appier/test/http.py +0 -0
  90. {appier-1.35.0 → appier-1.35.1}/src/appier/test/legacy.py +0 -0
  91. {appier-1.35.0 → appier-1.35.1}/src/appier/test/log.py +0 -0
  92. {appier-1.35.0 → appier-1.35.1}/src/appier/test/mock.py +0 -0
  93. {appier-1.35.0 → appier-1.35.1}/src/appier/test/model.py +0 -0
  94. {appier-1.35.0 → appier-1.35.1}/src/appier/test/part.py +0 -0
  95. {appier-1.35.0 → appier-1.35.1}/src/appier/test/preferences.py +0 -0
  96. {appier-1.35.0 → appier-1.35.1}/src/appier/test/queuing.py +0 -0
  97. {appier-1.35.0 → appier-1.35.1}/src/appier/test/request.py +0 -0
  98. {appier-1.35.0 → appier-1.35.1}/src/appier/test/scheduler.py +0 -0
  99. {appier-1.35.0 → appier-1.35.1}/src/appier/test/serialize.py +0 -0
  100. {appier-1.35.0 → appier-1.35.1}/src/appier/test/session.py +0 -0
  101. {appier-1.35.0 → appier-1.35.1}/src/appier/test/storage.py +0 -0
  102. {appier-1.35.0 → appier-1.35.1}/src/appier/test/structures.py +0 -0
  103. {appier-1.35.0 → appier-1.35.1}/src/appier/test/tags.py +0 -0
  104. {appier-1.35.0 → appier-1.35.1}/src/appier/test/typesf.py +0 -0
  105. {appier-1.35.0 → appier-1.35.1}/src/appier/test/util.py +0 -0
  106. {appier-1.35.0 → appier-1.35.1}/src/appier/test/validation.py +0 -0
  107. {appier-1.35.0 → appier-1.35.1}/src/appier/typesf.py +0 -0
  108. {appier-1.35.0 → appier-1.35.1}/src/appier/typesf.pyi +0 -0
  109. {appier-1.35.0 → appier-1.35.1}/src/appier/util.py +0 -0
  110. {appier-1.35.0 → appier-1.35.1}/src/appier/validation.py +0 -0
  111. {appier-1.35.0 → appier-1.35.1}/src/appier.egg-info/SOURCES.txt +0 -0
  112. {appier-1.35.0 → appier-1.35.1}/src/appier.egg-info/dependency_links.txt +0 -0
  113. {appier-1.35.0 → appier-1.35.1}/src/appier.egg-info/not-zip-safe +0 -0
  114. {appier-1.35.0 → appier-1.35.1}/src/appier.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.1
2
2
  Name: appier
3
- Version: 1.35.0
3
+ Version: 1.35.1
4
4
  Summary: Appier Framework
5
5
  Home-page: http://appier.hive.pt
6
6
  Author: Hive Solutions Lda.
@@ -44,7 +44,7 @@ def read_file(path):
44
44
 
45
45
  setuptools.setup(
46
46
  name="appier",
47
- version="1.35.0",
47
+ version="1.35.1",
48
48
  author="Hive Solutions Lda.",
49
49
  author_email="development@hive.pt",
50
50
  description="Appier Framework",
@@ -189,9 +189,16 @@ class ASGIApp(object):
189
189
  self._ensure_start(ctx, start_response)
190
190
  await ctx["start_task"]
191
191
 
192
+ # ensures the result is a sequence for iteration and if it's
193
+ # not initializes it as an empty list, notice the special case
194
+ # of a string that should be converted into a single element list
195
+ result = result if result else []
196
+ if legacy.is_string(result):
197
+ result = [result]
198
+
192
199
  # iterates over the complete set of chunks in the response
193
200
  # iterator to send each of them to the client side
194
- for chunk in result if result else []:
201
+ for chunk in result:
195
202
  if asyncio.iscoroutine(chunk):
196
203
  await chunk
197
204
  elif asyncio.isfuture(chunk):
@@ -105,7 +105,7 @@ class Graph(object):
105
105
  queue.push(src, priority=0)
106
106
 
107
107
  while queue.length() > 0:
108
- (_, _, top) = queue.pop(full=True)
108
+ _, _, top = queue.pop(full=True)
109
109
  dist[top] = dist[top] if top in dist else defines.INFINITY
110
110
 
111
111
  edges = self.edges[top] if top in self.edges else []
@@ -42,6 +42,18 @@ class Model:
42
42
  before_callbacks: Sequence[Callable[[Self], None]] = ...,
43
43
  after_callbacks: Sequence[Callable[[Self], None]] = ...,
44
44
  ) -> Self: ...
45
+ def pre_validate(self) -> None: ...
46
+ def pre_save(self) -> None: ...
47
+ def pre_create(self) -> None: ...
48
+ def pre_update(self) -> None: ...
49
+ def pre_delete(self) -> None: ...
50
+ def post_validate(self) -> None: ...
51
+ def post_save(self) -> None: ...
52
+ def post_create(self) -> None: ...
53
+ def post_update(self) -> None: ...
54
+ def post_delete(self) -> None: ...
55
+ def pre_apply(self) -> None: ...
56
+ def post_apply(self) -> None: ...
45
57
  @property
46
58
  def identity(self) -> Any: ...
47
59
  ...
@@ -43,14 +43,11 @@ class SMTPTest(unittest.TestCase):
43
43
  mime["To"] = ", ".join([address_mime])
44
44
 
45
45
  result = mime.as_string()
46
- self.assertEqual(
47
- result,
48
- 'Content-Type: text/plain; charset="utf-8"\n\
46
+ self.assertEqual(result, 'Content-Type: text/plain; charset="utf-8"\n\
49
47
  MIME-Version: 1.0\n\
50
48
  Content-Transfer-Encoding: base64\n\
51
49
  Subject: Hello World\n\
52
50
  From: =?utf-8?q?Jo=C3=A3o_Magalh=C3=A3es?= <joamag@hive.pt>\n\
53
51
  To: =?utf-8?q?Jo=C3=A3o_Magalh=C3=A3es?= <joamag@hive.pt>\n\
54
52
  \n\
55
- SGVsbG8gV29ybGQ=\n',
56
- )
53
+ SGVsbG8gV29ybGQ=\n')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.1
2
2
  Name: appier
3
- Version: 1.35.0
3
+ Version: 1.35.1
4
4
  Summary: Appier Framework
5
5
  Home-page: http://appier.hive.pt
6
6
  Author: Hive Solutions Lda.
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
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