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 <[email protected]>
+
+- 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 <[email protected]>
+
+- 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
+
+[](https://travis-ci.org/python/typed_ast)
+[](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