Skip to content

Commit 83115b6

Browse files
authored
Merge pull request #45 from jace/sqlalchemy2
Remove pin on SQLAlchemy version < 2.0
2 parents ddbc5ff + b591f42 commit 83115b6

File tree

3 files changed

+19
-14
lines changed

3 files changed

+19
-14
lines changed

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ include_package_data = true
3535
python_requires = >= 3.8
3636
install_requires =
3737
WTForms>=3.1
38-
SQLAlchemy>=0.7.10,<2
38+
SQLAlchemy>=1.4
3939

4040
[flake8]
4141
# B = bugbear

tests/test_main.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
from sqlalchemy.dialects.postgresql import INET
99
from sqlalchemy.dialects.postgresql import MACADDR
1010
from sqlalchemy.dialects.postgresql import UUID
11-
from sqlalchemy.ext.declarative import declarative_base
1211
from sqlalchemy.orm import backref
12+
from sqlalchemy.orm import declarative_base
13+
from sqlalchemy.orm import registry
1314
from sqlalchemy.orm import relationship
1415
from sqlalchemy.orm import sessionmaker
1516
from sqlalchemy.schema import Column
1617
from sqlalchemy.schema import ColumnDefault
17-
from sqlalchemy.schema import MetaData
1818
from sqlalchemy.schema import Table
1919
from wtforms import fields
2020
from wtforms import Form
@@ -51,18 +51,18 @@ class AnotherInteger(sqla_types.Integer):
5151

5252
class TestBase(TestCase):
5353
def _do_tables(self, mapper, engine):
54-
metadata = MetaData()
54+
mapper_registry = registry()
5555

5656
test_table = Table(
5757
"test",
58-
metadata,
58+
mapper_registry.metadata,
5959
Column("id", sqla_types.Integer, primary_key=True, nullable=False),
6060
Column("name", sqla_types.String, nullable=False),
6161
)
6262

6363
pk_test_table = Table(
6464
"pk_test",
65-
metadata,
65+
mapper_registry.metadata,
6666
Column("foobar", sqla_types.String, primary_key=True, nullable=False),
6767
Column("baz", sqla_types.String, nullable=False),
6868
)
@@ -74,12 +74,12 @@ def _do_tables(self, mapper, engine):
7474
{"__unicode__": lambda x: x.baz, "__str__": lambda x: x.baz},
7575
)
7676

77-
mapper(Test, test_table)
78-
mapper(PKTest, pk_test_table)
77+
mapper_registry.map_imperatively(Test, test_table)
78+
mapper_registry.map_imperatively(PKTest, pk_test_table)
7979
self.Test = Test
8080
self.PKTest = PKTest
8181

82-
metadata.create_all(bind=engine)
82+
mapper_registry.metadata.create_all(bind=engine)
8383

8484
def _fill(self, sess):
8585
for i, n in [(1, "apple"), (2, "banana")]:

wtforms_sqlalchemy/orm.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"""
44
import inspect
55

6+
from sqlalchemy import inspect as sainspect
67
from wtforms import fields as wtforms_fields
78
from wtforms import validators
89
from wtforms.form import Form
@@ -211,19 +212,23 @@ def conv_MSYear(self, field_args, **extra):
211212
field_args["validators"].append(validators.NumberRange(min=1901, max=2155))
212213
return wtforms_fields.StringField(**field_args)
213214

214-
@converts("dialects.postgresql.base.INET")
215+
@converts("dialects.postgresql.types.INET", "dialects.postgresql.base.INET")
215216
def conv_PGInet(self, field_args, **extra):
216217
field_args.setdefault("label", "IP Address")
217218
field_args["validators"].append(validators.IPAddress())
218219
return wtforms_fields.StringField(**field_args)
219220

220-
@converts("dialects.postgresql.base.MACADDR")
221+
@converts("dialects.postgresql.types.MACADDR", "dialects.postgresql.base.MACADDR")
221222
def conv_PGMacaddr(self, field_args, **extra):
222223
field_args.setdefault("label", "MAC Address")
223224
field_args["validators"].append(validators.MacAddress())
224225
return wtforms_fields.StringField(**field_args)
225226

226-
@converts("dialects.postgresql.base.UUID")
227+
@converts(
228+
"sql.sqltypes.UUID",
229+
"dialects.postgresql.types.UUID",
230+
"dialects.postgresql.base.UUID",
231+
)
227232
def conv_PGUuid(self, field_args, **extra):
228233
field_args.setdefault("label", "UUID")
229234
field_args["validators"].append(validators.UUID())
@@ -253,12 +258,12 @@ def model_fields(
253258
254259
See `model_form` docstring for description of parameters.
255260
"""
256-
mapper = model._sa_class_manager.mapper
261+
mapper = sainspect(model)
257262
converter = converter or ModelConverter()
258263
field_args = field_args or {}
259264
properties = []
260265

261-
for prop in mapper.iterate_properties:
266+
for prop in mapper.attrs.values():
262267
if getattr(prop, "columns", None):
263268
if exclude_fk and prop.columns[0].foreign_keys:
264269
continue

0 commit comments

Comments
 (0)