Source code for kerno.web.pyramid.typing
"""Pyramid typing stubs so we can write annotated views."""
from typing import Any, List, Optional, Union
from kerno.kerno import Kerno
from kerno.repository.sqlalchemy import BaseSQLAlchemyRepository
from kerno.state import UIMessage
from kerno.typing import DictStr
JSON_primitives = Union[DictStr, List[Any], str, int, float]
[docs]class MultiDictStub(dict):
"""Typing stub for webob.multidict.MultiDict."""
[docs] def getall(self, key: str) -> List[JSON_primitives]:
"""Return a list of all values matching key (may be an empty list)."""
[docs] def getone(self, key: str) -> JSON_primitives:
"""Get one value matching the key. May raise KeyError."""
[docs]class RegistryStub: # zope/interface/registry.py
"""Typing stub for a Pyramid registry object."""
settings: DictStr
[docs] def registerUtility(
self,
component=None,
provided=None,
name="",
info="",
event=True,
factory=None,
):
"""Register a Pyramid utility."""
[docs] def getUtility(self, provided, name=""):
"""Retrieve a Pyramid utility."""
[docs] def queryUtility(self, provided, name="", default=None):
"""Retrieve a Pyramid utility."""
[docs] def notify(self, *arg, **kw): # TODO Fill arguments better
"""Broadcast a Pyramid event."""
[docs]class PyramidSession:
"""Typing stub for a Pyramid session object."""
[docs] def invalidate(self) -> None: # noqa
...
[docs] def flash(self, msg, queue: str = "", allow_duplicate: bool = True) -> None: # noqa
...
[docs] def pop_flash(self) -> List[Any]: # noqa
...
[docs]class PyramidResponse:
"""Typing stub for Pyramid response objects."""
charset: str
status: str
status_int: int
content_length: int
content_type: str
headers: DictStr
body: bytes
[docs]class PyramidRequest:
"""Typing stub for pure Pyramid request objects."""
method: str
path: str
path_info: str
path_qs: str
path_url: str
url: str
context: Any
identity: Any # Pyramid 2.0+
# unauthenticated_userid: Union[int, str] # deprecated in Pyramid 2.0
# authenticated_userid: Union[int, str] # deprecated in Pyramid 2.0
# effective_principals: List[str] # deprecated in Pyramid 2.0
client_addr: str
exception: Optional[Exception]
json_body: JSON_primitives
GET: MultiDictStub
POST: MultiDictStub
params: MultiDictStub
matchdict: DictStr
response: PyramidResponse
registry: RegistryStub
body: bytes
accept_language: Any
cookies: DictStr
session: PyramidSession
[docs] def route_path(self, route_name: str, *elements, **kw) -> str:
"""Generate a relative URL for a named Pyramid route."""
[docs] def static_path(self, path: str, **kw) -> str:
"""Generate a relative URL to a static resource."""
[docs]class KRequest(PyramidRequest):
"""Typing stub for a Pyramid/kerno request object.
It is recommended that you subclass with a more specific
typing annotation for the ``user`` instance variable.
"""
kerno: Kerno
repo: BaseSQLAlchemyRepository
user: Any
[docs] def add_flash(self, **kw) -> UIMessage:
"""Add a flash message to the current Pyramid session."""