diff -Nru i18nspector-0.25.7/data/languages i18nspector-0.25.8/data/languages --- i18nspector-0.25.7/data/languages 2018-12-20 19:02:24.000000000 +0000 +++ i18nspector-0.25.8/data/languages 2019-02-21 21:23:30.000000000 +0000 @@ -860,6 +860,9 @@ [mt] names = Maltese +characters = + Ċ Ġ ħ Ħ Ż + ċ ġ ħ ħ ż principal-territory = MT [mus] diff -Nru i18nspector-0.25.7/debian/changelog i18nspector-0.25.8/debian/changelog --- i18nspector-0.25.7/debian/changelog 2018-12-26 06:52:17.000000000 +0000 +++ i18nspector-0.25.8/debian/changelog 2019-02-25 11:41:55.000000000 +0000 @@ -1,3 +1,10 @@ +i18nspector (0.25.8-1) unstable; urgency=medium + + * New upstream version. + - Python 3.8 compatibility. + + -- Stuart Prescott Mon, 25 Feb 2019 22:41:55 +1100 + i18nspector (0.25.7-1) unstable; urgency=medium [ Ondřej Nový ] diff -Nru i18nspector-0.25.7/debian/copyright i18nspector-0.25.8/debian/copyright --- i18nspector-0.25.7/debian/copyright 2018-12-26 06:52:17.000000000 +0000 +++ i18nspector-0.25.8/debian/copyright 2019-02-25 11:41:55.000000000 +0000 @@ -4,11 +4,11 @@ Source: http://jwilk.net/software/i18nspector Files: * -Copyright: © 2012-2018, Jakub Wilk +Copyright: © 2012-2019, Jakub Wilk License: Expat Files: debian/* -Copyright: © 2012-2018, Stuart Prescott +Copyright: © 2012-2019, Stuart Prescott License: Expat License: Expat diff -Nru i18nspector-0.25.7/doc/changelog i18nspector-0.25.8/doc/changelog --- i18nspector-0.25.7/doc/changelog 2018-12-20 19:02:24.000000000 +0000 +++ i18nspector-0.25.8/doc/changelog 2019-02-21 21:23:30.000000000 +0000 @@ -1,3 +1,13 @@ +i18nspector (0.25.8) unstable; urgency=low + + * Fix compatibility with Python 3.8. + * Add writing system information for Maltese. + * Rephrase help messages for --help, --version. + * Improve error handling. + * Improve the test suite. + + -- Jakub Wilk Thu, 21 Feb 2019 22:23:17 +0100 + i18nspector (0.25.7) unstable; urgency=low * Drop support for Python < 3.3.3. diff -Nru i18nspector-0.25.7/doc/i18nspector.1 i18nspector-0.25.8/doc/i18nspector.1 --- i18nspector-0.25.7/doc/i18nspector.1 2018-12-20 19:02:26.000000000 +0000 +++ i18nspector-0.25.8/doc/i18nspector.1 2019-02-21 21:23:42.000000000 +0000 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH I18NSPECTOR 1 "2018-12-20" "i18nspector 0.25.7" "" +.TH I18NSPECTOR 1 "2019-02-21" "i18nspector 0.25.8" "" .SH NAME i18nspector \- checking tool for gettext POT, PO and MO files . @@ -57,10 +57,10 @@ The default is to use only a single process. .TP .B \-h\fP,\fB \-\-help -Show the help message and exit. +Show help message and exit. .TP .B \-\-version -Show the program's version information and exit. +Show version information and exit. .UNINDENT .SH OUTPUT FORMAT .sp diff -Nru i18nspector-0.25.7/doc/LICENSE i18nspector-0.25.8/doc/LICENSE --- i18nspector-0.25.7/doc/LICENSE 2018-12-20 19:02:24.000000000 +0000 +++ i18nspector-0.25.8/doc/LICENSE 2019-02-21 21:23:30.000000000 +0000 @@ -1,4 +1,4 @@ -Copyright © 2012-2018 Jakub Wilk +Copyright © 2012-2019 Jakub Wilk Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal diff -Nru i18nspector-0.25.7/doc/manpage.rst i18nspector-0.25.8/doc/manpage.rst --- i18nspector-0.25.7/doc/manpage.rst 2018-12-20 19:02:24.000000000 +0000 +++ i18nspector-0.25.8/doc/manpage.rst 2019-02-21 21:23:30.000000000 +0000 @@ -7,7 +7,7 @@ ---------------------------------------------- :manual section: 1 -:version: i18nspector 0.25.7 +:version: i18nspector 0.25.8 :date: |date| Synopsis @@ -35,9 +35,9 @@ or ``auto`` to determine the number automatically. The default is to use only a single process. -h, --help - Show the help message and exit. + Show help message and exit. --version - Show the program's version information and exit. + Show version information and exit. Output format ------------- diff -Nru i18nspector-0.25.7/lib/check/__init__.py i18nspector-0.25.8/lib/check/__init__.py --- i18nspector-0.25.7/lib/check/__init__.py 2018-12-20 19:02:24.000000000 +0000 +++ i18nspector-0.25.8/lib/check/__init__.py 2019-02-21 21:23:30.000000000 +0000 @@ -115,7 +115,7 @@ # prevent such disaster, fail early if the file doesn't exit. try: os.stat(self.path) - except EnvironmentError as exc: + except OSError as exc: self.tag('os-error', tags.safestr(exc.strerror)) return if self.options.file_type is None: diff -Nru i18nspector-0.25.7/lib/cli.py i18nspector-0.25.8/lib/cli.py --- i18nspector-0.25.7/lib/cli.py 2018-12-20 19:02:24.000000000 +0000 +++ i18nspector-0.25.8/lib/cli.py 2019-02-21 21:23:30.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright © 2012-2018 Jakub Wilk +# Copyright © 2012-2019 Jakub Wilk # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal @@ -39,7 +39,7 @@ from lib import tags from lib import terminal -__version__ = '0.25.7' +__version__ = '0.25.8' def initialize_terminal(): if sys.stdout.isatty(): @@ -93,11 +93,10 @@ real_root = os.path.join(tmpdir, '') else: real_root = os.path.join(tmpdir, 's', '') - with open(os.devnull) as bitbucket: - ipc.check_call( - ['dpkg-source', '--no-copy', '--no-check', '-x', filename, real_root], - stdout=bitbucket # dpkg-source would be noisy without this... - ) + ipc.check_call( + ['dpkg-source', '--no-copy', '--no-check', '-x', filename, real_root], + stdout=ipc.DEVNULL # dpkg-source would be noisy without this... + ) options = copy_options(options, ignore_tags=ignore_tags, fake_root=(real_root, os.path.join(filename, '')) @@ -161,7 +160,7 @@ option_strings=option_strings, dest=dest, nargs=0, - help="show program's version information and exit" + help='show version information and exit' ) @staticmethod diff -Nru i18nspector-0.25.7/lib/intexpr.py i18nspector-0.25.8/lib/intexpr.py --- i18nspector-0.25.7/lib/intexpr.py 2018-12-20 19:02:24.000000000 +0000 +++ i18nspector-0.25.8/lib/intexpr.py 2019-02-21 21:23:30.000000000 +0000 @@ -169,7 +169,7 @@ def _visit(self, node, *args): try: fn = getattr(self, '_visit_' + type(node).__name__.lower()) - except KeyError: # no coverage + except AttributeError: # no coverage raise NotImplementedError(type(node).__name__) return fn(node, *args) @@ -314,6 +314,8 @@ def _visit_num(self, node): return self._check_overflow(node.n) + _visit_constant = _visit_num + def _visit_name(self, node): return self._check_overflow(self._ctxt.n) @@ -510,6 +512,8 @@ return return (n, n) + _visit_constant = _visit_num + def _visit_name(self, node): return (0, self._ctxt.max - 1) @@ -667,6 +671,8 @@ return return (0, 1) + _visit_constant = _visit_num + def _visit_name(self, node): # pylint: disable=unused-argument pass diff -Nru i18nspector-0.25.7/tests/coverage i18nspector-0.25.8/tests/coverage --- i18nspector-0.25.7/tests/coverage 2018-12-20 19:02:24.000000000 +0000 +++ i18nspector-0.25.8/tests/coverage 2019-02-21 21:23:30.000000000 +0000 @@ -3,29 +3,29 @@ Name Stmts Miss Branch BrPart Cover Missing ----------------------------------------------------------------------------- lib/__init__.py 1 0 0 0 100% -lib/check/__init__.py 802 750 503 0 4% 82-86, 89-102, 110, 116-201, 204-220, 224-356, 360-504, 508-580, 584-627, 632-667, 672-716, 719-797, 800-880, 883-997, 1000-1007, 1010-1026, 1031 -lib/check/msgformat/__init__.py 82 69 36 0 11% 31, 35, 38, 41-151 +lib/check/__init__.py 801 749 503 0 4% 82-86, 89-102, 116-201, 204-220, 224-356, 360-504, 508-580, 584-627, 632-667, 672-716, 719-797, 800-880, 883-997, 1000-1007, 1010-1026, 1031 +lib/check/msgformat/__init__.py 81 68 36 0 11% 31, 38, 41-151 lib/check/msgformat/c.py 67 56 36 0 11% 37-44, 47-105, 108-129 lib/check/msgformat/pybrace.py 35 26 13 0 19% 37-48, 51-75 lib/check/msgformat/python.py 77 67 47 0 8% 37-109, 112-149 lib/check/msgrepr.py 11 7 2 0 31% 28-34 -lib/cli.py 158 123 44 0 17% 45-49, 58-67, 70-71, 74-76, 82-112, 115-120, 126-132, 135-143, 146-154, 160, 169-184, 187-193, 196-230 +lib/cli.py 157 122 44 0 17% 45-49, 58-67, 70-71, 74-76, 82-111, 114-119, 125-131, 134-142, 145-153, 159, 168-183, 186-192, 195-229 lib/domains.py 15 0 0 0 100% -lib/encodings.py 127 36 34 1 73% 50-68, 80-88, 187, 201-213, 217-221, 185->187 +lib/encodings.py 124 34 32 1 75% 49-65, 77-85, 184, 198-210, 214-218, 182->184 lib/gettext.py 105 0 36 0 100% -lib/iconv.py 158 54 52 17 60% 41-42, 55-57, 64, 66, 68, 70, 83-84, 97-98, 111-123, 130-131, 134-145, 151, 153, 155, 157, 166-167, 180-181, 198-213, 222-223, 226-237, 63->64, 65->66, 67->68, 69->70, 82->83, 96->97, 105->110, 110->111, 129->130, 150->151, 152->153, 154->155, 156->157, 165->166, 179->180, 195->198, 221->222 -lib/intexpr.py 407 0 126 0 100% +lib/iconv.py 158 49 52 18 63% 41-42, 55-57, 64, 66, 68, 70, 83-84, 97-98, 111-123, 130-131, 134-145, 151, 153, 155, 157, 166-167, 180-181, 203-204, 213, 222-223, 226-237, 63->64, 65->66, 67->68, 69->70, 82->83, 96->97, 105->110, 110->111, 129->130, 150->151, 152->153, 154->155, 156->157, 165->166, 179->180, 198->213, 200->203, 221->222 +lib/intexpr.py 409 0 126 0 100% lib/ling.py 243 2 98 3 99% 181, 281, 159->162, 179->181, 277->283 lib/misc.py 41 0 16 0 100% -lib/moparser.py 138 92 56 3 28% 68, 76, 91-109, 112-180, 185-194, 197, 56->58, 74->76, 196->197 +lib/moparser.py 138 92 56 3 28% 68, 76, 91-109, 112-178, 183-192, 195, 56->58, 74->76, 194->195 lib/paths.py 7 2 0 0 71% 36-37 -lib/polib4us.py 111 76 26 0 26% 41-42, 56, 72, 75-96, 100, 110-113, 134-146, 150, 162, 171-176, 187-195, 206, 209, 213-217, 229-236, 244-253 +lib/polib4us.py 110 75 26 0 26% 41-42, 56, 72, 75-96, 100, 110-112, 133-145, 149, 161, 170-175, 186-194, 205, 208, 212-216, 228-235, 243-252 lib/strformat/__init__.py 0 0 0 0 100% lib/strformat/c.py 285 0 168 0 100% lib/strformat/pybrace.py 156 0 74 0 100% lib/strformat/python.py 206 0 94 0 100% -lib/tags.py 132 37 40 6 70% 47-51, 55, 58, 66, 111, 113, 116, 135-136, 147-149, 154-156, 169, 180-187, 193-197, 207-220, 239, 245, 54->55, 56->58, 110->111, 112->113, 115->116, 168->169 -lib/terminal.py 55 24 4 0 53% 79-106 +lib/tags.py 131 37 40 6 70% 47-51, 55, 58, 66, 111, 113, 116, 135-136, 147-149, 154-156, 169, 180-187, 193-197, 207-220, 239, 245, 54->55, 56->58, 110->111, 112->113, 115->116, 168->169 +lib/terminal.py 46 17 6 1 58% 37-38, 64, 80-93, 63->64 lib/xml.py 21 0 2 0 100% ----------------------------------------------------------------------------- -TOTAL 3440 1421 1507 30 55% +TOTAL 3425 1403 1507 32 55% diff -Nru i18nspector-0.25.7/tests/test_iconv.py i18nspector-0.25.8/tests/test_iconv.py --- i18nspector-0.25.7/tests/test_iconv.py 2018-12-20 19:02:24.000000000 +0000 +++ i18nspector-0.25.8/tests/test_iconv.py 2019-02-21 21:23:30.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright © 2013 Jakub Wilk +# Copyright © 2013-2019 Jakub Wilk # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal @@ -20,6 +20,7 @@ from nose.tools import ( assert_equal, + assert_raises, ) import lib.iconv as M @@ -47,4 +48,9 @@ b = b'Do b\xB9ch kim r\xCAt qu\xFD, s\xCF \xAE\xD3 l\xBEp v\xAB x\xAD\xACng' e = 'TCVN-5712' +def test_incomplete_char(): + b = u'Ę'.encode('UTF-8')[:1] + with assert_raises(UnicodeDecodeError): + M.decode(b, 'UTF-8') + # vim:ts=4 sts=4 sw=4 et diff -Nru i18nspector-0.25.7/tests/tools.py i18nspector-0.25.8/tests/tools.py --- i18nspector-0.25.7/tests/tools.py 2018-12-20 19:02:24.000000000 +0000 +++ i18nspector-0.25.8/tests/tools.py 2019-02-21 21:23:30.000000000 +0000 @@ -1,4 +1,4 @@ -# Copyright © 2012-2016 Jakub Wilk +# Copyright © 2012-2019 Jakub Wilk # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal @@ -36,7 +36,7 @@ prefix='i18nspector.tests.', ) -class IsolatedError(Exception): +class IsolatedException(Exception): pass def _n_relevant_tb_levels(tb): @@ -86,7 +86,7 @@ msg = msg.decode('UTF-8').rstrip('\n') pid, status = os.waitpid(pid, 0) if status == (EXIT_EXCEPTION << 8): - raise IsolatedError('\n\n' + msg) + raise IsolatedException() from Exception('\n\n' + msg) elif status == (EXIT_SKIP_TEST << 8): raise nose.SkipTest(msg) elif status == 0 and msg == '':