Optimized django.utils.text.capfirst().
Unconditionally coercing to str type twice is expensive.
@@ -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
