diff --git a/Lib/aifc.py b/Lib/aifc.py --- a/Lib/aifc.py +++ b/Lib/aifc.py @@ -336,17 +336,17 @@ class Aifc_read: params[1] = cl.MONO elif self._nchannels == 2: params[1] = cl.STEREO_INTERLEAVED else: raise Error, 'cannot compress more than 2 channels' self._decomp.SetParams(params) def __init__(self, f): - if type(f) == type(''): + if isinstance(f, basestring): f = __builtin__.open(f, 'rb') # else, assume it is an open file object already self.initfp(f) # # User visible methods. # def getfp(self): diff --git a/Lib/test/test_aifc.py b/Lib/test/test_aifc.py --- a/Lib/test/test_aifc.py +++ b/Lib/test/test_aifc.py @@ -25,16 +25,20 @@ class AIFCTest(unittest.TestCase): except OSError: pass def test_skipunknown(self): #Issue 2245 #This file contains chunk types aifc doesn't recognize. self.f = aifc.open(self.sndfilepath) + def test_unicode_open(self): + # see issue 15843 + self.f = aifc.open(unicode(self.sndfilepath)) + def test_params(self): f = self.f = aifc.open(self.sndfilepath) self.assertEqual(f.getnchannels(), 2) self.assertEqual(f.getsampwidth(), 2) self.assertEqual(f.getframerate(), 48000) self.assertEqual(f.getnframes(), 14400) self.assertEqual(f.getcomptype(), 'NONE') self.assertEqual(f.getcompname(), 'not compressed')