velocity-python 0.0.212__tar.gz → 0.0.213__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 (150) hide show
  1. {velocity_python-0.0.212 → velocity_python-0.0.213}/PKG-INFO +1 -1
  2. {velocity_python-0.0.212 → velocity_python-0.0.213}/pyproject.toml +1 -1
  3. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/__init__.py +1 -1
  4. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/handlers/base_handler.py +41 -4
  5. velocity_python-0.0.213/src/velocity/aws/tests/test_base_handler_error_response.py +62 -0
  6. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity_python.egg-info/PKG-INFO +1 -1
  7. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity_python.egg-info/SOURCES.txt +1 -0
  8. {velocity_python-0.0.212 → velocity_python-0.0.213}/LICENSE +0 -0
  9. {velocity_python-0.0.212 → velocity_python-0.0.213}/README.md +0 -0
  10. {velocity_python-0.0.212 → velocity_python-0.0.213}/setup.cfg +0 -0
  11. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/app/__init__.py +0 -0
  12. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/app/invoices.py +0 -0
  13. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/app/orders.py +0 -0
  14. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/app/payments.py +0 -0
  15. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/app/purchase_orders.py +0 -0
  16. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/app/tests/__init__.py +0 -0
  17. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/app/tests/test_email_processing.py +0 -0
  18. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/app/tests/test_payment_profile_sorting.py +0 -0
  19. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/app/tests/test_spreadsheet_functions.py +0 -0
  20. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/__init__.py +0 -0
  21. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/amplify.py +0 -0
  22. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/handlers/__init__.py +0 -0
  23. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/handlers/context.py +0 -0
  24. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/handlers/context_factory.py +0 -0
  25. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/handlers/exceptions.py +0 -0
  26. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/handlers/lambda_handler.py +0 -0
  27. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
  28. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/handlers/mixins/data_service.py +0 -0
  29. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
  30. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/handlers/perf.py +0 -0
  31. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/handlers/response.py +0 -0
  32. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/handlers/sqs_handler.py +0 -0
  33. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/tests/__init__.py +0 -0
  34. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
  35. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/aws/tests/test_response.py +0 -0
  36. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/__init__.py +0 -0
  37. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/core/__init__.py +0 -0
  38. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/core/column.py +0 -0
  39. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/core/database.py +0 -0
  40. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/core/decorators.py +0 -0
  41. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/core/engine.py +0 -0
  42. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/core/result.py +0 -0
  43. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/core/row.py +0 -0
  44. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/core/sequence.py +0 -0
  45. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/core/table.py +0 -0
  46. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/core/transaction.py +0 -0
  47. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/core/view.py +0 -0
  48. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/exceptions.py +0 -0
  49. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/__init__.py +0 -0
  50. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/base/__init__.py +0 -0
  51. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/base/initializer.py +0 -0
  52. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/base/operators.py +0 -0
  53. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/base/sql.py +0 -0
  54. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/base/types.py +0 -0
  55. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/mysql/__init__.py +0 -0
  56. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/mysql/operators.py +0 -0
  57. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/mysql/reserved.py +0 -0
  58. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/mysql/sql.py +0 -0
  59. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/mysql/types.py +0 -0
  60. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/postgres/__init__.py +0 -0
  61. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/postgres/operators.py +0 -0
  62. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/postgres/reserved.py +0 -0
  63. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/postgres/sql.py +0 -0
  64. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/postgres/types.py +0 -0
  65. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/sqlite/__init__.py +0 -0
  66. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/sqlite/operators.py +0 -0
  67. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/sqlite/reserved.py +0 -0
  68. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/sqlite/sql.py +0 -0
  69. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/sqlite/types.py +0 -0
  70. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
  71. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/sqlserver/operators.py +0 -0
  72. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
  73. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/sqlserver/sql.py +0 -0
  74. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/sqlserver/types.py +0 -0
  75. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/servers/tablehelper.py +0 -0
  76. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/__init__.py +0 -0
  77. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/common_db_test.py +0 -0
  78. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/__init__.py +0 -0
  79. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/common.py +0 -0
  80. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_column.py +0 -0
  81. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_connections.py +0 -0
  82. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_database.py +0 -0
  83. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_engine.py +0 -0
  84. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
  85. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_imports.py +0 -0
  86. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_result.py +0 -0
  87. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_row.py +0 -0
  88. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
  89. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
  90. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
  91. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
  92. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
  93. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_table.py +0 -0
  94. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
  95. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
  96. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/sql/__init__.py +0 -0
  97. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/sql/common.py +0 -0
  98. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
  99. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
  100. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
  101. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/test_db_utils.py +0 -0
  102. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/test_postgres.py +0 -0
  103. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
  104. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
  105. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/test_result_caching.py +0 -0
  106. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
  107. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
  108. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
  109. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
  110. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/test_sql_builder.py +0 -0
  111. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/test_tablehelper.py +0 -0
  112. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/tests/test_view_helper.py +0 -0
  113. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/db/utils.py +0 -0
  114. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/logging.py +0 -0
  115. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/__init__.py +0 -0
  116. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/conv/__init__.py +0 -0
  117. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/conv/iconv.py +0 -0
  118. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/conv/oconv.py +0 -0
  119. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/db.py +0 -0
  120. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/export.py +0 -0
  121. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/format.py +0 -0
  122. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/mail.py +0 -0
  123. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/merge.py +0 -0
  124. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/tests/__init__.py +0 -0
  125. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/tests/test_db.py +0 -0
  126. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/tests/test_fix.py +0 -0
  127. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/tests/test_format.py +0 -0
  128. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/tests/test_iconv.py +0 -0
  129. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/tests/test_merge.py +0 -0
  130. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/tests/test_oconv.py +0 -0
  131. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/tests/test_original_error.py +0 -0
  132. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/tests/test_timer.py +0 -0
  133. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/timer.py +0 -0
  134. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/misc/tools.py +0 -0
  135. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/payment/__init__.py +0 -0
  136. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/payment/base_adapter.py +0 -0
  137. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/payment/braintree_adapter.py +0 -0
  138. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/payment/router.py +0 -0
  139. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity/payment/stripe_adapter.py +0 -0
  140. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity_python.egg-info/dependency_links.txt +0 -0
  141. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity_python.egg-info/requires.txt +0 -0
  142. {velocity_python-0.0.212 → velocity_python-0.0.213}/src/velocity_python.egg-info/top_level.txt +0 -0
  143. {velocity_python-0.0.212 → velocity_python-0.0.213}/tests/test_decorators.py +0 -0
  144. {velocity_python-0.0.212 → velocity_python-0.0.213}/tests/test_iconv_money_to_cents.py +0 -0
  145. {velocity_python-0.0.212 → velocity_python-0.0.213}/tests/test_lambda_handler.py +0 -0
  146. {velocity_python-0.0.212 → velocity_python-0.0.213}/tests/test_lambda_handler_auth.py +0 -0
  147. {velocity_python-0.0.212 → velocity_python-0.0.213}/tests/test_mixins_import.py +0 -0
  148. {velocity_python-0.0.212 → velocity_python-0.0.213}/tests/test_sys_modified_count_postgres_demo.py +0 -0
  149. {velocity_python-0.0.212 → velocity_python-0.0.213}/tests/test_table_alter.py +0 -0
  150. {velocity_python-0.0.212 → velocity_python-0.0.213}/tests/test_where_clause_validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: velocity-python
3
- Version: 0.0.212
3
+ Version: 0.0.213
4
4
  Summary: A rapid application development library for interfacing with data storage
5
5
  Author-email: Velocity Team <info@codeclubs.org>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "velocity-python"
7
- version = "0.0.212"
7
+ version = "0.0.213"
8
8
  authors = [
9
9
  { name="Velocity Team", email="info@codeclubs.org" },
10
10
  ]
@@ -1,4 +1,4 @@
1
- __version__ = version = "0.0.212"
1
+ __version__ = version = "0.0.213"
2
2
 
3
3
  from . import aws
4
4
  from . import db
@@ -288,12 +288,49 @@ class BaseHandler:
288
288
  "onerror_exc": on_error_exc.__class__.__name__,
289
289
  },
290
290
  )
291
- return
292
- raise
293
- else:
294
- # Re-raise if no error handler is defined
291
+ else:
292
+ raise
293
+
294
+ if self._set_unhandled_error_response(local_context):
295
+ return
296
+
297
+ if not hasattr(self, "onError"):
298
+ # Non-HTTP contexts without a custom error hook should still fail fast.
295
299
  raise exception
296
300
 
301
+ def _set_unhandled_error_response(self, local_context) -> bool:
302
+ response_getter = getattr(local_context, "response", None)
303
+ if not callable(response_getter):
304
+ return False
305
+
306
+ response = response_getter()
307
+ if response is None:
308
+ return False
309
+
310
+ reference_id = getattr(self.aws_context, "aws_request_id", None)
311
+ title = "Request Failed"
312
+ message = "Something went wrong while processing your request."
313
+ detail = "More information has been logged on the backend."
314
+
315
+ body = {
316
+ "message": message,
317
+ "detail": detail,
318
+ "logged": True,
319
+ }
320
+
321
+ user_message = f"{message} {detail}"
322
+ console_message = detail
323
+ if reference_id:
324
+ body["reference_id"] = str(reference_id)
325
+ user_message = f"{user_message} Reference: {reference_id}."
326
+ console_message = f"{console_message} Reference: {reference_id}."
327
+
328
+ response.set_status(500)
329
+ response.set_body(body)
330
+ response.console(console_message, title=title)
331
+ response.alert(user_message, title=title)
332
+ return True
333
+
297
334
  def _is_transient_db_disconnect(self, exc: Exception = None, *args, **kwargs) -> bool:
298
335
  """Return True if an exception looks like a transient DB disconnect.
299
336
 
@@ -0,0 +1,62 @@
1
+ import json
2
+ import unittest
3
+ from types import SimpleNamespace
4
+
5
+ from velocity.aws.handlers.base_handler import BaseHandler
6
+ from velocity.aws.handlers.response import Response
7
+
8
+
9
+ class DummyContext:
10
+ def __init__(self, response):
11
+ self._response = response
12
+
13
+ def response(self):
14
+ return self._response
15
+
16
+ def action(self):
17
+ return "button-click"
18
+
19
+
20
+ class DummyHandler(BaseHandler):
21
+ def __init__(self, aws_context=None):
22
+ super().__init__({}, aws_context or SimpleNamespace(aws_request_id="req-123"))
23
+ self.on_error_calls = []
24
+
25
+ def onError(self, tx, context, exc, tb):
26
+ self.on_error_calls.append({"exc": exc, "tb": tb})
27
+
28
+
29
+ class TestBaseHandlerErrorResponse(unittest.TestCase):
30
+ def test_unhandled_http_error_sets_generic_response(self):
31
+ handler = DummyHandler()
32
+ response = Response()
33
+ context = DummyContext(response)
34
+
35
+ handler.handle_error(tx=None, local_context=context, exception=RuntimeError("secret details"))
36
+
37
+ self.assertEqual(response.status(), 500)
38
+ self.assertEqual(response.body["message"], "Something went wrong while processing your request.")
39
+ self.assertEqual(response.body["detail"], "More information has been logged on the backend.")
40
+ self.assertTrue(response.body["logged"])
41
+ self.assertEqual(response.body["reference_id"], "req-123")
42
+
43
+ rendered = response.render()
44
+ body = json.loads(rendered["body"])
45
+ self.assertEqual(rendered["statusCode"], 500)
46
+ self.assertEqual(len(body["actions"]), 2)
47
+ self.assertEqual(body["actions"][0]["action"], "console")
48
+ self.assertEqual(body["actions"][1]["action"], "alert")
49
+ self.assertIn("Reference: req-123.", body["actions"][1]["payload"]["message"])
50
+ self.assertNotIn("secret details", body["actions"][1]["payload"]["message"])
51
+ self.assertEqual(len(handler.on_error_calls), 1)
52
+
53
+ def test_unhandled_non_http_error_without_onerror_reraises(self):
54
+ handler = BaseHandler({}, SimpleNamespace(aws_request_id="req-456"))
55
+ context = DummyContext(None)
56
+
57
+ with self.assertRaises(RuntimeError):
58
+ handler.handle_error(tx=None, local_context=context, exception=RuntimeError("boom"))
59
+
60
+
61
+ if __name__ == "__main__":
62
+ unittest.main()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: velocity-python
3
- Version: 0.0.212
3
+ Version: 0.0.213
4
4
  Summary: A rapid application development library for interfacing with data storage
5
5
  Author-email: Velocity Team <info@codeclubs.org>
6
6
  License-Expression: MIT
@@ -27,6 +27,7 @@ src/velocity/aws/handlers/mixins/__init__.py
27
27
  src/velocity/aws/handlers/mixins/data_service.py
28
28
  src/velocity/aws/handlers/mixins/web_handler.py
29
29
  src/velocity/aws/tests/__init__.py
30
+ src/velocity/aws/tests/test_base_handler_error_response.py
30
31
  src/velocity/aws/tests/test_lambda_handler_json_serialization.py
31
32
  src/velocity/aws/tests/test_response.py
32
33
  src/velocity/db/__init__.py