From 0fef360caf43278c6536e08312a1a0f876581674 Mon Sep 17 00:00:00 2001 From: "S. Mahmudul Hasan" Date: Tue, 3 Oct 2023 13:45:21 -0400 Subject: [PATCH] Added better string formatting as required by Issue#138 --- python/builtins.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/python/builtins.py b/python/builtins.py index 4abb8187..19193a58 100644 --- a/python/builtins.py +++ b/python/builtins.py @@ -96,13 +96,20 @@ def sorted(iterable, reverse=False, key=None): return a ##### str ##### -def __f(self, *args): +def __f(self, *args, **kwargs): if '{}' in self: for i in range(len(args)): self = self.replace('{}', str(args[i]), 1) else: - for i in range(len(args)): - self = self.replace('{'+str(i)+'}', str(args[i])) + # Positional arguments will be followed by keyword arguments + # 1. Replace the positional arguments + for i,a in enumerate(args): + self = self.replace('{'+str(i)+'}', str(a)) + + # 2. Replace the keyword arguments + for k,v in kwargs.items(): + self = self.replace('{'+k+'}', str(v)) + return self str.format = __f