getBytesIO/getStringIO are now unneeded
Claude Paroz <[email protected]> Mon, 14 Feb 2022 17:34:22 +0100
| Newsgroups | gmane.comp.python.reportlab.user |
|---|---|
| Message-ID | <[email protected]> |
Hi, The attached patch is avoiding calling the getBytesIO()/getStringIO() proxy functions, which looks like there are no longer useful as BytesIO()/StringIO() can be called directly. Cheers, Claude -- www.2xlibre.net
0001-Removed-getBytesIO-getStringIO-proxies-to-BytesIO-St.patch
(text/x-patch, 28 KB)
From bba64a3af07e2150cbdfc6ebf7638f8a75422c46 Mon Sep 17 00:00:00 2001 From: Claude Paroz <[email protected]> Date: Fri, 4 Feb 2022 15:10:59 +0100 Subject: [PATCH] Removed getBytesIO/getStringIO proxies to BytesIO/StringIO --- demos/rlzope/rlzope.py | 11 +++++----- src/reportlab/graphics/renderPDF.py | 5 +++-- src/reportlab/graphics/renderPM.py | 9 ++++---- src/reportlab/graphics/renderPS.py | 11 +++++----- src/reportlab/graphics/renderSVG.py | 9 ++++---- src/reportlab/graphics/testshapes.py | 4 ++-- src/reportlab/lib/pdfencrypt.py | 6 ++++-- src/reportlab/lib/pygments2xpre.py | 5 +++-- src/reportlab/lib/utils.py | 31 ++++++++-------------------- src/reportlab/pdfbase/pdfutils.py | 6 ++++-- src/reportlab/pdfbase/ttfonts.py | 5 +++-- src/reportlab/pdfgen/pdfimages.py | 2 +- tests/test_lib_utils.py | 5 +++-- tests/test_pdfbase_ttfonts.py | 25 +++++++++++----------- tests/test_pdfgen_general.py | 5 ++--- tools/docco/graphdocpy.py | 6 +++--- tools/pythonpoint/pythonpoint.py | 7 ++++--- 17 files changed, 76 insertions(+), 76 deletions(-) diff --git a/demos/rlzope/rlzope.py b/demos/rlzope/rlzope.py index fc1d9217..17954a51 100644 --- a/demos/rlzope/rlzope.py +++ b/demos/rlzope/rlzope.py @@ -12,18 +12,19 @@ # # +from io import BytesIO try : from Shared.reportlab.platypus.paragraph import Paragraph from Shared.reportlab.platypus.doctemplate import * from Shared.reportlab.lib.units import inch from Shared.reportlab.lib import styles - from Shared.reportlab.lib.utils import ImageReader, getBytesIO + from Shared.reportlab.lib.utils import ImageReader except ImportError : from reportlab.platypus.paragraph import Paragraph from reportlab.platypus.doctemplate import * from reportlab.lib.units import inch from reportlab.lib import styles - from reportlab.lib.utils import ImageReader, getBytesIO + from reportlab.lib.utils import ImageReader class MyPDFDoc : class MyPageTemplate(PageTemplate) : @@ -54,7 +55,7 @@ class MyPDFDoc : return None # Convert it to PIL - image = ImageReader(getBytesIO(str(logo.data))) + image = ImageReader(BytesIO(logo.data)) (width, height) = image.getSize() # scale it to be 0.75 inch high @@ -83,7 +84,7 @@ class MyPDFDoc : # we will build an in-memory document # instead of creating an on-disk file. - self.report = getBytesIO() + self.report = BytesIO() # initialise a PDF document using ReportLab's platypus self.document = BaseDocTemplate(self.report) @@ -157,7 +158,7 @@ def rlzope(self) : self.REQUEST.RESPONSE.setHeader('Content-Disposition', 'attachment; filename=%s' % filename) except: import traceback, sys, cgi - content = sys.stdout = sys.stderr = getBytesIO() + content = sys.stdout = sys.stderr = BytesIO() self.REQUEST.RESPONSE.setHeader('Content-Type', 'text/html') traceback.print_exc() sys.stdout = sys.__stdout__ diff --git a/src/reportlab/graphics/renderPDF.py b/src/reportlab/graphics/renderPDF.py index bfe07d1e..dc6aa062 100644 --- a/src/reportlab/graphics/renderPDF.py +++ b/src/reportlab/graphics/renderPDF.py @@ -15,10 +15,11 @@ Execute the script to see some test drawings. changed """ +from io import BytesIO + from reportlab.graphics.shapes import * from reportlab.pdfgen.canvas import Canvas from reportlab.pdfbase.pdfmetrics import stringWidth -from reportlab.lib.utils import getBytesIO from reportlab import rl_config from reportlab.graphics.renderbase import Renderer, StateTracker, getStateDelta, renderScaledDrawing, STATE_DEFAULTS @@ -322,7 +323,7 @@ def drawToFile(d, fn, msg="", showBoundary=rl_config._unset_, autoSize=1, canvas def drawToString(d, msg="", showBoundary=rl_config._unset_,autoSize=1,canvasKwds={}): "Returns a PDF as a string in memory, without touching the disk" - s = getBytesIO() + s = BytesIO() drawToFile(d, s, msg=msg, showBoundary=showBoundary,autoSize=autoSize, canvasKwds=canvasKwds) return s.getvalue() diff --git a/src/reportlab/graphics/renderPM.py b/src/reportlab/graphics/renderPM.py index d666ffa2..650c2d9f 100644 --- a/src/reportlab/graphics/renderPM.py +++ b/src/reportlab/graphics/renderPM.py @@ -16,11 +16,12 @@ from reportlab.graphics.shapes import * from reportlab.graphics.renderbase import StateTracker, getStateDelta, renderScaledDrawing from reportlab.pdfbase.pdfmetrics import getFont, unicode2T1 from math import sin, cos, pi, ceil -from reportlab.lib.utils import getStringIO, getBytesIO, open_and_read, isUnicode +from reportlab.lib.utils import open_and_read, isUnicode from reportlab import rl_config from .utils import setFont as _setFont, RenderPMError import os, sys +from io import BytesIO, StringIO try: from reportlab.graphics import _renderPM @@ -384,7 +385,7 @@ class PMCanvas: markfilename(fn,ext=fmt) def saveToString(self,fmt='GIF'): - s = getBytesIO() + s = BytesIO() self.saveToFile(s,fmt=fmt) return s.getvalue() @@ -693,7 +694,7 @@ def drawToFile(d,fn,fmt='GIF', dpi=72, bg=0xffffff, configPIL=None, showBoundary c.saveToFile(fn,fmt) def drawToString(d,fmt='GIF', dpi=72, bg=0xffffff, configPIL=None, showBoundary=rl_config._unset_,backend=rl_config.renderPMBackend): - s = getBytesIO() + s = BytesIO() drawToFile(d,s,fmt=fmt, dpi=dpi, bg=bg, configPIL=configPIL,backend=backend) return s.getvalue() @@ -737,7 +738,7 @@ def test(outDir='pmout', shout=False): msg = 'Problem drawing %s fmt=%s file'%(name,fmt) if shout or verbose>2: print(msg) errs.append('<br/><h2 style="color:red">%s</h2>' % msg) - buf = getStringIO() + buf = StringIO() traceback.print_exc(file=buf) errs.append('<pre>%s</pre>' % escape(buf.getvalue())) diff --git a/src/reportlab/graphics/renderPS.py b/src/reportlab/graphics/renderPS.py index 5a159f12..17592917 100644 --- a/src/reportlab/graphics/renderPS.py +++ b/src/reportlab/graphics/renderPS.py @@ -5,12 +5,13 @@ __version__='3.3.0' __doc__="""Render drawing objects in Postscript""" from reportlab.pdfbase.pdfmetrics import getFont, stringWidth, unicode2T1 # for font info -from reportlab.lib.utils import getBytesIO, getStringIO, asBytes, char2int, rawBytes, asNative, isUnicode +from reportlab.lib.utils import asBytes, char2int, rawBytes, asNative, isUnicode from reportlab.lib.rl_accel import fp_str from reportlab.lib.colors import black from reportlab.graphics.renderbase import Renderer, StateTracker, getStateDelta, renderScaledDrawing from reportlab.graphics.shapes import STATE_DEFAULTS import math +from io import BytesIO, StringIO from operator import getitem from reportlab import rl_config from reportlab.pdfgen.canvas import FILL_EVEN_ODD, FILL_NON_ZERO @@ -618,7 +619,7 @@ class PSCanvas: hex_encoded = self._AsciiHexEncode(rawimage) # write in blocks of 78 chars per line - outstream = getStringIO(hex_encoded) + outstream = StringIO(hex_encoded) dataline = outstream.read(78) while dataline != "": @@ -630,7 +631,7 @@ class PSCanvas: # end of drawImage def _AsciiHexEncode(self, input): # also based on piddlePDF "Helper function used by images" - output = getStringIO() + output = StringIO() for char in asBytes(input): output.write('%02x' % char2int(char)) return output.getvalue() @@ -686,7 +687,7 @@ class PSCanvas: hex_encoded = self._AsciiHexEncode(rawimage) # write in blocks of 78 chars per line - outstream = getStringIO(hex_encoded) + outstream = StringIO(hex_encoded) dataline = outstream.read(78) while dataline != "": @@ -925,7 +926,7 @@ def drawToFile(d,fn, showBoundary=rl_config.showBoundary,**kwd): def drawToString(d, showBoundary=rl_config.showBoundary): "Returns a PS as a string in memory, without touching the disk" - s = getBytesIO() + s = BytesIO() drawToFile(d, s, showBoundary=showBoundary) return s.getvalue() diff --git a/src/reportlab/graphics/renderSVG.py b/src/reportlab/graphics/renderSVG.py index f709c776..c895a79e 100644 --- a/src/reportlab/graphics/renderSVG.py +++ b/src/reportlab/graphics/renderSVG.py @@ -8,17 +8,18 @@ objects download the svglib module here: """ import math, types, sys, os, codecs, base64 +from io import BytesIO, StringIO from operator import getitem from reportlab.pdfbase.pdfmetrics import stringWidth # for font info from reportlab.lib.rl_accel import fp_str from reportlab.lib.colors import black -from reportlab.lib.utils import asNative, getBytesIO +from reportlab.lib.utils import asNative from reportlab.graphics.renderbase import StateTracker, getStateDelta, Renderer, renderScaledDrawing from reportlab.graphics.shapes import STATE_DEFAULTS, Path, UserNode from reportlab.graphics.shapes import * # (only for test0) from reportlab import rl_config -from reportlab.lib.utils import getStringIO, RLString, isUnicode, isBytes +from reportlab.lib.utils import RLString, isUnicode, isBytes from reportlab.pdfgen.canvas import FILL_EVEN_ODD, FILL_NON_ZERO from .renderPM import _getImage @@ -39,7 +40,7 @@ EXTRA_FILL_STYLES = 'fill fill-opacity'.split() ### top-level user function ### def drawToString(d, showBoundary=rl_config.showBoundary,**kwds): "Returns a SVG as a string in memory, without touching the disk" - s = getStringIO() + s = StringIO() drawToFile(d, s, showBoundary=showBoundary,**kwds) return s.getvalue() @@ -521,7 +522,7 @@ class SVGCanvas: # self.currGroup.appendChild(comment) def drawImage(self, image, x, y, width, height, embed=True): - buf = getBytesIO() + buf = BytesIO() image.save(buf,'png') buf = asNative(base64.b64encode(buf.getvalue())) self.currGroup.appendChild( diff --git a/src/reportlab/graphics/testshapes.py b/src/reportlab/graphics/testshapes.py index c617a2fb..c33cb667 100644 --- a/src/reportlab/graphics/testshapes.py +++ b/src/reportlab/graphics/testshapes.py @@ -16,6 +16,7 @@ Feel free to add more. ''' import os, sys, base64 +from io import BytesIO from reportlab.lib import colors from reportlab.lib.units import cm @@ -455,11 +456,10 @@ def getDrawing13(): def smallArrow(): '''create a small PIL image''' from reportlab.graphics.renderPM import _getImage - from reportlab.lib.utils import getBytesIO b = base64_decodebytes(b'''R0lGODdhCgAHAIMAAP/////29v/d3f+ysv9/f/9VVf9MTP8iIv8ICP8AAAAAAAAAAAAAAAAAAAAA AAAAACwAAAAACgAHAAAIMwABCBxIsKABAQASFli4MAECAgEAJJhIceKBAQkyasx4YECBjx8TICAQ AIDJkwYEAFgZEAA7''') - return _getImage().open(getBytesIO(b)) + return _getImage().open(BytesIO(b)) def getDrawing14(): '''test shapes.Image''' diff --git a/src/reportlab/lib/pdfencrypt.py b/src/reportlab/lib/pdfencrypt.py index d1d0b0fb..787ca6a6 100644 --- a/src/reportlab/lib/pdfencrypt.py +++ b/src/reportlab/lib/pdfencrypt.py @@ -5,7 +5,9 @@ __version__='3.3.0' """helpers for pdf encryption/decryption""" import sys, os, tempfile from binascii import hexlify, unhexlify -from reportlab.lib.utils import getBytesIO, md5, asBytes, int2Byte, char2int, rawUnicode, rawBytes, asNative +from io import BytesIO + +from reportlab.lib.utils import md5, asBytes, int2Byte, char2int, rawUnicode, rawBytes, asNative from reportlab.pdfgen.canvas import Canvas from reportlab.pdfbase import pdfutils from reportlab.pdfbase.pdfdoc import PDFObject @@ -558,7 +560,7 @@ See https://www.reportlab.com/downloads''') firstPageSize = bboxInfo['PageForms0'][2:] #now make a new PDF document - buf = getBytesIO() + buf = BytesIO() canv = Canvas(buf, pagesize=firstPageSize) # set a standard ID while debugging diff --git a/src/reportlab/lib/pygments2xpre.py b/src/reportlab/lib/pygments2xpre.py index 0310d80d..f1048d4c 100644 --- a/src/reportlab/lib/pygments2xpre.py +++ b/src/reportlab/lib/pygments2xpre.py @@ -9,8 +9,9 @@ For a list of available lexers see http://pygments.org/docs/ """ __all__ = ('pygments2xpre',) -from reportlab.lib.utils import asBytes, getBytesIO, getStringIO, asUnicode, isUnicode +from reportlab.lib.utils import asBytes, asUnicode, isUnicode import re +from io import StringIO def _2xpre(s,styles): "Helper to transform Pygments HTML output to ReportLab markup" @@ -34,7 +35,7 @@ def pygments2xpre(s, language="python"): from pygments.lexers import get_lexer_by_name rconv = lambda x: x - out = getStringIO() + out = StringIO() l = get_lexer_by_name(language) diff --git a/src/reportlab/lib/utils.py b/src/reportlab/lib/utils.py index c14e7a09..5fccfd90 100644 --- a/src/reportlab/lib/utils.py +++ b/src/reportlab/lib/utils.py @@ -6,6 +6,7 @@ __doc__='''Gazillions of miscellaneous internal utility functions''' import os, pickle, sys, time, types, datetime, ast, importlib from functools import reduce as functools_reduce +from io import BytesIO literal_eval = ast.literal_eval try: from base64 import decodebytes as base64_decodebytes, encodebytes as base64_encodebytes @@ -115,20 +116,6 @@ def instantiated(v): from string import ascii_letters, ascii_uppercase, ascii_lowercase -from io import BytesIO, StringIO -def getBytesIO(buf=None): - '''unified StringIO instance interface''' - if buf: - return BytesIO(buf) - return BytesIO() -_bytesIOType = BytesIO - -def getStringIO(buf=None): - '''unified StringIO instance interface''' - if buf: - return StringIO(buf) - return StringIO() - def bytestr(x,enc='utf8'): if isinstance(x,str): return x.encode(enc) @@ -510,7 +497,7 @@ def open_for_read_by_name(name,mode='b'): name = _startswith_rl(name) s = __rl_loader__.get_data(name) if 'b' not in mode and os.linesep!='\n': s = s.replace(os.linesep,'\n') - return getBytesIO(s) + return BytesIO(s) from urllib.parse import unquote, urlparse from urllib.request import urlopen @@ -569,7 +556,7 @@ def open_for_read(name,mode='b'): purl = urlparse(name) if purl[0] and not ((purl[0] in ('data','file') or trustedHosts.match(purl[1])) and (purl[0] in trustedSchemes)): raise ValueError('Attempted untrusted host access') - return getBytesIO((datareader if name[:5].lower()=='data:' else rlUrlRead)(name)) + return BytesIO((datareader if name[:5].lower()=='data:' else rlUrlRead)(name)) except: raise IOError('Cannot open resource "%s"' % name) globals()['open_for_read'] = open_for_read @@ -681,7 +668,7 @@ class ImageReader: try: from reportlab.rl_config import imageReaderFlags self.fp = open_for_read(fileName,'b') - if isinstance(self.fp,_bytesIOType): imageReaderFlags=0 #avoid messing with already internal files + if isinstance(self.fp, BytesIO): imageReaderFlags=0 #avoid messing with already internal files if imageReaderFlags>0: #interning data = self.fp.read() if imageReaderFlags&2: #autoclose @@ -694,7 +681,7 @@ class ImageReader: from rl_config import register_reset register_reset(self._cache.clear) data=self._cache.setdefault(_digester(data),data) - self.fp=getBytesIO(data) + self.fp=BytesIO(data) elif imageReaderFlags==-1 and isinstance(fileName,str): #try Ralf Schmitt's re-opening technique of avoiding too many open files self.fp.close() @@ -866,7 +853,7 @@ class DebugMemo: self.store = store = {} if capture_traceback and sys.exc_info() != (None,None,None): import traceback - s = getBytesIO() + s = BytesIO() traceback.print_exc(None,s) store['__traceback'] = s.getvalue() cwd=os.getcwd() @@ -957,7 +944,7 @@ class DebugMemo: pickle.dump(self.store,f) except: S=self.store.copy() - ff=getBytesIO() + ff=BytesIO() for k,v in S.items(): try: pickle.dump({k:v},ff) @@ -974,7 +961,7 @@ class DebugMemo: f.close() def dumps(self): - f = getBytesIO() + f = BytesIO() self._dump(f) return f.getvalue() @@ -989,7 +976,7 @@ class DebugMemo: f.close() def loads(self,s): - self._load(getBytesIO(s)) + self._load(BytesIO(s)) def _show_module_versions(self,k,v): self._writeln(k[2:]) diff --git a/src/reportlab/pdfbase/pdfutils.py b/src/reportlab/pdfbase/pdfutils.py index 775b246e..c61f8726 100755 --- a/src/reportlab/pdfbase/pdfutils.py +++ b/src/reportlab/pdfbase/pdfutils.py @@ -9,8 +9,10 @@ __doc__='' import sys import os import binascii +from io import BytesIO + from reportlab import rl_config -from reportlab.lib.utils import getBytesIO, ImageReader, isUnicode +from reportlab.lib.utils import ImageReader, isUnicode from reportlab.lib.rl_accel import asciiBase85Encode, asciiBase85Decode def _chunker(src,dst=[],chunkSize=60): @@ -172,7 +174,7 @@ def _AsciiHexEncode(input): Helper function used by images.""" if isUnicode(input): input = input.encode('utf-8') - output = getBytesIO() + output = BytesIO() output.write(binascii.b2a_hex(input)) output.write(b'>') return output.getvalue() diff --git a/src/reportlab/pdfbase/ttfonts.py b/src/reportlab/pdfbase/ttfonts.py index f3d303d9..4fe935a8 100644 --- a/src/reportlab/pdfbase/ttfonts.py +++ b/src/reportlab/pdfbase/ttfonts.py @@ -52,11 +52,12 @@ Canvas and TextObject have special support for dynamic fonts. """ from struct import pack, unpack, error as structError -from reportlab.lib.utils import getBytesIO, bytestr, isUnicode, char2int, isStr, isBytes +from reportlab.lib.utils import bytestr, isUnicode, char2int, isStr, isBytes from reportlab.pdfbase import pdfmetrics, pdfdoc from reportlab import rl_config from reportlab.lib.rl_accel import hex32, add32, calcChecksum, instanceStringWidthTTF from collections import namedtuple +from io import BytesIO import os, time class TTFError(pdfdoc.PDFError): @@ -349,7 +350,7 @@ class TTFontMaker: def makeStream(self): "Finishes the generation and returns the TTF file as a string" - stm = getBytesIO() + stm = BytesIO() write = stm.write tables = self.tables diff --git a/src/reportlab/pdfgen/pdfimages.py b/src/reportlab/pdfgen/pdfimages.py index 07c7e5e1..fe0753ee 100644 --- a/src/reportlab/pdfgen/pdfimages.py +++ b/src/reportlab/pdfgen/pdfimages.py @@ -11,7 +11,7 @@ import reportlab from reportlab import rl_config from reportlab.pdfbase import pdfutils from reportlab.pdfbase import pdfdoc -from reportlab.lib.utils import import_zlib, haveImages, getBytesIO, isStr +from reportlab.lib.utils import import_zlib, haveImages, isStr from reportlab.lib.rl_accel import fp_str, asciiBase85Encode from reportlab.lib.boxstuff import aspectRatioFix diff --git a/tests/test_lib_utils.py b/tests/test_lib_utils.py index ea251d60..fe3e4370 100644 --- a/tests/test_lib_utils.py +++ b/tests/test_lib_utils.py @@ -126,8 +126,9 @@ class ImporterTestCase(unittest.TestCase): def test10(self): "test open and read of a simple relative file" - from reportlab.lib.utils import open_and_read, getBytesIO - b = getBytesIO(_rel_open_and_read('../docs/images/Edit_Prefs.gif')) + from io import BytesIO + from reportlab.lib.utils import open_and_read + b = BytesIO(_rel_open_and_read('../docs/images/Edit_Prefs.gif')) b = open_and_read(b) def test11(self): diff --git a/tests/test_pdfbase_ttfonts.py b/tests/test_pdfbase_ttfonts.py index b2919bcf..370cf396 100644 --- a/tests/test_pdfbase_ttfonts.py +++ b/tests/test_pdfbase_ttfonts.py @@ -8,6 +8,7 @@ from reportlab.lib.testutils import setOutDir,makeSuiteForClasses, outputfile, p if __name__=='__main__': setOutDir(__name__) import unittest +from io import BytesIO from reportlab.pdfgen.canvas import Canvas from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.pdfdoc import PDFDocument, PDFError @@ -17,7 +18,7 @@ from reportlab.pdfbase.ttfonts import TTFont, TTFontFace, TTFontFile, TTFOpenFil FF_SYMBOLIC, FF_NONSYMBOLIC, \ calcChecksum, add32 from reportlab import rl_config -from reportlab.lib.utils import getBytesIO, int2Byte +from reportlab.lib.utils import int2Byte def utf8(code): "Convert a given UCS character index into UTF-8" @@ -127,10 +128,10 @@ class TTFontFileTestCase(NearTestCase): def testFontFileFailures(self): "Tests TTFontFile constructor error checks" self.assertRaises(TTFError, TTFontFile, "nonexistent file") - self.assertRaises(TTFError, TTFontFile, getBytesIO(b"")) - self.assertRaises(TTFError, TTFontFile, getBytesIO(b"invalid signature")) - self.assertRaises(TTFError, TTFontFile, getBytesIO(b"OTTO - OpenType not supported yet")) - self.assertRaises(TTFError, TTFontFile, getBytesIO(b"\0\1\0\0")) + self.assertRaises(TTFError, TTFontFile, BytesIO(b"")) + self.assertRaises(TTFError, TTFontFile, BytesIO(b"invalid signature")) + self.assertRaises(TTFError, TTFontFile, BytesIO(b"OTTO - OpenType not supported yet")) + self.assertRaises(TTFError, TTFontFile, BytesIO(b"\0\1\0\0")) def testFontFileReads(self): "Tests TTFontParset.read_xxx" @@ -189,17 +190,17 @@ class TTFontFileTestCase(NearTestCase): def testFontFileChecksum(self): "Tests TTFontFile and TTF parsing code" F = TTFOpenFile("Vera.ttf")[1].read() - TTFontFile(getBytesIO(F), validate=1) # should not fail + TTFontFile(BytesIO(F), validate=1) # should not fail F1 = F[:12345] + b"\xFF" + F[12346:] # change one byte - self.assertRaises(TTFError, TTFontFile, getBytesIO(F1), validate=1) + self.assertRaises(TTFError, TTFontFile, BytesIO(F1), validate=1) F1 = F[:8] + b"\xFF" + F[9:] # change one byte - self.assertRaises(TTFError, TTFontFile, getBytesIO(F1), validate=1) + self.assertRaises(TTFError, TTFontFile, BytesIO(F1), validate=1) def testSubsetting(self): "Tests TTFontFile and TTF parsing code" ttf = TTFontFile("Vera.ttf") subset = ttf.makeSubset([0x41, 0x42]) - subset = TTFontFile(getBytesIO(subset), 0) + subset = TTFontFile(BytesIO(subset), 0) for tag in ('cmap', 'head', 'hhea', 'hmtx', 'maxp', 'name', 'OS/2', 'post', 'cvt ', 'fpgm', 'glyf', 'loca', 'prep'): self.assertTrue(subset.get_table(tag)) @@ -225,7 +226,7 @@ class TTFontFileTestCase(NearTestCase): ttf.add("QUUX", b"123") ttf.add("head", b"12345678xxxx") stm = ttf.makeStream() - ttf = TTFontParser(getBytesIO(stm), 0) + ttf = TTFontParser(BytesIO(stm), 0) self.assertEqual(ttf.get_table("ABCD"), b"xyzzy") self.assertEqual(ttf.get_table("QUUX"), b"123") @@ -270,7 +271,7 @@ class TTFontTestCase(NearTestCase): # Glyphless variation of vedaal's invisible font retrieved from # http://www.angelfire.com/pr/pgpf/if.html, which says: # 'Invisible font' is unrestricted freeware. Enjoy, Improve, Distribute freely - import io, zlib, base64 + import zlib, base64 font = """ eJzdlk1sG0UUx/+zs3btNEmrUKpCPxikSqRS4jpfFURUagmkEQQoiRXgAl07Y3vL2mvt2ml8APXG hQPiUEGEVDhWVHyIC1REPSAhBOWA+BCgSoULUqsKcWhVBKjhzfPU+VCi3Flrdn7vzZv33ryZ3TUE @@ -294,7 +295,7 @@ class TTFontTestCase(NearTestCase): CMGjwvxTsr74/f/F95m3TH9x8o0/TU//N+7/D/ScVcA= """.encode('latin1') uncompressed = zlib.decompress(base64.decodebytes(font)) - ttf = io.BytesIO(uncompressed) + ttf = BytesIO(uncompressed) setattr(ttf ,"name", "(invisible.ttf)") font = TTFont('invisible', ttf) for coord in font.face.bbox: diff --git a/tests/test_pdfgen_general.py b/tests/test_pdfgen_general.py index ed2b3024..599cbd88 100644 --- a/tests/test_pdfgen_general.py +++ b/tests/test_pdfgen_general.py @@ -8,6 +8,7 @@ from reportlab.lib.testutils import setOutDir,makeSuiteForClasses, outputfile, p setOutDir(__name__) import os import unittest +from io import BytesIO from reportlab.pdfgen import canvas # gmcm 2000/10/13, pdfgen now a package from reportlab.lib.units import inch, cm from reportlab.lib import colors @@ -1256,7 +1257,6 @@ class PdfgenTestCase(unittest.TestCase): c.save() def testBytesIOSaves(self): - from io import BytesIO with BytesIO() as f: c = canvas.Canvas(f) c.drawString(100, 700, 'Hello World I write to %s' % repr(f)) @@ -1271,8 +1271,7 @@ class PdfgenTestCase(unittest.TestCase): self.assertRaises(TypeError,c.save) def trySomeColors(C,enforceColorSpace=None): - from reportlab.lib.utils import getBytesIO - out=getBytesIO() + out = BytesIO() canv = canvas.Canvas(out,enforceColorSpace=enforceColorSpace) canv.setFont('Helvetica',10) x = 0 diff --git a/tools/docco/graphdocpy.py b/tools/docco/graphdocpy.py index 1d58bf8d..f4449087 100644 --- a/tools/docco/graphdocpy.py +++ b/tools/docco/graphdocpy.py @@ -11,6 +11,7 @@ __version__ = '0.8' import sys sys.path.insert(0, '.') import os, re, types, getopt, pickle, copy, time, pprint, traceback +from io import StringIO from reportlab import rl_config from docpy import PackageSkeleton0, ModuleSkeleton0 @@ -24,7 +25,6 @@ from reportlab.lib.units import inch, cm from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.enums import TA_CENTER, TA_LEFT -from reportlab.lib.utils import getStringIO from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.pdfgen import canvas from reportlab.platypus.flowables import Flowable, Spacer @@ -464,7 +464,7 @@ class GraphPdfDocBuilder0(PdfDocBuilder0): for key in keys: value = props[key] - f = getStringIO() + f = StringIO() pprint.pprint(value, f) value = f.getvalue()[:-1] valueLines = value.split('\n') @@ -648,7 +648,7 @@ class GraphHtmlDocBuilder0(HtmlDocBuilder0): value = props[key] # Method 3 - f = getStringIO() + f = StringIO() pprint.pprint(value, f) value = f.getvalue()[:-1] valueLines = value.split('\n') diff --git a/tools/pythonpoint/pythonpoint.py b/tools/pythonpoint/pythonpoint.py index 098247c1..746e8ec2 100644 --- a/tools/pythonpoint/pythonpoint.py +++ b/tools/pythonpoint/pythonpoint.py @@ -72,12 +72,13 @@ Recently added features are: """ __version__='3.3.0' import os, sys, imp, pprint, getopt, glob, re +from io import BytesIO from reportlab import rl_config from reportlab.lib import styles from reportlab.lib import colors from reportlab.lib.units import cm -from reportlab.lib.utils import getBytesIO, isStr, isBytes, isUnicode +from reportlab.lib.utils import isStr, isBytes, isUnicode from reportlab.lib.enums import TA_LEFT, TA_RIGHT, TA_CENTER, TA_JUSTIFY from reportlab.pdfbase import pdfmetrics from reportlab.pdfgen import canvas @@ -353,7 +354,7 @@ class PPPresentation: if self.verbose: print(filename) #canv = canvas.Canvas(filename, pagesize = pageSize) - outfile = getBytesIO() + outfile = BytesIO() if self.notes: #translate the page from landscape to portrait pageSize= pageSize[1], pageSize[0] @@ -404,7 +405,7 @@ class PPPresentation: if self.sourceFilename : filename = os.path.splitext(self.sourceFilename)[0] + '.pdf' - outfile = getBytesIO() + outfile = BytesIO() doc = SimpleDocTemplate(outfile, pagesize=rl_config.defaultPageSize, showBoundary=0) doc.leftMargin = 1*cm doc.rightMargin = 1*cm -- 2.30.2