10000 fixes from review · numpy/numpy@ac7d543 · GitHub
[go: up one dir, main page]

Skip to content

Commit ac7d543

Browse files
committed
fixes from review
1 parent 64558ee commit ac7d543

File tree

1 file changed

+16
-20
lines changed

1 file changed

+16
-20
lines changed

numpy/core/src/multiarray/nditer_pywrap.c

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,14 @@
2020

2121
typedef struct NewNpyArrayIterObject_tag NewNpyArrayIterObject;
2222

23-
enum NPYITER_CONTEXT {CONTEXT_NOTENTERED, CONTEXT_INSIDE, CLOSED};
24-
2523
struct NewNpyArrayIterObject_tag {
2624
PyObject_HEAD
2725
/* The iterator */
2826
NpyIter *iter;
2927
/* Flag indicating iteration started/stopped */
3028
char started, finished;
31-
/* iter must used as a context manager if writebackifcopy semantics used */
32-
char managed;
29+
/* iter operands cannot be referenced if iter is closed */
30+
npy_bool is_closed;
3331
/* Child to update for nested iteration */
3432
NewNpyArrayIterObject *nested_child;
3533
/* Cached values from the iterator */
@@ -89,7 +87,7 @@ npyiter_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds)
8987
if (self != NULL) {
9088
self->iter = NULL;
9189
self->nested_child = NULL;
92-
self->managed = CONTEXT_NOTENTERED;
90+
self->is_closed = 0;
9391
}
9492

9593
return (PyObject *)self;
@@ -1419,7 +1417,7 @@ static PyObject *npyiter_value_get(NewNpyArrayIterObject *self)
14191417
ret = npyiter_seq_item(self, 0);
14201418
}
14211419
else {
1422-
if (self->managed == CLOSED) {
1420+
if (self->is_closed) {
14231421
PyErr_SetString(PyExc_ValueError,
14241422
"Iterator is closed");
14251423
return NULL;
@@ -1454,7 +1452,7 @@ static PyObject *npyiter_operands_get(NewNpyArrayIterObject *self)
14541452
"Iterator is invalid");
14551453
return NULL;
14561454
}
1457-
if (self->managed == CLOSED) {
1455+
if (self->is_closed) {
14581456
PyErr_SetString(PyExc_ValueError,
14591457
"Iterator is closed");
14601458
return NULL;
@@ -1489,7 +1487,7 @@ static PyObject *npyiter_itviews_get(NewNpyArrayIterObject *self)
14891487
return NULL;
14901488
}
14911489

1492-
if (self->managed == CLOSED) {
1490+
if (self->is_closed) {
14931491
PyErr_SetString(PyExc_ValueError,
14941492
"Iterator is closed");
14951493
return NULL;
@@ -1518,7 +1516,7 @@ static PyObject *
15181516
npyiter_next(NewNpyArrayIterObject *self)
15191517
{
15201518
if (self->iter == NULL || self->iternext == NULL ||
1521-
self->finished || (self->managed == CLOSED)) {
1519+
self->finished || self->is_closed) {
15221520
return NULL;
15231521
}
15241522

@@ -1913,7 +1911,7 @@ static PyObject *npyiter_dtypes_get(NewNpyArrayIterObject *self)
19131911
return NULL;
19141912
}
19151913

1916-
if (self->managed == CLOSED) {
1914+
if (self->is_closed) {
19171915
PyErr_SetString(PyExc_ValueError,
19181916
"Iterator is closed");
19191917
return NULL;
@@ -2015,7 +2013,7 @@ npyiter_seq_item(NewNpyArrayIterObject *self, Py_ssize_t i)
20152013
return NULL;
20162014
}
20172015

2018-
if (self->managed == CLOSED) {
2016+
if (self->is_closed) {
20192017
PyErr_SetString(PyExc_ValueError,
20202018
"Iterator is closed");
20212019
return NULL;
@@ -2105,7 +2103,7 @@ npyiter_seq_slice(NewNpyArrayIterObject *self,
21052103
return NULL;
21062104
}
21072105

2108-
if (self->managed == CLOSED) {
2106+
if (self->is_closed) {
21092107
PyErr_SetString(PyExc_ValueError,
21102108
"Iterator is closed");
21112109
return NULL;
@@ -2171,7 +2169,7 @@ npyiter_seq_ass_item(NewNpyArrayIterObject *self, Py_ssize_t i, PyObject *v)
21712169
return -1;
21722170
}
21732171

2174-
if (self->managed == CLOSED) {
2172+
if (self->is_closed) {
21752173
PyErr_SetString(PyExc_ValueError,
21762174
"Iterator is closed");
21772175
return -1;
@@ -2251,7 +2249,7 @@ npyiter_seq_ass_slice(NewNpyArrayIterObject *self, Py_ssize_t ilow,
22512249
return -1;
22522250
}
22532251

2254-
if (self->managed == CLOSED) {
2252+
if (self->is_closed) {
22552253
PyErr_SetString(PyExc_ValueError,
22562254
"Iterator is closed");
22572255
return -1;
@@ -2308,7 +2306,7 @@ npyiter_subscript(NewNpyArrayIterObject *self, PyObject *op)
23082306
return NULL;
23092307
}
23102308

2311-
if (self->managed == CLOSED) {
2309+
if (self->is_closed) {
23122310
PyErr_SetString(PyExc_ValueError,
23132311
"Iterator is closed");
23142312
return NULL;
@@ -2363,7 +2361,7 @@ npyiter_ass_subscript(NewNpyArrayIterObject *self, PyObject *op,
23632361
return -1;
23642362
}
23652363

2366-
if (self->managed == CLOSED) {
2364+
if (self->is_closed) {
23672365
PyErr_SetString(PyExc_ValueError,
23682366
"Iterator is closed");
23692367
return -1;
@@ -2403,11 +2401,10 @@ npyiter_enter(NewNpyArrayIterObject *self)
24032401
PyErr_SetString(PyExc_RuntimeError, "operation on non-initialized iterator");
24042402
return NULL;
24052403
}
2406-
if (self->managed == CLOSED) {
2404+
if (self->is_closed) {
24072405
PyErr_SetString(PyExc_ValueError, "cannot reuse closed iterator");
24082406
return NULL;
24092407
}
2410-
self->managed = CONTEXT_INSIDE;
24112408
Py_INCREF(self);
24122409
return (PyObject *)self;
24132410
}
@@ -2421,7 +2418,7 @@ npyiter_close(NewNpyArrayIterObject *self)
24212418
Py_RETURN_NONE;
24222419
}
24232420
ret = NpyIter_Close(iter);
2424-
self->managed = CLOSED;
2421+
self->is_closed = 1;
24252422
if (ret < 0) {
24262423
return NULL;
24272424
}
@@ -2431,7 +2428,6 @@ npyiter_close(NewNpyArrayIterObject *self)
24312428
static PyObject *
24322429
npyiter_exit(NewNpyArrayIterObject *self, PyObject *args)
24332430
{
2434-
self->managed = CLOSED;
24352431
/* even if called via exception handling, writeback any data */
24362432
return npyiter_close(self);
24372433
}

0 commit comments

Comments
 (0)
0