Issue #12112: packaging reads/writes metadata using UTF-8

This commit is contained in:
Victor Stinner 2011-05-19 18:49:56 +02:00
parent dd13dd4bcc
commit c3364529b8
3 changed files with 9 additions and 9 deletions

View File

@ -307,7 +307,7 @@ class Metadata:
def read(self, filepath): def read(self, filepath):
"""Read the metadata values from a file path.""" """Read the metadata values from a file path."""
with open(filepath, 'r', encoding='ascii') as fp: with open(filepath, 'r', encoding='utf-8') as fp:
self.read_file(fp) self.read_file(fp)
def read_file(self, fileob): def read_file(self, fileob):
@ -330,7 +330,7 @@ class Metadata:
def write(self, filepath): def write(self, filepath):
"""Write the metadata fields to filepath.""" """Write the metadata fields to filepath."""
with open(filepath, 'w') as fp: with open(filepath, 'w', encoding='utf-8') as fp:
self.write_file(fp) self.write_file(fp)
def write_file(self, fileobject): def write_file(self, fileobject):

View File

@ -78,7 +78,7 @@ class DistributionTestCase(support.TempdirManager,
# let's make sure the file can be written # let's make sure the file can be written
# with Unicode fields. they are encoded with # with Unicode fields. they are encoded with
# PKG_INFO_ENCODING # PKG_INFO_ENCODING
with open(my_file, 'w') as fp: with open(my_file, 'w', encoding='utf-8') as fp:
dist.metadata.write_file(fp) dist.metadata.write_file(fp)
# regular ascii is of course always usable # regular ascii is of course always usable

View File

@ -17,7 +17,7 @@ class MetadataTestCase(LoggingCatcher,
def test_instantiation(self): def test_instantiation(self):
PKG_INFO = os.path.join(os.path.dirname(__file__), 'PKG-INFO') PKG_INFO = os.path.join(os.path.dirname(__file__), 'PKG-INFO')
with open(PKG_INFO, 'r') as f: with open(PKG_INFO, 'r', encoding='utf-8') as f:
contents = f.read() contents = f.read()
fp = StringIO(contents) fp = StringIO(contents)
@ -57,7 +57,7 @@ class MetadataTestCase(LoggingCatcher,
def test_metadata_markers(self): def test_metadata_markers(self):
# see if we can be platform-aware # see if we can be platform-aware
PKG_INFO = os.path.join(os.path.dirname(__file__), 'PKG-INFO') PKG_INFO = os.path.join(os.path.dirname(__file__), 'PKG-INFO')
with open(PKG_INFO, 'r') as f: with open(PKG_INFO, 'r', encoding='utf-8') as f:
content = f.read() % sys.platform content = f.read() % sys.platform
metadata = Metadata(platform_dependent=True) metadata = Metadata(platform_dependent=True)
@ -77,7 +77,7 @@ class MetadataTestCase(LoggingCatcher,
def test_description(self): def test_description(self):
PKG_INFO = os.path.join(os.path.dirname(__file__), 'PKG-INFO') PKG_INFO = os.path.join(os.path.dirname(__file__), 'PKG-INFO')
with open(PKG_INFO, 'r') as f: with open(PKG_INFO, 'r', encoding='utf-8') as f:
content = f.read() % sys.platform content = f.read() % sys.platform
metadata = Metadata() metadata = Metadata()
metadata.read_file(StringIO(content)) metadata.read_file(StringIO(content))
@ -97,7 +97,7 @@ class MetadataTestCase(LoggingCatcher,
def test_mapping_api(self): def test_mapping_api(self):
PKG_INFO = os.path.join(os.path.dirname(__file__), 'PKG-INFO') PKG_INFO = os.path.join(os.path.dirname(__file__), 'PKG-INFO')
with open(PKG_INFO, 'r') as f: with open(PKG_INFO, 'r', encoding='utf-8') as f:
content = f.read() % sys.platform content = f.read() % sys.platform
metadata = Metadata(fileobj=StringIO(content)) metadata = Metadata(fileobj=StringIO(content))
self.assertIn('Version', metadata.keys()) self.assertIn('Version', metadata.keys())
@ -130,14 +130,14 @@ class MetadataTestCase(LoggingCatcher,
PKG_INFO = os.path.join(os.path.dirname(__file__), PKG_INFO = os.path.join(os.path.dirname(__file__),
'SETUPTOOLS-PKG-INFO') 'SETUPTOOLS-PKG-INFO')
with open(PKG_INFO, 'r') as f: with open(PKG_INFO, 'r', encoding='utf-8') as f:
content = f.read() content = f.read()
metadata.read_file(StringIO(content)) metadata.read_file(StringIO(content))
self.assertEqual(metadata['Metadata-Version'], '1.0') self.assertEqual(metadata['Metadata-Version'], '1.0')
PKG_INFO = os.path.join(os.path.dirname(__file__), PKG_INFO = os.path.join(os.path.dirname(__file__),
'SETUPTOOLS-PKG-INFO2') 'SETUPTOOLS-PKG-INFO2')
with open(PKG_INFO, 'r') as f: with open(PKG_INFO, 'r', encoding='utf-8') as f:
content = f.read() content = f.read()
metadata.read_file(StringIO(content)) metadata.read_file(StringIO(content))
self.assertEqual(metadata['Metadata-Version'], '1.1') self.assertEqual(metadata['Metadata-Version'], '1.1')