* gnu/packages/patches/python-alembic-exceptions-cause.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/databases.scm (python-alembic): Update to 1.4.1. [source](patches): New field. [arguments]: New field, override check phase.
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Fix a test failure with newer versions of SQLalchemy due to missing
 | |
| "causes" for some exceptions.
 | |
| 
 | |
| diff --git a/alembic/operations/ops.py b/alembic/operations/ops.py
 | |
| index 5ec2762..7129472 100644
 | |
| --- a/alembic/operations/ops.py
 | |
| +++ b/alembic/operations/ops.py
 | |
| @@ -108,6 +108,7 @@ def from_constraint(cls, constraint):
 | |
|              "primary_key_constraint": "primary",
 | |
|              "check_constraint": "check",
 | |
|              "column_check_constraint": "check",
 | |
| +            "table_or_column_check_constraint": "check",
 | |
|          }
 | |
|  
 | |
|          constraint_table = sqla_compat._table_for_constraint(constraint)
 | |
| @@ -707,6 +708,7 @@ def batch_create_foreign_key(
 | |
|      "create_check_constraint", "batch_create_check_constraint"
 | |
|  )
 | |
|  @AddConstraintOp.register_add_constraint("check_constraint")
 | |
| +@AddConstraintOp.register_add_constraint("table_or_column_check_constraint")
 | |
|  @AddConstraintOp.register_add_constraint("column_check_constraint")
 | |
|  class CreateCheckConstraintOp(AddConstraintOp):
 | |
|      """Represent a create check constraint operation."""
 | |
| diff --git a/alembic/testing/assertions.py b/alembic/testing/assertions.py
 | |
| index 3dc08f0..a78e5e8 100644
 | |
| --- a/alembic/testing/assertions.py
 | |
| +++ b/alembic/testing/assertions.py
 | |
| @@ -2,10 +2,9 @@
 | |
|  
 | |
|  import re
 | |
|  
 | |
| +from sqlalchemy import util
 | |
|  from sqlalchemy.engine import default
 | |
|  from sqlalchemy.testing.assertions import _expect_warnings
 | |
| -from sqlalchemy.testing.assertions import assert_raises  # noqa
 | |
| -from sqlalchemy.testing.assertions import assert_raises_message  # noqa
 | |
|  from sqlalchemy.testing.assertions import eq_  # noqa
 | |
|  from sqlalchemy.testing.assertions import is_  # noqa
 | |
|  from sqlalchemy.testing.assertions import is_false  # noqa
 | |
| @@ -17,6 +16,29 @@
 | |
|  from ..util.compat import py3k
 | |
|  
 | |
|  
 | |
| +def assert_raises(except_cls, callable_, *args, **kw):
 | |
| +    try:
 | |
| +        callable_(*args, **kw)
 | |
| +        success = False
 | |
| +    except except_cls:
 | |
| +        success = True
 | |
| +
 | |
| +    # assert outside the block so it works for AssertionError too !
 | |
| +    assert success, "Callable did not raise an exception"
 | |
| +
 | |
| +
 | |
| +def assert_raises_message(except_cls, msg, callable_, *args, **kwargs):
 | |
| +    try:
 | |
| +        callable_(*args, **kwargs)
 | |
| +        assert False, "Callable did not raise an exception"
 | |
| +    except except_cls as e:
 | |
| +        assert re.search(msg, util.text_type(e), re.UNICODE), "%r !~ %s" % (
 | |
| +            msg,
 | |
| +            e,
 | |
| +        )
 | |
| +        print(util.text_type(e).encode("utf-8"))
 | |
| +
 | |
| +
 | |
|  def eq_ignore_whitespace(a, b, msg=None):
 | |
|      # sqlalchemy.testing.assertion has this function
 | |
|      # but not with the special "!U" detection part
 |