summaryrefslogtreecommitdiff
path: root/django
AgeCommit message (Collapse)Author
2023-01-05Fixed #33865 -- Optimized LimitedStream wrapper.Nick Pope
The current implementation of LimitedStream is slow because .read() performs an extra copy into a buffer and .readline() performs two extra copies. The stream being wrapped is already typically a BytesIO object so this is unnecessary. This implementation has largely been untouched for 12 years and, inspired by a simpler implementation in werkzeug, it was possible to achieve the following performance improvement: LimitedStream.read() (single line): Mean +- std dev: [bench_limitedstream-main] 286 ns +- 6 ns -> [bench_limitedstream-patch] 227 ns +- 6 ns: 1.26x faster LimitedStream.readline() (single line): Mean +- std dev: [bench_limitedstream-main] 507 ns +- 11 ns -> [bench_limitedstream-patch] 232 ns +- 8 ns: 2.18x faster LimitedStream.read(8192) (single line): Mean +- std dev: [bench_limitedstream-main] 360 ns +- 8 ns -> [bench_limitedstream-patch] 297 ns +- 6 ns: 1.21x faster LimitedStream.readline(8192) (single line): Mean +- std dev: [bench_limitedstream-main] 602 ns +- 10 ns -> [bench_limitedstream-patch] 305 ns +- 10 ns: 1.98x faster LimitedStream.read() (multiple lines): Mean +- std dev: [bench_limitedstream-main] 290 ns +- 5 ns -> [bench_limitedstream-patch] 236 ns +- 6 ns: 1.23x faster LimitedStream.readline() (multiple lines): Mean +- std dev: [bench_limitedstream-main] 517 ns +- 19 ns -> [bench_limitedstream-patch] 239 ns +- 7 ns: 2.16x faster LimitedStream.read(8192) (multiple lines): Mean +- std dev: [bench_limitedstream-main] 363 ns +- 8 ns -> [bench_limitedstream-patch] 311 ns +- 11 ns: 1.17x faster LimitedStream.readline(8192) (multiple lines): Mean +- std dev: [bench_limitedstream-main] 601 ns +- 12 ns -> [bench_limitedstream-patch] 308 ns +- 7 ns: 1.95x faster Geometric mean: 1.59x faster
2023-01-05Refs #33865 -- Improved implementation of FakePayload.Nick Pope
FakePayload is a wrapper around io.BytesIO and is expected to masquerade as though it is a file-like object. For that reason it makes sense that it should inherit the correct signatures from io.BytesIO methods. Crucially an implementation of .readline() is added which will be necessary for this to behave more like the expected file-like objects as LimitedStream will be changed to defer to the wrapped stream object rather than rolling its own implementation for improved performance. It should be safe to adjust these signatures because FakePayload is only used internally within test client helpers, is undocumented, and thus private.
2023-01-05Fixed #34243 -- Fixed timesince() crash with timezone-aware dates and ↵sag᠎e
interval longer than 1 month. Regression in 8d67e16493c903adc9d049141028bc0fff43f8c8.
2023-01-05Refs #32355 -- Bumped mysqlclient requirement to >= 1.4.3.Mariusz Felisiak
mysqlclient 1.4.3 is the first release to support Python 3.8.
2023-01-05Simplified handling ambiguous/imaginary datetimes in django.utils.dateformat.Nick Pope
Instead of the separate property, we can just not set self.timezone if the datetime is ambiguous or imaginary. This ensures that this check will only ever happen once as it's dependant on the datetime object and not the format string characters.
2023-01-05Added support for datetime.date to DateFormat.r().Nick Pope
2023-01-05Simplified django.utils.dateformat.DateFormat.O()/t()/e() a bit.Nick Pope
O() - we should try to avoid calling specifier methods from each other to avoid extra function call overhead. In addition we end up, in this case, duplicating the ambiguous/imaginary datetime checks. We're also going to be looking at simplifying things by having all of these specifier methods return strings and not an random mix of types. t() - the value can only be one of 28, 29, 30, or 31. As such, there is no need to zero-pad to a width of two.
2023-01-05Optimized imports in django.utils.dateformat.Nick Pope
Avoid extra attribute lookup in specifier methods, etc. by importing classes from datetime directly.
2023-01-04Simplified django.utils.formats.date_format()/time_format() calls.Nick Pope
This removes redundant get_format() calls and passing a default value for the format argument.
2023-01-04Fixed #33961 -- Updated admin's jQuery to 3.6.3.Mariusz Felisiak
2023-01-04Fixed #33879 -- Improved timesince handling of long intervals.GianpaoloBranca
2023-01-04Simplified SQLCompiler.get_group_by() a bit.Simon Charette
2023-01-03Fixed #34200 -- Made the session role configurable on PostgreSQL.Mike Crute
2023-01-03Fixed #33783 -- Added IsEmpty GIS database function and __isempty lookup on ↵Claude Paroz
PostGIS.
2023-01-02Fixed #34235 -- Added ManifestFilesMixin.manifest_hash attribute.Florian Apolloner
This adds ManifestFilesMixin.manifest_hash attribute exposing a "hash" of the full manifest. This allows applications to determine when their static files have changed.
2022-12-29Fixed #34208 -- Confirmed support for GDAL 3.6.Mariusz Felisiak
2022-12-29Fixed #25617 -- Added case-insensitive unique username validation in ↵Paul Schilling
UserCreationForm. Co-Authored-By: Neven Mundar <nmundar@gmail.com>
2022-12-29Upgraded OpenLayers to v.7.2.2.Claude Paroz
2022-12-28Fixed #14094 -- Added support for unlimited CharField on PostgreSQL.Adrian Torres
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2022-12-28Fixed #18468 -- Added support for comments on columns and tables.kimsoungryoul
Thanks Jared Chung, Tom Carrick, David Smith, Nick Pope, and Mariusz Felisiak for reviews. Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com> Co-authored-by: Nick Pope <nick@nickpope.me.uk>
2022-12-27Fixed #34217 -- Fixed migration crash when removing check constraints on ↵DevilsAutumn
MySQL < 8.0.16.
2022-12-27Fixed #34226 -- Fixed QuerySet.select_related() with multiple ↵朱穆穆
FilteredRelations to the OneToOneField.
2022-12-24Used allow_migrate_model() shortcut in Field._check_backend_specific_checks().Mariusz Felisiak
2022-12-24Refs #34226 -- Renamed local field variables in ↵Mariusz Felisiak
SQLCompiler.get_related_selections() to avoid redefinition.
2022-12-24Fixed #34165 -- Made permissions creation respect the "using" parameter.David Wobrock
2022-12-22Fixed #33735 -- Added async support to StreamingHttpResponse.Carlton Gibson
Thanks to Florian Vazelle for initial exploratory work, and to Nick Pope and Mariusz Felisiak for review.
2022-12-22Fixed #34219 -- Preserved Char/TextField.db_collation when altering column type.Mariusz Felisiak
This moves setting a database collation to the column type alteration as both must be set at the same time. This should also avoid another layer of the column type alteration when adding database comments support (#18468).
2022-12-20Updated translations from Transifex.Mariusz Felisiak
Updated Bulgarian, Esperanto, Hungarian, Japanese, Macedonian, Persian, Portuguese (Brazil), Russian, Spanish, and Turkmen translations. Forwardport of 46b28bbe151282e9198b719d00f84b48c92606ba from stable/4.1.x.
2022-12-20Refs #34118 -- Adopted asgiref coroutine detection shims.Carlton Gibson
Thanks to Mariusz Felisiak for review.
2022-12-19Fixed #33662 -- Allowed Sitemap to customize languages for each item.Roxane
2022-12-17Fixed #34170 -- Implemented Heal The Breach (HTB) in GzipMiddleware.Andreas Pelme
2022-12-16Fixed #34212 -- Made RedisCacheClient.incr() use write connection.Leo
Co-authored-by: Sin-Woo Bang <sinwoobang@gmail.com>
2022-12-15Fixed #33308 -- Added support for psycopg version 3.Daniele Varrazzo
Thanks Simon Charette, Tim Graham, and Adam Johnson for reviews. Co-authored-by: Florian Apolloner <florian@apolloner.eu> Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2022-12-13Fixed #34209 -- Prevented FileBasedCache.has_key() crash caused by a race ↵Marti Raudsepp
condition.
2022-12-13Fixed #34038 -- Improved color contrast for links in admin.Nimra Aftab
2022-12-13Made urls.py docstring consistent with other files in project template.Jarek Pacocha
2022-12-12Refs #33308 -- Added DatabaseOperations.compose_sql() on PostgreSQL.Florian Apolloner
2022-12-12Refs #33308 -- Added psycopg_any.IsolationLevel.Florian Apolloner
2022-12-12Refs #33308 -- Added psycopg_any.sql.quote() hook.Florian Apolloner
2022-12-12Refs #33308 -- Moved psycopg2 imports to the psycopg_any module.Florian Apolloner
2022-12-10Fixed #34205 -- Fixed Meta.constraints validation crash with ArrayField and ↵James Gillard
__len lookup. Regression in 88fc9e2826044110b7b22577a227f122fe9c1fb5 that began manifesting in Django 4.1.
2022-12-09Fixed #33199 -- Deprecated passing positional arguments to ↵SirAbhi13
Signer/TimestampSigner. Thanks Jacob Walls for the implementation idea.
2022-12-08Made inspectdb used Cursor.description.display_size for CharFields' max_length.Mariusz Felisiak
internal_size is size for fixed-size types not for char types.
2022-12-08Fixed #34201 -- Bumped minimum supported SQLite to 3.21.0.Mariusz Felisiak
2022-12-07Fixed #32319 -- Added ES module support to ManifestStaticFilesStorage.James Bligh
Co-authored-by: James Bligh <james.bligh@silvercloudhealth.com>
2022-12-06Refs #33308 -- Modernized database wrapper in the PostgreSQL backend.Florian Apolloner
- Used connection.info instead of connection.get_parameter_status() and connection.server_info which don't exist in psycopg 3. - Set encoding using the client_encoding connection parameter instead of connection.set_client_encoding() that doesn't exist in psycopg 3. - Used the dbname connection parameter instead of deprecated alias - database.
2022-12-05Fixed #34194 -- Added django.utils.http.content_disposition_header().Alex Vandiver
2022-12-05Removed redundant definition of DatabaseFeatures.can_release_savepoints on ↵Mariusz Felisiak
MySQL.
2022-12-02Refs #33308 -- Made PostGISAdapter do not use psycopg2's Binary().Florian Apolloner
2022-12-01Refs #33308 -- Deprecated support for passing encoded JSON string literals ↵Simon Charette
to JSONField & co. JSON should be provided as literal Python objects an not in their encoded string literal forms.