Skip to content

Commit 90f6e3d

Browse files
Upgrade to Microdot 2 (#8663)
1 parent 88cfca6 commit 90f6e3d

13 files changed

+45
-361
lines changed

frameworks/Python/microdot/README.md

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,13 @@ Also note that there is additional information provided in the [Python README](.
88

99
### Test Source Code
1010

11-
* [JSON](app_sync.py#L60)
12-
* [JSON-async](app_async.py#L60)
13-
* [PLAINTEXT](app_sync.py#L102)
14-
* [PLAINTEXT-async](app_async.py#L102)
15-
* [DB](app_sync.py#L65)
16-
* [DB-async](app_async.py#L65)
17-
* [QUERY](app_sync.py#L73)
18-
* [QUERY-async](app_async.py#L83)
19-
* [CACHED QUERY](app_sync.py#L112)
20-
* [CACHED_QUERY-async](app_async.py#L112)
21-
* [UPDATE](app_sync.py#L89)
22-
* [UPDATE-async](app_async.py#L89)
23-
* [FORTUNES](app_sync.py#L80)
24-
* [FORTUNES-async](app_async.py#L80)
11+
* [JSON](app.py#L60)
12+
* [PLAINTEXT](app.py#L102)
13+
* [DB](app.py#L65)
14+
* [QUERY](app.py#L73)
15+
* [CACHED QUERY](app.py#L112)
16+
* [UPDATE](app.py#L89)
17+
* [FORTUNES](app.py#L80)
2518

2619
## Resources
2720

frameworks/Python/microdot/app_async.py renamed to frameworks/Python/microdot/app.py

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,42 @@
11
#!/usr/bin/env python
2-
from datetime import datetime
32
import os
43
from random import randint, sample
54

6-
from alchemical.aio import Alchemical
7-
import sqlalchemy as sqla
5+
from alchemical.aio import Alchemical, Model
6+
import sqlalchemy.orm as so
87
from asyncache import cached
98
from cachetools.keys import hashkey
109

11-
from microdot_asgi import Microdot
12-
from microdot_jinja import render_template
10+
from microdot.asgi import Microdot
11+
from microdot.jinja import Template
1312

1413
app = Microdot()
15-
db = Alchemical(os.environ['DATABASE_URL'])
14+
Template.initialize('templates', enable_async=True)
15+
db = Alchemical(os.environ.get('DATABASE_URL', 'sqlite:///'))
1616

1717

18-
class World(db.Model):
18+
class World(Model):
1919
__tablename__ = "world"
20-
id = sqla.Column(sqla.Integer, primary_key=True)
21-
randomnumber = sqla.Column(sqla.Integer)
20+
id: so.Mapped[int] = so.mapped_column(primary_key=True)
21+
randomnumber: so.Mapped[int]
2222

2323
def to_dict(self):
2424
return {"id": self.id, "randomNumber": self.randomnumber}
2525

2626

27-
class CachedWorld(db.Model):
27+
class CachedWorld(Model):
2828
__tablename__ = "cachedworld"
29-
id = sqla.Column(sqla.Integer, primary_key=True)
30-
randomnumber = sqla.Column(sqla.Integer)
29+
id: so.Mapped[int] = so.mapped_column(primary_key=True)
30+
randomnumber: so.Mapped[int]
3131

3232
def to_dict(self):
3333
return {"id": self.id, "randomNumber": self.randomnumber}
3434

3535

36-
class Fortune(db.Model):
36+
class Fortune(Model):
3737
__tablename__ = "fortune"
38-
id = sqla.Column(sqla.Integer, primary_key=True)
39-
message = sqla.Column(sqla.String)
38+
id: so.Mapped[int] = so.mapped_column(primary_key=True)
39+
message: so.Mapped[str]
4040

4141

4242
def get_num_queries(request, name="queries"):
@@ -81,7 +81,10 @@ async def test_fortunes(request):
8181
fortunes = list(await session.scalars(Fortune.select()))
8282
fortunes.append(Fortune(id=0, message="Additional fortune added at request time."))
8383
fortunes.sort(key=lambda f: f.message)
84-
return render_template("fortunes.html", fortunes=fortunes), {'Content-Type': 'text/html; charset=utf-8'}
84+
return (
85+
await Template("fortunes.html").render_async(fortunes=fortunes),
86+
{'Content-Type': 'text/html; charset=utf-8'},
87+
)
8588

8689

8790
@app.route("/updates")

frameworks/Python/microdot/app_async_raw.py renamed to frameworks/Python/microdot/app_raw.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
#!/usr/bin/env python
2-
from datetime import datetime
32
import os
43
from random import randint, sample
54

65
import asyncpg
76
from asyncache import cached
87
from cachetools.keys import hashkey
98

10-
from microdot_asgi import Microdot
11-
from microdot_jinja import render_template
9+
from microdot.asgi import Microdot
10+
from microdot.jinja import Template
1211

1312
app = Microdot()
13+
Template.initialize('templates', enable_async=True)
14+
1415
get_world_sql = 'SELECT id, randomnumber FROM world WHERE id = $1'
1516
update_world_sql = 'UPDATE world SET randomnumber = $1 WHERE id = $2'
1617
fortune_sql = 'SELECT * FROM fortune'
1718
db = None
1819

20+
1921
async def asgi(scope, receive, send):
2022
if scope['type'] == 'lifespan':
2123
while True:
@@ -81,7 +83,10 @@ async def test_fortunes(request):
8183
fortunes = list(await conn.fetch(fortune_sql))
8284
fortunes.append((0, "Additional fortune added at request time."))
8385
fortunes.sort(key=lambda f: f[1])
84-
return render_template("fortunes_raw.html", fortunes=fortunes), {'Content-Type': 'text/html; charset=utf-8'}
86+
return (
87+
await Template("fortunes_raw.html").render_async(fortunes=fortunes),
88+
{'Content-Type': 'text/html; charset=utf-8'},
89+
)
8590

8691

8792
@app.route("/updates")

frameworks/Python/microdot/app_sync.py

Lines changed: 0 additions & 115 deletions
This file was deleted.

frameworks/Python/microdot/app_sync_raw.py

Lines changed: 0 additions & 112 deletions
This file was deleted.

0 commit comments

Comments
 (0)