openmedialibrary_platform_l.../lib/python3.4/site-packages/wheel/pkginfo.py

44 lines
1.2 KiB
Python
Raw Normal View History

2016-02-22 11:13:36 +00:00
"""Tools for reading and writing PKG-INFO / METADATA without caring
about the encoding."""
from email.parser import Parser
try:
unicode
_PY3 = False
except NameError:
_PY3 = True
if not _PY3:
from email.generator import Generator
2017-10-13 12:49:49 +00:00
2016-02-22 11:13:36 +00:00
def read_pkg_info_bytes(bytestr):
return Parser().parsestr(bytestr)
def read_pkg_info(path):
with open(path, "r") as headers:
message = Parser().parse(headers)
return message
def write_pkg_info(path, message):
with open(path, 'w') as metadata:
2017-10-13 12:49:49 +00:00
Generator(metadata, mangle_from_=False, maxheaderlen=0).flatten(message)
2016-02-22 11:13:36 +00:00
else:
from email.generator import BytesGenerator
2017-10-13 12:49:49 +00:00
2016-02-22 11:13:36 +00:00
def read_pkg_info_bytes(bytestr):
headers = bytestr.decode(encoding="ascii", errors="surrogateescape")
message = Parser().parsestr(headers)
return message
def read_pkg_info(path):
2017-10-13 12:49:49 +00:00
with open(path, "r",
encoding="ascii",
2016-02-22 11:13:36 +00:00
errors="surrogateescape") as headers:
message = Parser().parse(headers)
return message
def write_pkg_info(path, message):
with open(path, "wb") as out:
2017-10-13 12:49:49 +00:00
BytesGenerator(out, mangle_from_=False, maxheaderlen=0).flatten(message)