old_contents: #!/usr/bin/python
  
  import ast
  import os
  import re
  import sys
  
  try:
      from setuptools import setup, Command
  except ImportError as excp:
      from distutils.core import setup, Command
  
  from unittest import TestLoader, TextTestRunner
  
  
  os.environ['COPY_EXTENDED_ATTRIBUTES_DISABLE'] = 'true'
  os.environ['COPYFILE_DISABLE'] = 'true'
  
  
  def _read_doc():
      """
      Parse docstring from file 'pefile.py' and avoid importing
      this module directly.
      """
      with open('pefile.py', 'r') as f:
          tree = ast.parse(f.read())
      return ast.get_docstring(tree)
  
  
  def _read_attr(attr_name):
      """
      Parse attribute from file 'pefile.py' and avoid importing
      this module directly.
  
      __version__, __author__, __contact__,
      """
      regex = attr_name + r"\s+=\s+'(.+)'"
      with open('pefile.py', 'r') as f:
          match = re.search(regex, f.read())
      # Second item in the group is the value of attribute.
      return match.group(1)
  
  
  class TestCommand(Command):
    """Run tests."""
    user_options = []
  
    def initialize_options(self):
      pass
  
    def finalize_options(self):
      pass
  
  
  # build_msi does not support the 1.2.10-139 versioning schema
  # (or 1.2.10.139), hence the revision number is stripped.
  pefile_version = _read_attr('__version__')
  if 'bdist_msi' in sys.argv:
      pefile_version, _, _ = pefile_version.partition('-')
  
  
  class TestCommand(Command):
    """Run tests."""
    user_options = []
  
    def initialize_options(self):
      pass
  
    def finalize_options(self):
      pass
  
    def run(self):
      test_suite = TestLoader().discover('./tests', pattern='*_test.py')
      test_results = TextTestRunner(verbosity=2).run(test_suite)
  
  
  setup(name = 'pefile',
      version = pefile_version,
      description = 'Python PE parsing module',
      author = _read_attr('__author__'),
      author_email = _read_attr('__contact__'),
      url = 'https://github.com/erocarrera/pefile',
      download_url='https://github.com/erocarrera/pefile/files/192316/pefile-2016.3.28.tar.gz',
      keywords = ['pe', 'exe', 'dll', 'pefile', 'pecoff'],
      classifiers = [
          'Development Status :: 5 - Production/Stable',
      	'Intended Audience :: Developers',
      	'Intended Audience :: Science/Research',
      	'Natural Language :: English',
      	'Operating System :: OS Independent',
      	'Programming Language :: Python',
      	'Topic :: Software Development :: Libraries :: Python Modules'],
      long_description = "\n".join(_read_doc().split('\n')),
      cmdclass={"test": TestCommand},
      py_modules = ['pefile', 'peutils'],
      packages = ['ordlookup'],
      install_requires=[
            'future',
      ],
  )
  
new_contents: #!/usr/bin/python
  
  import ast
  import os
  import re
  import sys
  from io import open
  
  try:
      from setuptools import setup, Command
  except ImportError as excp:
      from distutils.core import setup, Command
  
  from unittest import TestLoader, TextTestRunner
  
  
  os.environ['COPY_EXTENDED_ATTRIBUTES_DISABLE'] = 'true'
  os.environ['COPYFILE_DISABLE'] = 'true'
  
  
  def _read_doc():
      """
      Parse docstring from file 'pefile.py' and avoid importing
      this module directly.
      """
      with open('pefile.py', 'r', encoding='utf-8') as f:
          tree = ast.parse(f.read())
      return ast.get_docstring(tree)
  
  
  def _read_attr(attr_name):
      """
      Parse attribute from file 'pefile.py' and avoid importing
      this module directly.
  
      __version__, __author__, __contact__,
      """
      regex = attr_name + r"\s+=\s+'(.+)'"
      with open('pefile.py', 'r', encoding='utf-8') as f:
          match = re.search(regex, f.read())
      # Second item in the group is the value of attribute.
      return match.group(1)
  
  
  class TestCommand(Command):
    """Run tests."""
    user_options = []
  
    def initialize_options(self):
      pass
  
    def finalize_options(self):
      pass
  
  
  # build_msi does not support the 1.2.10-139 versioning schema
  # (or 1.2.10.139), hence the revision number is stripped.
  pefile_version = _read_attr('__version__')
  if 'bdist_msi' in sys.argv:
      pefile_version, _, _ = pefile_version.partition('-')
  
  
  class TestCommand(Command):
    """Run tests."""
    user_options = []
  
    def initialize_options(self):
      pass
  
    def finalize_options(self):
      pass
  
    def run(self):
      test_suite = TestLoader().discover('./tests', pattern='*_test.py')
      test_results = TextTestRunner(verbosity=2).run(test_suite)
  
  
  setup(name = 'pefile',
      version = pefile_version,
      description = 'Python PE parsing module',
      author = _read_attr('__author__'),
      author_email = _read_attr('__contact__'),
      url = 'https://github.com/erocarrera/pefile',
      download_url='https://github.com/erocarrera/pefile/files/192316/pefile-2016.3.28.tar.gz',
      keywords = ['pe', 'exe', 'dll', 'pefile', 'pecoff'],
      classifiers = [
          'Development Status :: 5 - Production/Stable',
      	'Intended Audience :: Developers',
      	'Intended Audience :: Science/Research',
      	'Natural Language :: English',
      	'Operating System :: OS Independent',
      	'Programming Language :: Python',
      	'Topic :: Software Development :: Libraries :: Python Modules'],
      long_description = "\n".join(_read_doc().split('\n')),
      cmdclass={"test": TestCommand},
      py_modules = ['pefile', 'peutils'],
      packages = ['ordlookup'],
      install_requires=[
            'future',
      ],
  )
  
subject: fix for UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 208687: ordinal not in range(128) #105