Skip to content

Commit bc359f2

Browse files
committed
Merge branch 'master' into thh/intrinsify-csv-module
2 parents cda20f8 + 22a5f66 commit bc359f2

File tree

113 files changed

+1899
-770
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

113 files changed

+1899
-770
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ language runtime. The main focus is on user-observable behavior of the engine.
77
* Added support for `pyexpat` module.
88
* Added partial support for `PYTHONHASHSEED` environment variable (also available via `HashSeed` context option), currently only affecting hashing in `pyexpat` module.
99
* Implement `_csv` module.
10+
* Improved compatibility with PyPI packages `wheel` and `click`
1011

1112
## Version 21.3.0
1213

graalpython/com.oracle.graal.python.cext/src/capi.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ declare_type(PyMethodDescr_Type, method_descriptor, PyMethodDescrObject);
187187
declare_type(PyGetSetDescr_Type, getset_descriptor, PyGetSetDescrObject);
188188
declare_type(PyMemberDescr_Type, member_descriptor, PyMemberDescrObject);
189189
declare_type(_PyExc_BaseException, BaseException, PyBaseExceptionObject);
190+
declare_type(_PyExc_StopIteration, StopIteration, PyStopIterationObject);
190191
declare_type(PyBuffer_Type, buffer, PyBufferDecorator);
191192
declare_type(PyFunction_Type, function, PyFunctionObject);
192193
declare_type(PyMethod_Type, method, PyMethodObject);

graalpython/com.oracle.graal.python.cext/src/capi.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ typedef struct {
8686

8787
PyAPI_DATA(PyTypeObject) PyBuffer_Type;
8888
PyAPI_DATA(PyTypeObject) _PyExc_BaseException;
89+
PyAPI_DATA(PyTypeObject) _PyExc_StopIteration;
8990

9091
typedef void (*init_upcall)();
9192

@@ -331,6 +332,7 @@ void initialize_hashes();
331332
#define JWRAPPER_OBJOBJPROC 39
332333
#define JWRAPPER_OBJOBJARGPROC 40
333334
#define JWRAPPER_NEW 41
335+
#define JWRAPPER_MP_DELITEM 42
334336

335337
#define TDEBUG __builtin_debugtrap()
336338
#define get_method_flags_wrapper(flags) \

graalpython/com.oracle.graal.python.cext/src/errors.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ PyObject* PyErr_SetFromErrnoWithFilenameObjects(PyObject* exc, PyObject* filenam
223223
char *s = strerror(i);
224224
// TODO(fa): use PyUnicode_DecodeLocale once available
225225
// message = PyUnicode_DecodeLocale(s, "surrogateescape");
226-
message = polyglot_from_string(s, SRC_CS);
226+
message = PyUnicode_FromString(s);
227227
}
228228
else {
229229
/* Sometimes errno didn't get set */

graalpython/com.oracle.graal.python.cext/src/exceptions.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
#include <pyerrors.h>
4444

4545
PyTypeObject _PyExc_BaseException = PY_TRUFFLE_TYPE("BaseException", &PyType_Type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_BASE_EXC_SUBCLASS, sizeof(PyBaseExceptionObject));
46+
PyTypeObject _PyExc_StopIteration = PY_TRUFFLE_TYPE("StopIteration", &PyType_Type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_BASE_EXC_SUBCLASS, sizeof(PyStopIterationObject));
4647

4748
#define PY_EXCEPTION(__EXC_NAME__) (UPCALL_CEXT_O(polyglot_from_string("PyTruffle_Type", SRC_CS), polyglot_from_string(__EXC_NAME__, SRC_CS)))
4849

graalpython/com.oracle.graal.python.cext/src/listobject.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,8 @@ UPCALL_ID(PyList_Insert);
106106
int PyList_Insert(PyObject *op, Py_ssize_t where, PyObject *newitem) {
107107
return UPCALL_CEXT_I(_jls_PyList_Insert, native_to_java(op), where, native_to_java(newitem));
108108
}
109+
110+
UPCALL_ID(PyList_Reverse);
111+
PyAPI_FUNC(int) PyList_Reverse(PyObject *self) {
112+
return UPCALL_CEXT_I(_jls_PyList_Reverse, native_to_java(self));
113+
}

graalpython/com.oracle.graal.python.cext/src/pystate.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,17 @@ PyThreadState* PyGILState_GetThisThreadState(void) {
7878
return polyglot_invoke(PY_TRUFFLE_CEXT, "PyThreadState_Get");
7979
}
8080

81-
UPCALL_ID(PyState_FindModule)
81+
typedef PyObject* (*find_module_fun_t)(long index);
82+
UPCALL_TYPED_ID(PyState_FindModule, find_module_fun_t);
8283
PyObject* PyState_FindModule(struct PyModuleDef* module) {
83-
return UPCALL_CEXT_O(_jls_PyState_FindModule, module->m_base.m_index);
84+
Py_ssize_t index = module->m_base.m_index;
85+
if (module->m_slots) {
86+
return NULL;
87+
} else if (index == 0) {
88+
return NULL;
89+
} else {
90+
return _jls_PyState_FindModule(index);
91+
}
8492
}
8593

8694
int PyState_AddModule(PyObject* module, struct PyModuleDef* def) {

graalpython/com.oracle.graal.python.cext/src/setobject.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,8 @@ UPCALL_ID(PySet_Discard);
9292
int PySet_Discard(PyObject *set, PyObject *key) {
9393
return UPCALL_CEXT_I(_jls_PySet_Discard, native_to_java(set), native_to_java(key));
9494
}
95+
96+
UPCALL_ID(PySet_Clear);
97+
int PySet_Clear(PyObject *set) {
98+
return UPCALL_CEXT_I(_jls_PySet_Clear, native_to_java(set));
99+
}

graalpython/com.oracle.graal.python.cext/src/typeobject.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,7 @@ int PyType_Ready(PyTypeObject* cls) {
680680
ADD_SLOT_CONV("__len__", mappings->mp_length, -1, JWRAPPER_LENFUNC);
681681
ADD_SLOT_CONV("__getitem__", mappings->mp_subscript, -2, JWRAPPER_BINARYFUNC);
682682
ADD_SLOT_CONV("__setitem__", mappings->mp_ass_subscript, -3, JWRAPPER_OBJOBJARGPROC);
683+
ADD_SLOT_CONV("__delitem__", mappings->mp_ass_subscript, -3, JWRAPPER_MP_DELITEM);
683684
}
684685

685686
PyAsyncMethods* async = cls->tp_as_async;

graalpython/com.oracle.graal.python.cext/src/unicodeobject.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,3 +665,8 @@ UPCALL_ID(PyUnicode_ReadChar);
665665
Py_UCS4 PyUnicode_ReadChar(PyObject *unicode, Py_ssize_t index) {
666666
return UPCALL_CEXT_I(_jls_PyUnicode_ReadChar, native_to_java(unicode), index);
667667
}
668+
669+
UPCALL_ID(PyUnicode_Contains)
670+
int PyUnicode_Contains(PyObject *str, PyObject *substr) {
671+
return UPCALL_CEXT_I(_jls_PyUnicode_Contains, native_to_java(str), native_to_java(substr));
672+
}

0 commit comments

Comments
 (0)