| Age | Commit message (Collapse) | Author |
|
|
|
This bumps minimum supported versions of selenium to the first release
to support Python 3.10.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Follow up to 38e391e95fe5258bc6d2467332dc9cd44ce6ba52.
|
|
decorators to work with async functions.
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
|
|
|
|
tables in ModelAdmin.filter_horizontal/vertical.
|
|
|
|
inherited from different paths.
Co-authored-by: Simon Charette <charette.s@gmail.com>
|
|
links to common parent for MTI models.
|
|
Regression in def09bf4126d4886413adf7388882eca8e32576b.
|
|
Regression in 6991880109e35c879b71b7d9d9c154baeec12b89.
|
|
without width/height fields.
This avoids reading the image size when the dimensions fields
(image_width, image_height) do not exist, as that operation may be
expensive.
Partially reverts ea53e7c09f1b8864c20c65976bbeaeab77abdaec, that dropped
the check for the dimension fields in update_dimension_fields(), because
the post_init signal was no longer registered without dimension fields.
However, another code path to that function exists: when the
ImageFileField is save()d, the name from the storage is setattr()ed on
the field, and ImageFileDescriptor calls update_dimension_fields()
because the image size might have changed. Keep bailing out early when
dimensions are unused.
Besides, computing the image dimensions causes to close() the file,
resulting in a backward-incompatible change. The test protects against
that change.
|
|
Array(Min/Max)LengthValidator.
|
|
|
|
until popup is closed.
|
|
|
|
|
|
|
|
Oracle.
|
|
value.
|
|
|
|
ancestor with primary key that has a default.
Co-authored-by: Simon Charette <charette.s@gmail.com>
|
|
The outer query reference is not necessary when alias can be reused and
can even be harmful by confusing query planers.
Refs #34597.
|
|
|
|
Windows does not allow overriding TIME_ZONE as time.tzset() is only
available on Unix.
|
|
|
|
Thanks David Smith for the report and initial patch.
|
|
Follow up to 8d010f39869f107820421631111417298d1c5bb9.
|
|
Selenium wait.
|
|
This improves accessibility of icons by making them larger and grayscale
(when not selected).
|
|
This allows for formatting of lazy objects which have a custom formatter
defined by overriding the default implementation from `object`.
|
|
|
|
We can avoid the function call and assignment overhead which could be
significant when instantiating many lazy objects. It's still easy enough
to read too.
|
|
Previously, the proxy class was prepared lazily:
lazy_identity = lazy(identity, int)
lazy_identity(10) # prepared here
lazy_identity(10)
This has a slight advantage that if the lazy doesn't end up getting
used, the preparation work is skipped, however that's not very likely.
Besides this laziness, it is also inconsistent in that the methods which
are wrapped directly (__str__ etc.) are prepared already when __proxy__
is defined, and there is a weird half-initialized state.
This change it so that everything is prepared already on the first line
of the example above.
|
|
This order reads more naturally and puts methods into three groups:
1. The methods required to support the implementation of __proxy__, e.g.
__deepcopy__ doesn't come from `object` and __reduce__ is
overridden to support behavior required explicitly for pickling of
lazy objects.
2. Methods that are specifically overridden from `object` which we
don't want to inherit from the provided resultclasses. These will be
skipped later when we add methods from the resultclasses.
3. Additional methods - that is _add__, __radd__, and __mod__ - don't
come from `object`, but typically from `str` and `int` which are the
most common use cases.
Co-authored-by: Nick Pope <nick@nickpope.me.uk>
|
|
|
|
boolean fields.
Regression in 0aa2f16e63887d6053f6fd0da19254fc74c750ae.
Thanks Andrei Shabanski for the report.
|
|
|
|
|
|
Regression in 96a598356a9ea8c2c05b22cadc12e256a3b295fd.
|
|
This enables the admin to display the day as locale's abbreviated/full
name if %a/%A is used in the date format.
|
|
An n-ary logical XOR Q(…) ^ Q(…) ^ … ^ Q(…) should evaluate to true
when an odd number of its operands evaluate to true, not when exactly
one operand evaluates to true.
|
|
@total_ordering is slow. Using the following micro-benchmark
(resultclasses intentionally omitted to narrow the scope):
import cProfile
from django.utils.functional import lazy
def identity(x): return x
cProfile.run("for i in range(10000): str(lazy(identity)(1))")
Before:
380003 function calls in 0.304 seconds
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.016 0.016 0.304 0.304 <string>:1(<module>)
10000 0.002 0.000 0.002 0.000 bench.py:5(double)
10000 0.005 0.000 0.006 0.000 functional.py:100(__cast)
10000 0.007 0.000 0.013 0.000 functional.py:106(__str__)
10000 0.005 0.000 0.017 0.000 functional.py:140(__wrapper__)
10000 0.020 0.000 0.258 0.000 functional.py:60(lazy)
10000 0.039 0.000 0.039 0.000 functional.py:68(__proxy__)
10000 0.010 0.000 0.012 0.000 functional.py:77(__init__)
10000 0.002 0.000 0.002 0.000 functional.py:84(__prepare_class__)
10000 0.025 0.000 0.075 0.000 functools.py:186(total_ordering)
10000 0.015 0.000 0.028 0.000 functools.py:189(<setcomp>)
10000 0.024 0.000 0.044 0.000 functools.py:37(update_wrapper)
10000 0.005 0.000 0.005 0.000 functools.py:67(wraps)
10000 0.074 0.000 0.114 0.000 {built-in method builtins.__build_class__}
1 0.000 0.000 0.304 0.304 {built-in method builtins.exec}
150000 0.023 0.000 0.023 0.000 {built-in method builtins.getattr}
10000 0.004 0.000 0.004 0.000 {built-in method builtins.max}
80000 0.025 0.000 0.025 0.000 {built-in method builtins.setattr}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
10000 0.003 0.000 0.003 0.000 {method 'update' of 'dict' objects}
After:
240003 function calls in 0.231 seconds
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.016 0.016 0.231 0.231 <string>:1(<module>)
10000 0.002 0.000 0.002 0.000 bench.py:5(double)
10000 0.006 0.000 0.012 0.000 functional.py:105(__str__)
10000 0.005 0.000 0.017 0.000 functional.py:159(__wrapper__)
10000 0.015 0.000 0.186 0.000 functional.py:60(lazy)
10000 0.022 0.000 0.022 0.000 functional.py:68(__proxy__)
10000 0.010 0.000 0.012 0.000 functional.py:76(__init__)
10000 0.002 0.000 0.002 0.000 functional.py:83(__prepare_class__)
10000 0.004 0.000 0.006 0.000 functional.py:99(__cast)
10000 0.023 0.000 0.043 0.000 functools.py:37(update_wrapper)
10000 0.004 0.000 0.004 0.000 functools.py:67(wraps)
10000 0.102 0.000 0.124 0.000 {built-in method builtins.__build_class__}
1 0.000 0.000 0.231 0.231 {built-in method builtins.exec}
70000 0.011 0.000 0.011 0.000 {built-in method builtins.getattr}
50000 0.007 0.000 0.007 0.000 {built-in method builtins.setattr}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
10000 0.003 0.000 0.003 0.000 {method 'update' of 'dict' objects}
|
|
They are no longer special cased.
|