#28769: Utilize 'x or y' in place of 'x if x else y'
-------------------------------------+-------------------------------------
Reporter: Дилян Палаузов | Owner: nobody
Type: | Status: new
Cleanup/optimization |
Component: Core (Other) | Version: 1.11
Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Дилян Палаузов):
This is already inconsistent in the code:
{{{
django/db/migrations/operations/models.py:48: self.options =
options or {}
django/db/migrations/operations/models.py:49: self.bases = bases or
(models.Model,)
django/db/migrations/operations/special.py:17:
self.database_operations = database_operations or []
django/db/migrations/operations/special.py:18:
self.state_operations = state_operations or []
django/db/migrations/operations/special.py:75:
self.state_operations = state_operations or []
django/db/migrations/operations/special.py:76: self.hints = hints
or {}
django/db/migrations/operations/special.py:153: self.hints = hints
or {}
django/db/migrations/state.py:88: self.models = models or {}
django/db/migrations/state.py:90: self.real_apps = real_apps or []
django/db/migrations/state.py:363: self.options = options or {}
django/db/migrations/state.py:365: self.bases = bases or
(models.Model, )
django/db/migrations/state.py:366: self.managers = managers or []
}}}
Adding ternary expression to avoid using incorrectly or/and is fine, but
it was not added to start using "x if x else y" instead of "x or y".
There are more places which can be shortened this way:
{{{
diff --git a/django/contrib/sessions/backends/file.py
b/django/contrib/sessions/backends/file.py
--- a/django/contrib/sessions/backends/file.py
+++ b/django/contrib/sessions/backends/file.py
@@ -73,10 +73,7 @@ class SessionStore(SessionBase):
"""
Return the expiry time of the file storing the session's content.
"""
- expiry = session_data.get('_session_expiry')
- if not expiry:
- expiry = self._last_modification() +
datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE)
- return expiry
+ return session_data.get('_session_expiry') or
self._last_modification() +
datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE)
def load(self):
session_data = {}
diff --git a/django/core/handlers/wsgi.py b/django/core/handlers/wsgi.py
--- a/django/core/handlers/wsgi.py
+++ b/django/core/handlers/wsgi.py
@@ -66,13 +66,11 @@ class LimitedStream:
class WSGIRequest(HttpRequest):
def __init__(self, environ):
script_name = get_script_name(environ)
- path_info = get_path_info(environ)
- if not path_info:
+ path_info = get_path_info(environ) or '/'
# Sometimes PATH_INFO exists, but is empty (e.g. accessing
# the SCRIPT_NAME URL without a trailing slash). We really
need to
# operate as if they'd requested '/'. Not amazingly nice to
force
# the path like this, but should be harmless.
- path_info = '/'
self.environ = environ
self.path_info = path_info
# be careful to only replace the first slash in the path because
of
diff --git a/django/core/management/commands/makemessages.py
b/django/core/management/commands/makemessages.py
--- a/django/core/management/commands/makemessages.py
+++ b/django/core/management/commands/makemessages.py
@@ -501,9 +501,7 @@ class Command(BaseCommand):
locale_dir = path
break
if not locale_dir:
- locale_dir = self.default_locale_path
- if not locale_dir:
- locale_dir = NO_LOCALE_DIR
+ locale_dir = self.default_locale_path or
NO_LOCALE_DIR
all_files.append(self.translatable_file_class(dirpath, filename,
locale_dir))
return sorted(all_files)
diff --git a/django/db/backends/sqlite3/creation.py
b/django/db/backends/sqlite3/creation.py
--- a/django/db/backends/sqlite3/creation.py
+++ b/django/db/backends/sqlite3/creation.py
@@ -12,9 +12,7 @@ class DatabaseCreation(BaseDatabaseCreation):
return database_name == ':memory:' or 'mode=memory' in
database_name
def _get_test_db_name(self):
- test_database_name =
self.connection.settings_dict['TEST']['NAME']
- if not test_database_name:
- test_database_name = ':memory:'
+ test_database_name =
self.connection.settings_dict['TEST']['NAME'] or ':memory:'
if test_database_name == ':memory:':
return 'file:memorydb_%s?mode=memory&cache=shared' %
self.connection.alias
return test_database_name
diff --git a/django/utils/dateparse.py b/django/utils/dateparse.py
--- a/django/utils/dateparse.py
+++ b/django/utils/dateparse.py
@@ -131,9 +131,7 @@ def parse_duration(value):
Also supports ISO 8601 representation and PostgreSQL's day-time
interval
format.
"""
- match = standard_duration_re.match(value)
- if not match:
- match = iso8601_duration_re.match(value) or
postgres_interval_re.match(value)
+ match = standard_duration_re.match(value) or
iso8601_duration_re.match(value) or postgres_interval_re.match(value)
if match:
kw = match.groupdict()
days = datetime.timedelta(float(kw.pop('days', 0) or 0))
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/28769#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/072.c29bb0d585c72b9c5a903e4834deb038%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.