Aller au contenu

Notes de version

0.38.2

27 juillet 2024-Le Monde

fixe

  • ne suppose pas que toutes les routines ont __name__ sur routing.get_name()#2648.

0.38.1

23 juillet 2024-Le Grand Prix

Supprimé

  • Restaurer "Ajouter le support pour l'extension ASGI pathsend"#2649.

0.38.0

20 juillet 2024-Le Grand Prix

ajoutée par

  • permet l'utilisation de memoryview dans StreamingResponse et Response#2576 et #2577.
  • Lorsque le nom de fichier demandé dans StaticFiles#2583 est trop long, envoyez 404 au lieu de 500.

Changement (ou: changement)

  • échoue rapidement sur le paramètre d'instanciation Jinja2Template invalide #2568.
  • Vérifiez que le gestionnaire de terminaison est asynchrone une seule fois #2536.

fixe

  • ajoute la synchronisation appropriée à WebSocketTestSession#2597.

0.37.2

05 mars 2024-Le Monde de l'Est

ajoutée par

  • Ajouter bytes à _RequestData type #2510.

fixe

  • Revert "Turn scope["client"] to None on TestClient(#2377)"#2525.
  • Supprimer déprécié app Argument passé à httpx.Client sur le TestClient #2526.

0.37.1

février 9, 2024

Fixé

  • Warn instead of raise for missing env file on Config #2485.

0.37.0

février 5, 2024

Added par

  • prend en charge la WebSocket Denial Response ASGI extension #2041.

0.36.3

février 4, 2024

Fixé

  • Create anyio.Event on async context #2459.

0.36.2

février 3, 2024

Fixé

  • Upgrade à python-multipart à 0.0.7 13e5c26.
  • Avoid Duplicate Charset sur Content-Type #2443.

0.36.1

23 janvier 2024, avec le soutien de l'État

Fixé

  • Vérifiez si "extensions" dans scope avant de vérifier l'extension #2438.

0.36.0

22 janvier 2024, avec le soutien de l'État

ajoutée par

  • Ajouter du support pour ASGI pathsend Extension par #2435.
  • Annuler WebSocketTestSession sur close #2427.
  • Raise WebSocketDisconnect quand WebSocket.send() excepts IOError #2425.
  • Raise FileNotFoundError lorsque le paramètre env_file sur Config n'est pas valide #2422.

0.35.1

11 janvier 2024, États-Unis

fixe

  • Arrêtez d'utiliser le paramètre de "méthode" déprécié dans FileResponse à l'intérieur de StaticFiles #2406.
  • Make typing-extensions optional again #2409.

0.35.0

11 janvier 2024, États-Unis

Ajouté par

  • ajoute *args à Middleware et améliore son conseil de type #2381.

fixe

  • utilise Iterable au lieu de Iterator sur iterate_in_threadpool#2362

Changement dans

  • gère root_path pour maintenir la compatibilité avec les applications ASGI installées et avec la WSGI #2400.
  • Après avoir TestClient #2377 Amiral scope["client"] devient None

0.34.0

16 décembre 2023-Le Monde

ajoutée par

  • utilise ParamSpec pour run_in_threadpool#2375.
  • Ajouter UploadFile.__repr__#2360.

fixe

  • fusionne correctement les URL sur TestClient#2376.
  • considère les ETags faibles sur StaticFiles#2334.

Obsolète

Le paramètre FileResponse(method=...)#2366 est obsolète pour* .

0.33.0

1 décembre 2023

Ajouté par

  • Ajouter middleware#2349 par Route/WebSocketRoute.
  • ajoute middleware#2351 par Router.

fixe

  • Ne remplacez pas "path" et "root_path" Range Key #2352.
  • définit ensure_ascii=False sur json.dumps() pour WebSocket.send_json()#2341.

0.32.0.post1

5 novembre 2023, par l'intermédiaire de la Commission européenne

fixe

  • Retour de mkdocs-Material de 9.1.17 à 9.4.7 #2326.

0.32.0

4 novembre 2023-Le Conseil de l'Europe

Ajouté par

  • Après avoir WebSocketDisconnect Envoyé sur reason #2309: C'est le cas.
  • ajoute le paramètre domain à SessionMiddleware#2280.

Changement; changement; changement

  • hérite de HTMLResponse au lieu de Response sur _TemplateResponse#2274.
  • restaure le commentaire de type Response.render à son état pré-0.31.0 #2264.

0.31.1

26 août 2023-Le Monde

fixe

  • corrige l'erreur d'importation #2231 lorsque exceptiongroup n'est pas disponible.
  • Paramètres pour un environnement Jinja personnalisé url_for Variable globale #2230.

0.31.0

24 juillet 2023-Le Monde

Ajouté par

  • supporte officiellement Python 3.12 #2214.
  • Support AnyIO 4.0 #2211.
  • Strictly type annotate Starlette (strict mode sur mypy)#2180.

Fixé

  • Don't group dupliqué headers on a single string when use the TestClient #2219.

0.30.0

Le 13 juillet 2023

Remové par

  • Drop Python 3.7 support #2178.

0.29.0

Le 13 juillet 2023

Added par

  • Ajouter un paramètre follow_redirects à TestClient #2207.
  • Ajouter __str__ à HTTPException et WebSocketException #2181.
  • Warn utilisateurs qui utilisent lifespan ensemble avec on_startup/on_shutdown #2193.
  • Collecter les routes de Host Pour générer le schéma OpenAPI #2183.
  • Ajouter un argument request à TemplateResponse #2191.

fixe

  • Stop body_stream dans le cas more_body=False sur BaseHTTPMiddleware #2194.

0.28.0

Le 7 juin 2023,

Changé par

  • Reuse Request Body Buffer for call_next in BaseHTTPMiddleware #1692.
  • Move exception Handling logique à Route #2026.

ajoutée par

  • ajoute le paramètre env à Jinja2Templates et déprécie **env_options#2159.
  • Lorsque httpx Ajouter un message d'erreur explicite #2177 lorsqu 'il n'est pas installé.

fixe

  • permet l'utilisation du paramètre "name" sur templates url_for()#2127.

0.27.0

16 mai 2023-Le Grand Prix de la République

Cette version corrige la vulnérabilité de traversée de chemin dans StaticFiles. Vous pouvez consulter le bulletin de sécurité complet: https://github.com/encode/starlette/security/advisores/GHSA-v5gw-mw7f-84px

Ajouté par

  • réduit les données WebSocket JSON via send_json, voir www.example.com pour plus de détails

fixe

  • sur StaticFiles 1797 de 4, remplace commonprefix par commonpath.
  • Convertissez ImportErrors en ModuleNotFoundError #2135
  • Corriger le contenu du message RuntimeError dans websockets #2141.

0.26.1

13 mars 2023-Le Monde de l'Est

fixe

  • Corrigez le type de Lifespan dans Starlette #2077 pour permettre ses sous-classes.

0.26.0.post1

Le 9 mars 2023

Fixé

  • Référence de lieu des événements à Lifespan sur les mkdocs.yml #2072.

0.26.0

Le 9 mars 2023

Added par

Changé par

  • Changement par url_for Signature à retourner a URL instance #1385.

Fixé

  • Allow "name" argument sur url_for() et url_path_for() #2050.

Deprecated est déposé

  • Deprecate on_startup et on_shutdown Events par #2070.

0.25.0

février 14, 2023

Fix

  • Limite le nombre de pièces et de fichiers lorsque multipart/form-data est parsemé sur MultipartParser 8c74c2c et #2036.

0.24.0

février 6, 2023

Ajouté par

  • Allow StaticFiles to follow symlinks #1683.
  • Allow Request.form() as a context manager #1903.
  • Ajouter un attribut size à UploadFile #1405.
  • Ajouter à env_prefix Argument pour Config #1990.
  • Ajouter des processeurs contextuels template #1904.
  • Support str et datetime sur le paramètre expires sur la méthode Response.set_cookie #1908.

Changé par

  • Lazily construit le middleware stack #2017.
  • Make the file argument required on UploadFile #1413.
  • Utilisation de extension de débogage dans extension du modèle de réponse personnalisée #1991.

fixe

  • Fix url parsing of ipv6 urls sur URL.replace #1965.

0.23.1

Le 9 décembre 2022

fixe

  • Arrêtez seulement de recevoir le flux sur body_stream Si le corps est vide sur le BaseHTTPMiddleware #1940.

0.23.0

Le 5 décembre 2022

ajoutée par

  • Ajouter à headers Paramètre à la TestClient #1966.

Obsolète

  • déprécié Starlette et Router décorateur #1897.

fixe

  • Réparation FloatConvertor Erreur #1973 sur les expressions rationnelles.

0.22.0

17 novembre 2022-Le Monde

Changé par

  • contourne GZipMiddleware lorsque la réponse contient Content-Encoding#1901.

fixe

  • supprime les unquote() indésirables des arguments de requête sur TestClient#1953.
  • s'assure que MutableHeaders._list est en fait un list#1917. Compatibilité d'importation de* avec la prochaine version de AnyIO#1936.

0.21.0

26 septembre 2022-Le Monde

Cette version remplace le client HTTP sous-jacent utilisé sur TestClient(requests). :arrow_right: httpx), votre suite de tests peut être interrompue en raison des API légèrement différentes de ces clients. pour faciliter la migration, vous pouvez utiliser l'outil bump-testclient.

Changement (ou: changement)

  • dans TestClient#1376, remplacement de requests par httpx

ajoutée par

  • Ajouter WebSocketException et support pour WebSocket Exception Handlers #1263.
  • Ajouter à middleware paramètre à Mount Classe de #1649.
  • supporte officiellement Python 3.11 #1863.
  • Implémentation __repr__ pour les classes routes #1864.

Fixé

  • Fixer le bug sur qui BackgroundTasks étaient cancéreux quand ils ont utilisé BaseHTTPMiddleware Client déconnecté #1715.

0.20.4

Le 28 juin 2022

Fixé

  • Remove converter from path when generating OpenAPI schema #1648.

0.20.3

Le 10 juin 2022

Fixé

  • Revert par Allow StaticFiles Suivre les symboles » #1681.

0.20.2

Le 7 juin 2022

fixe

  • Fix régression sur les pattes routes avec des colons #1675.
  • Allow StaticFiles to follow symlinks #1337.

0.20.1

Le 28 mai 2022, le

fixe

  • Improve Detection of async callables #1444.
  • Envoyer 400 (Bad Request) lorsque boundary est en train de manquer #1617.
  • Envoyer 400 (Mauvaise demande) lorsque le champ "nom" est manquant sur l'en-tête Content-Disposition #1643.
  • Ne pas envoyer de données vides à StreamingResponse sur BaseHTTPMiddleware #1609.
  • Ajouter à __bool__ dunner pour Secret #1625.

0.20.0

Le 3 mai 2022

Remové par

0.19.1

Le 22 avril 2022

fixe

  • Fixer l'inférence de Route.name Quand créé à partir de méthodes #1553.
  • Avoid TypeError sur websocket.disconnect lorsque le code est None #1574.

Obsolète

  • Deprecate WS_1004_NO_STATUS_RCVD et WS_1005_ABNORMAL_CLOSURE dans Favor of WS_1005_NO_STATUS_RCVD et WS_1006_ABNORMAL_CLOSURE Comme les précédents constants ne correspondaient pas à la WebSockets Specs par WebSockets #1580.

0.19.0

Le 9 mars 2022

ajoutée par

  • Error Handler courra toujours, même si l'erreur se produit sur une tâche de fond #761.
  • Ajouter un paramètre headers à HTTPException #1435.
  • Réponses internes avec 405 Code d'état Insert an Allow header, comme décrit par RFC 7231 pour les #1436.
  • Après avoir JSONResponse dans le milieu content Le paramètre est maintenant obligatoire #1431.
  • Ajouter un convertisseur d'URL personnalisé pour l'enregistrement #1437.
  • ajoute un paramètre de type de disposition de contenu à FileResponse#1266.
  • Dans le décorateur de besoins #920, ajoutez le paramètre de requête suivant avec l'URL de la requête d'origine.
  • ajoute raw_path à la gamme TestClient#1445.
  • Ajouter un opérateur de syndication à MutableHeaders #1240 dans le milieu.
  • Afficher les détails manquants de l'itinéraire sur la page de débogage #1363.
  • modifie la plage de versions requise pour anyio en >=3.4.0,<5.0#1421 et #1460.
  • ajoute typing-extensions>=3.10 requirement-utilisez #1475 uniquement dans les versions inférieures à Python 3.10.

fixe

  • empêche BaseHTTPMiddleware de masquer les erreurs de StreamingResponse ainsi que l'application installée #1459.
  • SessionMiddleware Utiliser explicitement path=... , au lieu d'utiliser par défaut le "root_path"#1512 d'ASGI.
  • Request.client Maintenant conforme à la norme ASGI #1462.
  • a augmenté KeyError au début contre la limite manquante #1349.

Obsolète

  • Deprecater WSGIMiddleware in favor of a2wsgi #1504.
  • Deprecate run_until_first_complete #1443.

0.18.0

23 janvier 2022, avec le soutien de l'État

Added par

  • Change par défaut la taille du chunk de 4Kb à 64Kb sur FileResponse #1345.
  • Ajouter du support pour functools.partial dans WebSocketRoute #1356.
  • Ajouter des paquets StaticFiles avec directory #1350.
  • Autoriser les options environnementales dans Jinja2Templates #1401.
  • Allow HEAD method sur HttpEndpoint #1346.
  • Accepter les têtes additionnelles sur websocket.accept message #1361 et #1422.
  • Ajouter reason à WebSocket close ASGI event #1417.
  • Ajouter un attribut de tête à UploadFile #1382.
  • Don't omit Content-Length header for Content-Length: 0 cases #1395.
  • ne définit pas les têtes pour les réponses avec 1xx, 204 et 304 code d'état #1397.
  • SessionMiddleware.max_age accède maintenant à None, donc le cookie peut être aussi long que la session browser #1387.

fixe

  • Tweak à hashlib.md5() Fonction sur FileResponse s ETag Generation. Le paramètre usedforsecurity Le drapeau est défini à False, si le drapeau est disponible sur le système. ce fixe est une erreur raisonnée sur les systèmes avec FIPS à Enabled #1366 et #1410.
  • Fix path_params type sur url_path_for() method i.e. turn str into Any #1341.
  • Host Maintenant ignorés port sur Routing #1322.

0.17.1

Le 17 novembre 2021, le

fixe

  • Fix IndexError en authentication requires quand les arguments de function sont distribués entre *args et **kwargs #1335.

0.17.0

Le 4 novembre 2021

Ajouté par

  • Response.delete_cookie accepte désormais les mêmes paramètres que Response.set_cookie #1228.
  • Mettre à jour le constructeur Jinja2Templates pour activer PathLike #1292.

fixe

  • Fix Badature Signature Exception Handling dans SessionMiddleware #1264.
  • Changement par HTTPConnection.__getitem__ return type from str pour typing.Any #1118.
  • Changement par ImmutableMultiDict.getlist return type from typing.List[str] à typing.List[typing.Any] #1235.
  • Le Handle OSError Exceptions sur StaticFiles #1220.
  • Fix StaticFiles 404.html en mode HTML #1314.
  • Prevent anyio.ExceptionGroup in Error views under a BaseHTTPMiddleware #1262.

Remové

  • Supprimer le support GraphQL #1198.

0.16.0

Le 19 juillet 2021

ajoutée par

fixe

  • starlette.websockets.WebSocket Les instances sont maintenant hachables et comparables par identité #1039
  • Un nombre de fixes liés à l'exécution des groupes de tâches dans lifespan #1213,#1227

Deprecated/removed

  • La méthode starlette.templates.Jinja2Templates.get_env a été démolie #1218
  • The ClassVar starlette.testclient.TestClient.async_backend was removed, the backend is now configured using constructor kwargs #1211
  • Passer une Function de générateur Async ou une fonction de générateur à starlette.routing.Router(lifespan=) Vous devriez enlever votre lifespan dans le @contextlib.asynccontextmanager. #1227 #1110

0.15.0

Le 23 juin 2021

Cette version a apporté des modifications importantes à la partie asynchrone sous-jacente de Starlette. En conséquence, Starlette dépend désormais d'AnyIO et a subi quelques modifications mineures de l'API. Un autre changement majeur de cette version est la dépréciation du support GraphQL intégré.

Ajouté par

  • Starlette prend désormais en charge Trio en tant qu 'exécuteur asynchrone via AnyIO- #1157.
  • TestClient.websocket_connect() Il doit maintenant être utilisé comme gestionnaire de contexte.
  • Support préliminaire de Python 3.10- #1201. Le niveau de compression utilisé par* dans GZipMiddleware est désormais ajustable- #1128.

fixe

Plusieurs correctifs de CORSMiddleware par* . voir #1111,#1112,#1113,#1199. * Amélioration des messages d'exception en cas de duplication des noms de paramètres de chemin- #1177. * RedirectResponse utilise désormais le codage quote au lieu de quote_plus dans l'en-tête Location pour mieux correspondre au comportement dans d'autres frameworks tels que Django- #1164. * Dans bien d'autres cas, la cause de l'anomalie est maintenant préservée- #1158. * Dans le cas d'une application montée, les cookies de session utilisent maintenant le chemin racine ASGI- #1147. * Correction d'une erreur d'invalidation du cache lors de la suppression de fichiers statiques dans certaines circonstances- #1023. * améliore l'utilisation de la mémoire de BaseHTTPMiddleware lors du traitement des réponses volumineuses-#1012 corrigé via #1157

Obsolète/Supprimée

  • Built-in GraphQL support via la classe GraphQLApp a été déposée et sera supprimée dans une version future. Veuillez voir #619. GraphQL n'est pas supporté sur Python 3.10.
  • Le executor paramètre à GraphQLApp a été supprimé. utilisé executor_class Instead.
  • Le paramètre workers à WSGIMiddleware a été supprimé. Ce n'est pas un effet since Starlette v0.6.3.

0.14.2

février 2, 2021

Fixé

  • fixe la compatibilité ServerErrorMiddleware avec Python 3.9.1/3.8.7 lorsque le mode de débogage est activé-#1132.
  • Fixed Unclosed socket ResourceWarning lorsque vous utilisez le TestClient avec des points d'extrémité WebSocket- #1132.
  • Improved Detection of async endpoints wrapped in functools.partial on Python 3.8+ -#1106.

0.14.1

Le 9 novembre 2020, le

Remové

  • UJSONResponse was removed (this change was intended to be included in 0.14). Documentation Comment répondre à l'utilisation de la sérialisation JSON personnalisée- #1074.

0.14.0

Le 8 novembre 2020

Ajouté par

  • Starlette supporte officiellement Python3.9.
  • In StreamingResponse, allow custom async iterator such as objects from classes ampling __aiter__.
  • Allow usage de functools.partial async handlers dans les versions 3.6 et 3.7 de Python.
  • Ajouter 418 Je suis un code d'état d'équipe.

Changé par

  • crée des tâches à partir de coroutines handler avant de les envoyer à asyncio.wait.
  • utilise format_exception instead de format_tb dans les réponses debug de ServerErrorMiddleware
  • Soyez plus lent avec des arguments de poignée lorsque vous utilisez le décorateur requires.

0.13.8

  • Revert à Queue(maxsize=1) fix pour BaseHTTPMiddleware classes de middleware et réponses de streaming.

  • Le StaticFiles Constructeur maintenant allows pathlib.Path dans l'addition de strings pour eux directory Argument.

0.13.7

  • Fix high memory usage lorsque vous utilisez BaseHTTPMiddleware classes middleware et réponses de streaming.

0.13.6

  • Fix 404 erreurs avec StaticFiles.

0.13.5

  • ajoute le support des fonctionnalités Starlette(lifespan=...).
  • Des vérifications de traversée de chemin plus robustes dans l'application StaticFiles.
  • Correction du codage WSGI PATH_INFO.
  • RedirectResponse accepte désormais le paramètre background optionnel
  • Autoriser les routes de chemin à inclure des méta-caractères d'expression régulière
  • Considérez le « corps » de HTTP ASGI comme une clé facultative.
  • N'utilisez pas le pool de threads pour écrire des fichiers de téléchargement en mémoire.

0.13.0

  • Passer partout pour faciliter la configuration de l'application sur le style d'initialisation Cela signifie abandonner le style décorateur en faveur des tables de routage déclaratives et des définitions middleware.

0.12.12

  • corrige un problème request.url_for() pour les situations d'installation imbriquée.

0.12.11

  • Lorsque vous utilisez ASGI root_path, réparez request.url_for().

0.12.1

  • Ajouter à URL.include_query_params(**kwargs)
  • Ajouter à URL.replace_query_params(**kwargs)
  • Ajouter à URL.remove_query_params(param_names)
  • request.state Persister correctement dans le middleware.
  • a ajouté l'interface request.scope.

0.12.0

  • Passez à ASGI 3.0.
  • Réparation du middleware CORS.
  • Ajouter StaticFiles(html=True) support.
  • Fix path quoting en réponses directes.

0.11.1

  • Ajouter une interface request.state, pour stocker des informations supplémentaires arbitrales.
  • Support disabling GraphiQL avec GraphQLApp(..., graphiql=False).

0.11.0

  • DatabaseMiddleware Il est maintenant droppé dans la faveur de databases
  • Templates ne sont pas configurés longuement sur l'instance d'application. utiliser templates = Jinja2Templates(directory=...) et return templates.TemplateResponse('index.html', {"request": request})
  • Schema generation n'est pas attachée à l'instance d'application. utiliser schemas = SchemaGenerator(...) et return schemas.OpenAPIResponse(request=request)
  • LifespanMiddleware Est droppé dans la main de lifespan basée sur le routeur.
  • Application Instances accepte maintenant un argument routes,Starlette(routes=[...])
  • La génération de schéma inclut maintenant les routes montées.

0.10.6

  • Ajouter Lifespan routing composant.

0.10.5

  • Ensure templating ne doit pas être strictement requis jinja2 pour être installé.

0.10.4

  • Les modèles sont maintenant configurés indépendamment de l'instance d'application. templates = Jinja2Templates(directory=...). Existing API remains in place, mais n'est pas documenté longuement, et sera déposé dans due course.

0.10.3

  • passe à l'intérieur du paquet databases indépendant de DatabaseMiddleware. exister API remains en place, mais n'est pas documenté longtemps, et sera déposé dans le cours dur.

0.10.2

  • ne laisse pas tomber les numéros de port explicites sur les réponses de HTTPSRedirectMiddleware.

0.10.1

  • Ajout du support de base de données MySQL.
  • Ajoutez un itinéraire basé sur l'hôte.

0.10.0

  • WebSockets envoie/reçoit maintenant JSON par défaut via des trames de données textuelles..send_json(data, mode="binary") et .receive_json(mode="binary") sont utilisés pour le cadrage binaire.
  • GraphQLApp accepte désormais un paramètre executor_class qui doit être utilisé de préférence au paramètre executor existant. résolution d'un problème d'instanciation des actionneurs asynchrones avant la configuration de la boucle d'événements. il est prévu que le paramètre executor sera obsolète dans la prochaine version moyenne ou grande. L'authentification et le décorateur @requires prennent désormais en charge les points de terminaison WebSocket. Les classes MultiDict et ImmutableMultiDict sont disponibles dans uvicorn.datastructures.
  • QueryParams est désormais instancié avec l'argument *args, **kwargs standard de style dictionnaire.

0.9.11

  • Les cookies de session incluent désormais les « expirations » du navigateur en plus de l'expiration déjà signée.
  • request.form() Une interface multidictionnaire est maintenant retournée.
  • Lorsque plusieurs clés identiques apparaissent, l'implémentation multi-dictionnaire des paramètres de requête est maintenant utilisée pour .keys() 、 .values() et .items() comportements qui reflètent plus précisément dict 。
  • utilise urlsplit au lieu de urlparse tout au long du processus.

0.9.10

  • Support sur les méthodes de classe @requires(...) 。
  • Appliquer un échappement URL aux données du formulaire.
  • prend automatiquement en charge les requêtes HEAD.
  • Ajouter await request.is_disconnected().
  • Passez operationName à l'actionneur GraphQL.

0.9.9

  • Ajouter TemplateResponse.
  • Ajouter CommaSeparatedStrings datatype.
  • Ajouter BackgroundTasks pour multiple tasks.
  • Subclass commune pour Request et WebSocket à eg. share session Fonctionnalité.
  • Expose Remote Address avec request.client.

0.9.8

  • Ajouter request.database.executemany.

0.9.7

  • Ensure que AuthenticationMiddleware handles lifespan messages correctement.

0.9.6

  • Ajouter AuthenticationMiddleware, et @requires() décorateur.

0.9.5

  • Support either str ou Secret pour SessionMiddleware(secret_key=...).

0.9.4

  • Ajouter config.environ.
  • Ajouter datastructures.Secret.
  • Ajouter datastructures.DatabaseURL.

0.9.3

  • Ajouter à config.Config(".env")

0.9.2

  • Ajoutez un support de base optionnel.
  • Ajouter request à GraphQL contexte.
  • Hide any password composant dans URL.__repr__.

0.9.1

  • Handle Startup/Shutdown errors properly.

0.9.0

  • TestClient peut maintenant être utilisé comme un gestionnaire de contexte, à l'intérieur de LifespanContext.
  • Lifespan est maintenant désactivé en tant que middleware. les événements de démarrage et d'arrêt sont visibles à l'extérieur de la pile de middleware.

0.8.8

  • Meilleur support pour les générateurs de schéma API de Third-Party.

0.8.7

  • Support chunked requests with TestClient.
  • Cleanup asyncio tasks properly avec WSGIMiddleware.
  • Support utilise TestClient avec points de terminaison, pour le service de l'application.

0.8.6

  • Les cookies de Session sont maintenant définis sur le path root.

0.8.5

  • Les convertisseurs d'URL sont supportés.
  • prend en charge les réponses en cache HTTP 304 de StaticFiles.
  • Résout un problème d'échappement de caractères dans les données de formulaire.

0.8.4

  • Le corps est vide par défaut dans la réponse.

0.8.3

  • ajoute le paramètre "name" à @app.route().
  • Utilisez l'en-tête "Host" pour la reconstruction d'URL.

0.8.2

Fichiers statiques

  • StaticFiles ne lit plus les fichiers en réponse aux requêtes HEAD.

0.8.1

Templatisation par

  • Utilisez Jinja2 pour ajouter une configuration de modèle par défaut.

Ce qui suit est autorisé:

app = Starlette(template_directory="templates")

@app.route('/')
async def homepage(request):
    #`url_for` est disponible à l'intérieur du template.
    template = app.get_template('index.html')
    content = template.render(demande = demande)
    return HTMLResponse(contenu)

0.8.0

Exceptionnellement

  • ajoute le support pour @app.exception_handler(404).
  • Assurez-vous que les exceptions traitées ne sont pas considérées comme des erreurs par la pile middleware.

Le middleware sessionnel

  • Ajouter max_age, et utiliser timestamp-signed cookies. Defaults à deux semaines.

Les Cookies

  • Les cookies Ensure sont strictement HTTP correct.

Statistiques Files

  • Check directory exists on instantiation.

0.7.4

Concurrence

  • Ajouter à starlette.concurrency.run_in_threadpool. maintenant handles contextvar support.

0.7.3

Routing par

  • Ajouter le support name= à app.mount(). ceci allows eg:app.mount('/static', StaticFiles(directory='static'), name='static').

0.7.2

par Middleware

  • Ajouter un support pour le décorateur @app.middleware("http").

Routing par

  • Ajouter un "endpoint" à ASGI scope.

0.7.1

Debug tracebacks

  • Improve Debug traceback information & styling.

URL routage

  • Support mounted URL lookups avec "path=", eg. url_for('static', path=...).
  • Support nested URL lookups, eg.url_for('admin:user', username=...).
  • Ajouter un support slashes direct.
  • Ajoutez www redirect support.

Tâches de Background

  • Ajouter un support de tâche de fond à FileResponse et StreamingResponse.

0.7.0

Support du schéma API

  • Ajouter app.schema_generator = SchemaGenerator(...).
  • Ajouter une propriété app.schema.
  • Ajouter OpenAPIResponse(...).

Routage GraphQL

  • Drop app.add_graphql_route("/", ...) en faveur de plus de cohérence app.add_route("/", GraphQLApp(...)).

0.6.3

Routing API pour

  • Support routage vers les méthodes.
  • Ensure url_path_for fonctionne avec Mount('/{some_path_params}').
  • Fix Router(default=) argument.
  • Support repeated paths, like:@app.route("/", methods=["GET"]),@app.route("/", methods=["POST"])
  • Utilisez le ThreadPoolExecutor par défaut pour tous les endpoints de synchronisation.

0.6.2

SessionMiddleware

Ajout d'une paire de request.session Le soutien, et SessionMiddleware 。

0.6.1

Le middleware BaseHTTP

Ajout de la prise en charge de BaseHTTPMiddleware, qui fournit une interface standard de demande/réponse via un middleware ASGI régulier.

Cela signifie que vous pouvez écrire un middleware ASGI tout en travaillant au niveau de la demande/réponse, plutôt que de travailler directement avec les messages ASGI.

de starlette.applications import Starlette
de starlette.middleware.base import BaseHTTPMiddleware


Customclass Middleware (BaseHTTPMidleware):
    async def dispatch(self, request, call_next):
        response = await call_next(demande)
        response.headers ['Custom-Header']= ' Exemple '
        Retour Réponse à


app = Starlette()
app.add_middleware(CustomMiddleware)

0.6.0

Demander.path_params

0.6 Le plus grand changement est que la signature du point final n'est plus:

async def func(request: Request, **kwargs) -> Response

Au lieu de cela, nous utilisons simplement:

async def func(request: Request) -> Response

Le paramètre Path est disponible dans la requête sous la forme request.path_params.

Ceci est différent de la plupart des frameworks réseau Python, mais je pense qu 'il sera finalement plus cohérent tout au long du processus.

request.url_for()

Request et WebSocketSession prennent désormais en charge l'inversion d'URL à l'aide de request.url_for(name, **path_params). cette méthode renvoie une instance URL pleinement qualifiée. une instance URL est un objet ressemblant à une chaîne.

app.url_path_for()(cette expression anglaise peut être un nom de fonction ou de méthode spécifique dans le domaine technique, et dans un contexte chinois, la formulation anglaise du texte original est parfois conservée pour assurer l'exactitude et le professionnalisme.

Les applications prennent désormais en charge l'inversion de chemin d'URL à l'aide de app.url_path_for(name, **path_params). cette méthode renvoie une instance de URL avec un chemin et un schéma définis. une instance d'URL est un objet ressemblant à une chaîne de caractères qui renvoie uniquement un chemin si la conversion en chaîne est forcée.

app. Route

L'application prend désormais en charge un paramètre .routes qui renvoie une liste de [Route|WebSocketRoute|Mount].

Routage, Routage WebSocket, Montage

Les composants de bas niveau vers Router correspondent désormais aux signatures @app.route(),@app.websocket_route() et app.mount().