velocity-python 0.0.143__tar.gz → 0.0.145__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.

Potentially problematic release.


This version of velocity-python might be problematic. Click here for more details.

Files changed (135) hide show
  1. {velocity_python-0.0.143 → velocity_python-0.0.145}/PKG-INFO +1 -1
  2. {velocity_python-0.0.143 → velocity_python-0.0.145}/pyproject.toml +1 -1
  3. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/__init__.py +1 -1
  4. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/postgres/sql.py +20 -43
  5. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity_python.egg-info/PKG-INFO +1 -1
  6. {velocity_python-0.0.143 → velocity_python-0.0.145}/tests/test_where_clause_validation.py +0 -4
  7. {velocity_python-0.0.143 → velocity_python-0.0.145}/LICENSE +0 -0
  8. {velocity_python-0.0.143 → velocity_python-0.0.145}/README.md +0 -0
  9. {velocity_python-0.0.143 → velocity_python-0.0.145}/setup.cfg +0 -0
  10. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/app/__init__.py +0 -0
  11. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/app/invoices.py +0 -0
  12. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/app/orders.py +0 -0
  13. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/app/payments.py +0 -0
  14. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/app/purchase_orders.py +0 -0
  15. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/app/tests/__init__.py +0 -0
  16. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/app/tests/test_email_processing.py +0 -0
  17. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/app/tests/test_payment_profile_sorting.py +0 -0
  18. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/app/tests/test_spreadsheet_functions.py +0 -0
  19. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/__init__.py +0 -0
  20. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/amplify.py +0 -0
  21. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/handlers/__init__.py +0 -0
  22. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/handlers/base_handler.py +0 -0
  23. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/handlers/context.py +0 -0
  24. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/handlers/exceptions.py +0 -0
  25. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/handlers/lambda_handler.py +0 -0
  26. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/handlers/mixins/__init__.py +0 -0
  27. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/handlers/mixins/activity_tracker.py +0 -0
  28. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/handlers/mixins/error_handler.py +0 -0
  29. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/handlers/mixins/legacy_mixin.py +0 -0
  30. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/handlers/mixins/standard_mixin.py +0 -0
  31. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/handlers/response.py +0 -0
  32. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/handlers/sqs_handler.py +0 -0
  33. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/tests/__init__.py +0 -0
  34. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/tests/test_lambda_handler_json_serialization.py +0 -0
  35. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/aws/tests/test_response.py +0 -0
  36. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/__init__.py +0 -0
  37. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/core/__init__.py +0 -0
  38. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/core/column.py +0 -0
  39. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/core/database.py +0 -0
  40. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/core/decorators.py +0 -0
  41. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/core/engine.py +0 -0
  42. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/core/result.py +0 -0
  43. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/core/row.py +0 -0
  44. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/core/sequence.py +0 -0
  45. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/core/table.py +0 -0
  46. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/core/transaction.py +0 -0
  47. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/exceptions.py +0 -0
  48. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/__init__.py +0 -0
  49. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/base/__init__.py +0 -0
  50. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/base/initializer.py +0 -0
  51. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/base/operators.py +0 -0
  52. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/base/sql.py +0 -0
  53. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/base/types.py +0 -0
  54. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/mysql/__init__.py +0 -0
  55. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/mysql/operators.py +0 -0
  56. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/mysql/reserved.py +0 -0
  57. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/mysql/sql.py +0 -0
  58. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/mysql/types.py +0 -0
  59. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/postgres/__init__.py +0 -0
  60. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/postgres/operators.py +0 -0
  61. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/postgres/reserved.py +0 -0
  62. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/postgres/types.py +0 -0
  63. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/sqlite/__init__.py +0 -0
  64. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/sqlite/operators.py +0 -0
  65. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/sqlite/reserved.py +0 -0
  66. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/sqlite/sql.py +0 -0
  67. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/sqlite/types.py +0 -0
  68. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/sqlserver/__init__.py +0 -0
  69. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/sqlserver/operators.py +0 -0
  70. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/sqlserver/reserved.py +0 -0
  71. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/sqlserver/sql.py +0 -0
  72. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/sqlserver/types.py +0 -0
  73. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/servers/tablehelper.py +0 -0
  74. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/__init__.py +0 -0
  75. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/common_db_test.py +0 -0
  76. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/__init__.py +0 -0
  77. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/common.py +0 -0
  78. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_column.py +0 -0
  79. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_connections.py +0 -0
  80. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_database.py +0 -0
  81. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_engine.py +0 -0
  82. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_general_usage.py +0 -0
  83. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_imports.py +0 -0
  84. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_result.py +0 -0
  85. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_row.py +0 -0
  86. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_row_comprehensive.py +0 -0
  87. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_schema_locking.py +0 -0
  88. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_schema_locking_unit.py +0 -0
  89. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_sequence.py +0 -0
  90. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_sql_comprehensive.py +0 -0
  91. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_table.py +0 -0
  92. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_table_comprehensive.py +0 -0
  93. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/postgres/test_transaction.py +0 -0
  94. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/sql/__init__.py +0 -0
  95. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/sql/common.py +0 -0
  96. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/sql/test_postgres_select_advanced.py +0 -0
  97. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/sql/test_postgres_select_variances.py +0 -0
  98. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/test_cursor_rowcount_fix.py +0 -0
  99. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/test_db_utils.py +0 -0
  100. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/test_postgres.py +0 -0
  101. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/test_postgres_unchanged.py +0 -0
  102. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/test_process_error_robustness.py +0 -0
  103. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/test_result_caching.py +0 -0
  104. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/test_result_sql_aware.py +0 -0
  105. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/test_row_get_missing_column.py +0 -0
  106. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/test_schema_locking_initializers.py +0 -0
  107. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/test_schema_locking_simple.py +0 -0
  108. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/test_sql_builder.py +0 -0
  109. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/tests/test_tablehelper.py +0 -0
  110. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/db/utils.py +0 -0
  111. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/__init__.py +0 -0
  112. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/conv/__init__.py +0 -0
  113. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/conv/iconv.py +0 -0
  114. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/conv/oconv.py +0 -0
  115. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/db.py +0 -0
  116. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/export.py +0 -0
  117. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/format.py +0 -0
  118. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/mail.py +0 -0
  119. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/merge.py +0 -0
  120. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/tests/__init__.py +0 -0
  121. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/tests/test_db.py +0 -0
  122. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/tests/test_fix.py +0 -0
  123. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/tests/test_format.py +0 -0
  124. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/tests/test_iconv.py +0 -0
  125. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/tests/test_merge.py +0 -0
  126. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/tests/test_oconv.py +0 -0
  127. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/tests/test_original_error.py +0 -0
  128. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/tests/test_timer.py +0 -0
  129. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/timer.py +0 -0
  130. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity/misc/tools.py +0 -0
  131. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity_python.egg-info/SOURCES.txt +0 -0
  132. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity_python.egg-info/dependency_links.txt +0 -0
  133. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity_python.egg-info/requires.txt +0 -0
  134. {velocity_python-0.0.143 → velocity_python-0.0.145}/src/velocity_python.egg-info/top_level.txt +0 -0
  135. {velocity_python-0.0.143 → velocity_python-0.0.145}/tests/test_sys_modified_count_postgres_demo.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: velocity-python
3
- Version: 0.0.143
3
+ Version: 0.0.145
4
4
  Summary: A rapid application development library for interfacing with data storage
5
5
  Author-email: Velocity Team <info@codeclubs.org>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "velocity-python"
7
- version = "0.0.143"
7
+ version = "0.0.145"
8
8
  authors = [
9
9
  { name="Velocity Team", email="info@codeclubs.org" },
10
10
  ]
@@ -1,4 +1,4 @@
1
- __version__ = version = "0.0.143"
1
+ __version__ = version = "0.0.145"
2
2
 
3
3
  from . import aws
4
4
  from . import db
@@ -18,39 +18,6 @@ TableHelper.reserved = reserved_words
18
18
  TableHelper.operators = OPERATORS
19
19
 
20
20
 
21
- def _get_table_helper(tx, table):
22
- """
23
- Utility function to create a TableHelper instance.
24
- Ensures consistent configuration across all SQL methods.
25
- """
26
- return TableHelper(tx, table)
27
-
28
-
29
- def _validate_table_name(table):
30
- """Validate table name format."""
31
- if not table or not isinstance(table, str):
32
- raise ValueError("Table name must be a non-empty string")
33
- # Add more validation as needed
34
- return table.strip()
35
-
36
-
37
- def _handle_predicate_errors(predicates, operation="WHERE"):
38
- """Process a list of predicates with error handling."""
39
- sql_parts = []
40
- vals = []
41
-
42
- for pred, val in predicates:
43
- sql_parts.append(pred)
44
- if val is None:
45
- pass
46
- elif isinstance(val, tuple):
47
- vals.extend(val)
48
- else:
49
- vals.append(val)
50
-
51
- return sql_parts, vals
52
-
53
-
54
21
  system_fields = [
55
22
  "sys_id",
56
23
  "sys_created",
@@ -143,7 +110,7 @@ class SQL(BaseSQLDialect):
143
110
  vals = []
144
111
 
145
112
  # Create table helper instance
146
- th = _get_table_helper(tx, table)
113
+ th = TableHelper(tx, table)
147
114
 
148
115
  # Handle columns and DISTINCT before aliasing
149
116
  if columns is None:
@@ -447,7 +414,7 @@ class SQL(BaseSQLDialect):
447
414
  if not isinstance(data, Mapping) or not data:
448
415
  raise ValueError("data must be a non-empty mapping of column-value pairs.")
449
416
 
450
- th = _get_table_helper(tx, table)
417
+ th = TableHelper(tx, table)
451
418
  set_clauses = []
452
419
  vals = []
453
420
 
@@ -797,11 +764,21 @@ class SQL(BaseSQLDialect):
797
764
  def ensure_sys_modified_count(cls, name, has_column=False):
798
765
  """Return SQL to backfill sys_modified_count and refresh the on_sys_modified trigger."""
799
766
  if "." in name:
800
- fqtn = TableHelper.quote(name)
767
+ schema_name, table_name = name.split(".", 1)
801
768
  else:
802
- fqtn = f"public.{TableHelper.quote(name)}"
803
- schema, _ = fqtn.split(".")
804
- trigger_name = f"on_update_row_{fqtn.replace('.', '_')}"
769
+ schema_name = cls.default_schema
770
+ table_name = name
771
+
772
+ schema_identifier = TableHelper.quote(schema_name)
773
+ table_identifier = TableHelper.quote(table_name)
774
+ fqtn = f"{schema_identifier}.{table_identifier}"
775
+
776
+ trigger_name = (
777
+ f"on_update_row_{schema_name}_{table_name}"
778
+ .replace(".", "_")
779
+ .replace('"', "")
780
+ )
781
+ trigger_identifier = TableHelper.quote(trigger_name)
805
782
  column_name = TableHelper.quote("sys_modified_count")
806
783
 
807
784
  statements = []
@@ -813,7 +790,7 @@ class SQL(BaseSQLDialect):
813
790
  statements.extend([
814
791
  f"UPDATE {fqtn} SET {column_name} = 0 WHERE {column_name} IS NULL;",
815
792
  f"""
816
- CREATE OR REPLACE FUNCTION {schema}.on_sys_modified()
793
+ CREATE OR REPLACE FUNCTION {schema_identifier}.on_sys_modified()
817
794
  RETURNS TRIGGER AS
818
795
  $BODY$
819
796
  BEGIN
@@ -842,11 +819,11 @@ class SQL(BaseSQLDialect):
842
819
  LANGUAGE plpgsql VOLATILE
843
820
  COST 100;
844
821
  """,
845
- f"DROP TRIGGER IF EXISTS {trigger_name} ON {fqtn};",
822
+ f"DROP TRIGGER IF EXISTS {trigger_identifier} ON {fqtn};",
846
823
  f"""
847
- CREATE TRIGGER {trigger_name}
824
+ CREATE TRIGGER {trigger_identifier}
848
825
  BEFORE INSERT OR UPDATE ON {fqtn}
849
- FOR EACH ROW EXECUTE PROCEDURE {schema}.on_sys_modified();
826
+ FOR EACH ROW EXECUTE PROCEDURE {schema_identifier}.on_sys_modified();
850
827
  """,
851
828
  ])
852
829
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: velocity-python
3
- Version: 0.0.143
3
+ Version: 0.0.145
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
@@ -25,10 +25,6 @@ class TestWhereClauseValidation(unittest.TestCase):
25
25
  self.mock_helper.get_table_alias.return_value = "t1"
26
26
  self.mock_helper.foreign_keys = {}
27
27
  self.mock_helper.split_columns.return_value = ["column1", "column2"]
28
-
29
- # Patch TableHelper creation
30
- import velocity.db.servers.postgres.sql as sql_module
31
- sql_module._get_table_helper = Mock(return_value=self.mock_helper)
32
28
 
33
29
  def test_invalid_where_bare_integer(self):
34
30
  """Test that bare integers in WHERE clauses are rejected with helpful error."""