[damned-lies] Slightly modernized some code parts



commit 9cd79aacd8ae2c4fc9de604bcf4e0dbaea1e7341
Author: Claude Paroz <claude 2xlibre net>
Date:   Fri Aug 22 12:11:24 2014 +0200

    Slightly modernized some code parts
    
    And fixed some test failures.

 languages/tests.py                        |    4 +-
 stats/management/commands/update-trans.py |   28 +++++++++++-------------
 stats/potdiff.py                          |    8 +++---
 stats/tests/tests.py                      |   33 +++++++++++++---------------
 stats/utils.py                            |   33 ++++++++++++----------------
 5 files changed, 48 insertions(+), 58 deletions(-)
---
diff --git a/languages/tests.py b/languages/tests.py
index 7082adc..5e68ede 100644
--- a/languages/tests.py
+++ b/languages/tests.py
@@ -26,8 +26,8 @@ class LanguageTestCase(TestCase):
     fixtures = ['sample_data.json']
 
     def testLanguageReleaseXML(self):
-        response = self.client.get(reverse("languages.views.language_release_xml", args=['fr', 
'gnome-2-30']))
-        self.assertContains(response, """<stats language="fr" release="gnome-2-30">""")
+        response = self.client.get(reverse("languages.views.language_release_xml", args=['fr', 'gnome-3-8']))
+        self.assertContains(response, """<stats language="fr" release="gnome-3-8">""")
 
     def test_language_from_ianacode(self):
         Language.objects.create(name='Belarussian', locale='be')
diff --git a/stats/management/commands/update-trans.py b/stats/management/commands/update-trans.py
index 3c97bdc..33e691b 100644
--- a/stats/management/commands/update-trans.py
+++ b/stats/management/commands/update-trans.py
@@ -4,8 +4,8 @@ import re
 import shutil
 import itertools
 
+from django.core.management import call_command
 from django.core.management.base import BaseCommand
-from django.core.management.commands import makemessages
 from django.db.models import F
 
 from teams.models import Team
@@ -42,22 +42,20 @@ class Command(BaseCommand):
 
         # Extract DB translatable strings into database-content.py
         dbfile = os.path.join(os.path.abspath('.'), 'database-content.py')
-        f=open(dbfile, 'w')
-
-        for value in itertools.chain(
-            Team.objects.values_list('description', flat=True),
-            Language.objects.exclude(name__exact=F('locale')).values_list('name', flat=True),
-            Domain.objects.distinct().values_list('description', flat=True),
-            Module.objects.exclude(name__exact=F('description')).values_list('description', flat=True),
-            Module.objects.filter(comment__isnull=False).values_list('comment', flat=True),
-            Release.objects.values_list('description', flat=True)):
-            if value:
-                value = re.sub(r'\r\n|\r|\n', '\n', value)
-                f.write("_(u\"\"\"%s\"\"\")\n" % value.encode('utf-8'))
-        f.close()
+        with open(dbfile, 'w') as fh:
+            for value in itertools.chain(
+                Team.objects.values_list('description', flat=True),
+                Language.objects.exclude(name__exact=F('locale')).values_list('name', flat=True),
+                Domain.objects.distinct().values_list('description', flat=True),
+                Module.objects.exclude(name__exact=F('description')).values_list('description', flat=True),
+                Module.objects.filter(comment__isnull=False).values_list('comment', flat=True),
+                Release.objects.values_list('description', flat=True)):
+                if value:
+                    value = re.sub(r'\r\n|\r|\n', '\n', value)
+                    fh.write("_(u\"\"\"%s\"\"\")\n" % value.encode('utf-8'))
 
         # Run makemessages -l ll
-        makemessages.make_messages(lang_code, verbosity=2, extensions=['.html'])
+        call_command('makemessages', locale=lang_code, verbosity=2, extensions=['.html'])
 
         # Delete database-content.py
         os.unlink(dbfile)
diff --git a/stats/potdiff.py b/stats/potdiff.py
index 33c175b..c74ae3f 100644
--- a/stats/potdiff.py
+++ b/stats/potdiff.py
@@ -24,13 +24,13 @@ USE_DIFFLIB = 0
 
 def diff(pota, potb):
     """Returns a list of differing lines between two files."""
-    f1 = open(pota, "r")
-    data1 = f1.read()
+    with open(pota, "r") as f1:
+        data1 = f1.read()
     res1 = _parse_contents(data1)
     res1.sort()
 
-    f2 = open(potb, "r")
-    data2 = f2.read()
+    with open(potb, "r") as f2:
+        data2 = f2.read()
     res2 = _parse_contents(data2)
     res2.sort()
 
diff --git a/stats/tests/tests.py b/stats/tests/tests.py
index 49c7473..20ea96e 100644
--- a/stats/tests/tests.py
+++ b/stats/tests/tests.py
@@ -122,8 +122,7 @@ class ModuleTestCase(TestCase):
         self.assertEqual(fr_po_stat.pot_url(), u"/POT/gnome-hello.master/gnome-hello.master.pot")
         self.assertEqual(fr_doc_stat.po_url(), u"/POT/gnome-hello.master/docs/gnome-hello-help.master.fr.po")
         self.assertRaises(Statistics.DoesNotExist, Statistics.objects.get, pk=ghost_stat.pk)
-        from stats.utils import has_toolkit
-        if has_toolkit:
+        if utils.has_toolkit:
             self.assertEqual(fr_po_stat.po_url(reduced=True), 
u"/POT/gnome-hello.master/gnome-hello.master.fr.reduced.po")
             self.assertEqual(fr_po_stat.translated(scope='part'), 44)
 
@@ -163,13 +162,11 @@ class ModuleTestCase(TestCase):
         # Create a new file with translation
         new_file_path = os.path.join(self.branch.co_path(), "dummy_file.py")
         new_string = "Dummy string for D-L tests"
-        f = open(new_file_path, 'w')
-        f.write("a = _('%s')\n" % new_string)
-        f.close()
+        with open(new_file_path, 'w') as fh:
+            fh.write("a = _('%s')\n" % new_string)
         # Add the new file to POTFILES.in
-        f = open(os.path.join(self.branch.co_path(), "po", "POTFILES.in"), 'a')
-        f.write("dummy_file.py\n")
-        f.close()
+        with open(os.path.join(self.branch.co_path(), "po", "POTFILES.in"), 'a') as fh:
+            fh.write("dummy_file.py\n")
         # Regenerate stats (mail should be sent)
         self.branch.update_stats(force=False, checkout=False)
         # Assertions
@@ -242,9 +239,9 @@ class ModuleTestCase(TestCase):
                 self.assertIn(cmd, cmds[idx])
             self.assertIn('intltool-update -g', cmds[-1])
 
-        # Check lang has been inserted in LINGUAS file, before 'fr'
+        # Check lang has been inserted in LINGUAS file, before 'de'
         with open(os.path.join(branch.co_path(), domain.directory, 'LINGUAS')) as fh:
-            self.assertIn('bem\nfr', fh.read())
+            self.assertIn('bem\nde', fh.read())
 
         # Documentation
         domain = self.mod.domain_set.get(name='help')
@@ -285,7 +282,7 @@ class ModuleTestCase(TestCase):
 class StatisticsTests(TestCase):
     fixtures = ['sample_data.json']
     def test_total_stats_for_lang(self):
-        rel  = Release.objects.get(name="gnome-2-30")
+        rel  = Release.objects.get(name="gnome-3-8")
         total_for_lang = rel.total_for_lang(Language.objects.get(locale='fr'))
         self.assertEqual(total_for_lang['ui']['total'], total_for_lang['ui_part']['total'])
         self.assertTrue(total_for_lang['ui']['untranslated'] == total_for_lang['ui_part']['untranslated'] == 
0)
@@ -296,18 +293,18 @@ class StatisticsTests(TestCase):
 
     def test_stats_links(self):
         pot_stats = Statistics.objects.get(
-            branch__module__name='zenity', branch__name='gnome-2-30',
+            branch__module__name='zenity', branch__name='gnome-3-8',
             domain__name='po', language__isnull=True)
-        self.assertEqual(pot_stats.po_url(), "/POT/zenity.gnome-2-30/zenity.gnome-2-30.pot")
+        self.assertEqual(pot_stats.po_url(), "/POT/zenity.gnome-3-8/zenity.gnome-3-8.pot")
         stats = Statistics.objects.get(
-            branch__module__name='zenity', branch__name='gnome-2-30',
+            branch__module__name='zenity', branch__name='gnome-3-8',
             domain__name='po', language__locale='it')
-        self.assertEqual(stats.po_url(), "/POT/zenity.gnome-2-30/zenity.gnome-2-30.it.po")
-        self.assertEqual(stats.po_url(reduced=True), 
"/POT/zenity.gnome-2-30/zenity.gnome-2-30.it.reduced.po")
+        self.assertEqual(stats.po_url(), "/POT/zenity.gnome-3-8/zenity.gnome-3-8.it.po")
+        self.assertEqual(stats.po_url(reduced=True), "/POT/zenity.gnome-3-8/zenity.gnome-3-8.it.reduced.po")
         # Same for a fake stats
         stats = FakeLangStatistics(pot_stats, Language.objects.get(locale='bem'))
-        self.assertEqual(stats.po_url(), "/module/po/zenity/po/gnome-2-30/bem.po")
-        self.assertEqual(stats.po_url(reduced=True), "/module/po/zenity/po/gnome-2-30/bem-reduced.po")
+        self.assertEqual(stats.po_url(), "/module/po/zenity/po/gnome-3-8/bem.po")
+        self.assertEqual(stats.po_url(reduced=True), "/module/po/zenity/po/gnome-3-8/bem-reduced.po")
 
     def _test_update_statistics(self):
         # Temporarily deactivated, since update_stats cannot receive stats any more
diff --git a/stats/utils.py b/stats/utils.py
index c6a3106..7fd04bc 100644
--- a/stats/utils.py
+++ b/stats/utils.py
@@ -163,9 +163,8 @@ def po_grep(in_file, out_file, filter_):
             # Probably bad filter syntax in DB (TODO: log it)
             return
     grepfilter = pogrep.GrepFilter(filter_str, filter_loc, useregexp=True, invertmatch=True, 
keeptranslations=True)
-    out = open(out_file, "w")
-    pogrep.rungrep(in_file, out, None, grepfilter)
-    out.close()
+    with open(out_file, "w") as out:
+        pogrep.rungrep(in_file, out, None, grepfilter)
     # command-line variant:
     """
     cmd = "pogrep --invert-match --header --search=locations --regexp \"gschema\\.xml\\.in|schemas\\.in\" 
%(full_po)s %(part_po)s" % {
@@ -490,7 +489,8 @@ def check_identical_figures(fig_stats, base_path, lang):
     for fig in fig_stats:
         trans_path = os.path.join(base_path, lang, fig['path'])
         if os.access(trans_path, os.R_OK):
-            fig_file = open(trans_path, 'rb').read()
+            with open(trans_path, 'rb') as fh:
+                fig_file = fh.read()
             trans_hash = hashlib.md5(fig_file).hexdigest()
             if fig['hash'] == trans_hash:
                 errors.append(("warn-ext", "Figures should not be copied when identical to original (%s)." % 
trans_path))
@@ -518,15 +518,11 @@ def is_po_reduced(file_path):
 
 def copy_file(file1, file2):
     try:
-        fin = open(file1, "rb")
-        fout = open(file2, "wb")
-
-        block = fin.read(16*1024)
-        while block:
-            fout.write(block)
+        with open(file1, "rb") as fin, open(file2, "wb") as fout:
             block = fin.read(16*1024)
-        fout.close()
-        fin.close()
+            while block:
+                fout.write(block)
+                block = fin.read(16*1024)
 
         if os.access(file2, os.R_OK):
             return 1
@@ -538,13 +534,12 @@ def copy_file(file1, file2):
 def compute_md5(full_path):
     m = hashlib.md5()
     block_size=2**13
-    f = open(full_path)
-    while True:
-        data = f.read(block_size)
-        if not data:
-            break
-        m.update(data)
-    f.close()
+    with open(full_path) as fh:
+        while True:
+            data = fh.read(block_size)
+            if not data:
+                break
+            m.update(data)
     return m.hexdigest()
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]