Lewati ke isi

Catatan Rilis

0.38.2

27 Juli 2024

diperbaiki

  • tidak berasumsi bahwa semua rutinitas memiliki __name__ pada routing.get_name()# 2648.

0.38.1

23 Juli 2024

Dihapus

  • Kembalikan "Tambahkan dukungan untuk ekstensi pathsend ASGI" # 2649.

0.38.0

20 Juli 2024

ditambahkan

  • memungkinkan penggunaan memoryview dalam StreamingResponse dan Response# 2576 dan # 2577.
  • Saat di StaticFiles # 2583 Ketika nama file yang diminta terlalu panjang, kirim 404, bukan 500.

Ubah (atau: ubah)

  • gagal dengan cepat pada parameter instantiasi Jinja2Template tidak valid # 2568.
  • Periksa pawang titik akhir secara asinkron hanya sekali # 2536.

diperbaiki

  • menambahkan sinkronisasi yang tepat ke WebSocketTestSession# 2597.

0.37.2

5 Maret 2024

ditambahkan

  • Tambahkan bytes ke tipe _RequestData # 2510.

diperbaiki

  • Kembalikan "Ubah scope["client"] menjadi None pada TestClient(# 2377)"# 2525.
  • Hapus argumen app yang sudah tidak digunakan lagi diteruskan ke httpx.Client pada TestClient # 2526.

0.37.1

9 Februari 2024

Diperbaiki

  • Peringatan alih-alih menaikkan untuk file env yang hilang di Config # 2485 Ya.

0.37.0

5 Februari 2024

Ditambahkan

  • Mendukung WebSocket Denial Response ekstensi ASGI # 2041.

0.36.3

4 Februari 2024

Diperbaiki

  • Membuat anyio.Event Pada konteks async # 2459 Ya.

0.36.2

3 Februari 2024

Diperbaiki

  • Upgrade python-multipart ke 0.0.7 13e5c26.
  • Hindari charset duplikat pada Content-Type # 2443.

0.36.1

23 Januari 2024

Diperbaiki

  • Periksa apakah "ekstensi" dalam ruang lingkup sebelum memeriksa ekstensi # 2438.

0.36.0

22 Januari 2024

ditambahkan

  • Menambahkan dukungan untuk ASGI pathsend Ekstensi # 2435 Ya.
  • Membatalkan WebSocketTestSession Di dekat # 2427 Ya.
  • Naikkan WebSocketDisconnect Kapan WebSocket.send() Aturan IOError # 2425 Ya.
  • Naikkan FileNotFoundError Kapan env_file Parameter aktif Config Tidak valid # 2422 Ya.

0.35.1

11 Januari 2024

diperbaiki

  • Berhenti menggunakan parameter "metode" yang sudah tidak digunakan lagi di FileResponse Di dalam StaticFiles # 2406 Ya.
  • Membuat typing-extensions opsional lagi # 2409.

0.35.0

11 Januari 2024

ditambahkan

  • menambahkan *args ke Middleware dan meningkatkan petunjuk jenisnya # 2381.

diperbaiki

  • Gunakan Iterable sebagai pengganti Iterator pada iterate_in_threadpool# 2362

perubahan

  • menangani root_path untuk mempertahankan kompatibilitas dengan aplikasi ASGI terinstal dan WSGI # 2400.
  • mengubah scope["client"] menjadi None di TestClient# 2377

0.34.0

16 Desember 2023

ditambahkan

  • menggunakan ParamSpec untuk run_in_threadpool# 2375.
  • Tambahkan UploadFile.__repr__# 2360.

diperbaiki

  • menggabungkan URL dengan benar pada TestClient# 2376.
  • mempertimbangkan ETag yang lemah pada StaticFiles# 2334.

ketinggalan jaman

  • menggambarkan parameter FileResponse(method=...)# 2366.

0.33.0

1 Desember 2023

ditambahkan

  • masing-masing Route / WebSocketRoute menambahkan middleware # 2349.
  • menambahkan middleware# 2351 per Router.

diperbaiki

  • Jangan menimpa "path" dan "root_path" Kunci rentang # 2352.
  • mengatur ensure_ascii=False pada json.dumps() untuk WebSocket.send_json()# 2341.

0.32.0 post1

5 November 2023

diperbaiki

  • Jatuh kembali mkdocs-material dari 9.1.17 ke 9.4.7 # 2326.

0.32.0

4 November 2023

ditambahkan

  • mengirimkan reason# 2309 pada WebSocketDisconnect.
  • menambahkan parameter domain ke SessionMiddleware# 2280.

Mengubah; mengubah; mengubah

  • mewarisi dari HTMLResponse bukan Response pada _TemplateResponse# 2274.
  • mengembalikan anotasi tipe Response.render ke keadaan0.31.0 # 2264.

0.31.1

26 Agustus 2023

diperbaiki

  • memperbaiki kesalahan impor # 2231 ketika exceptiongroup tidak tersedia.
  • menetapkan variabel global url_for# 2230 untuk lingkungan Jinja kustom.

0.31.0

24 Juli 2023

ditambahkan

  • Secara resmi mendukung Python 3.12 # 2214.
  • Mendukung AnyIO 4.0 # 2211.
  • Ketik ketat Starlette beranotasi (mode ketat pada myPy)# 2180.

Diperbaiki

  • Jangan mengelompokkan header duplikat pada string tunggal saat menggunakan TestClient # 2219.

0.30.0

13 Juli 2023

Dihapus

  • Drop Python 3.7 mendukung # 2178.

0.29.0

13 Juli 2023

Ditambahkan

  • Tambahkan parameter follow_redirects ke TestClient # 2207.
  • Menambahkan __str__ Untuk HTTPException dan WebSocketException # 2181 Ya.
  • Peringatan pengguna saat menggunakan lifespan Bersama dengan on_startup/on_shutdown # 2193 Ya.
  • Kumpulkan rute dari Host Untuk menghasilkan skema OpenAPI # 2183 Ya.
  • Menambahkan request Argumen untuk TemplateResponse # 2191 Ya.

diperbaiki

  • Hentikan! body_stream Dalam kasus more_body=False Pada BaseHTTPMiddleware # 2194 Ya.

0.28.0

7 Juni 2023

Berubah

  • Gunakan kembali buffer tubuh Request untuk panggilan _ berikutnya di BaseHTTPMiddleware # 1692.
  • Memindahkan logika ke penanganan pengecualian Route # 2026 Ya.

ditambahkan

  • menambahkan parameter env ke Jinja2Templates dan mendeprecates **env_options# 2159.
  • Tambahkan pesan kesalahan eksplisit # 2177 saat httpx tidak terinstal.

diperbaiki

  • memungkinkan penggunaan parameter "nama" pada templates url_for()# 2127.

0.27.0

16 Mei 2023

Rilis ini memperbaiki kerentanan traversal jalur dalam StaticFiles. Anda dapat melihat buletin keamanan penuh: https://github.com/encode/starlette/security/advisories/GHSA-v5gw-mw7f-84px

ditambahkan

  • menyusutkan JSON WebSocket data dengan send_json, lihat https://github.com/encode/starlette/pull/2128

diperbaiki

  • ada StaticFiles Pada 1797de4, will commonprefix Ganti dengan commonpath ...
  • Mengubah ImportErrors menjadi ModuleNotFoundError # 2135.
  • Perbaiki konten pesan RuntimeError di websockets # 2141.

0.26.1

13 Maret 2023

diperbaiki

  • Perbaiki jenis Lifespan di Starlette # 2077 untuk memungkinkan subkelasnya.

0.26.0 post1

9 Maret 2023

Diperbaiki

  • Ganti referensi dari Peristiwa ke Lifespan di mkdocs.yml # 2072.

0.26.0

9 Maret 2023

Ditambahkan

Berubah

  • Ubah tanda tangan url_for untuk mengembalikan contoh URL # 1385.

Diperbaiki

  • Izinkan argumen "nama" pada url_for() dan url_path_for() # 2050.

Ditinggalkan

  • Mengusir on_startup dan on_shutdown Acara # 2070 Ya.

0.25.0

14 Februari 2023

Diperbaiki

  • Batasi jumlah bidang dan file saat mengurai multipart/form-data Di atas MultipartParser 8C74C2C dan # 2036 Ya.

0.24.0

6 Februari 2023

ditambahkan

  • Izinkan StaticFiles untuk mengikuti symlink # 1683.
  • Allow Request.form() sebagaimanajer konteks # 1903.
  • Menambahkan size Atribut untuk UploadFile # 1405 Ya.
  • Tambahkan argumen env_prefix ke Config # 1990.
  • Tambahkan prosesor konteks template # 1904 Ya.
  • Mendukung str dan datetime pada parameter expires pada metode Response.set_cookie # 1908.

Berubah

  • Dengan malas membangun tumpukan middleware # 2017.
  • Membuat argumen file yang diperlukan pada UploadFile # 1413.
  • Gunakan ekstensi debug alih-alih ekstensi template respons khusus # 1991 Ya.

diperbaiki

  • Fixed url parsing dari ipv6 url pada URL.replace # 1965.

0.23.1

9 Desember 2022

diperbaiki

  • Hanya berhenti menerima aliran pada body_stream jika tubuh kosong di BaseHTTPMiddleware # 1940.

0.23.0

5 Desember 2022

ditambahkan

  • Menambahkan headers Parameter untuk TestClient # 1966 Ya.

ketinggalan jaman

  • mencela Starlette dan Router dekorator # 1897.

diperbaiki

  • Perbaiki kesalahan pada FloatConvertor ekspresi reguler # 1973.

0.22.0

17 November 2022

Berubah

  • melewati GZipMiddleware ketika responsnya mengandung Content-Encoding# 1901.

diperbaiki

  • dari TestClient # 1953 Hapus parameter kueri yang tidak diinginkan unquote() ...
  • memastikan bahwa MutableHeaders._list sebenarnya adalah list# 1917. Kompatibilitas impor* dengan versi AnyIO# 1936 berikutnya.

0.21.0

26 September 2022

Rilis ini menggantikan sisi klien HTTP dasar yang digunakan pada TestClient(requests :arrow_right:httpx), yang dapat merusak rangkaian pengujian Anda karena API yang sedikit berbeda. Untuk membuat migrasi lebih lancar, Anda dapat menggunakan alat bump-testclient.

Ubah (atau: ubah)

  • ada TestClient # 1376, mau requests Ganti dengan httpx

ditambahkan

  • Menambahkan WebSocketException dan dukungan untuk penangan pengecualian WebSocket # 1263.
  • Tambahkan parameter middleware ke kelas Mount # 1649.
  • Secara resmi mendukung Python 3.11 # 1863.
  • Menerapkan __repr__ Untuk kelas rute # 1864 Ya.

Diperbaiki

  • Memperbaiki bug di mana BackgroundTasks dibatalkan saat menggunakan BaseHTTPMiddleware dan klien memutuskan # 1715.

0.20.4

28 Juni 2022

Diperbaiki

  • Hapus konverter dari jalur saat menghasilkan skema OpenAPI # 1648 Ya.

0.20.3

10 Juni 2022

Diperbaiki

  • Kembalikan "Izinkan StaticFiles Untuk mengikuti simlink " # 1681 Ya.

0.20.2

7 Juni 2022

diperbaiki

  • Regresi tetap pada jalur rute dengan kolon # 1675.
  • Izinkan StaticFiles Untuk mengikuti simlink # 1337 Ya.

0.20.1

28 Mei 2022

diperbaiki

  • Peningkatan deteksi callables async # 1444 Ya.
  • Kirim 400 (Permintaan Buruk) ketika boundary hilang # 1617.
  • Kirim 400 (Permintaan Buruk) saat kehilangan kolom "nama" di Content-Disposition Kepala # 1643 Ya.
  • Jangan mengirim data kosong ke StreamingResponse Pada BaseHTTPMiddleware # 1609 Ya.
  • Menambahkan __bool__ Dunder untuk Secret # 1625 Ya.

0.20.0

3 Mei 2022

Dihapus

0.19.1

22 April 2022

diperbaiki

  • Inferensi tetap dari Route.name Ketika dibuat dari metode # 1553 Ya.
  • Hindari TypeError pada websocket.disconnect ketika kode adalah None # 1574.

ketinggalan jaman

  • Mengusir WS_1004_NO_STATUS_RCVD dan WS_1005_ABNORMAL_CLOSURE Mendukung WS_1005_NO_STATUS_RCVD dan WS_1006_ABNORMAL_CLOSURE, karena konstanta sebelumnya tidak cocok dengan Spesifikasi WebSockets # 1580 Ya.

0.19.0

9 Maret 2022

ditambahkan

  • Penangan kesalahan akan selalu berjalan, bahkan jika kesalahan terjadi pada tugas latar belakang # 761 Ya.
  • Menambahkan parameter headers ke HTTPException # 1435.
  • Respons internal dengan kode status 405 masukkan header Allow, seperti yang dijelaskan oleh RFC 7231 # 1436.
  • ada JSONResponse dalam content Parameter sekarang diperlukan # 1431.
  • Tambahkan Pendaftaran Konverter URL Kustom # 1437.
  • menambahkan parameter tipe pembuangan konten ke FileResponse# 1266.
  • Di Wajib Dekorator # 920, tambahkan parameter kueri berikutnya bersama dengan URL permintaan asli.
  • menambahkan raw_path ke lingkup TestClient# 1445.
  • menambahkan operator serikat ke MutableHeaders# 1240.
  • Tampilkan detail rute yang hilang di halaman debug # 1363.
  • mengubah rentang versi yang diperlukan untuk anyio menjadi >=3.4.0,<5.0# 1421 dan # 1460.
  • menambahkan persyaratan typing-extensions>=3.10- gunakan # 1475 hanya dalam versi yang lebih rendah dari Python 3.10.

diperbaiki

  • mencegah BaseHTTPMiddleware menyembunyikan kesalahan dalam StreamingResponse dan menginstal aplikasi # 1459.
  • SessionMiddleware menggunakan path=... eksplisit alih-alih ASGI "root _ path" # 1512 secara default.
  • Request.client Sekarang sesuai dengan spesifikasi ASGI # 1462.
  • mempromosikan KeyError sejak awal untuk batas yang hilang # 1349.

ketinggalan jaman

  • Menghancurkan WSGIMiddleware demi a2wsgid # 1504.
  • Mengusir run_until_first_complete # 1443 Ya.

0.18.0

23 Januari 2022

Ditambahkan

  • Ubah ukuran potongan default dari 4Kb menjadi 64Kb aktif FileResponse # 1345 Ya.
  • Tambahkan dukungan untuk functools.partial dalam WebSocketRoute # 1356 Ya.
  • Tambahkan paket StaticFiles dengan direktori # 1350.
  • Biarkan pilihan di lingkungan Jinja2Templates # 1401 Ya.
  • Izinkan metode HEAD pada HttpEndpoint # 1346.
  • Terima header tambahan di websocket.accept Pesan # 1361 dan # 1422 Ya.
  • Tambahkan reason ke WebSocket tutup acara ASGI # 1417.
  • Tambahkan atribut header ke UploadFile # 1382.
  • Jangan hilangkan header Content-Length untuk kasus Content-Length: 0 # 1395.
  • Jangan mengatur header untuk tanggapan dengan kode status 1xx, 204, dan 304 # 1397 Ya.
  • SessionMiddleware.max_age sekarang menerima None, jadi cookie dapat bertahan selama sesi browser # 1387.

diperbaiki

  • Tweak hashlib.md5() Fungsi aktif FileResponse Generasi ETag. Parameter usedforsecurity Bendera diatur ke False, jika bendera tersedia pada sistem. Ini memperbaiki kesalahan yang diangkat pada sistem dengan FIPS diaktifkan # 1366 dan # 1410 Ya.
  • Perbaiki tipe path_params pada metode url_path_for() yaitu mengubah str menjadi Any # 1341.
  • Host sekarang mengabaikan port pada perutean # 1322.

0.17.1

17 November 2021

diperbaiki

  • Fix IndexError dalam otentikasi requires ketika argumen fungsi terbungkus didistribusikan antara *args dan **kwargs # 1335.

0.17.0

4 November 2021

ditambahkan

  • Response.delete_cookie sekarang menerima parameter yang sama seperti Response.set_cookie # 1228.
  • Memperbarui konstruktor Jinja2Templates untuk memungkinkan PathLike # 1292.

diperbaiki

  • tetap BadSignature penanganan pengecualian di SessionMiddleware # 1264.
  • Ubah tipe pengembalian HTTPConnection.__getitem__ dari str menjadi typing.Any # 1118.
  • Perubahan ImmutableMultiDict.getlist Jenis kembali dari typing.List[str] Untuk typing.List[typing.Any] # 1235 Ya.
  • Menangani pengecualian OSError pada StaticFiles # 1220.
  • Memperbaiki StaticFiles 404.html dalam mode HTML # 1314.
  • Mencegah anyios. ExceptionGroup dalam tampilan kesalahan di bawah BaseHTTPMiddleware # 1262.

Dihapus

  • Hapus GraphQL mendukung # 1198.

0.16.0

19 Juli 2021

ditambahkan

diperbaiki

Contoh* starlette.websockets.WebSocket sekarang dapat disesuaikan dan dibandingkan dengan identitas # 1039 * Sejumlah perbaikan yang berkaitan dengan kelompok tugas lari dalam umur # 1213,# 1227

Ditinggalkan / dihapus

  • Metode starlette.templates.Jinja2Templates.get_env telah dihapus # 1218
  • ClassVar starlette.testclient.TestClient.async_backend telah dihapus, backend sekarang dikonfigurasi menggunakan konstruktor kwargs # 1211
  • Melewati Fungsi Generator Async atau Fungsi Generator ke starlette.routing.Router(lifespan=) tidak digunakan lagi. Anda harus membungkus umur Anda dengan @contextlib.asynccontextmanager.# 1227 # 1110

0.15.0

23 Juni 2021

Rilis ini membuat perubahan besar pada bagian asinkron yang mendasari Starlette. Akibatnya, Starlette sekarang bergantung pada AnyIO, dan ada beberapa perubahan API kecil. Perubahan besar lainnya dalam rilis ini adalah penghinaan dukungan GraphQL bawaan.

ditambahkan

  • Starlette sekarang mendukung Trio sebagai runtime asinkron melalui AnyIO - # 1157.
  • TestClient.websocket_connect() Sekarang harus digunakan sebagaimanajer konteks.
  • Dukungan awal untuk Python 3.10 - # 1201. Tingkat kompresi yang digunakan oleh* dalam GZipMiddleware sekarang dapat disesuaikan - # 1128.

diperbaiki

Beberapa perbaikan ke CORSMiddleware oleh* . Lihat # 1111, # 1112, # 1113, # 1199. * Pesan pengecualian yang ditingkatkan dalam kasus nama parameter jalur duplikat - # 1177. * RedirectResponse sekarang menggunakan pengkodean quote daripada pengkodean quote_plus di header Location untuk lebih cocok dengan perilaku dalam kerangka kerja lain seperti Django - # 1164. * Dalam lebih banyak kasus, penyebab pengecualian sekarang dipertahankan - # 1158. * Dalam hal pemasangan aplikasi, cookie sesi sekarang menggunakan jalur akar ASGI - # 1147. * Memperbaiki kesalahan pembatalan cache saat menghapus file statis dalam keadaan tertentu - # 1023. * meningkatkan penggunaan memori BaseHTTPMiddleware saat menangani respons besar - tetap # 1012 oleh # 1157

Ditinggalkan / Dihapus

  • Dukungan GraphQL bawaan melalui kelas GraphQLApp telah dihapus dan akan dihapus di rilis mendatang. Silakan lihat # 619. GraphQL tidak didukung pada Python 3.10.
  • Parameter executor untuk GraphQLApp telah dihapus. Gunakan executor_class sebagai gantinya.
  • Parameter workers untuk WSGIMiddleware telah dihapus. Ini tidak berpengaruh apa pun sejak Starlette v0.6.3.

0.14.2

2 Februari 2021

Diperbaiki

  • Kompatibilitas ServerErrorMiddleware tetap dengan Python 3.9.1/3.8.7 saat mode debug diaktifkan -# 1132.
  • Fixed unclosed socket ResourceWarning saat menggunakan TestClient dengan titik akhir WebSocket - # 1132.
  • Peningkatan deteksi async Endpoint dibungkus functools.partial Pada Python 3.8 + - # 1106 Ya.

0.14.1

9 November 2020

Dihapus

  • UJSONResponse telah dihapus (perubahan ini dimaksudkan untuk dimasukkan dalam 0.14.0). Silakan lihat dokumentasi untuk cara mengimplementasikan tanggapan menggunakan serialisasi JSON kustom -# 1074.

0.14.0

8 November 2020

ditambahkan

  • Starlette sekarang secara resmi mendukung Python 3.9.
  • Di StreamingResponse, memungkinkan iterator async kustom seperti objek dari kelas implementasi __aiter__ Ya.
  • Diizinkan penggunaan functools.partial Pawang Async dalam versi Python 3.6 dan 3.7.
  • Ditambahkan 418 I 'm A Teapot kode status.

Berubah

  • Buat tugas dari koroutin penangan sebelum mengirimkannya ke asyncio.wait.
  • Gunakan format_exception sebagai pengganti format_tb dalam respons debug ServerErrorMiddleware.
  • Jadilah lebih lunak dengan argumen pawang saat menggunakan dekorator requires.

0.13.8

  • Revert Queue(maxsize=1) fix untuk kelas middleware BaseHTTPMiddleware dan respon streaming.

  • Konstruktor StaticFiles sekarang memungkinkan pathlib.Path selain string untuk argumen directory-nya.

0.13.7

  • Memperbaiki penggunaan memori tinggi saat menggunakan BaseHTTPMiddleware Kelas Middleware dan tanggapan streaming.

0.13.6

  • memperbaiki kesalahan 404 dengan StaticFiles.

0.13.5

  • menambahkan dukungan untuk fitur Starlette(lifespan=...).
  • Pengecekan traversal jalur yang lebih kuat di aplikasi StaticFiles.
  • Perbaiki pengkodean WSGI PATH _ INFO.
  • RedirectResponse sekarang menerima parameter latar belakang opsional
  • Biarkan rute jalur berisi metakarakter ekspresi reguler
  • Perlakukan "tubuh" HTTP ASGI sebagai kunci opsional.
  • Jangan gunakan thread pool untuk menulis untuk mengunggah file dalam memori.

0.13.0

  • Beralih untuk memfasilitasi konfigurasi aplikasi dalam gaya inisialisasi. Ini berarti meninggalkan gaya dekorator demi tabel perutean deklaratif dan definisi middleware.

0.12.12

  • memperbaiki masalah request.url_for() untuk kasus "pemasangan bersarang."

0.12.11

  • Perbaiki request.url_for() saat menggunakan ASGI root_path.

0.12.1

  • menambahkan URL.include_query_params(**kwargs)
  • menambahkan URL.replace_query_params(**kwargs)
  • menambahkan URL.remove_query_params(param_names)
  • request.state Bertahan dengan benar di middleware.
  • menambahkan antarmuka request.scope.

0.12.0

  • Beralih ke ASGI 3.0.
  • Memperbaiki middleware CORS.
  • Menambahkan dukungan StaticFiles(html=True).
  • Rute tetap mengutip dalam tanggapan redirect.

0.11.1

  • Menambahkan antarmuka request.state untuk menyimpan informasi tambahan yang sewenang-wenang.
  • Mendukung menonaktifkan GraphiQL dengan GraphQLApp(..., graphiql=False).

0.11.0

  • DatabaseMiddleware Sekarang dijatuhkan untuk databases
  • Template tidak lagi dikonfigurasi pada contoh aplikasi. Menggunakan templates = Jinja2Templates(directory=...) dan return templates.TemplateResponse('index.html', {"request": request})
  • Pembuatan skema tidak lagi melekat pada instance aplikasi. Menggunakan schemas = SchemaGenerator(...) dan return schemas.OpenAPIResponse(request=request)
  • LifespanMiddleware Dijatuhkan demi penanganan umur berbasis router.
  • Contoh aplikasi sekarang menerima routes Argumen, Starlette(routes=[...])
  • Generasi skema sekarang termasuk rute yang dipasang.

0.10.6

  • Menambahkan komponen perutean Lifespan.

0.10.5

  • Pastikan templating tidak secara ketat memerlukan jinja2 untuk dipasang.

0.10.4

Template* sekarang dikonfigurasi secara independen dari contoh aplikasi.templates = Jinja2Templates(directory=...). API yang ada tetap di tempatnya, tetapi tidak lagi didokumentasikan, dan akan ditinggalkan pada waktunya. Lihat dokumentasi template untuk lebih jelasnya.

0.10.3

  • Pindah ke paket databases independen, bukan DatabaseMiddleware. API yang Ada tetap di tempatnya, tetapi tidak lagi didokumentasikan, dan akan ditinggalkan pada waktunya.

0.10.2

  • Jangan menjatuhkan nomor port eksplisit pada pengalihan dari HTTPSRedirectMiddleware Ya.

0.10.1

  • Tambahkan dukungan database MySQL.
  • Tambahkan perutean berbasis host.

0.10.0

  • WebSockets sekarang mengirim / menerima JSON melalui bingkai data teks secara default. Pembingkaian biner menggunakan .send_json(data, mode="binary") dan .receive_json(mode="binary").
  • GraphQLApp sekarang menerima parameter executor_class, yang harus digunakan dalam preferensi untuk parameter executor yang ada. Mengatasi masalah instantiating aktuator asynchronous sebelum loop peristiwa diatur. Harapkan parameter executor akan dihapus dalam rilis medium atau besar berikutnya. Otentikasi* dan dekorator @requires sekarang mendukung titik akhir WebSocket.
  • MultiDict dan ImmutableMultiDict Kelas masuk uvicorn.datastructures Tersedia di.
  • QueryParams sekarang diinstansiasi menggunakan parameter *args, **kwargs gaya kamus standar.

0.9.11

  • Cookie sesi sekarang termasuk "kedaluwarsa" browser di samping waktu kedaluwarsa yang ditandatangani yang ada.
  • request.form() Sekarang kembalikan antarmuka multi-kamus.
  • Ketika beberapa item kunci identik muncul, parameter kueri implementasi multi-kamus sekarang .keys() , .values() dan .items() Perilaku yang mencerminkan lebih akurat dict ...
  • Gunakan selama proses urlsplit Alih-alih urlparse ...

0.9.10

  • Dukungan untuk metode kelas @requires(...) ...
  • Terapkan URL melarikan diri untuk membentuk data.
  • secara otomatis mendukung permintaan HEAD.
  • menambahkan await request.is_disconnected().
  • Berikan nama operasiNama kepada pelaksana GraphQL.

0.9.9

  • menambahkan TemplateResponse.
  • Tambahkan tipe data CommaSeparatedStrings.
  • Menambahkan BackgroundTasks untuk beberapa tugas.
  • Subkelas umum untuk Request dan WebSocket, untuk mis.share session Fungsionalitas.
  • Mengekspos alamat jarak jauh dengan request.client.

0.9.8

  • Tambahkan request.database.executemany.

0.9.7

  • Pastikan bahwa AuthenticationMiddleware menangani pesan masa pakai dengan benar.

0.9.6

  • Menambahkan AuthenticationMiddleware, dan dekorator @requires().

0.9.5

  • Dukung baik str Atau Secret untuk SessionMiddleware(secret_key=...) Ya.

0.9.4

  • Menambahkan config.environ Ya.
  • Menambahkan datastructures.Secret Ya.
  • Tambahkan datastructures.DatabaseURL.

0.9.3

  • Menambahkan config.Config(".env")

0.9.2

  • Menambahkan dukungan database opsional.
  • Menambahkan request Untuk konteks GraphQL.
  • Sembunyikan komponen kata sandi apa pun dalam URL.__repr__.

0.9.1

  • Tangani kesalahan startup / shutdown dengan benar.

0.9.0

  • TestClient Sekarang dapat digunakan sebagaimanajer konteks, bukan LifespanContext Ya.
  • Lifespan sekarang ditangani sebagai middleware. Acara startup dan Shutdown terlihat di seluruh tumpukan middleware.

0.8.8

  • Dukungan yang lebih baik untuk generator skema API pihak ketiga.

0.8.7

  • Mendukung permintaan chunked dengan TestClient.
  • Membersihkan tugas asyncio dengan benar dengan WSGIMiddleware. Dukungan* menggunakan TestClient dalam titik akhir, untuk ejekan layanan.

0.8.6

  • Cookie sesi sekarang diatur di jalur akar.

0.8.5

  • Dukungan untuk pengubah URL.
  • mendukung tanggapan cache HTTP 304 dari StaticFiles.
  • Selesaikan masalah pelarian karakter dalam bentuk data.

0.8.4

  • Tubuh default kosong sebagai respons.

0.8.3

  • menambahkan parameter "nama" ke @app.route().
  • Rekonstruksi URL menggunakan header "Host."

0.8.2

file statis

  • StaticFiles tidak lagi membaca file sebagai tanggapan atas permintaan HEAD.

0.8.1

Template

  • Tambahkan konfigurasi template default menggunakan Jinja2.

Berikut ini diperbolehkan:

Aplikasi = Starlette (template _ directory = "template")

@ app.route ('/')
Sinkronisasi beranda def (permintaan):
    #`url_for` tersedia di dalam template.
    Template = get _ template ('index.html')
    Konten = template.render (permintaan = permintaan)
    Mengembalikan Respon HTMLResponse (konten)

0.8.0

pengecualian

  • menambahkan dukungan untuk @app.exception_handler(404).
  • Pastikan pengecualian yang ditangani tidak diperlakukan sebagai kesalahan oleh tumpukan middleware.

percakapan middleware

  • Menambahkan max_age, dan menggunakan cookie yang ditandatangani dengan stempel waktu. Default menjadi dua minggu.

Kue

  • Pastikan cookie benar-benar HTTP yang benar.

File Statistik

  • Direktori cek ada pada instansiasi.

0.7.4

Konkurensi

  • Menambahkan starlette.concurrency.run_in_threadpool. Sekarang menangani dukungan contextvar.

0.7.3

Rute

  • Menambahkan dukungan name= ke app.mount(). Ini memungkinkan misalnya:app.mount('/static', StaticFiles(directory='static'), name='static').

0.7.2

peralatan tengah

  • Menambahkan dukungan untuk dekorator @app.middleware("http").

Rute

  • Tambahkan "titik akhir" ke lingkup ASGI.

0.7.1

Pelacakan debug

  • Peningkatan debugging traceback informasi & styling.

perutean URL

  • Mendukung pencarian URL yang dipasang dengan "path =," eg.url_for('static', path=...).
  • Mendukung pencarian URL bersarang, mis.url_for('admin:user', username=...).
  • Menambahkan dukungan tebasan pengalihan.
  • Menambahkan dukungan redirect www.

Tugas latar belakang

  • Menambahkan dukungan tugas latar belakang ke FileResponse dan StreamingResponse.

0.7.0

Dukungan Skema API

  • Tambahkan app.schema_generator = SchemaGenerator(...).
  • Menambahkan properti app.schema.
  • Tambahkan OpenAPIResponse(...).

Perutean grafis

  • Jatuhkan app.add_graphql_route("/", ...) Mendukung lebih konsisten app.add_route("/", GraphQLApp(...)) Ya.

0.6.3

Rute API

  • Mendukung perutean ke metode.
  • Pastikan url_path_for bekerja dengan Gunung ('/{some_path_params}').
  • Argumen Router Fixed (default =).
  • Mendukung jalur yang berulang, seperti: @app.route("/", methods=["GET"]), @app.route("/", methods=["POST"])
  • Gunakan ThreadPoolExecutor default untuk semua titik akhir sinkronisasi.

0.6.2

SessionMiddleware

Ditambahkan pasangan request.session Dukungan, dan SessionMiddleware ...

0.6.1

Perangkat tengah BaseHTTP

Dukungan tambahan untuk BaseHTTPMiddleware, yang menyediakan antarmuka permintaan / respons standar melalui middleware ASGI biasa.

Ini berarti Anda dapat menulis middleware ASGI saat masih bekerja pada tingkat permintaan / respons, daripada memproses pesan ASGI secara langsung.

Starlette.application diimpor dari Starlette
Dari starlette.middleware.base impor BaseHTTPMiddleware


Peralatan Bea Cukai Kelas (BaseHTTPMiddleware):
    Aync def pengiriman (sendiri, permintaan, panggilan _ berikutnya):
        Tanggapan = tunggu panggil _ next (permintaan)
        Tanggap.header ['Custom-Header'] = 'Exampleled'
        Respon kembali


Aplikasi = Starlette ()
App.add _ middleware (CustomMiddleware)

0.6.0

Minta jalur _ params

Perubahan terbesar pada 0,6 adalah tanda tangan titik akhir tidak lagi:

Async def func (permintaan: Permintaan, * * kwargs) - > Tanggapan

Sebagai gantinya, kami hanya menggunakan:

Async def func (permintaan: Permintaan) - > Tanggapan

Parameter jalur tersedia dalam bentuk request.path_params dalam permintaan.

Ini tidak seperti kebanyakan kerangka kerja web Python, tetapi saya pikir pada akhirnya akan lebih konsisten selama proses berlangsung.

Permintaan. url _ untuk ()

Permintaan dan WebSocketSession sekarang mendukung inversi URL menggunakan request.url_for(name, **path_params). Metode ini mengembalikan contoh URL yang sepenuhnya memenuhi syarat. Instansi URL adalah objek seperti string.

app.url _ path _ for () (Ungkapan bahasa Inggris ini mungkin merupakan fungsi atau nama metode tertentu di bidang teknis. Dalam konteks Cina, ekspresi bahasa Inggris dari teks asli terkadang dipertahankan untuk memastikan akurasi dan profesionalisme. Oleh karena itu, terjemahan di sini secara langsung mempertahankan bentuk bahasa Inggris dari teks asli)

Aplikasi sekarang mendukung inversi jalur URL menggunakan app.url_path_for(name, **path_params). Metode ini mengembalikan contoh URL dengan jalur dan skema yang ditetapkan. Contoh URL adalah objek seperti string yang, jika dipaksa menjadi string, hanya mengembalikan jalur.

Pelaksana. rute

Aplikasi sekarang mendukung parameter .routes yang mengembalikan daftar [Route|WebSocketRoute|Mount] es.

Rute, perutean WebSocket, mount

Komponen tingkat rendah untuk Router sekarang cocok dengan tanda tangan @app.route(),@app.websocket_route(), dan app.mount().