Skip to content

Commit

Permalink
Merge branch 'release/0.15.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
ri-gilfanov committed Jun 16, 2021
2 parents 9a5682a + 9865a6f commit b6134ed
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 29 deletions.
12 changes: 6 additions & 6 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ Copy and paste this code in a file and run:
.. code-block:: python
from aiohttp import web
import aiohttp_sqlalchemy
from aiohttp_sqlalchemy import sa_bind, sa_init_db, sa_session
import aiohttp_sqlalchemy as asa
from aiohttp_sqlalchemy import sa_session
from datetime import datetime
import sqlalchemy as sa
from sqlalchemy import orm
Expand All @@ -86,7 +86,7 @@ Copy and paste this code in a file and run:
db_session.add_all([MyModel()])
stmt = sa.select(MyModel)
result = await db_session.execute(stmt)
items = result.scalars().all()
items = result.scalars()
data = {}
for item in items:
Expand All @@ -98,9 +98,9 @@ Copy and paste this code in a file and run:
async def app_factory():
app = web.Application()
sa_binding = sa_bind('sqlite+aiosqlite:///')
aiohttp_sqlalchemy.setup(app, [sa_binding])
await sa_init_db(app, metadata)
binding = asa.bind('sqlite+aiosqlite:///')
asa.setup(app, [binding])
await asa.init_db(app, metadata)
app.add_routes([web.get('/', main)])
Expand Down
19 changes: 12 additions & 7 deletions aiohttp_sqlalchemy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from aiohttp_sqlalchemy.exceptions import DuplicateAppKeyError, \
DuplicateRequestKeyError
from aiohttp_sqlalchemy.middlewares import sa_middleware
from aiohttp_sqlalchemy.utils import sa_init_db, sa_session
from aiohttp_sqlalchemy.utils import init_db, sa_init_db, sa_session
from aiohttp_sqlalchemy.views import SAAbstractView, SABaseView, SAView


Expand All @@ -22,15 +22,15 @@
TSABinding = Tuple[TSessionFactory, str, bool]


__version__ = '0.14.1'
__version__ = '0.15.0'

__all__ = ['DuplicateAppKeyError', 'DuplicateRequestKeyError',
'SAAbstractView', 'SABaseView', 'SA_DEFAULT_KEY', 'sa_bind',
'sa_decorator', 'sa_middleware', 'sa_init_db', 'sa_session',
'SAView', 'setup',]
__all__ = ['bind', 'DuplicateAppKeyError', 'DuplicateRequestKeyError',
'init_db', 'SAAbstractView', 'SABaseView', 'SA_DEFAULT_KEY',
'sa_bind', 'sa_decorator', 'sa_middleware', 'sa_init_db',
'sa_session', 'SAView', 'setup',]


def sa_bind(bind_to: 'TBindTo', key: str = SA_DEFAULT_KEY, *,
def bind(bind_to: 'TBindTo', key: str = SA_DEFAULT_KEY, *,
middleware: bool = True) -> 'TSABinding':
""" Session factory wrapper for binding in setup function. """

Expand Down Expand Up @@ -59,6 +59,11 @@ def sa_bind(bind_to: 'TBindTo', key: str = SA_DEFAULT_KEY, *,
return bind_to, key, middleware


def sa_bind(bind_to: 'TBindTo', key: str = SA_DEFAULT_KEY, *,
middleware: bool = True) -> 'TSABinding':
return bind(bind_to, key, middleware=middleware)


def setup(app: 'Application', bindings: 'Iterable[TSABinding]') -> None:
""" Setup function for binding SQLAlchemy engines. """
for factory, key, middleware in bindings:
Expand Down
10 changes: 9 additions & 1 deletion aiohttp_sqlalchemy/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from typing import Any


async def sa_init_db(
async def init_db(
app: 'Application',
metadata: 'MetaData',
key: str = SA_DEFAULT_KEY,
Expand All @@ -20,5 +20,13 @@ async def sa_init_db(
await connection.run_sync(metadata.create_all)


async def sa_init_db(
app: 'Application',
metadata: 'MetaData',
key: str = SA_DEFAULT_KEY,
) -> None:
await init_db(app, metadata, key)


def sa_session(request: 'Request', key: str = SA_DEFAULT_KEY) -> 'AsyncSession':
return request[key]
2 changes: 1 addition & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
author = 'Ruslan Ilyasovich Gilfanov'

# The full version, including alpha/beta/rc tags
release = '0.14.1'
release = '0.15.0'


# -- General configuration ---------------------------------------------------
Expand Down
21 changes: 14 additions & 7 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ Copy and paste this code in a file and run:
.. code-block:: python
from aiohttp import web
import aiohttp_sqlalchemy
from aiohttp_sqlalchemy import sa_bind, sa_init_db, sa_session
import aiohttp_sqlalchemy as asa
from aiohttp_sqlalchemy import sa_session
from datetime import datetime
import sqlalchemy as sa
from sqlalchemy import orm
Expand All @@ -97,7 +97,7 @@ Copy and paste this code in a file and run:
db_session.add_all([MyModel()])
stmt = sa.select(MyModel)
result = await db_session.execute(stmt)
items = result.scalars().all()
items = result.scalars()
data = {}
for item in items:
Expand All @@ -109,9 +109,9 @@ Copy and paste this code in a file and run:
async def app_factory():
app = web.Application()
sa_binding = sa_bind('sqlite+aiosqlite:///')
aiohttp_sqlalchemy.setup(app, [sa_binding])
await sa_init_db(app, metadata)
binding = asa.bind('sqlite+aiosqlite:///')
asa.setup(app, [binding])
await asa.init_db(app, metadata)
app.add_routes([web.get('/', main)])
Expand Down Expand Up @@ -223,12 +223,19 @@ Nested apps
Change log
----------
Version 0.15
^^^^^^^^^^^^
Add
"""
* Add synonym ``bind`` for ``sa_bind``.
* Add synonym ``init_db`` for ``sa_init_db``.

Version 0.14
^^^^^^^^^^^^
Add
"""
* Add utility ``sa_init_db(app, metadata, key = SA_DEFAULT_KEY)``.
* Add constant ``SA_DEFAULT_KEY`` instead ``DEFAULT_KEY``
* Add constant ``SA_DEFAULT_KEY`` instead ``DEFAULT_KEY``.

Deprecated
""""""""""
Expand Down
12 changes: 6 additions & 6 deletions examples/single_middleware.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from aiohttp import web
import aiohttp_sqlalchemy
from aiohttp_sqlalchemy import sa_bind, sa_init_db, sa_session
import aiohttp_sqlalchemy as asa
from aiohttp_sqlalchemy import sa_session
from datetime import datetime
import sqlalchemy as sa
from sqlalchemy import orm
Expand All @@ -24,7 +24,7 @@ async def main(request):
db_session.add_all([MyModel()])
stmt = sa.select(MyModel)
result = await db_session.execute(stmt)
items = result.scalars().all()
items = result.scalars()

data = {}
for item in items:
Expand All @@ -36,9 +36,9 @@ async def main(request):
async def app_factory():
app = web.Application()

sa_binding = sa_bind('sqlite+aiosqlite:///')
aiohttp_sqlalchemy.setup(app, [sa_binding])
await sa_init_db(app, metadata)
binding = asa.bind('sqlite+aiosqlite:///')
asa.setup(app, [binding])
await asa.init_db(app, metadata)

app.add_routes([web.get('/', main)])

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "aiohttp-sqlalchemy"
version = "0.14.1"
version = "0.15.0"
description = "SQLAlchemy 1.4 / 2.0 support for aiohttp."
authors = [
"Ruslan Ilyasovich Gilfanov <ri.gilfanov@yandex.ru>",
Expand Down
11 changes: 11 additions & 0 deletions tests/test_constants.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import aiohttp_sqlalchemy
from aiohttp_sqlalchemy import constants


def test_default_key():
assert aiohttp_sqlalchemy.DEFAULT_KEY == 'sa_main'
assert constants.DEFAULT_KEY == 'sa_main'


def test_sa_default_key():
assert constants.SA_DEFAULT_KEY == 'sa_main'

0 comments on commit b6134ed

Please sign in to comment.