Hello community,
here is the log from the commit of package python-translation-finder for
openSUSE:Factory checked in at 2019-07-22 17:19:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-translation-finder (Old)
and /work/SRC/openSUSE:Factory/.python-translation-finder.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-translation-finder"
Mon Jul 22 17:19:35 2019 rev:5 rq:717567 version:1.6
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-translation-finder/python-translation-finder.changes
2019-06-03 18:57:48.492374601 +0200
+++
/work/SRC/openSUSE:Factory/.python-translation-finder.new.4126/python-translation-finder.changes
2019-07-22 17:19:36.481907296 +0200
@@ -1,0 +2,10 @@
+Mon Jul 22 12:32:02 UTC 2019 - Tomáš Chvátal <[email protected]>
+
+- Update to 1.6:
+ * Improved discovery of POT files.
+ * Added support for subtitle files supported in Weblate 3.7.
+ * Improved detection of actual JSON formats.
+ * Added support for detecting PHP files.
+ * Improved detection of YAML formats.
+
+-------------------------------------------------------------------
Old:
----
1.5.tar.gz
New:
----
1.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-translation-finder.spec ++++++
--- /var/tmp/diff_new_pack.sJhExx/_old 2019-07-22 17:19:37.009907153 +0200
+++ /var/tmp/diff_new_pack.sJhExx/_new 2019-07-22 17:19:37.009907153 +0200
@@ -20,7 +20,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define modname translation-finder
Name: python-translation-finder
-Version: 1.5
+Version: 1.6
Release: 0
Summary: Translation Files Finder
License: GPL-3.0-or-later
@@ -28,20 +28,20 @@
URL: https://github.com/WeblateOrg/translation-finder
# test_data/linked has to be symlink, hance using github tar ball
Source:
https://github.com/WeblateOrg/translation-finder/archive/%{version}.tar.gz
-BuildRequires: %{python_module PyYAML}
BuildRequires: %{python_module chardet}
BuildRequires: %{python_module clint}
BuildRequires: %{python_module pytest-runner}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module requests-toolbelt}
+BuildRequires: %{python_module ruamel.yaml}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module six}
BuildRequires: %{python_module twine}
BuildRequires: fdupes
BuildRequires: python-pathlib2
BuildRequires: python-rpm-macros
-Requires: python-PyYAML
Requires: python-chardet
+Requires: python-ruamel.yaml
Requires: python-setuptools
Requires: python-six
Requires(post): update-alternatives
++++++ 1.5.tar.gz -> 1.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/translation-finder-1.5/.travis.yml
new/translation-finder-1.6/.travis.yml
--- old/translation-finder-1.5/.travis.yml 2019-05-29 10:22:34.000000000
+0200
+++ new/translation-finder-1.6/.travis.yml 2019-06-26 13:35:51.000000000
+0200
@@ -1,9 +1,10 @@
language: python
+dist: xenial
python:
- "2.7"
- - "3.4"
- "3.5"
- "3.6"
+ - "3.7"
- "pypy3"
matrix:
include:
@@ -31,9 +32,6 @@
- choco install python2
- export PATH="/c/Python27:/c/Python27/Scripts:$PATH"
- python -m pip install --upgrade pip wheel
- # Obtain Python 3.7 from xenial as per
https://github.com/travis-ci/travis-ci/issues/9815
- - python: 3.7
- dist: xenial
install:
# Get newer pip and whell for binary caching support
- pip install --upgrade pip wheel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/translation-finder-1.5/CHANGES.rst
new/translation-finder-1.6/CHANGES.rst
--- old/translation-finder-1.5/CHANGES.rst 2019-05-29 10:22:34.000000000
+0200
+++ new/translation-finder-1.6/CHANGES.rst 2019-06-26 13:35:51.000000000
+0200
@@ -1,6 +1,16 @@
Changelog
=========
+1.6
+---
+
+* Released on 26th June 2019.
+* Improved discovery of POT files.
+* Added support for subtitle files supported in Weblate 3.7.
+* Improved detection of actual JSON formats.
+* Added support for detecting PHP files.
+* Improved detection of YAML formats.
+
1.5
---
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/translation-finder-1.5/README.rst
new/translation-finder-1.6/README.rst
--- old/translation-finder-1.5/README.rst 2019-05-29 10:22:34.000000000
+0200
+++ new/translation-finder-1.6/README.rst 2019-06-26 13:35:51.000000000
+0200
@@ -32,13 +32,13 @@
>>> from pprint import pprint
>>> results = discover('translation_finder/test_data/')
>>> len(results)
- 13
+ 19
>>> pprint(results[0].match)
{'file_format': 'aresource',
'filemask': 'app/src/res/main/values-*/strings.xml',
'name': 'android',
'template': 'app/src/res/main/values/strings.xml'}
- >>> pprint(results[5].match)
+ >>> pprint(results[8].match)
{'file_format': 'po',
'filemask': 'locales/*.po',
'new_base': 'locales/messages.pot'}
@@ -49,7 +49,7 @@
>>> pprint(results[0].meta)
{'discovery': 'TransifexDiscovery', 'origin': 'Transifex', 'priority': 500}
- >>> pprint(results[5].meta)
+ >>> pprint(results[8].meta)
{'discovery': 'GettextDiscovery', 'origin': None, 'priority': 1000}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/translation-finder-1.5/requirements.txt
new/translation-finder-1.6/requirements.txt
--- old/translation-finder-1.5/requirements.txt 2019-05-29 10:22:34.000000000
+0200
+++ new/translation-finder-1.6/requirements.txt 2019-06-26 13:35:51.000000000
+0200
@@ -1,4 +1,4 @@
pathlib2; python_version < '3.4'
six
chardet
-pyyaml
+ruamel.yaml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/translation-finder-1.5/scripts/generate-language-data
new/translation-finder-1.6/scripts/generate-language-data
--- old/translation-finder-1.5/scripts/generate-language-data 2019-05-29
10:22:34.000000000 +0200
+++ new/translation-finder-1.6/scripts/generate-language-data 2019-06-26
13:35:51.000000000 +0200
@@ -82,6 +82,7 @@
"sa",
"io",
"no",
+ "nav",
"source",
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/translation-finder-1.5/translation_finder/__init__.py
new/translation-finder-1.6/translation_finder/__init__.py
--- old/translation-finder-1.5/translation_finder/__init__.py 2019-05-29
10:22:34.000000000 +0200
+++ new/translation-finder-1.6/translation_finder/__init__.py 2019-06-26
13:35:51.000000000 +0200
@@ -26,4 +26,4 @@
from .finder import Finder
__all__ = ("Finder", "discover", "DiscoveryResult")
-__version__ = "1.5"
+__version__ = "1.6"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/translation-finder-1.5/translation_finder/api.py
new/translation-finder-1.6/translation_finder/api.py
--- old/translation-finder-1.5/translation_finder/api.py 2019-05-29
10:22:34.000000000 +0200
+++ new/translation-finder-1.6/translation_finder/api.py 2019-06-26
13:35:51.000000000 +0200
@@ -27,14 +27,19 @@
from .discovery.files import (
AndroidDiscovery,
AppStoreDiscovery,
+ ASSDiscovery,
FluentDiscovery,
GettextDiscovery,
JavaDiscovery,
JoomlaDiscovery,
JSONDiscovery,
OSXDiscovery,
+ PHPDiscovery,
QtDiscovery,
RESXDiscovery,
+ SRTDiscovery,
+ SSADiscovery,
+ SUBDiscovery,
WebExtensionDiscovery,
XliffDiscovery,
YAMLDiscovery,
@@ -44,18 +49,23 @@
BACKENDS = [
TransifexDiscovery,
+ AndroidDiscovery,
+ AppStoreDiscovery,
+ ASSDiscovery,
FluentDiscovery,
GettextDiscovery,
- QtDiscovery,
- AndroidDiscovery,
- OSXDiscovery,
JavaDiscovery,
JoomlaDiscovery,
+ JSONDiscovery,
+ OSXDiscovery,
+ PHPDiscovery,
+ QtDiscovery,
RESXDiscovery,
- XliffDiscovery,
+ SRTDiscovery,
+ SSADiscovery,
+ SUBDiscovery,
WebExtensionDiscovery,
- AppStoreDiscovery,
- JSONDiscovery,
+ XliffDiscovery,
YAMLDiscovery,
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/translation-finder-1.5/translation_finder/discovery/files.py
new/translation-finder-1.6/translation_finder/discovery/files.py
--- old/translation-finder-1.5/translation_finder/discovery/files.py
2019-05-29 10:22:34.000000000 +0200
+++ new/translation-finder-1.6/translation_finder/discovery/files.py
2019-06-26 13:35:51.000000000 +0200
@@ -21,9 +21,11 @@
"""Individual discovery rules for translation formats."""
from __future__ import absolute_import, unicode_literals
+import json
from itertools import chain
-import yaml
+import six
+from ruamel.yaml import YAML, YAMLError
from .base import BaseDiscovery, EncodingDiscovery
@@ -47,6 +49,13 @@
mono["file_format"] = "po-mono"
yield mono
+ def fill_in_new_base(self, result):
+ super(GettextDiscovery, self).fill_in_new_base(result)
+ if "new_base" not in result:
+ pot_name = result["filemask"].replace("po/*/", "pot/") + "t"
+ if self.finder.has_file(pot_name):
+ result["new_base"] = pot_name
+
class QtDiscovery(BaseDiscovery):
"""Qt Linguist files discovery."""
@@ -190,9 +199,43 @@
class JSONDiscovery(BaseDiscovery):
"""JSON files discovery."""
- file_format = "json"
+ file_format = "json-nested"
mask = "*.json"
+ def adjust_format(self, result):
+ if "template" not in result:
+ return
+
+ path = list(self.finder.mask_matches(result["template"]))[0]
+
+ if not hasattr(path, "open"):
+ return
+
+ with self.finder.open(path, "r") as handle:
+ data = json.load(handle)
+ if not isinstance(data, dict):
+ return
+ all_strings = True
+ i18next = False
+ for key, value in data.items():
+ if (
+ isinstance(value, dict)
+ and "message" in value
+ and "description" in value
+ ):
+ result["file_format"] = "webextension"
+ break
+ if not isinstance(key, six.string_types) or not isinstance(
+ value, six.string_types
+ ):
+ all_strings = False
+ break
+ elif key.endswith("_plural") or "{{" in value:
+ i18next = True
+
+ if all_strings and i18next:
+ result["file_format"] = "i18next"
+
class FluentDiscovery(BaseDiscovery):
"""Fluent files discovery."""
@@ -229,8 +272,50 @@
return
with self.finder.open(path, "rb") as handle:
- data = yaml.load(handle)
+ yaml = YAML()
+ try:
+ data = yaml.load(handle)
+ except YAMLError:
+ return
if isinstance(data, dict) and len(data) == 1:
key = list(data.keys())[0]
- if result["filemask"].replace("*", key) == result["template"]:
+ if "filemask" in result:
+ if result["filemask"].replace("*", key) ==
result["template"]:
+ result["file_format"] = "ruby-yaml"
+ elif key in result["template"]:
result["file_format"] = "ruby-yaml"
+
+
+class SRTDiscovery(BaseDiscovery):
+ """SRT subtitle files discovery."""
+
+ file_format = "srt"
+ mask = "*.srt"
+
+
+class SUBDiscovery(BaseDiscovery):
+ """SUB subtitle files discovery."""
+
+ file_format = "sub"
+ mask = "*.sub"
+
+
+class ASSDiscovery(BaseDiscovery):
+ """ASS subtitle files discovery."""
+
+ file_format = "ass"
+ mask = "*.ass"
+
+
+class SSADiscovery(BaseDiscovery):
+ """SSA subtitle files discovery."""
+
+ file_format = "ssa"
+ mask = "*.ssa"
+
+
+class PHPDiscovery(BaseDiscovery):
+ """PHP files discovery."""
+
+ file_format = "php"
+ mask = "*.php"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/translation-finder-1.5/translation_finder/languages.py
new/translation-finder-1.6/translation_finder/languages.py
--- old/translation-finder-1.5/translation_finder/languages.py 2019-05-29
10:22:34.000000000 +0200
+++ new/translation-finder-1.6/translation_finder/languages.py 2019-06-26
13:35:51.000000000 +0200
@@ -51,11 +51,13 @@
"anp",
"ar",
"ar_ar",
+ "ar_bh",
"ar_dz",
"ar_eg",
"ar_kw",
"ar_ma",
"ar_sa",
+ "ar_ye",
"ara",
"arabic",
"arg",
@@ -87,6 +89,7 @@
"bel",
"bem",
"ben",
+ "ber",
"bez",
"bg",
"bh",
@@ -394,10 +397,10 @@
"mya",
"na",
"nah",
+ "nan",
"nap",
"naq",
"nau",
- "nav",
"nb",
"nb_no",
"nbl",
@@ -415,6 +418,7 @@
"nnh",
"nno",
"no_nb",
+ "no_no",
"nob",
"nor",
"norwegian",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/translation-finder-1.5/translation_finder/test_api.py
new/translation-finder-1.6/translation_finder/test_api.py
--- old/translation-finder-1.5/translation_finder/test_api.py 2019-05-29
10:22:34.000000000 +0200
+++ new/translation-finder-1.6/translation_finder/test_api.py 2019-06-26
13:35:51.000000000 +0200
@@ -64,6 +64,22 @@
"name": "android",
"template": "app/src/res/main/values/strings.xml",
},
+ {"file_format": "json-nested", "filemask": "json/bi-*.json"},
+ {
+ "file_format": "i18next",
+ "filemask": "json/i18next-*.json",
+ "template": "json/i18next-en.json",
+ },
+ {
+ "file_format": "json-nested",
+ "filemask": "json/nested-*.json",
+ "template": "json/nested-en.json",
+ },
+ {
+ "file_format": "webextension",
+ "filemask": "json/webext-*.json",
+ "template": "json/webext-en.json",
+ },
{
"filemask": "locales/*.po",
"new_base": "locales/messages.pot",
@@ -111,6 +127,16 @@
"file_format": "ruby-yaml",
"template": "yaml/en.yml",
},
+ {
+ "filemask": "yaml/*/nomatch.yml",
+ "template": "yaml/en/nomatch.yml",
+ "file_format": "yaml",
+ },
+ {
+ "filemask": "yaml/*/corrupt.yml",
+ "template": "yaml/en/corrupt.yml",
+ "file_format": "yaml",
+ },
],
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/translation-finder-1.5/translation_finder/test_data/json/bi-cs.json
new/translation-finder-1.6/translation_finder/test_data/json/bi-cs.json
--- old/translation-finder-1.5/translation_finder/test_data/json/bi-cs.json
1970-01-01 01:00:00.000000000 +0100
+++ new/translation-finder-1.6/translation_finder/test_data/json/bi-cs.json
2019-06-26 13:35:51.000000000 +0200
@@ -0,0 +1,6 @@
+{
+ "Hello, world!\n": "",
+ "Orangutan has %d banana.\n": "",
+ "Try Weblate at https://demo.weblate.org/!\n": "",
+ "Thank you for using Weblate.": ""
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/translation-finder-1.5/translation_finder/test_data/json/i18next-en.json
new/translation-finder-1.6/translation_finder/test_data/json/i18next-en.json
---
old/translation-finder-1.5/translation_finder/test_data/json/i18next-en.json
1970-01-01 01:00:00.000000000 +0100
+++
new/translation-finder-1.6/translation_finder/test_data/json/i18next-en.json
2019-06-26 13:35:51.000000000 +0200
@@ -0,0 +1,6 @@
+{
+ "hello": "Hello",
+ "apple": "I have an apple",
+ "apple_plural": "I have {{count}} apples",
+ "apple_negative": "I have no apples"
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/translation-finder-1.5/translation_finder/test_data/json/nested-en.json
new/translation-finder-1.6/translation_finder/test_data/json/nested-en.json
--- old/translation-finder-1.5/translation_finder/test_data/json/nested-en.json
1970-01-01 01:00:00.000000000 +0100
+++ new/translation-finder-1.6/translation_finder/test_data/json/nested-en.json
2019-06-26 13:35:51.000000000 +0200
@@ -0,0 +1,8 @@
+{
+ "weblate": {
+ "hello": "Hello, world!\n",
+ "orangutan": "Orangutan has %d banana.\n",
+ "try": "Try Weblate at https://demo.weblate.org/!\n",
+ "thanks": "Thank you for using Weblate."
+ }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/translation-finder-1.5/translation_finder/test_data/json/webext-en.json
new/translation-finder-1.6/translation_finder/test_data/json/webext-en.json
--- old/translation-finder-1.5/translation_finder/test_data/json/webext-en.json
1970-01-01 01:00:00.000000000 +0100
+++ new/translation-finder-1.6/translation_finder/test_data/json/webext-en.json
2019-06-26 13:35:51.000000000 +0200
@@ -0,0 +1,18 @@
+{
+ "hello": {
+ "message": "Hello, world!\n",
+ "description": "Description"
+ },
+ "orangutan": {
+ "message": "Orangutan has %d banana.\n",
+ "description": "Description"
+ },
+ "try": {
+ "message": "Try Weblate at https://demo.weblate.org/!\n",
+ "description": "Description"
+ },
+ "thanks": {
+ "message": "Thank you for using Weblate.",
+ "description": "Description"
+ }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/translation-finder-1.5/translation_finder/test_data/yaml/en/corrupt.yml
new/translation-finder-1.6/translation_finder/test_data/yaml/en/corrupt.yml
--- old/translation-finder-1.5/translation_finder/test_data/yaml/en/corrupt.yml
1970-01-01 01:00:00.000000000 +0100
+++ new/translation-finder-1.6/translation_finder/test_data/yaml/en/corrupt.yml
2019-06-26 13:35:51.000000000 +0200
@@ -0,0 +1 @@
+"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/translation-finder-1.5/translation_finder/test_data/yaml/en/nomatch.yml
new/translation-finder-1.6/translation_finder/test_data/yaml/en/nomatch.yml
--- old/translation-finder-1.5/translation_finder/test_data/yaml/en/nomatch.yml
1970-01-01 01:00:00.000000000 +0100
+++ new/translation-finder-1.6/translation_finder/test_data/yaml/en/nomatch.yml
2019-06-26 13:35:51.000000000 +0200
@@ -0,0 +1,5 @@
+weblate:
+ hello: "Hello, world!\n"
+ orangutan: "Orangutan has %d banana.\n"
+ try: "Try Weblate at https://demo.weblate.org/!\n"
+ thanks: "Thank you for using Weblate."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/translation-finder-1.5/translation_finder/test_discovery.py
new/translation-finder-1.6/translation_finder/test_discovery.py
--- old/translation-finder-1.5/translation_finder/test_discovery.py
2019-05-29 10:22:34.000000000 +0200
+++ new/translation-finder-1.6/translation_finder/test_discovery.py
2019-06-26 13:35:51.000000000 +0200
@@ -93,6 +93,8 @@
"Source/WebCore/platform/gtk/po/sv.po",
"desktop-docs/gpl/sr/sr.po",
"desktop-docs/gpl/sr@latin/[email protected]",
+ "po/jp/rawhide/pages/welcome/Welcome.po",
+ "pot/rawhide/pages/welcome/Welcome.pot",
]
)
)
@@ -125,6 +127,11 @@
"filemask": "Source/WebCore/platform/gtk/po/*.po",
"file_format": "po",
},
+ {
+ "file_format": "po",
+ "filemask": "po/*/rawhide/pages/welcome/Welcome.po",
+ "new_base": "pot/rawhide/pages/welcome/Welcome.pot",
+ },
],
)
@@ -550,17 +557,17 @@
[
{
"filemask": "tr/wizard-*.json",
- "file_format": "json",
+ "file_format": "json-nested",
"template": "tr/wizard-en.json",
},
{
"filemask": "tr/register-*.json",
- "file_format": "json",
+ "file_format": "json-nested",
"template": "tr/register-en.json",
},
{
"filemask": "tr/recordings-*.json",
- "file_format": "json",
+ "file_format": "json-nested",
"template": "tr/recordings-en.json",
},
],