From 6efc35b4fe3009666e56a60af0675d7d532bf4ff Mon Sep 17 00:00:00 2001 From: Nick Pope Date: Tue, 23 Mar 2021 09:45:58 +0000 Subject: [PATCH] Optimized django.utils.text.capfirst(). Unconditionally coercing to str type twice is expensive. --- django/utils/text.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/django/utils/text.py b/django/utils/text.py index 2b1be6c2b1..7cc388f7fe 100644 --- a/django/utils/text.py +++ b/django/utils/text.py @@ -12,7 +12,11 @@ from django.utils.translation import gettext as _, gettext_lazy, pgettext @keep_lazy_text def capfirst(x): """Capitalize the first letter of a string.""" - return x and str(x)[0].upper() + str(x)[1:] + if not x: + return x + if not isinstance(x, str): + x = str(x) + return x[0].upper() + x[1:] # Set up regular expressions