From 82484016be1462d45478186fd15330ad54307b07 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz 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 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 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