velocity-python 0.4.0__tar.gz → 0.4.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.
- {velocity_python-0.4.0 → velocity_python-0.4.1}/PKG-INFO +1 -1
- {velocity_python-0.4.0 → velocity_python-0.4.1}/pyproject.toml +1 -1
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/__init__.py +1 -1
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/workflow/access.py +8 -1
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/workflow/engine.py +56 -5
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/workflow/schema.py +4 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity_python.egg-info/PKG-INFO +1 -1
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_workflow_actions.py +20 -1
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_workflow_features.py +107 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_workflow_postgres.py +25 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/LICENSE +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/README.md +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/setup.cfg +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/amplify.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/assets/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/assets/backfill.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/assets/indexing.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/assets/references.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/assets/service.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/assets/usage_index.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/authz.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/blobs.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/capabilities/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/capabilities/base.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/capabilities/dispatch.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/capabilities/infra.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/capabilities/jobs.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/capabilities/provisioning.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/capabilities/retention.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/capabilities/security.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/capabilities/single_session.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/capabilities/workflow.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/deploy/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/deploy/ci_gate.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/deploy/config.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/deploy/frontend_checks.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/deploy/operations.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/deploy/policies.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/deploy/reconcile.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/deploy/targets.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/dirty_pipeline.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/email.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/facets.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/failures.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/feature_flags.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/base_handler.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/context.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/context_factory.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/exceptions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/lambda_handler.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/masquerade.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/action_names.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/audit_trail.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/client_errors.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/client_input.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/data_service.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/job_handler.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/permissions_actions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/row_scoped.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/session_control.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/tiles_actions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/web_handler.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/workflow_actions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/perf.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/response.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/sqs_handler.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/identity.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/job_lifecycle.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/job_results.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/mirror.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/ops.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/permissions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/queue_defaults.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/s3.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/scheduler.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/schema.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/settings.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/sms.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/ssm_config.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tests/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tests/test_base_handler_error_response.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tests/test_deploy_least_privilege.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tests/test_deploy_policies.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tests/test_deploy_policy_size.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tests/test_deploy_reconcile.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tests/test_email.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tests/test_response.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tests/test_sms.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tiles.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/user_data.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/cache.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/_pgddl.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/audit.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/async_support.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/column.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/database.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/decorators.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/engine.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/jsonproxy.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/lazy_engine.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/result.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/row.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/sequence.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/table.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/transaction.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/core/view.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/effective.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/exceptions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/fragments.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/integrity.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/maintenance.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/migrations.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/base/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/base/initializer.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/base/operators.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/base/sql.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/base/types.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/mysql/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/mysql/operators.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/mysql/reserved.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/mysql/sql.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/mysql/types.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/postgres/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/postgres/operators.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/postgres/reserved.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/postgres/sql.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/postgres/types.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/sqlite/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/sqlite/operators.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/sqlite/reserved.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/sqlite/sql.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/sqlite/types.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/sqlserver/operators.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/sqlserver/sql.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/sqlserver/types.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/servers/tablehelper.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/common_db_test.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/common.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/conftest.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_column.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_connections.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_database.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_engine.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_imports.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_integrity_triggers.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_result.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_row.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_table.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/sql/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/sql/common.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/test_db_utils.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/test_postgres.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/test_result_caching.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/test_sql_builder.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/test_tablehelper.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tests/test_view_helper.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/tunnel.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/db/utils.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/hooks.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/logging.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/conv/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/conv/iconv.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/conv/oconv.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/db.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/export.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/format.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/mail.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/merge.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/pdf.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/tests/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/tests/test_db.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/tests/test_fix.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/tests/test_format.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/tests/test_iconv.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/tests/test_mail_send.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/tests/test_merge.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/tests/test_oconv.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/tests/test_original_error.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/tests/test_timer.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/timer.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/misc/tools.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/core/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/core/capabilities.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/core/store.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/core/where.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/exceptions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/base/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/cassandra/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/cassandra/translation.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/couchbase/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/couchbase/translation.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/dynamodb/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/dynamodb/translation.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/elasticsearch/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/elasticsearch/translation.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/memory/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/mongodb/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/mongodb/translation.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/nosql/servers/redis/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/_mirror_core.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/authorizenet_adapter.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/authorizenet_mirror.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/base_adapter.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/braintree_adapter.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/braintree_mirror.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/charge_rules.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/money.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/plaid_api.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/plaid_webhook.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/redact.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/schema.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/stripe_adapter.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/payment/stripe_mirror.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/rules/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/rules/engine.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/rules/expressions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/rules/facts.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/rules/storage.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/testing/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/testing/fake_db.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/workflow/__init__.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/workflow/contract.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/workflow/definitions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/workflow/hooks.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/workflow/notices.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/workflow/outbox.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/workflow/points.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity_python.egg-info/SOURCES.txt +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity_python.egg-info/dependency_links.txt +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity_python.egg-info/entry_points.txt +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity_python.egg-info/requires.txt +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity_python.egg-info/top_level.txt +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_access_error_403.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_action_names.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_activity_tracking_aborted_tx.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_amplify_redirects.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_asset_indexing.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_asset_references.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_assets_service.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_async_support.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_audit_log_confidential.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_audit_mixin.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_audit_registry_table_gate.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_authz.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_aws_package_hygiene.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_batch_operations.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_blob_store.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_business_objects.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_capabilities.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_capability_catalog.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_capability_dependencies.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_check_changelog.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_ci_gate.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_client_errors_mixin.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_client_input_contract_export.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_client_sql_boundary.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_client_table_gate_case_and_pointers.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_cognito_client_lazy.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_cognito_user_cache.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_column_tx_arg.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_concurrency_safety.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_connection_pool.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_connection_resilience.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_context_enqueue_idempotency.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_context_flags_loader.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_context_job_descriptions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_context_queue_job.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_conv_combine.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_data_service_owner_scope.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_data_service_query_cap.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_data_service_renumber.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_data_service_row_number.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_data_service_save_as.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_data_service_security_gates.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_db_audit_required.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_db_credentials_ssm_cascade.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_db_effective.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_db_integrity.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_db_maintenance.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_db_tunnel.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_declared_column_types.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_decorators.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_delete_hook_fk_blocked.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_deploy_config_fields.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_deploy_engine.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_deploy_frontend_checks.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_deploy_operations_queue.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_deploy_policies.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_dirty_pipeline_consumer.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_dirty_pipeline_fast_path.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_dlq_constant.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_docs_snippets.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_email_processing.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_enqueue_metric_namespace.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_enqueue_send_failures.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_ensure_infrastructure.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_export_workbook.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_facets.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_facets_and_where.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_failures.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_feature_flags.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_get_cognito_user_provider.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_hooks.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_http_handler_rollback.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_iconv_money_to_cents.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_identifier_injection_guard.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_identity.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_job_handler.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_job_lifecycle.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_job_record_guard.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_job_record_guard_postgres.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_job_results.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_json_columns.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_jsonb_dict_adapter.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_lambda_handler.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_lambda_handler_auth.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_lambda_handler_masquerade.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_lambda_handler_user_cache.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_lazy_engine.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_masquerade_grant.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_merge_on_conflict.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_mirror.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_mirror_upsert_public.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_mixins_import.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_n_plus_one.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_nosql_dynamodb.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_nosql_memory.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_nosql_mongodb.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_nosql_redis.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_nosql_translation.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_nosql_where.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_observability.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_on_action_default.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_on_commit.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_ops.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_payment_audit_fixes.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_payment_authorizenet_adapter.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_payment_braintree_adapter.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_payment_braintree_mirror.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_payment_business_agnostic.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_payment_charge_reference.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_payment_extra_bounds.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_payment_lazy_imports.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_payment_mirror_empty_table.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_payment_profile_sorting.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_payment_stripe_adapter.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_pdf.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_permissions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_permissions_actions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_permissions_notices.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_permissions_review.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_pgserver_bulk_cache.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_pgserver_capability_types.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_pgserver_ensure_infrastructure.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_pgserver_get_tables.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_pgserver_permissions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_pgserver_pointer_joins.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_pgserver_row_scope.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_pgserver_search_export.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_pgserver_settings.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_pgserver_tiles.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_pgserver_user_data.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_plaid_api.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_plaid_webhook.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_pointer_join_sql.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_postgres_initializer_config.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_postgres_py_type.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_prepared_statements.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_psycopg3_upgrade.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_query_cache.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_query_missing_table_unlocked.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_raw_sql_prefix_policy.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_read_cache.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_readme_imports.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_record_event_postgres.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_record_event_transaction.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_response.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_restricted_direct_tables.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_result_returning.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_retry_side_effect_guard.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_return_default_safety.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_row_batch_update.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_row_cache_staleness.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_row_scoped_data_service.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_rules.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_rules_storage.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_s3_bucket_config.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_s3_list_client_files.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_s3_upload.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_scheduler.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_schema_lock_config_other_backends.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_schema_migrations.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_search_paging_export.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_security_capability.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_security_events_table_gate.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_security_hardening.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_server_cursor.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_session_control.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_settings.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_single_autocommit_safety.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_single_session_capability.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_sms_twilio_signature.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_spreadsheet_functions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_sqlite_backend.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_sqs_per_record_transactions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_ssm_config.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_ssm_config_require.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_store_user_data.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_sys_modified_count_postgres_demo.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_table_alter.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_table_claim.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_table_find_cache.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_table_purge.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_testing_fake_db.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_tiles.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_transaction_class_wrapping.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_transaction_commit_and_ownership.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_transaction_edge_cases.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_tx_lifecycle_retry.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_tx_read_cache_and_bulk.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_user_data.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_user_not_provisioned.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_where_clause_validation.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_workflow_contract.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_workflow_definitions.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_workflow_engine.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_workflow_review.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_write_hook_create_flow.py +0 -0
- {velocity_python-0.4.0 → velocity_python-0.4.1}/tests/test_write_hook_empty_strings.py +0 -0
|
@@ -288,8 +288,15 @@ def act_relations(
|
|
|
288
288
|
if kind == "hold":
|
|
289
289
|
hold = tx.table(engine.HOLD).find({"sys_id": ident})
|
|
290
290
|
if hold is not None and hold["docket_id"] == docket["sys_id"]:
|
|
291
|
+
# the relation only; the engine decides the hold's own
|
|
292
|
+
# release_permission with the actor's bound authz
|
|
291
293
|
if engine.hold_owner_of(
|
|
292
|
-
actor,
|
|
294
|
+
actor,
|
|
295
|
+
route,
|
|
296
|
+
dict(hold.to_dict()),
|
|
297
|
+
docket.get("entity"),
|
|
298
|
+
docket=docket,
|
|
299
|
+
check_permission=False,
|
|
293
300
|
):
|
|
294
301
|
out.add(HOLD_OWNER)
|
|
295
302
|
return frozenset(out)
|
|
@@ -891,10 +891,15 @@ def may_release(actor: Actor, route: Route, hold, docket, effect) -> bool:
|
|
|
891
891
|
return False
|
|
892
892
|
if actor.kind != "person" or not in_scope(actor, docket.get("entity")):
|
|
893
893
|
return False
|
|
894
|
+
held = hold.get("release_permission")
|
|
895
|
+
if held and not actor.may(HOLD_RELEASE, held, docket):
|
|
896
|
+
return False # the hold's own permission binds every way out
|
|
894
897
|
permission = effect.get("release_permission")
|
|
895
898
|
if permission:
|
|
896
899
|
return actor.may(HOLD_RELEASE, permission, docket)
|
|
897
|
-
return hold_owner_of(
|
|
900
|
+
return hold_owner_of(
|
|
901
|
+
actor, route, hold, docket.get("entity"), docket=docket, direct=False
|
|
902
|
+
)
|
|
898
903
|
|
|
899
904
|
|
|
900
905
|
def _release_effects(item: Pass):
|
|
@@ -1659,16 +1664,43 @@ def problem_owner_of(actor: Actor, route: Route, position) -> bool:
|
|
|
1659
1664
|
)
|
|
1660
1665
|
|
|
1661
1666
|
|
|
1662
|
-
|
|
1667
|
+
RELEASE_ANY, RELEASE_VIA_EFFECT = "any", "effect"
|
|
1668
|
+
|
|
1669
|
+
|
|
1670
|
+
def hold_owner_of(
|
|
1671
|
+
actor: Actor,
|
|
1672
|
+
route: Route,
|
|
1673
|
+
hold,
|
|
1674
|
+
entity,
|
|
1675
|
+
*,
|
|
1676
|
+
docket=None,
|
|
1677
|
+
direct=True,
|
|
1678
|
+
check_permission=True,
|
|
1679
|
+
) -> bool:
|
|
1663
1680
|
"""Who may release a manual hold on a docket of ``entity``: its owner
|
|
1664
|
-
role, its placer, a route owner — inside their
|
|
1681
|
+
role, its placer, a route owner, an authorized override — inside their
|
|
1682
|
+
entities, and subject to the hold's own release controls:
|
|
1683
|
+
|
|
1684
|
+
* ``release_via="effect"``: never released directly (the
|
|
1685
|
+
``hold:<id>:release`` action, ``direct=True``), only by a pass effect;
|
|
1686
|
+
* ``release_permission``: whoever releases it must also be allowed that
|
|
1687
|
+
permission through authz (:data:`HOLD_RELEASE`, with the docket's
|
|
1688
|
+
entity scope) — a route owner or an override included. Needs
|
|
1689
|
+
``docket``; ``check_permission=False`` is only for computing an authz
|
|
1690
|
+
relation, the engine then decides with the actor's own ``allows``."""
|
|
1665
1691
|
if actor.kind != "person" or str(hold.get("release_rule") or "") not in (
|
|
1666
1692
|
"",
|
|
1667
1693
|
"manual",
|
|
1668
1694
|
):
|
|
1669
1695
|
return False
|
|
1696
|
+
if direct and (hold.get("release_via") or RELEASE_ANY) == RELEASE_VIA_EFFECT:
|
|
1697
|
+
return False
|
|
1670
1698
|
if not in_scope(actor, entity):
|
|
1671
1699
|
return False
|
|
1700
|
+
permission = hold.get("release_permission")
|
|
1701
|
+
if permission and check_permission:
|
|
1702
|
+
if docket is None or not actor.may(HOLD_RELEASE, permission, docket):
|
|
1703
|
+
return False
|
|
1672
1704
|
if actor.override:
|
|
1673
1705
|
return True
|
|
1674
1706
|
return (
|
|
@@ -1777,7 +1809,7 @@ def actions_for(tx, docket, route: Route, actor: Actor, *, positions=None, now=N
|
|
|
1777
1809
|
}
|
|
1778
1810
|
)
|
|
1779
1811
|
for hold in holds_of(tx, docket["sys_id"]):
|
|
1780
|
-
if hold_owner_of(actor, route, hold, docket.get("entity")):
|
|
1812
|
+
if hold_owner_of(actor, route, hold, docket.get("entity"), docket=docket):
|
|
1781
1813
|
out.append(
|
|
1782
1814
|
_action(
|
|
1783
1815
|
f"hold:{hold['sys_id']}:release",
|
|
@@ -2217,11 +2249,28 @@ def place_hold(
|
|
|
2217
2249
|
blocks=None,
|
|
2218
2250
|
releases_when=None,
|
|
2219
2251
|
label=None,
|
|
2252
|
+
release_permission=None,
|
|
2253
|
+
release_via=RELEASE_ANY,
|
|
2220
2254
|
now=None,
|
|
2221
2255
|
) -> int:
|
|
2222
2256
|
"""Place a manual hold; returns its id. ``blocks``: the pass codes it
|
|
2223
|
-
blocks (default every forward, branch and rejoin pass).
|
|
2257
|
+
blocks (default every forward, branch and rejoin pass).
|
|
2258
|
+
|
|
2259
|
+
Release controls: ``release_permission`` — whoever releases it (owner,
|
|
2260
|
+
route owner, override, or a pass effect) must be allowed that permission
|
|
2261
|
+
through authz (``workflow.hold.release``); ``release_via="effect"`` —
|
|
2262
|
+
only a pass's ``release_hold`` effect releases it, so its pass's guards
|
|
2263
|
+
always apply: the direct ``hold:<id>:release`` action is never offered
|
|
2264
|
+
and is refused if sent."""
|
|
2224
2265
|
hooks.check_code(kind, "hold kind")
|
|
2266
|
+
if release_via not in (RELEASE_ANY, RELEASE_VIA_EFFECT):
|
|
2267
|
+
raise WorkflowError(
|
|
2268
|
+
f"release_via must be {RELEASE_ANY!r} or {RELEASE_VIA_EFFECT!r}"
|
|
2269
|
+
)
|
|
2270
|
+
if release_permission is not None and (
|
|
2271
|
+
not isinstance(release_permission, str) or not release_permission.strip()
|
|
2272
|
+
):
|
|
2273
|
+
raise WorkflowError("release_permission must be a permission name")
|
|
2225
2274
|
ctx = _Ctx(tx, now)
|
|
2226
2275
|
docket = _docket(tx, docket_id, lock=True)
|
|
2227
2276
|
row = tx.table(HOLD).new(
|
|
@@ -2236,6 +2285,8 @@ def place_hold(
|
|
|
2236
2285
|
"release_rule": "manual",
|
|
2237
2286
|
"releases_when": releases_when,
|
|
2238
2287
|
"blocks": list(blocks) if blocks else None,
|
|
2288
|
+
"release_permission": release_permission,
|
|
2289
|
+
"release_via": release_via,
|
|
2239
2290
|
}
|
|
2240
2291
|
)
|
|
2241
2292
|
_mark(ctx, docket, actor, "hold", outcome=kind, note=str(reason or kind))
|
|
@@ -317,6 +317,10 @@ SCHEMA = {
|
|
|
317
317
|
"released_by": "TEXT",
|
|
318
318
|
"released_at": TS,
|
|
319
319
|
"blocks": "JSONB",
|
|
320
|
+
# release controls: a permission any release needs, and
|
|
321
|
+
# "effect" = only a pass effect may release it (no direct action)
|
|
322
|
+
"release_permission": "TEXT",
|
|
323
|
+
"release_via": "TEXT",
|
|
320
324
|
"link_id": "BIGINT",
|
|
321
325
|
"rule_pack": "TEXT",
|
|
322
326
|
"rule_version": "INTEGER",
|
|
@@ -722,7 +722,9 @@ def test_the_site_scope_hook_sets_the_resource_scopes():
|
|
|
722
722
|
def test_a_denial_at_the_sites_scope_refuses_the_sheet_write_and_the_release():
|
|
723
723
|
tx, docket = scoped_site()
|
|
724
724
|
handler = Handler(7, permissions=(USE, ws.READ, ws.EDIT, OVERRIDE))
|
|
725
|
-
unheld = wf.open_docket(
|
|
725
|
+
unheld = wf.open_docket(
|
|
726
|
+
tx, "widget_flow", ws.subject("n2"), entity="north", now=NOW
|
|
727
|
+
)
|
|
726
728
|
with denied_at("school:north", ws.EDIT):
|
|
727
729
|
context = call(tx, handler, "workflow-act", act_payload(tx, unheld))
|
|
728
730
|
assert context.status == 403 # the sheet write
|
|
@@ -787,3 +789,20 @@ def test_hold_release_is_refused_through_authz():
|
|
|
787
789
|
)
|
|
788
790
|
assert context.status in (403, 409)
|
|
789
791
|
assert [h["kind"] for h in engine.holds_of(tx, docket)] == ["paperwork"]
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
def test_a_route_owner_cannot_release_an_effect_only_hold_through_the_handler(_clean):
|
|
795
|
+
tx, docket = site()
|
|
796
|
+
hold = wf.place_hold(
|
|
797
|
+
tx, docket, "credit", "Over limit", owner="owner", release_via="effect", now=NOW
|
|
798
|
+
)
|
|
799
|
+
context = call(
|
|
800
|
+
tx,
|
|
801
|
+
Handler(1),
|
|
802
|
+
"workflow-act",
|
|
803
|
+
{"docket": docket, "action": f"hold:{hold}:release", "request_key": "h1"},
|
|
804
|
+
)
|
|
805
|
+
assert context.status == 403
|
|
806
|
+
assert [h["kind"] for h in engine.holds_of(tx, docket)] == ["credit"]
|
|
807
|
+
body = call(tx, Handler(1), "workflow-docket", {"docket": docket}).body
|
|
808
|
+
assert "release_action" not in body["holds"][0]
|
|
@@ -797,3 +797,110 @@ def test_the_calendar_hook_may_take_the_transaction():
|
|
|
797
797
|
wf.register_calendar(everything)
|
|
798
798
|
wf.open_docket(tx, "widget_flow", ws.subject("2"), now=NOW)
|
|
799
799
|
assert seen[-1] == ["entity", "station", "tx"]
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
# ── 0.4.1: hold-level release controls ────────────────────────────────────
|
|
803
|
+
|
|
804
|
+
CREDIT = "widgets.credit_release"
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
def credit_route():
|
|
808
|
+
spec = ws.route_spec(tests=[])
|
|
809
|
+
spec["passes"].append(
|
|
810
|
+
{
|
|
811
|
+
"code": "release_credit",
|
|
812
|
+
"from_station": "review",
|
|
813
|
+
"to_station": "allocate",
|
|
814
|
+
"guard_rule": "approve_limit",
|
|
815
|
+
"effects": [{"type": "release_hold", "kind": "credit"}],
|
|
816
|
+
}
|
|
817
|
+
)
|
|
818
|
+
return spec
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
def direct_ids(tx, route, docket, actor):
|
|
822
|
+
return [
|
|
823
|
+
a["id"]
|
|
824
|
+
for a in wf.actions_for(tx, engine.docket_row(tx, docket), route, actor)
|
|
825
|
+
if a["id"].startswith("hold:")
|
|
826
|
+
]
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
def test_a_release_via_effect_hold_is_never_released_directly():
|
|
830
|
+
tx, route = ws.site(**credit_route())
|
|
831
|
+
docket = wf.open_docket(tx, "widget_flow", ws.subject("1"), now=NOW)
|
|
832
|
+
hold = wf.place_hold(
|
|
833
|
+
tx, docket, "credit", "Over limit", owner="owner", release_via="effect", now=NOW
|
|
834
|
+
)
|
|
835
|
+
owner = ws.actor(ws.person(1, oversees=["widget_flow"]))
|
|
836
|
+
overriding = ws.actor(ws.person(1, oversees=["widget_flow"]), override=True)
|
|
837
|
+
for actor in (owner, overriding):
|
|
838
|
+
assert direct_ids(tx, route, docket, actor) == []
|
|
839
|
+
refused = wf.act(
|
|
840
|
+
tx, docket, f"hold:{hold}:release", None, actor, f"d{id(actor)}", now=NOW
|
|
841
|
+
)
|
|
842
|
+
assert refused.reasons == [engine.NOT_AVAILABLE]
|
|
843
|
+
assert [h["kind"] for h in engine.holds_of(tx, docket)] == ["credit"]
|
|
844
|
+
# the effect still works, for someone it lets release (the owner role)
|
|
845
|
+
lead = ws.actor(ws.person(11, roles=["reviewer", "owner"]))
|
|
846
|
+
position = the_open(tx, docket)
|
|
847
|
+
assert wf.act(
|
|
848
|
+
tx,
|
|
849
|
+
docket,
|
|
850
|
+
f"pass:{position['sys_id']}:release_credit",
|
|
851
|
+
None,
|
|
852
|
+
lead,
|
|
853
|
+
"e1",
|
|
854
|
+
now=NOW,
|
|
855
|
+
).ok
|
|
856
|
+
assert engine.holds_of(tx, docket) == []
|
|
857
|
+
|
|
858
|
+
|
|
859
|
+
def test_a_hold_release_permission_binds_route_owners_overrides_and_effects():
|
|
860
|
+
tx, route = ws.site(**credit_route())
|
|
861
|
+
docket = wf.open_docket(tx, "widget_flow", ws.subject("1"), now=NOW)
|
|
862
|
+
hold = wf.place_hold(
|
|
863
|
+
tx,
|
|
864
|
+
docket,
|
|
865
|
+
"credit",
|
|
866
|
+
"Over limit",
|
|
867
|
+
owner="owner",
|
|
868
|
+
release_permission=CREDIT,
|
|
869
|
+
now=NOW,
|
|
870
|
+
)
|
|
871
|
+
plain_owner = ws.actor(ws.person(1, oversees=["widget_flow"]))
|
|
872
|
+
overriding = ws.actor(ws.person(1, oversees=["widget_flow"]), override=True)
|
|
873
|
+
for actor in (plain_owner, overriding):
|
|
874
|
+
assert direct_ids(tx, route, docket, actor) == []
|
|
875
|
+
assert not wf.act(
|
|
876
|
+
tx, docket, f"hold:{hold}:release", None, actor, f"p{id(actor)}", now=NOW
|
|
877
|
+
).ok
|
|
878
|
+
# the release pass is no way around it either: its effect needs CREDIT too
|
|
879
|
+
lead = ws.person(11, roles=["reviewer", "owner"])
|
|
880
|
+
position = the_open(tx, docket)
|
|
881
|
+
assert not wf.act(
|
|
882
|
+
tx,
|
|
883
|
+
docket,
|
|
884
|
+
f"pass:{position['sys_id']}:release_credit",
|
|
885
|
+
None,
|
|
886
|
+
ws.actor(lead),
|
|
887
|
+
"e1",
|
|
888
|
+
now=NOW,
|
|
889
|
+
).ok
|
|
890
|
+
assert [h["kind"] for h in engine.holds_of(tx, docket)] == ["credit"]
|
|
891
|
+
# with the permission, the route owner may release it directly
|
|
892
|
+
allowed = ws.actor(
|
|
893
|
+
ws.person(1, oversees=["widget_flow"]), perms=(ws.READ, ws.EDIT, CREDIT)
|
|
894
|
+
)
|
|
895
|
+
assert direct_ids(tx, route, docket, allowed) == [f"hold:{hold}:release"]
|
|
896
|
+
assert wf.act(tx, docket, f"hold:{hold}:release", None, allowed, "ok", now=NOW).ok
|
|
897
|
+
assert engine.holds_of(tx, docket) == []
|
|
898
|
+
|
|
899
|
+
|
|
900
|
+
def test_release_controls_are_validated():
|
|
901
|
+
tx, route = ws.site()
|
|
902
|
+
docket = wf.open_docket(tx, "widget_flow", ws.subject("1"), now=NOW)
|
|
903
|
+
with pytest.raises(wf.WorkflowError, match="release_via"):
|
|
904
|
+
wf.place_hold(tx, docket, "credit", "x", release_via="anyone", now=NOW)
|
|
905
|
+
with pytest.raises(wf.WorkflowError, match="release_permission"):
|
|
906
|
+
wf.place_hold(tx, docket, "credit", "x", release_permission=" ", now=NOW)
|
|
@@ -430,3 +430,28 @@ def test_a_failed_sweep_item_does_not_strip_the_audit_actor(eng):
|
|
|
430
430
|
(good,),
|
|
431
431
|
).scalar()
|
|
432
432
|
assert changed_by == "system:workflow"
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
def test_hold_release_controls_on_postgres(eng):
|
|
436
|
+
docket, _sid = new_docket(eng)
|
|
437
|
+
owner = ws.actor(ws.person(1, oversees=["widget_flow"]), override=True)
|
|
438
|
+
with eng.transaction() as tx:
|
|
439
|
+
hold = wf.place_hold(
|
|
440
|
+
tx,
|
|
441
|
+
docket,
|
|
442
|
+
"credit",
|
|
443
|
+
"Over limit",
|
|
444
|
+
owner="owner",
|
|
445
|
+
release_via="effect",
|
|
446
|
+
release_permission="widgets.credit",
|
|
447
|
+
now=NOW,
|
|
448
|
+
)
|
|
449
|
+
row = engine.holds_of(tx, docket)[0]
|
|
450
|
+
assert (row["release_via"], row["release_permission"]) == (
|
|
451
|
+
"effect",
|
|
452
|
+
"widgets.credit",
|
|
453
|
+
)
|
|
454
|
+
refused = wf.act(
|
|
455
|
+
tx, docket, f"hold:{hold}:release", None, owner, "pg-h", now=NOW
|
|
456
|
+
)
|
|
457
|
+
assert refused.reasons == [engine.NOT_AVAILABLE]
|
|
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.4.0 → velocity_python-0.4.1}/src/velocity/aws/capabilities/provisioning.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/capabilities/single_session.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
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/context_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/__init__.py
RENAMED
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/action_names.py
RENAMED
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/audit_trail.py
RENAMED
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/client_errors.py
RENAMED
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/client_input.py
RENAMED
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/data_service.py
RENAMED
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/job_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/row_scoped.py
RENAMED
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/session_control.py
RENAMED
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/tiles_actions.py
RENAMED
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/web_handler.py
RENAMED
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/handlers/mixins/workflow_actions.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
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tests/test_deploy_policies.py
RENAMED
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tests/test_deploy_policy_size.py
RENAMED
|
File without changes
|
{velocity_python-0.4.0 → velocity_python-0.4.1}/src/velocity/aws/tests/test_deploy_reconcile.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
|