You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by ke...@apache.org on 2020/02/24 21:39:55 UTC
[allura] branch master updated: [#8351] use codecs.open instead of
io.open when dumping json https://stackoverflow.com/a/31343739/
This is an automated email from the ASF dual-hosted git repository.
kentontaylor pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/allura.git
The following commit(s) were added to refs/heads/master by this push:
new 140bea7 [#8351] use codecs.open instead of io.open when dumping json https://stackoverflow.com/a/31343739/
140bea7 is described below
commit 140bea79e6d6bb130cca1df2157590d9f8d3b831
Author: Dave Brondsema <da...@brondsema.net>
AuthorDate: Thu Feb 20 13:22:10 2020 -0500
[#8351] use codecs.open instead of io.open when dumping json https://stackoverflow.com/a/31343739/
---
Allura/allura/scripts/trac_export.py | 4 ++--
Allura/allura/tasks/export_tasks.py | 4 ++--
Allura/allura/tests/test_tasks.py | 4 +---
ForgeImporters/forgeimporters/base.py | 4 ++--
ForgeImporters/forgeimporters/tests/test_base.py | 4 ++--
scripts/teamforge-import.py | 7 ++++---
scripts/trac_export_wiki.py | 4 ++--
7 files changed, 15 insertions(+), 16 deletions(-)
diff --git a/Allura/allura/scripts/trac_export.py b/Allura/allura/scripts/trac_export.py
index 9d6a991..6b47385 100644
--- a/Allura/allura/scripts/trac_export.py
+++ b/Allura/allura/scripts/trac_export.py
@@ -30,12 +30,12 @@ import time
import re
from optparse import OptionParser
from itertools import islice
+import codecs
from bs4 import BeautifulSoup, NavigableString
import dateutil.parser
import pytz
import six
-from io import open
try:
from forgeimporters.base import ProjectExtractor
@@ -326,7 +326,7 @@ def main():
out_file = sys.stdout
if options.out_filename:
- out_file = open(options.out_filename, 'w')
+ out_file = codecs.open(options.out_filename, 'w', encoding='utf-8')
out_file.write(
json.dumps(doc, cls=DateJSONEncoder, indent=2, sort_keys=True))
# It's bad habit not to terminate lines
diff --git a/Allura/allura/tasks/export_tasks.py b/Allura/allura/tasks/export_tasks.py
index dfc4d61..9693e1a 100644
--- a/Allura/allura/tasks/export_tasks.py
+++ b/Allura/allura/tasks/export_tasks.py
@@ -21,6 +21,7 @@ import os
import os.path
import logging
import shutil
+import codecs
import tg
from tg import app_globals as g, tmpl_context as c
@@ -29,7 +30,6 @@ from allura.tasks import mail_tasks
from allura.lib.decorators import task
from allura.lib import helpers as h
from allura.model.repository import zipdir
-from io import open
log = logging.getLogger(__name__)
@@ -102,7 +102,7 @@ class BulkExport(object):
tool = app.config.options.mount_point
json_file = os.path.join(export_path, '%s.json' % tool)
try:
- with open(json_file, 'w') as f:
+ with codecs.open(json_file, 'w', encoding='utf-8') as f:
app.bulk_export(f, export_path, with_attachments)
except Exception:
log.error('Error exporting: %s on %s', tool,
diff --git a/Allura/allura/tests/test_tasks.py b/Allura/allura/tests/test_tasks.py
index 79e873c..8f63478 100644
--- a/Allura/allura/tests/test_tasks.py
+++ b/Allura/allura/tests/test_tasks.py
@@ -641,12 +641,10 @@ class TestExportTasks(unittest.TestCase):
@mock.patch('allura.tasks.export_tasks.shutil')
@mock.patch('allura.tasks.export_tasks.zipdir')
- @mock.patch('forgewiki.wiki_main.ForgeWikiApp.bulk_export')
@td.with_wiki
- def test_bulk_export(self, wiki_bulk_export, zipdir, shutil):
+ def test_bulk_export(self, zipdir, shutil):
M.MonQTask.query.remove()
export_tasks.bulk_export(['wiki'])
- assert_equal(wiki_bulk_export.call_count, 1)
temp = '/tmp/bulk_export/p/test/test'
zipfn = '/tmp/bulk_export/p/test/test.zip'
zipdir.assert_called_with(temp, zipfn)
diff --git a/ForgeImporters/forgeimporters/base.py b/ForgeImporters/forgeimporters/base.py
index 14ceeb1..f4e78c9 100644
--- a/ForgeImporters/forgeimporters/base.py
+++ b/ForgeImporters/forgeimporters/base.py
@@ -26,7 +26,7 @@ from collections import defaultdict
import traceback
from six.moves.urllib.parse import urlparse
from datetime import datetime
-from io import open
+import codecs
from six.moves import filter
import six
try:
@@ -665,6 +665,6 @@ def save_importer_upload(project, filename, data):
except OSError as e:
if e.errno != errno.EEXIST:
raise
- with open(dest_file, 'w') as fp:
+ with codecs.open(dest_file, 'w', encoding='utf-8') as fp:
fp.write(data)
return dest_file
diff --git a/ForgeImporters/forgeimporters/tests/test_base.py b/ForgeImporters/forgeimporters/tests/test_base.py
index 8049ea5..f23ee8f 100644
--- a/ForgeImporters/forgeimporters/tests/test_base.py
+++ b/ForgeImporters/forgeimporters/tests/test_base.py
@@ -367,10 +367,10 @@ def test_save_importer_upload(giup, os):
os.makedirs.side_effect = OSError(errno.EEXIST, 'foo')
_open = mock.MagicMock()
fp = _open.return_value.__enter__.return_value
- with mock.patch.object(base, 'open', _open):
+ with mock.patch.object(base.codecs, 'open', _open):
base.save_importer_upload('project', 'file', 'data')
os.makedirs.assert_called_once_with('path')
- _open.assert_called_once_with('path/file', 'w')
+ _open.assert_called_once_with('path/file', 'w', encoding='utf-8')
fp.write.assert_called_once_with('data')
os.makedirs.side_effect = OSError(errno.EACCES, 'foo')
diff --git a/scripts/teamforge-import.py b/scripts/teamforge-import.py
index 25fa95f..44a4483 100644
--- a/scripts/teamforge-import.py
+++ b/scripts/teamforge-import.py
@@ -35,6 +35,7 @@ from datetime import datetime
from six.moves.configparser import ConfigParser
import random
import string
+import codecs
import sqlalchemy
from suds.client import Client
@@ -161,7 +162,7 @@ def main():
get_news(project)
if not options.skip_unsupported_check:
check_unsupported_tools(project)
- with open(os.path.join(options.output_dir, 'users.json'), 'w') as user_file:
+ with codecs.open(os.path.join(options.output_dir, 'users.json'), 'w', encoding='utf-8') as user_file:
json.dump(users, user_file, default=str)
except:
log.exception('Error extracting %s' % pid)
@@ -681,7 +682,7 @@ def save(content, project, *paths):
out_file = os.path.join(options.output_dir, project.id, *paths)
if not os.path.exists(os.path.dirname(out_file)):
os.makedirs(os.path.dirname(out_file))
- with open(out_file, 'w') as out:
+ with codecs.open(out_file, 'w', encoding='utf-8') as out:
out.write(content.encode('utf-8'))
@@ -717,7 +718,7 @@ def download_file(tool, url_path, *filepaths):
'returnToUrl': url,
'sfsubmit': 'submit'
}))
- with open(out_file, 'w') as out:
+ with codecs.open(out_file, 'w', encoding='utf-8') as out:
out.write(resp.fp.read())
return out_file
diff --git a/scripts/trac_export_wiki.py b/scripts/trac_export_wiki.py
index d698c04..8cf4089 100755
--- a/scripts/trac_export_wiki.py
+++ b/scripts/trac_export_wiki.py
@@ -21,9 +21,9 @@ from __future__ import unicode_literals
from __future__ import absolute_import
import sys
from optparse import OptionParser
+import codecs
from tracwikiimporter.scripts.wiki_from_trac.extractors import WikiExporter
-from io import open
def parse_options():
@@ -54,6 +54,6 @@ if __name__ == '__main__':
out = sys.stdout
if options.out_filename:
- out = open(options.out_filename, 'w')
+ out = codecs.open(options.out_filename, 'w', encoding='utf-8')
exporter.export(out)