Blob Blame History Raw
From 82484016be1462d45478186fd15330ad54307b07 Mon Sep 17 00:00:00 2001
From: Chris Markiewicz <effigies@gmail.com>
Date: Mon, 24 Apr 2023 09:29:11 -0400
Subject: [PATCH 1/3] FIX: Import declarative_base from correct location

---
 bids/layout/models.py | 8 ++++++--
 setup.cfg             | 2 +-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/bids/layout/models.py b/bids/layout/models.py
index be1534bb..fff3d1ff 100644
--- a/bids/layout/models.py
+++ b/bids/layout/models.py
@@ -9,12 +9,16 @@ from copy import deepcopy
 from itertools import chain
 from functools import lru_cache
 
-from sqlalchemy.ext.declarative import declarative_base
 from sqlalchemy.ext.associationproxy import association_proxy
 from sqlalchemy.orm.collections import attribute_mapped_collection
-from sqlalchemy import (Column, String, Boolean, ForeignKey, Table)
+from sqlalchemy import Column, String, Boolean, ForeignKey, Table
 from sqlalchemy.orm import reconstructor, relationship, backref, object_session
 
+try:
+    from sqlalchemy.orm import declarative_base
+except ImportError:  # sqlalchemy < 1.4
+    from sqlalchemy.ext.declarative import declarative_base
+
 from ..utils import listify
 from .writing import build_path, write_to_file
 from ..config import get_option
diff --git a/setup.cfg b/setup.cfg
index 5a901aa6..8d23fa8c 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -27,7 +27,7 @@ install_requires =
     nibabel >=2.1
     pandas >=0.23
     formulaic >=0.2.4, <0.4  # Tested on 0.2.4 and 0.3.2
-    sqlalchemy <1.4.0.dev0
+    sqlalchemy
     bids-validator
     num2words
     click >=8.0
-- 
2.39.2


From d167ba66c01352fedc59fc50d04967c0cd13d8cd Mon Sep 17 00:00:00 2001
From: Chris Markiewicz <effigies@gmail.com>
Date: Mon, 24 Apr 2023 09:44:12 -0400
Subject: [PATCH 2/3] FIX: Accept more precise proxied error for duplicate
 config

---
 bids/layout/tests/test_models.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/bids/layout/tests/test_models.py b/bids/layout/tests/test_models.py
index 2f7862fa..0e1e5b59 100644
--- a/bids/layout/tests/test_models.py
+++ b/bids/layout/tests/test_models.py
@@ -179,7 +179,8 @@ def test_load_existing_config():
     session.commit()
 
     from sqlalchemy.orm.exc import FlushError
-    with pytest.raises(FlushError):
+    from sqlalchemy.exc import DBAPIError
+    with pytest.raises((FlushError, DBAPIError)):
         second = Config.load({"name": "dummy"})
         session.add(second)
         session.commit()
-- 
2.39.2


From 4c91c328cf500a2acc0a3908411f210bf20e57d4 Mon Sep 17 00:00:00 2001
From: Chris Markiewicz <effigies@gmail.com>
Date: Mon, 24 Apr 2023 09:44:27 -0400
Subject: [PATCH 3/3] TEST: Yield from fixture to avoid session going out of
 scope

---
 bids/layout/tests/test_writing.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bids/layout/tests/test_writing.py b/bids/layout/tests/test_writing.py
index dde6b3a1..ad74785a 100644
--- a/bids/layout/tests/test_writing.py
+++ b/bids/layout/tests/test_writing.py
@@ -37,7 +37,7 @@ def writable_file(tmpdir):
 
     session.add_all(list(ents.values()) + tags + [bf])
     session.commit()
-    return bf
+    yield bf
 
 
 @pytest.fixture(scope='module')
-- 
2.39.2