diff --git a/_setup/py3/dev/apidoc.py b/_setup/py3/dev/apidoc.py index c1057eb..ef4d62f 100644 --- a/_setup/py3/dev/apidoc.py +++ b/_setup/py3/dev/apidoc.py @@ -41,7 +41,7 @@ def _cleanup_epydoc(target): """ search = _re.compile(r']+width="100%%"').search for filename in _shell.files(target, '*.html'): - fp = open(filename, 'r') + fp = open(filename, 'r', encoding='latin-1') try: html = fp.read() finally: @@ -53,7 +53,7 @@ def _cleanup_epydoc(target): if end >= 0: end += len('') + 1 html = html[:start] + html[end:] - fp = open(filename, 'w') + fp = open(filename, 'w', encoding='latin-1') try: fp.write(html) finally: diff --git a/_setup/py3/ext.py b/_setup/py3/ext.py index c54c845..852c466 100644 --- a/_setup/py3/ext.py +++ b/_setup/py3/ext.py @@ -179,7 +179,7 @@ class ConfTest(object): """ self._tempdir = tempdir = _tempfile.mkdtemp() src = _os.path.join(tempdir, 'conftest.c') - fp = open(src, 'w') + fp = open(src, 'w', encoding='utf-8') try: fp.write(source) finally: diff --git a/_setup/py3/make/default_targets.py b/_setup/py3/make/default_targets.py index 16c95ee..9c74aa9 100644 --- a/_setup/py3/make/default_targets.py +++ b/_setup/py3/make/default_targets.py @@ -63,7 +63,7 @@ class MakefileTarget(_make.Target): names.append(name) names.sort() - fp = open(_shell.native('Makefile'), 'w') + fp = open(_shell.native('Makefile'), 'w', encoding='utf-8') print(decorate("Generated Makefile, DO NOT EDIT"), file=fp) print(decorate("python %s %s" % ( _os.path.basename(script), self.NAME diff --git a/_setup/py3/make/targets.py b/_setup/py3/make/targets.py index eca4d02..4620e2f 100644 --- a/_setup/py3/make/targets.py +++ b/_setup/py3/make/targets.py @@ -187,7 +187,7 @@ class Distribution(_make.Target): return sig.hexdigest() param = {'sig': sig.hexdigest(), 'file': _os.path.basename(filename)} - fp = open("%s.%s" % (filename, name), "w") + fp = open("%s.%s" % (filename, name), "w", encoding='utf-8') fp.write("%(sig)s *%(file)s\n" % param) fp.close() @@ -265,9 +265,9 @@ class Distribution(_make.Target): sig.seek(0, 0) if detach: - open("%s.asc" % filename, "w").write(sig.read()) + open("%s.asc" % filename, "w", encoding='utf-8').write(sig.read()) else: - open(filename, "w").write(sig.read()) + open(filename, "w", encoding='utf-8').write(sig.read()) return True @@ -309,7 +309,7 @@ class Manifest(_make.Target): def run(self): _term.green("Creating %(name)s...", name=self.NAME) dest = _shell.native(self.NAME) - dest = open(dest, 'w') + dest = open(dest, 'w', encoding='utf-8') for name in self.manifest_names(): dest.write("%s\n" % name) dest.close() diff --git a/_setup/py3/setup.py b/_setup/py3/setup.py index e28f000..83f1c21 100644 --- a/_setup/py3/setup.py +++ b/_setup/py3/setup.py @@ -88,7 +88,7 @@ def find_description(docs): summary = None filename = docs.get('meta.summary', 'SUMMARY').strip() if filename and _os.path.isfile(filename): - fp = open(filename) + fp = open(filename, encoding='utf-8') try: try: summary = fp.read().strip().splitlines()[0].rstrip() @@ -100,7 +100,7 @@ def find_description(docs): description = None filename = docs.get('meta.description', 'DESCRIPTION').strip() if filename and _os.path.isfile(filename): - fp = open(filename) + fp = open(filename, encoding='utf-8') try: description = fp.read().rstrip() finally: @@ -126,7 +126,7 @@ def find_classifiers(docs): """ filename = docs.get('meta.classifiers', 'CLASSIFIERS').strip() if filename and _os.path.isfile(filename): - fp = open(filename) + fp = open(filename, encoding='utf-8') try: content = fp.read() finally: @@ -145,7 +145,7 @@ def find_provides(docs): """ filename = docs.get('meta.provides', 'PROVIDES').strip() if filename and _os.path.isfile(filename): - fp = open(filename) + fp = open(filename, encoding='utf-8') try: content = fp.read() finally: @@ -164,7 +164,7 @@ def find_license(docs): """ filename = docs.get('meta.license', 'LICENSE').strip() if filename and _os.path.isfile(filename): - fp = open(filename) + fp = open(filename, encoding='utf-8') try: return fp.read().rstrip() finally: @@ -339,7 +339,7 @@ def run(config=('package.cfg',), ext=None, script_args=None, manifest_only=0): ext = [] cfg = _util.SafeConfigParser() - cfg.read(config) + cfg.read(config, encoding='utf-8') pkg = dict(cfg.items('package')) python_min = pkg.get('python.min') or None python_max = pkg.get('python.max') or None diff --git a/_setup/py3/shell.py b/_setup/py3/shell.py index a40c85c..91f2ebc 100644 --- a/_setup/py3/shell.py +++ b/_setup/py3/shell.py @@ -204,7 +204,7 @@ sys.exit(result & 7) 'outfile': repr(_pickle.dumps(_os.path.abspath(outfile))), 'argv': repr(_pickle.dumps(argv)), 'env': repr(_pickle.dumps(env)), - })) + }).encode('utf-8')) fd, _ = None, _os.close(fd) if _sys.platform == 'win32': argv = [] diff --git a/make.py b/make.py index 95fa86f..dee366b 100755 --- a/make.py +++ b/make.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: ascii -*- # -# Copyright 2006 - 2013 +# Copyright 2006 - 2014 # Andr\xe9 Malo or his licensors, as applicable # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -38,6 +38,15 @@ from _setup import term from _setup.make import targets, default_targets +if _sys.version_info[0] == 3: + def textopen(*args): + return open(*args, encoding='utf-8') + cfgread = dict(encoding='utf-8') +else: + textopen = open + cfgread = {} + + class Target(make.Target): def init(self): self.dirs = { @@ -246,7 +255,7 @@ class Website(Target): def run(self): from _setup.util import SafeConfigParser as parser parser = parser() - parser.read('package.cfg') + parser.read('package.cfg', **cfgread) strversion = parser.get('package', 'version.number') shortversion = tuple(map(int, strversion.split('.')[:2])) @@ -261,19 +270,19 @@ class Website(Target): filename = _os.path.join( self.dirs['_website'], 'src', 'website_download.txt' ) - fp = open(filename) + fp = textopen(filename) try: download = fp.read() finally: fp.close() filename = _os.path.join(self.dirs['_website'], 'src', 'index.txt') - fp = open(filename) + fp = textopen(filename) try: indexlines = fp.readlines() finally: fp.close() - fp = open(filename, 'w') + fp = textopen(filename, 'w') try: for line in indexlines: if line.startswith('.. placeholder: Download'): @@ -292,7 +301,7 @@ class Website(Target): self.dirs['_website'], 'src', 'doc-%d.%d' % shortversion ) ) - fp = open(_os.path.join( + fp = textopen(_os.path.join( self.dirs['_website'], 'src', 'conf.py' ), 'a') try: @@ -344,7 +353,7 @@ class SVNRelease(Target): """ Tag release """ from _setup.util import SafeConfigParser as parser parser = parser() - parser.read('package.cfg') + parser.read('package.cfg', **cfgread) strversion = parser.get('package', 'version.number') version = strversion trunk_url = self._repo_url() @@ -422,7 +431,7 @@ class GitRelease(Target): """ Tag release """ from _setup.util import SafeConfigParser as parser parser = parser() - parser.read('package.cfg') + parser.read('package.cfg', **cfgread) strversion = parser.get('package', 'version.number') version = strversion git = shell.frompath('git') @@ -478,7 +487,7 @@ class Version(Target): def run(self): from _setup.util import SafeConfigParser as parser parser = parser() - parser.read('package.cfg') + parser.read('package.cfg', **cfgread) strversion = parser.get('package', 'version.number') self._version_init(strversion) @@ -496,12 +505,12 @@ class Version(Target): def _version_init(self, strversion): """ Modify version in __init__ """ filename = _os.path.join(self.dirs['lib'], 'rjsmin.py') - fp = open(filename) + fp = textopen(filename) try: initlines = fp.readlines() finally: fp.close() - fp = open(filename, 'w') + fp = textopen(filename, 'w') replaced = False try: for line in initlines: @@ -516,12 +525,12 @@ class Version(Target): def _version_changes(self, strversion): """ Modify version in changes """ filename = _os.path.join(shell.native(self.dirs['docs']), 'CHANGES') - fp = open(filename) + fp = textopen(filename) try: initlines = fp.readlines() finally: fp.close() - fp = open(filename, 'w') + fp = textopen(filename, 'w') try: for line in initlines: if line.rstrip() == "Changes with version": @@ -535,13 +544,13 @@ class Version(Target): filename = _os.path.join(self.dirs['userdoc_source'], 'conf.py') shortversion = '.'.join(strversion.split('.')[:2]) longversion = strversion - fp = open(filename) + fp = textopen(filename) try: initlines = fp.readlines() finally: fp.close() replaced = 0 - fp = open(filename, 'w') + fp = textopen(filename, 'w') try: for line in initlines: if line.startswith('version'): @@ -561,13 +570,13 @@ class Version(Target): self.dirs['userdoc_source'], 'website_download.txt' ) VERSION, PATH = strversion, '' - fp = open(filename + '.in') + fp = textopen(filename + '.in') try: dllines = fp.readlines() finally: fp.close() instable = [] - fp = open(filename, 'w') + fp = textopen(filename, 'w') try: for line in dllines: if instable: