[med-svn] [Git][med-team/python3-typed-ast][master] 10 commits: New upstream version 1.1.1
Michael R. Crusoe
gitlab at salsa.debian.org
Sun Dec 23 14:14:08 GMT 2018
Michael R. Crusoe pushed to branch master at Debian Med / python3-typed-ast
Commits:
ba7b7577 by Michael R. Crusoe at 2018-12-23T13:57:24Z
New upstream version 1.1.1
- - - - -
4a8f15cf by Michael R. Crusoe at 2018-12-23T13:57:26Z
Update upstream source from tag 'upstream/1.1.1'
Update to upstream version '1.1.1'
with Debian dir 34d662ac8544eefbba903352d8e3e812bad93bce
- - - - -
58253464 by Michael R. Crusoe at 2018-12-23T13:57:26Z
New upstream version
- - - - -
b04f932d by Michael R. Crusoe at 2018-12-23T13:57:27Z
debhelper 11
- - - - -
9b1de56e by Michael R. Crusoe at 2018-12-23T13:57:29Z
Point Vcs fields to salsa.debian.org
- - - - -
c64030bf by Michael R. Crusoe at 2018-12-23T13:57:29Z
Standards-Version: 4.2.1
- - - - -
77c30033 by Michael R. Crusoe at 2018-12-23T13:57:30Z
Testsuite: autopkgtest-pkg-python
- - - - -
129ffb07 by Michael R. Crusoe at 2018-12-23T13:57:30Z
Remove trailing whitespace in debian/control
- - - - -
ef4e412d by Michael R. Crusoe at 2018-12-23T13:57:30Z
Drop ancient X-Python-Version field
- - - - -
ecd68eed by Michael R. Crusoe at 2018-12-23T14:07:50Z
Upload to unstable
- - - - -
17 changed files:
- PKG-INFO
- + README.md
- ast27/Include/Python-ast.h
- ast27/Python/Python-ast.c
- ast27/Python/ast.c
- ast3/Include/Python-ast.h
- ast3/Python/Python-ast.c
- ast3/Python/ast.c
- debian/changelog
- debian/compat
- debian/control
- setup.py
- typed_ast.egg-info/PKG-INFO
- typed_ast.egg-info/SOURCES.txt
- typed_ast/__init__.py
- typed_ast/ast27.py
- typed_ast/ast3.py
Changes:
=====================================
PKG-INFO
=====================================
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: typed-ast
-Version: 1.1.0
+Version: 1.1.1
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
=====================================
README.md
=====================================
@@ -0,0 +1,56 @@
+# 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.6 on Linux, OS X and Windows.
+
+## Development Philosophy
+
+This project is a 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.
+
+## Submodules
+### ast3
+The `ast3` parser produces the AST from the latest 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).
=====================================
ast27/Include/Python-ast.h
=====================================
@@ -286,7 +286,7 @@ struct _expr {
struct {
string s;
- int has_b;
+ string kind;
} Str;
struct {
@@ -505,7 +505,7 @@ expr_ty _Ta27_Repr(expr_ty value, int lineno, int col_offset, PyArena *arena);
#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);
=====================================
ast27/Python/Python-ast.c
=====================================
@@ -252,7 +252,7 @@ static char *Num_fields[]={
static PyTypeObject *Str_type;
static char *Str_fields[]={
"s",
- "has_b",
+ "kind",
};
static PyTypeObject *Attribute_type;
static char *Attribute_fields[]={
@@ -1850,7 +1850,7 @@ Num(object n, int lineno, int col_offset, PyArena *arena)
}
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 @@ Str(string s, int has_b, int lineno, int col_offset, PyArena *arena)
"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 @@ ast2obj_expr(void* _o)
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 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
}
if (isinstance) {
string s;
- int has_b;
+ string kind;
if (PyObject_HasAttrString(obj, "s")) {
int res;
@@ -5728,18 +5733,19 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
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;
}
=====================================
ast27/Python/ast.c
=====================================
@@ -1498,10 +1498,20 @@ ast_for_atom(struct compiling *c, const node *n)
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 @@ ast_for_atom(struct compiling *c, const node *n)
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));
=====================================
ast3/Include/Python-ast.h
=====================================
@@ -318,6 +318,7 @@ struct _expr {
struct {
string s;
+ string kind;
} Str;
struct {
@@ -601,8 +602,9 @@ expr_ty _Ta3_Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, int
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);
=====================================
ast3/Python/Python-ast.c
=====================================
@@ -307,8 +307,10 @@ static char *Num_fields[]={
};
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 @@ static int init_types(void)
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 @@ Num(object n, int lineno, int col_offset, PyArena *arena)
}
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 @@ Str(string s, int lineno, int col_offset, PyArena *arena)
"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 @@ ast2obj_expr(void* _o)
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 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
}
if (isinstance) {
string s;
+ string kind;
if (_PyObject_HasAttrId(obj, &PyId_s)) {
int res;
@@ -6778,7 +6792,18 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
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;
}
=====================================
ast3/Python/ast.c
=====================================
@@ -4971,14 +4971,25 @@ FstringParser_Dealloc(FstringParser *state)
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
=====================================
debian/changelog
=====================================
@@ -1,3 +1,15 @@
+python3-typed-ast (1.1.1-1) unstable; urgency=medium
+
+ * New upstream version
+ * debhelper 11
+ * Point Vcs fields to salsa.debian.org
+ * Standards-Version: 4.2.1
+ * Testsuite: autopkgtest-pkg-python
+ * Remove trailing whitespace in debian/control
+ * Drop ancient X-Python-Version field
+
+ -- Michael R. Crusoe <michael.crusoe at gmail.com> Sun, 23 Dec 2018 05:57:31 -0800
+
python3-typed-ast (1.1.0-1) unstable; urgency=medium
* New upstream version.
=====================================
debian/compat
=====================================
@@ -1 +1 @@
-9
+11
=====================================
debian/control
=====================================
@@ -2,22 +2,26 @@ Source: python3-typed-ast
Maintainer: Debian Med Packaging Team <debian-med-packaging at lists.alioth.debian.org>
Uploaders: Michael R. Crusoe <michael.crusoe at gmail.com>
Section: python
+Testsuite: autopkgtest-pkg-python
Priority: optional
-Build-Depends: debhelper (>= 9),
+Build-Depends: debhelper (>= 11~),
dh-python,
python3-all,
python3-setuptools,
python3-all-dev
-Standards-Version: 4.1.1
-Vcs-Browser: https://anonscm.debian.org/cgit/debian-med/python3-typed-ast.git
-Vcs-Git: https://anonscm.debian.org/git/debian-med/python3-typed-ast.git
+Standards-Version: 4.2.1
+Vcs-Browser: https://salsa.debian.org/med-team/python3-typed-ast
+Vcs-Git: https://salsa.debian.org/med-team/python3-typed-ast.git
Homepage: http://www.mypy-lang.org/
-X-Python3-Version: >= 3.3
Package: python3-typed-ast
Architecture: any
-Depends: ${python3:Depends}, ${misc:Depends}, ${shlibs:Depends}
+X-Python3-Version: ${python3:Versions}
+Provides: ${python3:Provides}
+Depends: ${python3:Depends},
+ ${misc:Depends},
+ ${shlibs:Depends}
Description: AST with PEP 484 type comments support
A fork of the CPython 2.7 and 3.5 ast modules with the ability to parse
PEP 484 type comments. The primary goals of this package are correctness and
- speed.
+ speed.
=====================================
setup.py
=====================================
@@ -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 @@ Python AST (plus type comments), and are both fast and correct, as they are
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',
=====================================
typed_ast.egg-info/PKG-INFO
=====================================
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: typed-ast
-Version: 1.1.0
+Version: 1.1.1
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
=====================================
typed_ast.egg-info/SOURCES.txt
=====================================
@@ -1,5 +1,6 @@
LICENSE
MANIFEST.in
+README.md
setup.py
ast27/Custom/typed_ast.c
ast27/Include/Python-ast.h
=====================================
typed_ast/__init__.py
=====================================
@@ -1 +1 @@
-
+__version__ = "1.1.1"
=====================================
typed_ast/ast27.py
=====================================
@@ -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
=====================================
typed_ast/ast3.py
=====================================
@@ -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
View it on GitLab: https://salsa.debian.org/med-team/python3-typed-ast/compare/9a6c41e80a29893b1da36d9dcc722e05b23cd36f...ecd68eed48eee7fd11aa81469aa347850e4d2937
--
View it on GitLab: https://salsa.debian.org/med-team/python3-typed-ast/compare/9a6c41e80a29893b1da36d9dcc722e05b23cd36f...ecd68eed48eee7fd11aa81469aa347850e4d2937
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20181223/dfb20cd3/attachment-0001.html>
More information about the debian-med-commit
mailing list