Hello community, here is the log from the commit of package python-typed-ast for openSUSE:Factory checked in at 2019-01-26 22:18:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-typed-ast (Old) and /work/SRC/openSUSE:Factory/.python-typed-ast.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-typed-ast" Sat Jan 26 22:18:35 2019 rev:4 rq:667870 version:1.2.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-typed-ast/python-typed-ast.changes 2018-09-24 13:12:06.765827771 +0200 +++ /work/SRC/openSUSE:Factory/.python-typed-ast.new.28833/python-typed-ast.changes 2019-01-26 22:18:38.615039034 +0100 @@ -1,0 +2,21 @@ +Tue Jan 15 20:35:06 UTC 2019 - Sebastian Wagner <sebix+novell....@sebix.at> + +- Update to version 1.2.0: + * Fix conversions.py2to3 on unicode strings (#67) + * Fix remaining calls to Str without a kind (#68) + * Add "Python :: 3.7" to the classifiers list + * Some docs updates (#73) + +------------------------------------------------------------------- +Wed Jan 2 09:48:30 UTC 2019 - Sebastian Wagner <sebix+novell....@sebix.at> + +- Update to version 1.1.1: + * Add __version__ string and tweak versioning scheme + * Point to the Python 3.6 commits as examples of how to update typed_ast ( + * Add section on development philosophy + * Add information about the release process. + * Document Google Cloud Storage artifact deployment + * Preserve string kind modifiers + * Add docs for Str.kind + +------------------------------------------------------------------- Old: ---- typed-ast-1.1.0.tar.gz New: ---- typed-ast-1.2.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-typed-ast.spec ++++++ --- /var/tmp/diff_new_pack.LPgd2G/_old 2019-01-26 22:18:39.055038677 +0100 +++ /var/tmp/diff_new_pack.LPgd2G/_new 2019-01-26 22:18:39.055038677 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-typed-ast # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-typed-ast -Version: 1.1.0 +Version: 1.2.0 Release: 0 Summary: A fork of Python 2 and 3 ast modules with type comment support License: Apache-2.0 ++++++ typed-ast-1.1.0.tar.gz -> typed-ast-1.2.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/PKG-INFO new/typed-ast-1.2.0/PKG-INFO --- old/typed-ast-1.1.0/PKG-INFO 2017-07-18 23:30:05.000000000 +0200 +++ new/typed-ast-1.2.0/PKG-INFO 2019-01-14 23:53:26.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: typed-ast -Version: 1.1.0 +Version: 1.2.0 Summary: a fork of Python 2 and 3 ast modules with type comment support Home-page: https://github.com/python/typed_ast Author: David Fisher @@ -23,4 +23,5 @@ Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 Classifier: Topic :: Software Development diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/README.md new/typed-ast-1.2.0/README.md --- old/typed-ast-1.1.0/README.md 1970-01-01 01:00:00.000000000 +0100 +++ new/typed-ast-1.2.0/README.md 2019-01-14 23:38:36.000000000 +0100 @@ -0,0 +1,69 @@ +# Typed AST + +[![Build Status](https://travis-ci.org/python/typed_ast.svg?branch=master)](https://travis-ci.org/python/typed_ast) +[![Chat at https://gitter.im/python/typed_ast](https://badges.gitter.im/python/typed_ast.svg)](https://gitter.im/python/typed_ast) + +`typed_ast` is a Python 3 package that provides a Python 2.7 and Python 3 +parser similar to the standard `ast` library. Unlike `ast`, the parsers in +`typed_ast` include [PEP 484](https://www.python.org/dev/peps/pep-0484/) type +comments and are independent of the version of Python under which they are run. +The `typed_ast` parsers produce the standard Python AST (plus type comments), +and are both fast and correct, as they are based on the CPython 2.7 and 3.6 +parsers. `typed_ast` runs on Python 3.3-3.7 on Linux, OS X and Windows. + +## Development Philosophy + +This project is a (mostly) drop-in replacement for the builtin `ast` module. It is +intended to be bug-for-bug compatible and behave identically, except for the +presence of a few additional fields on the returned classes and a few +additional optional arguments to the `parse` call. Therefore, `typed_ast` will +not accept any bugfixes for bugs in `ast` -- they should be fixed upstream +instead. To avoid feature bloat, any new features for `typed_ast` should have +the potential to be broadly useful and not be built just for one niche usecase +or in a manner such that only one project can use them. + +### Incompatabilities + +For the purposes of *consuming* syntax trees, this should be a drop-in replacement. +It is not a drop-in replacement for users that wish to create or transform ASTs, +as a number of syntax tree classes have additional fields that must be populated +when constructing them. + +### Python 3.7 + +`typed_ast` has not yet been updated to be based on the Python 3.7 +parser. The main consequence of this that `await` and `async` are +not treated as keywords. + +## Submodules +### ast3 +The `ast3` parser produces the AST from a recent version of Python 3 +(currently Python 3.6). When new versions of Python 3 are released, it will be +updated to match any changes in their AST. (For rationale and technical +details, see [here](update_process.md).) The AST it currently produces is described in +[ast3/Parser/Python.asdl](ast3/Parser/Python.asdl). If you wish to limit +parsing to older versions of Python 3, `ast3` can be configured to to give a +SyntaxError for new syntax features introduced beyond a given Python version. +For more information, see the module docstring in +[typed\_ast/ast3.py](typed_ast/ast3.py). + +### ast27 +The `ast27` parser tracks the standard Python 2.7 AST, which is expected to +never receive further updates. The AST it produces is described in +[ast27/Parser/Python.asdl](ast27/Parser/Python.asdl). For more information, +see the module docstring in [typed\_ast/ast27.py](typed_ast/ast27.py). + +### conversions +`typed_ast` also provides a `conversions` module which converts `ast27` ASTs +into `ast3` ASTs. This functionality is somewhat experimental, however. For +more information, see the `py2to3` docstring in +[typed\_ast/conversions](typed_ast/conversions.py). + + +Note: as these parsers consider type comments part of the grammar, incorrectly +placed type comments are considered syntax errors. + +## Updates and Releases +To update `typed_ast` for new major Python releases, see [`update_process.md`](update_process.md). + +To make a new `typed_ast` release, see [`release_process.md`](release_process.md). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/ast27/Include/Python-ast.h new/typed-ast-1.2.0/ast27/Include/Python-ast.h --- old/typed-ast-1.1.0/ast27/Include/Python-ast.h 2017-02-13 03:44:53.000000000 +0100 +++ new/typed-ast-1.2.0/ast27/Include/Python-ast.h 2019-01-08 22:00:51.000000000 +0100 @@ -286,7 +286,7 @@ struct { string s; - int has_b; + string kind; } Str; struct { @@ -505,7 +505,7 @@ #define Num(a0, a1, a2, a3) _Ta27_Num(a0, a1, a2, a3) expr_ty _Ta27_Num(object n, int lineno, int col_offset, PyArena *arena); #define Str(a0, a1, a2, a3, a4) _Ta27_Str(a0, a1, a2, a3, a4) -expr_ty _Ta27_Str(string s, int has_b, int lineno, int col_offset, PyArena *arena); +expr_ty _Ta27_Str(string s, string kind, int lineno, int col_offset, PyArena *arena); #define Attribute(a0, a1, a2, a3, a4, a5) _Ta27_Attribute(a0, a1, a2, a3, a4, a5) expr_ty _Ta27_Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int lineno, int col_offset, PyArena *arena); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/ast27/Python/Python-ast.c new/typed-ast-1.2.0/ast27/Python/Python-ast.c --- old/typed-ast-1.1.0/ast27/Python/Python-ast.c 2017-02-13 03:44:53.000000000 +0100 +++ new/typed-ast-1.2.0/ast27/Python/Python-ast.c 2019-01-08 22:00:51.000000000 +0100 @@ -252,7 +252,7 @@ static PyTypeObject *Str_type; static char *Str_fields[]={ "s", - "has_b", + "kind", }; static PyTypeObject *Attribute_type; static char *Attribute_fields[]={ @@ -1850,7 +1850,7 @@ } expr_ty -Str(string s, int has_b, int lineno, int col_offset, PyArena *arena) +Str(string s, string kind, int lineno, int col_offset, PyArena *arena) { expr_ty p; if (!s) { @@ -1858,12 +1858,17 @@ "field s is required for Str"); return NULL; } + if (!kind) { + PyErr_SetString(PyExc_ValueError, + "field kind is required for Str"); + return NULL; + } p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); if (!p) return NULL; p->kind = Str_kind; p->v.Str.s = s; - p->v.Str.has_b = has_b; + p->v.Str.kind = kind; p->lineno = lineno; p->col_offset = col_offset; return p; @@ -2889,9 +2894,9 @@ if (PyObject_SetAttrString(result, "s", value) == -1) goto failed; Py_DECREF(value); - value = ast2obj_int(o->v.Str.has_b); + value = ast2obj_string(o->v.Str.kind); if (!value) goto failed; - if (PyObject_SetAttrString(result, "has_b", value) == -1) + if (PyObject_SetAttrString(result, "kind", value) == -1) goto failed; Py_DECREF(value); break; @@ -5714,7 +5719,7 @@ } if (isinstance) { string s; - int has_b; + string kind; if (PyObject_HasAttrString(obj, "s")) { int res; @@ -5728,18 +5733,19 @@ PyErr_SetString(PyExc_TypeError, "required field \"s\" missing from Str"); return 1; } - if (PyObject_HasAttrString(obj, "has_b")) { + if (PyObject_HasAttrString(obj, "kind")) { int res; - tmp = PyObject_GetAttrString(obj, "has_b"); + tmp = PyObject_GetAttrString(obj, "kind"); if (tmp == NULL) goto failed; - res = obj2ast_int(tmp, &has_b, arena); + res = obj2ast_string(tmp, &kind, arena); if (res != 0) goto failed; Py_XDECREF(tmp); tmp = NULL; } else { - has_b = 0; + PyErr_SetString(PyExc_TypeError, "required field \"kind\" missing from Str"); + return 1; } - *out = Str(s, has_b, lineno, col_offset, arena); + *out = Str(s, kind, lineno, col_offset, arena); if (*out == NULL) goto failed; return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/ast27/Python/ast.c new/typed-ast-1.2.0/ast27/Python/ast.c --- old/typed-ast-1.1.0/ast27/Python/ast.c 2017-07-18 23:12:27.000000000 +0200 +++ new/typed-ast-1.2.0/ast27/Python/ast.c 2019-01-08 22:00:51.000000000 +0100 @@ -1498,10 +1498,20 @@ return Name(name, Load, LINENO(n), n->n_col_offset, c->c_arena); } case STRING: { - PyObject *str = parsestrplus(c, n); - const char *s = STR(CHILD(n, 0)); + PyObject *kind, *str = parsestrplus(c, n); + const char *raw, *s = STR(CHILD(n, 0)); int quote = Py_CHARMASK(*s); - int has_b = 0; + /* currently Python allows up to 2 string modifiers */ + char *ch, s_kind[3] = {0, 0, 0}; + ch = s_kind; + raw = s; + while (*raw && *raw != '\'' && *raw != '"') { + *ch++ = *raw++; + } + kind = PyUnicode_FromString(s_kind); + if (!kind) { + return NULL; + } if (!str) { #ifdef Py_USING_UNICODE if (PyErr_ExceptionMatches(PyExc_UnicodeError)){ @@ -1526,10 +1536,7 @@ return NULL; } PyArena_AddPyObject(c->c_arena, str); - if (quote == 'b' || quote == 'B') { - has_b = 1; - } - return Str(str, has_b, LINENO(n), n->n_col_offset, c->c_arena); + return Str(str, kind, LINENO(n), n->n_col_offset, c->c_arena); } case NUMBER: { PyObject *pynum = parsenumber(c, STR(ch)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/ast3/Include/Python-ast.h new/typed-ast-1.2.0/ast3/Include/Python-ast.h --- old/typed-ast-1.1.0/ast3/Include/Python-ast.h 2017-02-13 03:03:59.000000000 +0100 +++ new/typed-ast-1.2.0/ast3/Include/Python-ast.h 2019-01-12 01:00:24.000000000 +0100 @@ -318,6 +318,7 @@ struct { string s; + string kind; } Str; struct { @@ -601,8 +602,9 @@ lineno, int col_offset, PyArena *arena); #define Num(a0, a1, a2, a3) _Ta3_Num(a0, a1, a2, a3) expr_ty _Ta3_Num(object n, int lineno, int col_offset, PyArena *arena); -#define Str(a0, a1, a2, a3) _Ta3_Str(a0, a1, a2, a3) -expr_ty _Ta3_Str(string s, int lineno, int col_offset, PyArena *arena); +#define Str(a0, a1, a2, a3, a4) _Ta3_Str(a0, a1, a2, a3, a4) +expr_ty _Ta3_Str(string s, string kind, int lineno, int col_offset, PyArena + *arena); #define FormattedValue(a0, a1, a2, a3, a4, a5) _Ta3_FormattedValue(a0, a1, a2, a3, a4, a5) expr_ty _Ta3_FormattedValue(expr_ty value, int conversion, expr_ty format_spec, int lineno, int col_offset, PyArena *arena); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/ast3/Python/Python-ast.c new/typed-ast-1.2.0/ast3/Python/Python-ast.c --- old/typed-ast-1.1.0/ast3/Python/Python-ast.c 2017-02-13 03:03:59.000000000 +0100 +++ new/typed-ast-1.2.0/ast3/Python/Python-ast.c 2019-01-12 01:09:27.000000000 +0100 @@ -307,8 +307,10 @@ }; static PyTypeObject *Str_type; _Py_IDENTIFIER(s); +_Py_IDENTIFIER(kind); static char *Str_fields[]={ "s", + "kind", }; static PyTypeObject *FormattedValue_type; _Py_IDENTIFIER(conversion); @@ -983,7 +985,7 @@ if (!Call_type) return 0; Num_type = make_type("Num", expr_type, Num_fields, 1); if (!Num_type) return 0; - Str_type = make_type("Str", expr_type, Str_fields, 1); + Str_type = make_type("Str", expr_type, Str_fields, 2); if (!Str_type) return 0; FormattedValue_type = make_type("FormattedValue", expr_type, FormattedValue_fields, 3); @@ -2181,7 +2183,7 @@ } expr_ty -Str(string s, int lineno, int col_offset, PyArena *arena) +Str(string s, string kind, int lineno, int col_offset, PyArena *arena) { expr_ty p; if (!s) { @@ -2189,11 +2191,17 @@ "field s is required for Str"); return NULL; } + if (!kind) { + PyErr_SetString(PyExc_ValueError, + "field kind is required for Str"); + return NULL; + } p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); if (!p) return NULL; p->kind = Str_kind; p->v.Str.s = s; + p->v.Str.kind = kind; p->lineno = lineno; p->col_offset = col_offset; return p; @@ -3448,6 +3456,11 @@ if (_PyObject_SetAttrId(result, &PyId_s, value) == -1) goto failed; Py_DECREF(value); + value = ast2obj_string(o->v.Str.kind); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_kind, value) == -1) + goto failed; + Py_DECREF(value); break; case FormattedValue_kind: result = PyType_GenericNew(FormattedValue_type, NULL, NULL); @@ -6766,6 +6779,7 @@ } if (isinstance) { string s; + string kind; if (_PyObject_HasAttrId(obj, &PyId_s)) { int res; @@ -6778,7 +6792,18 @@ PyErr_SetString(PyExc_TypeError, "required field \"s\" missing from Str"); return 1; } - *out = Str(s, lineno, col_offset, arena); + if (_PyObject_HasAttrId(obj, &PyId_kind)) { + int res; + tmp = _PyObject_GetAttrId(obj, &PyId_kind); + if (tmp == NULL) goto failed; + res = obj2ast_string(tmp, &kind, arena); + if (res != 0) goto failed; + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"kind\" missing from Str"); + return 1; + } + *out = Str(s, kind, lineno, col_offset, arena); if (*out == NULL) goto failed; return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/ast3/Python/ast.c new/typed-ast-1.2.0/ast3/Python/ast.c --- old/typed-ast-1.1.0/ast3/Python/ast.c 2017-07-18 23:12:27.000000000 +0200 +++ new/typed-ast-1.2.0/ast3/Python/ast.c 2019-01-08 22:00:51.000000000 +0100 @@ -4971,14 +4971,25 @@ static expr_ty make_str_node_and_del(PyObject **str, struct compiling *c, const node* n) { - PyObject *s = *str; + PyObject *kind, *s = *str; + const char *raw = STR(CHILD(n, 0)); + /* currently Python allows up to 2 string modifiers */ + char *ch, s_kind[3] = {0, 0, 0}; + ch = s_kind; + while (*raw && *raw != '\'' && *raw != '"') { + *ch++ = *raw++; + } + kind = PyUnicode_FromString(s_kind); + if (!kind) { + return NULL; + } *str = NULL; assert(PyUnicode_CheckExact(s)); if (PyArena_AddPyObject(c->c_arena, s) < 0) { Py_DECREF(s); return NULL; } - return Str(s, LINENO(n), n->n_col_offset, c->c_arena); + return Str(s, kind, LINENO(n), n->n_col_offset, c->c_arena); } /* Add a non-f-string (that is, a regular literal string). str is diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/setup.py new/typed-ast-1.2.0/setup.py --- old/typed-ast-1.1.0/setup.py 2017-07-18 23:23:52.000000000 +0200 +++ new/typed-ast-1.2.0/setup.py 2019-01-14 23:38:36.000000000 +0100 @@ -1,3 +1,5 @@ +import ast +import re import sys if sys.version_info[0] < 3 or sys.version_info[1] < 3: sys.exit('Error: typed_ast only runs on Python 3.3 and above.') @@ -86,8 +88,14 @@ based on the CPython 2.7 and 3.6 parsers. """.strip() +_version_re = re.compile(r'__version__\s+=\s+(?P<version>.*)') + +with open('typed_ast/__init__.py', 'r', encoding='utf8') as f: + version = _version_re.search(f.read()).group('version') + version = str(ast.literal_eval(version)) + setup (name = 'typed-ast', - version = '1.1.0', + version = version, description = 'a fork of Python 2 and 3 ast modules with type comment support', long_description = long_description, author = 'David Fisher', @@ -105,6 +113,7 @@ 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', 'Topic :: Software Development', ], packages = ['typed_ast'], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/typed_ast/__init__.py new/typed-ast-1.2.0/typed_ast/__init__.py --- old/typed-ast-1.1.0/typed_ast/__init__.py 2017-02-13 03:04:00.000000000 +0100 +++ new/typed-ast-1.2.0/typed_ast/__init__.py 2019-01-14 23:38:36.000000000 +0100 @@ -1 +1 @@ - +__version__ = "1.2.0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/typed_ast/ast27.py new/typed-ast-1.2.0/typed_ast/ast27.py --- old/typed-ast-1.1.0/typed_ast/ast27.py 2017-02-13 03:44:53.000000000 +0100 +++ new/typed-ast-1.2.0/typed_ast/ast27.py 2019-01-14 20:27:57.000000000 +0100 @@ -19,9 +19,8 @@ called with `mode=func_type`. - `Module` has a `type_ignores` field which contains a list of lines which have been `# type: ignore`d. - - `Str` has a `has_b` boolean field which indicates if the string is - explicitly prefixed with a `b`. (This is deprecated and may be removed in - future versions.) + - `Str` has a `kind` string field which preserves the original string + prefix, so that `ast27.parse('br"test"').body[0].value.kind == 'br'`. An abstract syntax tree can be generated by using the `parse()` function from this module. The result will be a tree of objects whose @@ -284,7 +283,7 @@ def visit_Name(self, node): return copy_location(Subscript( value=Name(id='data', ctx=Load()), - slice=Index(value=Str(s=node.id)), + slice=Index(value=Str(s=node.id, kind='')), ctx=node.ctx ), node) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/typed_ast/ast3.py new/typed-ast-1.2.0/typed_ast/ast3.py --- old/typed-ast-1.1.0/typed_ast/ast3.py 2017-06-14 02:18:32.000000000 +0200 +++ new/typed-ast-1.2.0/typed_ast/ast3.py 2019-01-14 20:27:57.000000000 +0100 @@ -21,6 +21,8 @@ newer Python syntax features. - `Module` has a `type_ignores` field which contains a list of lines which have been `# type: ignore`d. + - `Str` has a `kind` string field which preserves the original string + prefix, so that `ast3.parse('u"test"').body[0].value.kind == 'u'`. An abstract syntax tree can be generated by using the `parse()` function from this module. The result will be a tree of objects whose @@ -51,8 +53,8 @@ fully supported for Python 3.5+ with partial support for Python 3.4. So, feature_version=3 or less are all equivalent to feature_version=4. - When feature_version=4, the parser will forbid the use of the async/await - keywords and the '@' operator, but will not forbid the use of PEP 448 + When feature_version=4, the parser will forbid the use of the async/await + keywords and the '@' operator, but will not forbid the use of PEP 448 additional unpacking generalizations, which were also added in Python 3.5. """ return _ast3._parse(source, filename, mode, feature_version) @@ -304,7 +306,7 @@ def visit_Name(self, node): return copy_location(Subscript( value=Name(id='data', ctx=Load()), - slice=Index(value=Str(s=node.id)), + slice=Index(value=Str(s=node.id, kind='')), ctx=node.ctx ), node) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/typed_ast/conversions.py new/typed-ast-1.2.0/typed_ast/conversions.py --- old/typed-ast-1.1.0/typed_ast/conversions.py 2017-02-13 03:44:53.000000000 +0100 +++ new/typed-ast-1.2.0/typed_ast/conversions.py 2019-01-14 20:27:57.000000000 +0100 @@ -106,7 +106,8 @@ keywords.append(ast3.keyword("file", self.visit(n.dest))) if not n.nl: - keywords.append(ast3.keyword("end", ast3.Str(" ", lineno=n.lineno, col_offset=-1))) + keywords.append(ast3.keyword("end", + ast3.Str(s=" ", kind='', lineno=n.lineno, col_offset=-1))) return ast3.Expr(ast3.Call(ast3.Name("print", ast3.Load(), lineno=n.lineno, col_offset=-1), self.visit(n.values), @@ -218,7 +219,7 @@ if isinstance(s.s, bytes): return ast3.Bytes(s.s) else: - return ast3.Str(s.s) + return ast3.Str(s.s, s.kind) def visit_Num(self, n): new = self.generic_visit(n) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/typed_ast.egg-info/PKG-INFO new/typed-ast-1.2.0/typed_ast.egg-info/PKG-INFO --- old/typed-ast-1.1.0/typed_ast.egg-info/PKG-INFO 2017-07-18 23:30:05.000000000 +0200 +++ new/typed-ast-1.2.0/typed_ast.egg-info/PKG-INFO 2019-01-14 23:53:26.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: typed-ast -Version: 1.1.0 +Version: 1.2.0 Summary: a fork of Python 2 and 3 ast modules with type comment support Home-page: https://github.com/python/typed_ast Author: David Fisher @@ -23,4 +23,5 @@ Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 Classifier: Topic :: Software Development diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/typed-ast-1.1.0/typed_ast.egg-info/SOURCES.txt new/typed-ast-1.2.0/typed_ast.egg-info/SOURCES.txt --- old/typed-ast-1.1.0/typed_ast.egg-info/SOURCES.txt 2017-07-18 23:30:05.000000000 +0200 +++ new/typed-ast-1.2.0/typed_ast.egg-info/SOURCES.txt 2019-01-14 23:53:26.000000000 +0100 @@ -1,5 +1,6 @@ LICENSE MANIFEST.in +README.md setup.py ast27/Custom/typed_ast.c ast27/Include/Python-ast.h