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.
- {velocity_python-0.1.7/src/velocity_python.egg-info → velocity_python-0.1.9}/PKG-INFO +17 -21
- {velocity_python-0.1.7 → velocity_python-0.1.9}/README.md +14 -20
- {velocity_python-0.1.7 → velocity_python-0.1.9}/pyproject.toml +3 -1
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/__init__.py +1 -1
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/decorators.py +10 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9/src/velocity_python.egg-info}/PKG-INFO +17 -21
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_concurrency_safety.py +34 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/LICENSE +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/setup.cfg +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/formbuilder/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/formbuilder/reshaper.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/invoices.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/orders.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/payments.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/purchase_orders.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/tests/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/tests/test_email_processing.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/tests/test_payment_profile_sorting.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/tests/test_spreadsheet_functions.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/validators/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/validators/formbuilder_template.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/amplify.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/amplify_build.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/base_handler.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/context.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/context_factory.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/exceptions.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/lambda_handler.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/mixins/data_service.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/perf.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/response.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/sqs_handler.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/tests/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/tests/test_base_handler_error_response.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/tests/test_response.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/async_support.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/column.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/database.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/engine.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/result.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/row.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/sequence.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/table.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/transaction.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/core/view.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/exceptions.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/base/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/base/initializer.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/base/operators.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/base/sql.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/base/types.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/mysql/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/mysql/operators.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/mysql/reserved.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/mysql/sql.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/mysql/types.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/postgres/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/postgres/operators.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/postgres/reserved.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/postgres/sql.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/postgres/types.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlite/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlite/operators.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlite/reserved.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlite/sql.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlite/types.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlserver/operators.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlserver/sql.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlserver/types.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/tablehelper.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/common_db_test.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/common.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_column.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_connections.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_database.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_engine.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_imports.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_result.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_row.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_table.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/sql/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/sql/common.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_db_utils.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_postgres.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_result_caching.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_sql_builder.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_tablehelper.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_view_helper.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/utils.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/logging.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/conv/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/conv/iconv.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/conv/oconv.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/db.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/export.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/format.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/mail.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/merge.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_db.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_fix.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_format.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_iconv.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_merge.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_oconv.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_original_error.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_timer.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/timer.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tools.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/__init__.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/authorizenet_adapter.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/base_adapter.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/braintree_adapter.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/charge_rules.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/demo_profiles.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/profiles.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/router.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/stripe_adapter.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity_python.egg-info/SOURCES.txt +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity_python.egg-info/dependency_links.txt +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity_python.egg-info/requires.txt +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity_python.egg-info/top_level.txt +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_amplify_build.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_async_support.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_batch_operations.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_connection_pool.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_connection_resilience.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_decorators.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_formbuilder_reshaper.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_formbuilder_template_validator.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_iconv_money_to_cents.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_lambda_handler.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_lambda_handler_auth.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_mixins_import.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_n_plus_one.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_observability.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_payment_braintree_adapter.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_payment_demo_profiles.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_payment_profiles.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_payment_router.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_payment_stripe_adapter.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_prepared_statements.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_psycopg3_upgrade.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_query_cache.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_row_batch_update.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_row_cache_staleness.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_security_hardening.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_sqs_per_record_transactions.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_sys_modified_count_postgres_demo.py +0 -0
- {velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_table_alter.py +0 -0
- {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.
|
|
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
|
[](https://www.python.org/downloads/)
|
|
84
|
-
[](
|
|
86
|
+
[](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
|
-
|
|
212
|
-
|
|
213
|
-
| Guide | Description |
|
|
214
|
-
|
|
215
|
-
|
|
|
216
|
-
|
|
|
217
|
-
|
|
|
218
|
-
|
|
|
219
|
-
|
|
|
220
|
-
|
|
|
221
|
-
|
|
|
222
|
-
|
|
223
|
-
|
|
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
|
[](https://www.python.org/downloads/)
|
|
24
|
-
[](
|
|
24
|
+
[](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
|
-
|
|
152
|
-
|
|
153
|
-
| Guide | Description |
|
|
154
|
-
|
|
155
|
-
|
|
|
156
|
-
|
|
|
157
|
-
|
|
|
158
|
-
|
|
|
159
|
-
|
|
|
160
|
-
|
|
|
161
|
-
|
|
|
162
|
-
|
|
163
|
-
|
|
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
|
+
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 = [
|
|
@@ -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.
|
|
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
|
[](https://www.python.org/downloads/)
|
|
84
|
-
[](
|
|
86
|
+
[](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
|
-
|
|
212
|
-
|
|
213
|
-
| Guide | Description |
|
|
214
|
-
|
|
215
|
-
|
|
|
216
|
-
|
|
|
217
|
-
|
|
|
218
|
-
|
|
|
219
|
-
|
|
|
220
|
-
|
|
|
221
|
-
|
|
|
222
|
-
|
|
223
|
-
|
|
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
|
|
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
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/tests/test_email_processing.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/tests/test_spreadsheet_functions.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/app/validators/formbuilder_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/context_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/mixins/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/mixins/data_service.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/aws/handlers/mixins/web_handler.py
RENAMED
|
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
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/postgres/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/postgres/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/postgres/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlserver/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlserver/operators.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/servers/sqlserver/reserved.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_column.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_connections.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_database.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_engine.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_general_usage.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_imports.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_result.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_sequence.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_table.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/postgres/test_transaction.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_cursor_rowcount_fix.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_postgres_unchanged.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_result_caching.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_result_sql_aware.py
RENAMED
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_row_get_missing_column.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/db/tests/test_schema_locking_simple.py
RENAMED
|
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
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/misc/tests/test_original_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity/payment/authorizenet_adapter.py
RENAMED
|
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
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/src/velocity_python.egg-info/dependency_links.txt
RENAMED
|
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
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_formbuilder_template_validator.py
RENAMED
|
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
|
{velocity_python-0.1.7 → velocity_python-0.1.9}/tests/test_sys_modified_count_postgres_demo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|