Skip to content

Commit

Permalink
Use default MetaData() object instead of creating a new one
Browse files Browse the repository at this point in the history
  • Loading branch information
miguelgrinberg committed Oct 28, 2023
1 parent 98ee1ed commit 32c3a03
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 3 deletions.
10 changes: 7 additions & 3 deletions src/alchemical/core.py
Expand Up @@ -31,9 +31,13 @@ class BaseModel:

def __init_subclass__(cls, **kwargs):
bind_key = getattr(cls, '__bind_key__', None)
if bind_key not in cls.__metadatas__:
cls.__metadatas__[bind_key] = MetaData()
cls.metadata = cls.__metadatas__[bind_key]
if bind_key is not None:
if bind_key not in cls.__metadatas__:
cls.__metadatas__[bind_key] = MetaData()
cls.metadata = cls.__metadatas__[bind_key]
elif None not in cls.__metadatas__ and \
getattr(cls, 'metadata', None) is not None:
cls.__metadatas__[None] = cls.metadata
super().__init_subclass__(**kwargs)

@classmethod
Expand Down
2 changes: 2 additions & 0 deletions tests/test_aio.py
Expand Up @@ -16,6 +16,7 @@ def wrapper(*args, **kwargs):

class TestAio(unittest.TestCase):
def setUp(self):
Model.metadata.clear()
Model.__metadatas__.clear()
clear_mappers()

Expand All @@ -29,6 +30,7 @@ class User(db.Model):
name: Mapped[str]

await db.create_all()
assert db.metadatas[None] == db.Model.metadata
assert db.metadatas[None] == User.metadata

async with db.begin() as session:
Expand Down
2 changes: 2 additions & 0 deletions tests/test_core.py
Expand Up @@ -14,6 +14,7 @@ def create_alchemical(self, url=None, binds=None):
else:
db = Alchemical()
db.initialize(url, binds=binds)
db.Model.metadata.clear()
db.Model.__metadatas__.clear()
clear_mappers()
return db
Expand All @@ -27,6 +28,7 @@ class User(db.Model):
name: Mapped[str]

db.create_all()
assert db.metadatas[None] == db.Model.metadata
assert db.metadatas[None] == User.metadata

with db.begin() as session:
Expand Down
1 change: 1 addition & 0 deletions tests/test_flask.py
Expand Up @@ -8,6 +8,7 @@

class TestFlask(unittest.TestCase):
def setUp(self):
Model.metadata.clear()
Model.__metadatas__.clear()
clear_mappers()

Expand Down

0 comments on commit 32c3a03

Please sign in to comment.