velocity-python 0.1.7__tar.gz → 0.1.9__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 (182) hide show
  1. {velocity_python-0.1.7/src/velocity_python.egg-info → velocity_python-0.1.9}/PKG-INFO +17 -21
  2. {velocity_python-0.1.7 → velocity_python-0.1.9}/README.md +14 -20
  3. {velocity_python-0.1.7 → velocity_python-0.1.9}/pyproject.toml +3 -1
  4. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/__init__.py +1 -1
  5. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/decorators.py +10 -0
  6. {velocity_python-0.1.7 → velocity_python-0.1.9/src/velocity_python.egg-info}/PKG-INFO +17 -21
  7. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_concurrency_safety.py +34 -0
  8. {velocity_python-0.1.7 → velocity_python-0.1.9}/LICENSE +0 -0
  9. {velocity_python-0.1.7 → velocity_python-0.1.9}/setup.cfg +0 -0
  10. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/__init__.py +0 -0
  11. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/formbuilder/__init__.py +0 -0
  12. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/formbuilder/reshaper.py +0 -0
  13. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/invoices.py +0 -0
  14. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/orders.py +0 -0
  15. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/payments.py +0 -0
  16. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/purchase_orders.py +0 -0
  17. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/tests/__init__.py +0 -0
  18. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/tests/test_email_processing.py +0 -0
  19. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/tests/test_payment_profile_sorting.py +0 -0
  20. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/tests/test_spreadsheet_functions.py +0 -0
  21. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/validators/__init__.py +0 -0
  22. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/validators/formbuilder_template.py +0 -0
  23. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/__init__.py +0 -0
  24. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/amplify.py +0 -0
  25. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/amplify_build.py +0 -0
  26. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/__init__.py +0 -0
  27. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/base_handler.py +0 -0
  28. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/context.py +0 -0
  29. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/context_factory.py +0 -0
  30. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/exceptions.py +0 -0
  31. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/lambda_handler.py +0 -0
  32. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
  33. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/mixins/data_service.py +0 -0
  34. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
  35. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/perf.py +0 -0
  36. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/response.py +0 -0
  37. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/sqs_handler.py +0 -0
  38. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/tests/__init__.py +0 -0
  39. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/tests/test_base_handler_error_response.py +0 -0
  40. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
  41. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/tests/test_response.py +0 -0
  42. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/__init__.py +0 -0
  43. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/__init__.py +0 -0
  44. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/async_support.py +0 -0
  45. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/column.py +0 -0
  46. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/database.py +0 -0
  47. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/engine.py +0 -0
  48. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/result.py +0 -0
  49. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/row.py +0 -0
  50. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/sequence.py +0 -0
  51. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/table.py +0 -0
  52. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/transaction.py +0 -0
  53. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/view.py +0 -0
  54. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/exceptions.py +0 -0
  55. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/__init__.py +0 -0
  56. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/base/__init__.py +0 -0
  57. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/base/initializer.py +0 -0
  58. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/base/operators.py +0 -0
  59. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/base/sql.py +0 -0
  60. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/base/types.py +0 -0
  61. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/mysql/__init__.py +0 -0
  62. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/mysql/operators.py +0 -0
  63. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/mysql/reserved.py +0 -0
  64. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/mysql/sql.py +0 -0
  65. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/mysql/types.py +0 -0
  66. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/postgres/__init__.py +0 -0
  67. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/postgres/operators.py +0 -0
  68. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/postgres/reserved.py +0 -0
  69. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/postgres/sql.py +0 -0
  70. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/postgres/types.py +0 -0
  71. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlite/__init__.py +0 -0
  72. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlite/operators.py +0 -0
  73. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlite/reserved.py +0 -0
  74. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlite/sql.py +0 -0
  75. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlite/types.py +0 -0
  76. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
  77. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlserver/operators.py +0 -0
  78. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
  79. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlserver/sql.py +0 -0
  80. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlserver/types.py +0 -0
  81. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/tablehelper.py +0 -0
  82. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/__init__.py +0 -0
  83. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/common_db_test.py +0 -0
  84. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/__init__.py +0 -0
  85. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/common.py +0 -0
  86. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_column.py +0 -0
  87. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_connections.py +0 -0
  88. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_database.py +0 -0
  89. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_engine.py +0 -0
  90. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
  91. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_imports.py +0 -0
  92. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_result.py +0 -0
  93. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_row.py +0 -0
  94. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
  95. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
  96. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
  97. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
  98. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
  99. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_table.py +0 -0
  100. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
  101. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
  102. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/sql/__init__.py +0 -0
  103. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/sql/common.py +0 -0
  104. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
  105. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
  106. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
  107. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_db_utils.py +0 -0
  108. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_postgres.py +0 -0
  109. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
  110. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
  111. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_result_caching.py +0 -0
  112. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
  113. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
  114. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
  115. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
  116. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_sql_builder.py +0 -0
  117. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_tablehelper.py +0 -0
  118. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_view_helper.py +0 -0
  119. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/utils.py +0 -0
  120. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/logging.py +0 -0
  121. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/__init__.py +0 -0
  122. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/conv/__init__.py +0 -0
  123. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/conv/iconv.py +0 -0
  124. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/conv/oconv.py +0 -0
  125. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/db.py +0 -0
  126. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/export.py +0 -0
  127. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/format.py +0 -0
  128. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/mail.py +0 -0
  129. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/merge.py +0 -0
  130. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/__init__.py +0 -0
  131. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_db.py +0 -0
  132. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_fix.py +0 -0
  133. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_format.py +0 -0
  134. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_iconv.py +0 -0
  135. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_merge.py +0 -0
  136. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_oconv.py +0 -0
  137. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_original_error.py +0 -0
  138. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_timer.py +0 -0
  139. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/timer.py +0 -0
  140. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tools.py +0 -0
  141. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/__init__.py +0 -0
  142. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/authorizenet_adapter.py +0 -0
  143. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/base_adapter.py +0 -0
  144. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/braintree_adapter.py +0 -0
  145. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/charge_rules.py +0 -0
  146. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/demo_profiles.py +0 -0
  147. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/profiles.py +0 -0
  148. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/router.py +0 -0
  149. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/stripe_adapter.py +0 -0
  150. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity_python.egg-info/SOURCES.txt +0 -0
  151. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity_python.egg-info/dependency_links.txt +0 -0
  152. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity_python.egg-info/requires.txt +0 -0
  153. {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity_python.egg-info/top_level.txt +0 -0
  154. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_amplify_build.py +0 -0
  155. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_async_support.py +0 -0
  156. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_batch_operations.py +0 -0
  157. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_connection_pool.py +0 -0
  158. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_connection_resilience.py +0 -0
  159. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_decorators.py +0 -0
  160. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_formbuilder_reshaper.py +0 -0
  161. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_formbuilder_template_validator.py +0 -0
  162. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_iconv_money_to_cents.py +0 -0
  163. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_lambda_handler.py +0 -0
  164. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_lambda_handler_auth.py +0 -0
  165. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_mixins_import.py +0 -0
  166. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_n_plus_one.py +0 -0
  167. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_observability.py +0 -0
  168. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_payment_braintree_adapter.py +0 -0
  169. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_payment_demo_profiles.py +0 -0
  170. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_payment_profiles.py +0 -0
  171. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_payment_router.py +0 -0
  172. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_payment_stripe_adapter.py +0 -0
  173. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_prepared_statements.py +0 -0
  174. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_psycopg3_upgrade.py +0 -0
  175. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_query_cache.py +0 -0
  176. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_row_batch_update.py +0 -0
  177. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_row_cache_staleness.py +0 -0
  178. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_security_hardening.py +0 -0
  179. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_sqs_per_record_transactions.py +0 -0
  180. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_sys_modified_count_postgres_demo.py +0 -0
  181. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_table_alter.py +0 -0
  182. {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_where_clause_validation.py +0 -0
@@ -1,10 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: velocity-python
3
- Version: 0.1.7
3
+ Version: 0.1.9
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
7
7
  Project-URL: Homepage, https://codeclubs.org/projects/velocity
8
+ Project-URL: Documentation, https://codeclubs.org/projects/velocity
9
+ Project-URL: Bug Tracker, https://codeclubs.org/projects/velocity
8
10
  Keywords: database,orm,sql,rapid-development,data-storage
9
11
  Classifier: Development Status :: 4 - Beta
10
12
  Classifier: Intended Audience :: Developers
@@ -81,7 +83,7 @@ def create_order(tx, customer_email, items):
81
83
  No connection management, no cursor juggling, no commit/rollback boilerplate. Velocity handles it all.
82
84
 
83
85
  [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
84
- [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
86
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://opensource.org/licenses/MIT)
85
87
 
86
88
  ---
87
89
 
@@ -208,25 +210,19 @@ def import_customers(tx, records):
208
210
 
209
211
  ## Documentation
210
212
 
211
- Detailed guides with real-world examples:
212
-
213
- | Guide | Description |
214
- |-------|-------------|
215
- | [Database ORM](docs/database.md) | Connections, transactions, tables, rows, results, queries, schema management |
216
- | [Performance & Optimization](docs/performance.md) | Connection pooling, batch operations, query caching, prepared statements, N+1 prevention, observability |
217
- | [Async Support](docs/async.md) | AsyncTransaction, AsyncTable, AsyncResult, parallel queries with gather() |
218
- | [Configuration Reference](docs/configuration.md) | All environment variables, engine options, and connection settings |
219
- | [AWS Lambda Handlers](docs/aws-handlers.md) | LambdaHandler, SqsHandler, auth modes, per-record transactions |
220
- | [Payment Processing](docs/payment.md) | Stripe and Braintree adapters, payment lifecycle |
221
- | [Utilities](docs/utilities.md) | Excel export, data conversion, formatting, timers, email parsing |
222
-
223
- ### Additional Docs
224
-
225
- | Doc | Description |
226
- |-----|-------------|
227
- | [Testing Guide](docs/TESTING.md) | Running tests, markers, coverage |
228
- | [Security](docs/SECURITY.md) | Pre-commit hooks, credential scanning |
229
- | [AWS Auth Modes](docs/AWS_HANDLERS_AUTH.md) | Cognito auth, public endpoints, webhooks |
213
+ Full documentation is included in the `docs/` directory of the source distribution.
214
+
215
+ | Guide | File | Description |
216
+ |-------|------|-------------|
217
+ | Database ORM | `docs/database.md` | Connections, transactions, tables, rows, results, queries, schema management |
218
+ | Performance & Optimization | `docs/performance.md` | Connection pooling, batch operations, query caching, prepared statements, N+1 prevention, observability |
219
+ | Async Support | `docs/async.md` | AsyncTransaction, AsyncTable, AsyncResult, parallel queries with gather() |
220
+ | Configuration Reference | `docs/configuration.md` | All environment variables, engine options, and connection settings |
221
+ | AWS Lambda Handlers | `docs/aws-handlers.md` | LambdaHandler, SqsHandler, auth modes, per-record transactions |
222
+ | Payment Processing | `docs/payment.md` | Stripe and Braintree adapters, payment lifecycle |
223
+ | Utilities | `docs/utilities.md` | Excel export, data conversion, formatting, timers, email parsing |
224
+ | Testing Guide | `docs/TESTING.md` | Running tests, markers, coverage |
225
+ | Security | `docs/SECURITY.md` | Pre-commit hooks, credential scanning |
230
226
 
231
227
  ---
232
228
 
@@ -21,7 +21,7 @@ def create_order(tx, customer_email, items):
21
21
  No connection management, no cursor juggling, no commit/rollback boilerplate. Velocity handles it all.
22
22
 
23
23
  [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
24
- [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
24
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://opensource.org/licenses/MIT)
25
25
 
26
26
  ---
27
27
 
@@ -148,25 +148,19 @@ def import_customers(tx, records):
148
148
 
149
149
  ## Documentation
150
150
 
151
- Detailed guides with real-world examples:
152
-
153
- | Guide | Description |
154
- |-------|-------------|
155
- | [Database ORM](docs/database.md) | Connections, transactions, tables, rows, results, queries, schema management |
156
- | [Performance & Optimization](docs/performance.md) | Connection pooling, batch operations, query caching, prepared statements, N+1 prevention, observability |
157
- | [Async Support](docs/async.md) | AsyncTransaction, AsyncTable, AsyncResult, parallel queries with gather() |
158
- | [Configuration Reference](docs/configuration.md) | All environment variables, engine options, and connection settings |
159
- | [AWS Lambda Handlers](docs/aws-handlers.md) | LambdaHandler, SqsHandler, auth modes, per-record transactions |
160
- | [Payment Processing](docs/payment.md) | Stripe and Braintree adapters, payment lifecycle |
161
- | [Utilities](docs/utilities.md) | Excel export, data conversion, formatting, timers, email parsing |
162
-
163
- ### Additional Docs
164
-
165
- | Doc | Description |
166
- |-----|-------------|
167
- | [Testing Guide](docs/TESTING.md) | Running tests, markers, coverage |
168
- | [Security](docs/SECURITY.md) | Pre-commit hooks, credential scanning |
169
- | [AWS Auth Modes](docs/AWS_HANDLERS_AUTH.md) | Cognito auth, public endpoints, webhooks |
151
+ Full documentation is included in the `docs/` directory of the source distribution.
152
+
153
+ | Guide | File | Description |
154
+ |-------|------|-------------|
155
+ | Database ORM | `docs/database.md` | Connections, transactions, tables, rows, results, queries, schema management |
156
+ | Performance & Optimization | `docs/performance.md` | Connection pooling, batch operations, query caching, prepared statements, N+1 prevention, observability |
157
+ | Async Support | `docs/async.md` | AsyncTransaction, AsyncTable, AsyncResult, parallel queries with gather() |
158
+ | Configuration Reference | `docs/configuration.md` | All environment variables, engine options, and connection settings |
159
+ | AWS Lambda Handlers | `docs/aws-handlers.md` | LambdaHandler, SqsHandler, auth modes, per-record transactions |
160
+ | Payment Processing | `docs/payment.md` | Stripe and Braintree adapters, payment lifecycle |
161
+ | Utilities | `docs/utilities.md` | Excel export, data conversion, formatting, timers, email parsing |
162
+ | Testing Guide | `docs/TESTING.md` | Running tests, markers, coverage |
163
+ | Security | `docs/SECURITY.md` | Pre-commit hooks, credential scanning |
170
164
 
171
165
  ---
172
166
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "velocity-python"
7
- version = "0.1.7"
7
+ version = "0.1.9"
8
8
  authors = [
9
9
  { name="Velocity Team", email="info@codeclubs.org" },
10
10
  ]
@@ -31,6 +31,8 @@ dependencies = [
31
31
 
32
32
  [project.urls]
33
33
  Homepage = "https://codeclubs.org/projects/velocity"
34
+ Documentation = "https://codeclubs.org/projects/velocity"
35
+ "Bug Tracker" = "https://codeclubs.org/projects/velocity"
34
36
 
35
37
  [project.optional-dependencies]
36
38
  aws = [
@@ -1,4 +1,4 @@
1
- __version__ = version = "0.1.7"
1
+ __version__ = version = "0.1.9"
2
2
 
3
3
  import importlib as _importlib
4
4
 
@@ -171,6 +171,11 @@ def create_missing(func):
171
171
 
172
172
  # Check if schema is locked
173
173
  if self.tx.engine.schema_locked:
174
+ logger.warning(
175
+ "@create_missing triggered on locked schema: table=%s error=%s",
176
+ self.name, e,
177
+ extra={"table_name": self.name, "operation": "create_missing_column", "schema_locked": True},
178
+ )
174
179
  raise exceptions.DbSchemaLockedError(
175
180
  f"Cannot create missing column: schema is locked. Original error: {e}"
176
181
  ) from e
@@ -205,6 +210,11 @@ def create_missing(func):
205
210
 
206
211
  # Check if schema is locked
207
212
  if self.tx.engine.schema_locked:
213
+ logger.warning(
214
+ "@create_missing triggered on locked schema: table=%s error=%s",
215
+ self.name, e,
216
+ extra={"table_name": self.name, "operation": "create_missing_table", "schema_locked": True},
217
+ )
208
218
  raise exceptions.DbSchemaLockedError(
209
219
  f"Cannot create missing table: schema is locked. Original error: {e}"
210
220
  ) from e
@@ -1,10 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: velocity-python
3
- Version: 0.1.7
3
+ Version: 0.1.9
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
7
7
  Project-URL: Homepage, https://codeclubs.org/projects/velocity
8
+ Project-URL: Documentation, https://codeclubs.org/projects/velocity
9
+ Project-URL: Bug Tracker, https://codeclubs.org/projects/velocity
8
10
  Keywords: database,orm,sql,rapid-development,data-storage
9
11
  Classifier: Development Status :: 4 - Beta
10
12
  Classifier: Intended Audience :: Developers
@@ -81,7 +83,7 @@ def create_order(tx, customer_email, items):
81
83
  No connection management, no cursor juggling, no commit/rollback boilerplate. Velocity handles it all.
82
84
 
83
85
  [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
84
- [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
86
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://opensource.org/licenses/MIT)
85
87
 
86
88
  ---
87
89
 
@@ -208,25 +210,19 @@ def import_customers(tx, records):
208
210
 
209
211
  ## Documentation
210
212
 
211
- Detailed guides with real-world examples:
212
-
213
- | Guide | Description |
214
- |-------|-------------|
215
- | [Database ORM](docs/database.md) | Connections, transactions, tables, rows, results, queries, schema management |
216
- | [Performance & Optimization](docs/performance.md) | Connection pooling, batch operations, query caching, prepared statements, N+1 prevention, observability |
217
- | [Async Support](docs/async.md) | AsyncTransaction, AsyncTable, AsyncResult, parallel queries with gather() |
218
- | [Configuration Reference](docs/configuration.md) | All environment variables, engine options, and connection settings |
219
- | [AWS Lambda Handlers](docs/aws-handlers.md) | LambdaHandler, SqsHandler, auth modes, per-record transactions |
220
- | [Payment Processing](docs/payment.md) | Stripe and Braintree adapters, payment lifecycle |
221
- | [Utilities](docs/utilities.md) | Excel export, data conversion, formatting, timers, email parsing |
222
-
223
- ### Additional Docs
224
-
225
- | Doc | Description |
226
- |-----|-------------|
227
- | [Testing Guide](docs/TESTING.md) | Running tests, markers, coverage |
228
- | [Security](docs/SECURITY.md) | Pre-commit hooks, credential scanning |
229
- | [AWS Auth Modes](docs/AWS_HANDLERS_AUTH.md) | Cognito auth, public endpoints, webhooks |
213
+ Full documentation is included in the `docs/` directory of the source distribution.
214
+
215
+ | Guide | File | Description |
216
+ |-------|------|-------------|
217
+ | Database ORM | `docs/database.md` | Connections, transactions, tables, rows, results, queries, schema management |
218
+ | Performance & Optimization | `docs/performance.md` | Connection pooling, batch operations, query caching, prepared statements, N+1 prevention, observability |
219
+ | Async Support | `docs/async.md` | AsyncTransaction, AsyncTable, AsyncResult, parallel queries with gather() |
220
+ | Configuration Reference | `docs/configuration.md` | All environment variables, engine options, and connection settings |
221
+ | AWS Lambda Handlers | `docs/aws-handlers.md` | LambdaHandler, SqsHandler, auth modes, per-record transactions |
222
+ | Payment Processing | `docs/payment.md` | Stripe and Braintree adapters, payment lifecycle |
223
+ | Utilities | `docs/utilities.md` | Excel export, data conversion, formatting, timers, email parsing |
224
+ | Testing Guide | `docs/TESTING.md` | Running tests, markers, coverage |
225
+ | Security | `docs/SECURITY.md` | Pre-commit hooks, credential scanning |
230
226
 
231
227
  ---
232
228
 
@@ -292,6 +292,40 @@ class TestCreateMissingRaceHandling:
292
292
  with pytest.raises(exceptions.DbSchemaLockedError):
293
293
  fake_insert(table, {"foo": "bar"})
294
294
 
295
+ def test_schema_locked_logs_warning_on_missing_table(self, caplog):
296
+ """When schema is locked, should log WARNING before raising."""
297
+ table = self._make_table()
298
+ table.tx.engine.schema_locked = True
299
+
300
+ @create_missing
301
+ def fake_insert(self_, data):
302
+ raise exceptions.DbTableMissingError("table missing")
303
+
304
+ import logging
305
+ with caplog.at_level(logging.WARNING, logger="velocity.db"):
306
+ with pytest.raises(exceptions.DbSchemaLockedError):
307
+ fake_insert(table, {"foo": "bar"})
308
+
309
+ assert any("@create_missing triggered on locked schema" in r.message for r in caplog.records)
310
+ assert any(r.operation == "create_missing_table" for r in caplog.records if hasattr(r, "operation"))
311
+
312
+ def test_schema_locked_logs_warning_on_missing_column(self, caplog):
313
+ """When schema is locked, should log WARNING for missing column."""
314
+ table = self._make_table()
315
+ table.tx.engine.schema_locked = True
316
+
317
+ @create_missing
318
+ def fake_insert(self_, data):
319
+ raise exceptions.DbColumnMissingError("column missing")
320
+
321
+ import logging
322
+ with caplog.at_level(logging.WARNING, logger="velocity.db"):
323
+ with pytest.raises(exceptions.DbSchemaLockedError):
324
+ fake_insert(table, {"foo": "bar"})
325
+
326
+ assert any("@create_missing triggered on locked schema" in r.message for r in caplog.records)
327
+ assert any(r.operation == "create_missing_column" for r in caplog.records if hasattr(r, "operation"))
328
+
295
329
  def test_advisory_lock_failure_is_nonfatal(self):
296
330
  """If advisory_lock raises, DDL should still proceed."""
297
331
  table = self._make_table()
File without changes