URL-Routing mit Funktionsannotationen

Du hast eine Idee für ein Projekt?
nezzcarth
User
Beiträge: 372
Registriert: Samstag 16. April 2011, 12:47

URL-Routing mit Funktionsannotationen

Beitragvon nezzcarth » Sonntag 6. August 2017, 15:37

Hallo :)

Ich hätte heute eine etwas experimentelle Frage:
Einige Webframeworks verwenden ja Dekoratoren, um Handler für URLs/URL-Muster zu registrieren. Letztens dachte ich, dass das ja theoretisch auch mit Funktionsannotationen (für den Rückgabewert) gehen müsste:

  1. def hello_world(*args, **kwargs) -> '/hello_world':
  2.     return "Hello"                        


Ein kurzes Proof-of-Concept (unter Zuhilfenahme von 'werkzeug' für den WSGI-Kram und 'inspect') hat ergeben, dass das prinzipiell funktionieren würde. Allerdings sehe ich keine echten Vorteile (gegenüber Dekoratoren), ein darauf basierendes Routingsystem tatsächlich zu verwenden, wohl aber ein paar negative Punkte. Trotzdem wäre meine Frage: Ist euch diese Verwendung von Annotations schon mal untergekommen, bzw. wird etwas in der Art tatsächlich irgendwo verwendet?
Benutzeravatar
BlackJack
Moderator
Beiträge: 32975
Registriert: Dienstag 25. Januar 2005, 23:29
Wohnort: Berlin
Kontaktdaten:

Re: URL-Routing mit Funktionsannotationen

Beitragvon BlackJack » Sonntag 6. August 2017, 16:08

@nezzcarth: Nachdem Guido sich dann doch mal recht definitiv dazu geäussert hat das die Annotationen für Typinformationen verwendet werden sollen, denke ich mal, das das keiner mehr für etwas anderes verwenden wird.

Ich find's auch optisch genau verkehrt herum, denn es ist ja keine Abbildung Funktion → URL sondern URL → Funktion, somit ist der ”Pfeil” (``->``) falsch herum.
“Programs must be written for people to read, and only incidentally for machines to execute.” — Abelson & Sussman, SICP (preface to the first edition)
nezzcarth
User
Beiträge: 372
Registriert: Samstag 16. April 2011, 12:47

Re: URL-Routing mit Funktionsannotationen

Beitragvon nezzcarth » Sonntag 6. August 2017, 16:31

@BlackJack:
Danke für deine Einschätzung.

Ich hatte in Erinnerung, dass Annotations primär für Typen gedacht sind (anders als in PEP 3107 vorgeschlagen, das noch von "[…] arbitrary metadata annotations to Python functions […]" spricht). Dass es definitive Aussagen dazu gibt, war mir nicht bekannt.

Den Einwand mit der Abbildung hatte ich nicht bedacht; da ist natürlich was dran :)

Zurück zu „Ideen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder