Install & Compatibility
Where this runs
tested against v0.5.3 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.910 runs
installs and imports cleanly · install 0.0s · import 0.000s · 37.7MB
glibcpy 3.10–3.910 runs
installs and imports cleanly · install 2.5s · import 0.000s · 33MB
34MB installed
● package 34MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
AuthenticationMiddleware
✓ from imia import AuthenticationMiddleware
✗ from imia import AuthenticationMiddleware
Minimal ASGI app with imia authentication middleware using in-memory user storage.
from imia import AuthenticationMiddleware, LoginManager
from imia.providers import InMemoryUserProvider
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.routing import Route
import os
# Define a user provider (must implement find_by_id with connection arg)
class MyUserProvider(InMemoryUserProvider):
async def find_by_id(self, connection, user_id):
# InMemoryUserProvider already does this, but override for custom logic
return await super().find_by_id(connection, user_id)
provider = MyUserProvider({
'1': {'id': '1', 'name': 'Alice'},
'2': {'id': '2', 'name': 'Bob'},
})
login_manager = LoginManager(provider)
async def homepage(request):
user = request['user']
return JSONResponse({'user': user['name'] if user else None})
app = Starlette(routes=[Route('/', homepage)])
app.add_middleware(AuthenticationMiddleware, login_manager=login_manager)
Upgrade
Version history
0.5.3latest on PyPI · released Jul 15, 2022
Audit
Dependencies
sqlalchemyoptionalOptional, for SQLAlchemy user provider
aiosqliteoptionalOptional, required when using SQLAlchemy with aiosqlite