Issue #9957: SpooledTemporaryFile.truncate() now accepts an optional size parameter, as other file-like objects.
Patch by Ryan Kelly.
diff --git a/Lib/tempfile.py b/Lib/tempfile.py
index 3ec6b4a..e3afa3b 100644
--- a/Lib/tempfile.py
+++ b/Lib/tempfile.py
@@ -578,8 +578,13 @@
     def tell(self):
         return self._file.tell()
 
-    def truncate(self):
-        self._file.truncate()
+    def truncate(self, size=None):
+        if size is None:
+            self._file.truncate()
+        else:
+            if size > self._max_size:
+                self.rollover()
+            self._file.truncate(size)
 
     def write(self, s):
         file = self._file