static PyObject *Scopeable_addScopeMatchers(PyObject *self, PyObject *args) { PyObject *matchers; int len=PyTuple_Size(args)-1; int i; if (!(self=getSelf(args))) { return NULL; } matchers=PyObject_GetAttrString(self, MATCHERS); REFCNT("matchers", matchers); if (!PyList_Check(matchers)) { PyErr_SetString(PyExc_TypeError, "internal type error"); Py_XDECREF(matchers); return NULL; } if (len) { for (i=0;i<len;i++) { PyObject *newMatcher=PySequence_GetItem(args, i+1); PyList_Append(matchers, newMatcher); } PyList_Sort(matchers); } Py_DECREF(matchers); REFCNT("matchers", matchers); Py_INCREF(Py_None); return Py_None; }
static PyObject * listmethodchain(PyMethodChain *chain) { PyMethodChain *c; PyMethodDef *ml; int i, n; PyObject *v; n = 0; for (c = chain; c != NULL; c = c->link) { for (ml = c->methods; ml->ml_name != NULL; ml++) n++; } v = PyList_New(n); if (v == NULL) return NULL; i = 0; for (c = chain; c != NULL; c = c->link) { for (ml = c->methods; ml->ml_name != NULL; ml++) { PyList_SetItem(v, i, PyString_FromString(ml->ml_name)); i++; } } if (PyErr_Occurred()) { Py_DECREF(v); return NULL; } PyList_Sort(v); return v; }
PyObject *Bar_GetMatrix(BarObject *self) { int nnz, i; PyObject *retval; int (*get_mat)(glp_prob*,int,int[],double[]); if (!Bar_Valid(self, 1)) return NULL; get_mat = Bar_Row(self) ? glp_get_mat_row : glp_get_mat_col; i = Bar_Index(self)+1; nnz = get_mat(LP, i, NULL, NULL); retval = PyList_New(nnz); if (nnz==0 || retval==NULL) return retval; int*ind = (int*)calloc(nnz,sizeof(int)); double*val = (double*)calloc(nnz,sizeof(double)); nnz = get_mat(LP, i, ind-1, val-1); for (i=0; i<nnz; ++i) { PyList_SET_ITEM(retval, i, Py_BuildValue("id", ind[i]-1, val[i])); } free(ind); free(val); if (PyList_Sort(retval)) { Py_DECREF(retval); return NULL; } return retval; }
static int PDFfile_setfonts(PDFfile *self, PyObject *value, void * /*closure*/) { if (value == NULL) { PyErr_SetString(PyExc_TypeError, "Cannot delete 'fonts' attribute."); return -1; } if (!PyList_Check(value)) { PyErr_SetString(PyExc_TypeError, "The 'fonts' attribute value must be list of strings."); return -1; } int n; n = PyList_Size(value); for (int i=0; i<n; ++i) if (!PyString_Check(PyList_GetItem(value, i))) { PyErr_SetString(PyExc_TypeError, "The 'fonts' list must contain only strings."); return -1; } // Do I need to check if supplied string is really // name of available font??? // this is not implemented yet Py_DECREF(self->fonts); Py_INCREF(value); self->fonts = value; PyList_Sort(self->fonts); return 0; }
static int PDFfile_setpages(PDFfile *self, PyObject *value, void * /*closure*/) { if (value == NULL) { PyErr_SetString(PyExc_TypeError, "Cannot delete 'pages' attribute."); return -1; } if (!PyList_Check(value)) { PyErr_SetString(PyExc_TypeError, "'pages' attribute value must be list of integers."); return -1; } int len = PyList_Size(value); for (int i = 0; i<len; i++){ PyObject *tmp = PyList_GetItem(value, i); // I did not check if tmp is NULL // how can PyList_GetItem fail in this case (my guess: short of available memory?) // Also do I need Py_INCREF or Py_DECREF here? if (!PyInt_Check(tmp)){ PyErr_SetString(PyExc_TypeError, "'pages' list must contain only integers."); return -1; } if (PyInt_AsLong(tmp) > static_cast<int>(ScCore->primaryMainWindow()->doc->Pages->count()) || PyInt_AsLong(tmp) < 1) { PyErr_SetString(PyExc_ValueError, "'pages' value out of range."); return -1; } } Py_DECREF(self->pages); Py_INCREF(value); self->pages = value; PyList_Sort(self->pages); return 0; }
void list_base::sort() { if (PyList_CheckExact(this->ptr())) { if (PyList_Sort(this->ptr()) == -1) throw_error_already_set(); } else { this->attr("sort")(); } }
/* this function consumes a reference from 'set' */ static PyObject *make_ordered_set(PyObject *set) { PyObject *result = PySequence_List(set); if (result == NULL) { Py_DECREF(set); } else { Py_DECREF(set); if (PyList_Sort(result) == -1) { Py_DECREF(result); return NULL; } } return result; }
/* * Implements PyObject_Dir(PyObject*) for pyjobjects. This is required for * Python 3.3+ for dir(pyjobject) to work correctly. */ static PyObject* pyjobject_dir(PyObject *o, PyObject* ignore) { PyObject* attrs; PyJObject *self = (PyJObject*) o; Py_ssize_t size, i, contains; attrs = PyList_New(0); size = PySequence_Size(self->methods); for (i = 0; i < size; i++) { PyObject *item = PySequence_GetItem(self->methods, i); contains = PySequence_Contains(attrs, item); if (contains < 0) { Py_DECREF(attrs); return NULL; } else if (contains == 0) { if (PyList_Append(attrs, item) < 0) { Py_DECREF(attrs); return NULL; } } } // TODO copy/paste is bad, turn it into a method size = PySequence_Size(self->fields); for (i = 0; i < size; i++) { PyObject *item = PySequence_GetItem(self->fields, i); contains = PySequence_Contains(attrs, item); if (contains < 0) { Py_DECREF(attrs); return NULL; } else if (contains == 0) { if (PyList_Append(attrs, item) < 0) { Py_DECREF(attrs); return NULL; } } } if (PyList_Sort(attrs) < 0) { Py_DECREF(attrs); return NULL; } return attrs; }
/* Convert the set of state numbers into a sorted tuple for use as a * dictionary key. */ static PyObject *make_key(PyObject *state_set) { PyObject *states, *key; states = PyDict_Keys(state_set); if (states == NULL) { return NULL; } if (PyList_Sort(states) < 0) { Py_DECREF(states); return NULL; } key = PySequence_Tuple(states); Py_DECREF(states); if (key == NULL) { return NULL; } return key; }
PyObject *LPX_GetMatrix(LPXObject *self) { int row, numrows, listi, i, nnz, rownz; PyObject *retval; numrows = glp_get_num_rows(LP); nnz = glp_get_num_nz(LP); retval = PyList_New(nnz); if (nnz == 0 || retval == NULL) return retval; // We don't really need this much memory, but, eh... int *ind = (int*)calloc(nnz, sizeof(int)); double *val = (double*)calloc(nnz, sizeof(double)); listi = 0; for (row=1; row<=numrows; ++row) { rownz = glp_get_mat_row(LP, row, ind-1, val-1); if (rownz == 0) continue; for (i = 0; i < rownz; ++i) { PyList_SET_ITEM(retval, listi++, Py_BuildValue("iid", row - 1, ind[i] - 1, val[i])); } /* * Continue to downscale these vectors, freeing memory in C even * as we use more memory in Python. */ nnz -= rownz; if (nnz) { ind = (int*)realloc(ind, nnz*sizeof(int)); val = (double*)realloc(val, nnz*sizeof(double)); } } free(ind); free(val); if (PyList_Sort(retval)) { Py_DECREF(retval); return NULL; } return retval; }
static PyObject * listmembers(struct memberlist *mlist) { int i, n; PyObject *v; for (n = 0; mlist[n].name != NULL; n++) ; v = PyList_New(n); if (v != NULL) { for (i = 0; i < n; i++) PyList_SetItem(v, i, PyString_FromString(mlist[i].name)); if (PyErr_Occurred()) { Py_DECREF(v); v = NULL; } else { PyList_Sort(v); } } return v; }
static void _struct_build_repr(StructObject *that) { GString *str; PyObject *items; int i; g_assert(that->repr == NULL); str = g_string_new("Struct {"); /* safe, a Struct can't be empty */ items = PyDict_Items(that->dict); (void) PyList_Sort(items); for(i = 0; i < PyList_GET_SIZE(items); ++i) { PyObject *pair, *key, *value; pair = PyList_GET_ITEM(items, i); key = PyObject_Str(PyTuple_GET_ITEM(pair, 0)); value = PyObject_Str(PyTuple_GET_ITEM(pair, 1)); g_string_append_printf(str, " .%s = %s,", PyString_AS_STRING(key), PyString_AS_STRING(value)); Py_DECREF(key); Py_DECREF(value); } Py_DECREF(items); str->str[ str->len - 1 ] = ' '; /* replace the trailing ',' by a ' ' */ g_string_append_c(str, '}'); that->repr = PyString_FromStringAndSize(str->str, str->len); g_string_free(str, TRUE); }
static PyObject * MemberList(void) { int i, n; PyObject *v; for (n = 0; Fontattrdefs[n].name != NULL; n++) ; v = PyList_New(n); if (v != NULL) { for (i = 0; i < n; i++) PyList_SetItem(v, i, PyString_FromString(Fontattrdefs[i].name)); if (PyErr_Occurred()) { Py_DECREF(v); v = NULL; } else { PyList_Sort(v); } } return v; }
void List::sort() { PyList_Sort(mPtr); }
int SortedDict_iterNext(JSOBJ obj, JSONTypeContext *tc) { PyObject *items = NULL, *item = NULL, *key = NULL, *value = NULL; Py_ssize_t i, nitems; #if PY_MAJOR_VERSION >= 3 PyObject* keyTmp; #endif // Upon first call, obtain a list of the keys and sort them. This follows the same logic as the // stanard library's _json.c sort_keys handler. if (GET_TC(tc)->newObj == NULL) { // Obtain the list of keys from the dictionary. items = PyMapping_Keys(GET_TC(tc)->dictObj); if (items == NULL) { goto error; } else if (!PyList_Check(items)) { PyErr_SetString(PyExc_ValueError, "keys must return list"); goto error; } // Sort the list. if (PyList_Sort(items) < 0) { goto error; } // Obtain the value for each key, and pack a list of (key, value) 2-tuples. nitems = PyList_GET_SIZE(items); for (i = 0; i < nitems; i++) { key = PyList_GET_ITEM(items, i); value = PyDict_GetItem(GET_TC(tc)->dictObj, key); // Subject the key to the same type restrictions and conversions as in Dict_iterGetValue. if (PyUnicode_Check(key)) { key = PyUnicode_AsUTF8String(key); } else if (!PyString_Check(key)) { key = PyObject_Str(key); #if PY_MAJOR_VERSION >= 3 keyTmp = key; key = PyUnicode_AsUTF8String(key); Py_DECREF(keyTmp); #endif } else { Py_INCREF(key); } item = PyTuple_Pack(2, key, value); if (item == NULL) { goto error; } PyList_SET_ITEM(items, i, item); Py_DECREF(key); } // Store the sorted list of tuples in the newObj slot. GET_TC(tc)->newObj = items; GET_TC(tc)->size = nitems; } if (GET_TC(tc)->index >= GET_TC(tc)->size) { PRINTMARK(); return 0; } item = PyList_GET_ITEM(GET_TC(tc)->newObj, GET_TC(tc)->index); GET_TC(tc)->itemName = PyTuple_GET_ITEM(item, 0); GET_TC(tc)->itemValue = PyTuple_GET_ITEM(item, 1); GET_TC(tc)->index++; return 1; error: Py_XDECREF(item); Py_XDECREF(key); Py_XDECREF(value); Py_XDECREF(items); return -1; }
/** sort in place. */ void sort() { int r = PyList_Sort(_p); if(r == -1) throw err("sort failed"); }
static PyObject * lru_cache_make_key(PyObject *args, PyObject *kwds, int typed) { PyObject *key, *sorted_items; Py_ssize_t key_size, pos, key_pos; /* short path, key will match args anyway, which is a tuple */ if (!typed && !kwds) { Py_INCREF(args); return args; } if (kwds && PyDict_GET_SIZE(kwds) > 0) { sorted_items = PyDict_Items(kwds); if (!sorted_items) return NULL; if (PyList_Sort(sorted_items) < 0) { Py_DECREF(sorted_items); return NULL; } } else sorted_items = NULL; key_size = PyTuple_GET_SIZE(args); if (sorted_items) key_size += PyList_GET_SIZE(sorted_items); if (typed) key_size *= 2; if (sorted_items) key_size++; key = PyTuple_New(key_size); if (key == NULL) goto done; key_pos = 0; for (pos = 0; pos < PyTuple_GET_SIZE(args); ++pos) { PyObject *item = PyTuple_GET_ITEM(args, pos); Py_INCREF(item); PyTuple_SET_ITEM(key, key_pos++, item); } if (sorted_items) { Py_INCREF(kwd_mark); PyTuple_SET_ITEM(key, key_pos++, kwd_mark); for (pos = 0; pos < PyList_GET_SIZE(sorted_items); ++pos) { PyObject *item = PyList_GET_ITEM(sorted_items, pos); Py_INCREF(item); PyTuple_SET_ITEM(key, key_pos++, item); } } if (typed) { for (pos = 0; pos < PyTuple_GET_SIZE(args); ++pos) { PyObject *item = (PyObject *)Py_TYPE(PyTuple_GET_ITEM(args, pos)); Py_INCREF(item); PyTuple_SET_ITEM(key, key_pos++, item); } if (sorted_items) { for (pos = 0; pos < PyList_GET_SIZE(sorted_items); ++pos) { PyObject *tp_items = PyList_GET_ITEM(sorted_items, pos); PyObject *item = (PyObject *)Py_TYPE(PyTuple_GET_ITEM(tp_items, 1)); Py_INCREF(item); PyTuple_SET_ITEM(key, key_pos++, item); } } } assert(key_pos == key_size); done: if (sorted_items) Py_DECREF(sorted_items); return key; }
static PyObject *real_encode_dict(PyObject *data, PyObject *output) { PyObject *keys, *key, *ret; int i, keylen; PyObject *owrite_method; PyObject *excval; owrite_method = PyObject_GetAttrString(output, "write"); if (!owrite_method || !PyCallable_Check(owrite_method)) { excval = Py_BuildValue("(is)", 0, "output object must have a callable write method"); if (excval != NULL) { PyErr_SetObject(PyExc_ValueError, excval); Py_DECREF(excval); } Py_XDECREF(owrite_method); return NULL; } // result.write('(4:dict') ret = PyObject_CallObject(owrite_method, dict_tup_const); RETURN_IF_EXC(ret); Py_DECREF(ret); // keys = data.keys() keys = PyDict_Keys(data); // keys.sort() // XXX FIXME bad! this depends on the python implementations cross type comparison (string > integer or long) if (PyList_Sort(keys) != 0) { excval = Py_BuildValue("(is)", 0, "PyList_Sort failed [returned non zero]"); if (excval != NULL) { PyErr_SetObject(MencodeError, excval); Py_DECREF(excval); } Py_DECREF(keys); Py_DECREF(owrite_method); return NULL; } keylen = PyList_Size(keys); // for key in keys: for (i = 0; i < keylen; i++) { key = PyList_GetItem(keys, i); // if type(key) not in (types.StringType, types.IntType, types.LongType): // TODO support BufferType in the future if (!PyString_Check(key) && !PyInt_Check(key) && !PyLong_Check(key)) { Py_DECREF(keys); // it would be nice if this exception included the key we tried to encode... excval = Py_BuildValue("(is)", 0, "mencoded dictionary keys must be strings or numbers"); if (excval != NULL) { PyErr_SetObject(MencodeError, excval); Py_DECREF(excval); } Py_DECREF(owrite_method); return NULL; } // encode_io(key, result) if (real_encode_io(key, output) == NULL) { Py_DECREF(keys); Py_DECREF(owrite_method); return NULL; } // encode_io(data[key], result) if (real_encode_io(PyDict_GetItem(data, key), output) == NULL) { Py_DECREF(keys); Py_DECREF(owrite_method); return NULL; } } Py_DECREF(keys); // result.write(')') ret = PyObject_CallObject(owrite_method, close_paren_tup_const); RETURN_IF_EXC(ret); Py_DECREF(ret); Py_XDECREF(owrite_method); Py_INCREF(Py_None); return Py_None; }
static PyObject *__pyx_f_11closestpair_closest_pair(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyListObject *__pyx_v_points = 0; float __pyx_v_min_d; PyObject *__pyx_v_min_p1; PyObject *__pyx_v_min_p2; PyObject *__pyx_v_i; PyObject *__pyx_v_point; PyObject *__pyx_v_point2; PyObject *__pyx_v_d; PyObject *__pyx_v_split; PyObject *__pyx_v_d1; PyObject *__pyx_v_p11; PyObject *__pyx_v_p12; PyObject *__pyx_v_d2; PyObject *__pyx_v_p21; PyObject *__pyx_v_p22; PyObject *__pyx_v_points_in_strip; PyObject *__pyx_v_split_at; PyObject *__pyx_v_max_i; PyObject *__pyx_v_sd; PyObject *__pyx_r; Py_ssize_t __pyx_1; int __pyx_2; PyObject *__pyx_3 = 0; PyObject *__pyx_4 = 0; PyObject *__pyx_5 = 0; PyObject *__pyx_6 = 0; PyObject *__pyx_7 = 0; PyObject *__pyx_8 = 0; PyObject *__pyx_9 = 0; PyObject *__pyx_10 = 0; float __pyx_11; int __pyx_12; Py_ssize_t __pyx_13; static char *__pyx_argnames[] = {"points",0}; if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_points)) return 0; Py_INCREF(__pyx_v_points); __pyx_v_min_p1 = Py_None; Py_INCREF(Py_None); __pyx_v_min_p2 = Py_None; Py_INCREF(Py_None); __pyx_v_i = Py_None; Py_INCREF(Py_None); __pyx_v_point = Py_None; Py_INCREF(Py_None); __pyx_v_point2 = Py_None; Py_INCREF(Py_None); __pyx_v_d = Py_None; Py_INCREF(Py_None); __pyx_v_split = Py_None; Py_INCREF(Py_None); __pyx_v_d1 = Py_None; Py_INCREF(Py_None); __pyx_v_p11 = Py_None; Py_INCREF(Py_None); __pyx_v_p12 = Py_None; Py_INCREF(Py_None); __pyx_v_d2 = Py_None; Py_INCREF(Py_None); __pyx_v_p21 = Py_None; Py_INCREF(Py_None); __pyx_v_p22 = Py_None; Py_INCREF(Py_None); __pyx_v_points_in_strip = Py_None; Py_INCREF(Py_None); __pyx_v_split_at = Py_None; Py_INCREF(Py_None); __pyx_v_max_i = Py_None; Py_INCREF(Py_None); __pyx_v_sd = Py_None; Py_INCREF(Py_None); if (!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_points), (&PyList_Type), 1, "points")) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 6; goto __pyx_L1;} /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":15 */ __pyx_1 = PyObject_Length(((PyObject *)__pyx_v_points)); if (__pyx_1 == -1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; goto __pyx_L1;} __pyx_2 = (__pyx_1 < 2); if (__pyx_2) { __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; goto __pyx_L1;} Py_INCREF(__pyx_k1p); PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k1p); __pyx_4 = PyObject_CallObject(PyExc_ValueError, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; __Pyx_Raise(__pyx_4, 0, 0); Py_DECREF(__pyx_4); __pyx_4 = 0; {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; goto __pyx_L1;} goto __pyx_L2; } __pyx_1 = PyObject_Length(((PyObject *)__pyx_v_points)); if (__pyx_1 == -1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; goto __pyx_L1;} __pyx_2 = 2 <= __pyx_1; if (__pyx_2) { __pyx_2 = __pyx_1 <= 6; } if (__pyx_2) { /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":18 */ __pyx_v_min_d = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":19 */ Py_INCREF(Py_None); Py_DECREF(__pyx_v_min_p1); __pyx_v_min_p1 = Py_None; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":20 */ Py_INCREF(Py_None); Py_DECREF(__pyx_v_min_p2); __pyx_v_min_p2 = Py_None; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":21 */ __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} Py_INCREF(((PyObject *)__pyx_v_points)); PyTuple_SET_ITEM(__pyx_3, 0, ((PyObject *)__pyx_v_points)); __pyx_4 = PyObject_CallObject(((PyObject *)(&PyEnum_Type)), __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; __pyx_3 = PyObject_GetIter(__pyx_4); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; for (;;) { __pyx_4 = PyIter_Next(__pyx_3); if (!__pyx_4) { if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} break; } __pyx_5 = PyObject_GetIter(__pyx_4); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; __pyx_4 = __Pyx_UnpackItem(__pyx_5); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} Py_DECREF(__pyx_v_i); __pyx_v_i = __pyx_4; __pyx_4 = 0; __pyx_4 = __Pyx_UnpackItem(__pyx_5); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} Py_DECREF(__pyx_v_point); __pyx_v_point = __pyx_4; __pyx_4 = 0; if (__Pyx_EndUnpack(__pyx_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; goto __pyx_L1;} Py_DECREF(__pyx_5); __pyx_5 = 0; __pyx_4 = PyInt_FromLong(1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} __pyx_5 = PyNumber_Add(__pyx_v_i, __pyx_4); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; __pyx_1 = PyInt_AsSsize_t(__pyx_5); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} Py_DECREF(__pyx_5); __pyx_5 = 0; __pyx_4 = PySequence_GetSlice(((PyObject *)__pyx_v_points), __pyx_1, PY_SSIZE_T_MAX); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} __pyx_5 = PyObject_GetIter(__pyx_4); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; for (;;) { __pyx_4 = PyIter_Next(__pyx_5); if (!__pyx_4) { if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 22; goto __pyx_L1;} break; } Py_DECREF(__pyx_v_point2); __pyx_v_point2 = __pyx_4; __pyx_4 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":23 */ __pyx_4 = __Pyx_GetName(__pyx_m, __pyx_n_distance); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; goto __pyx_L1;} __pyx_6 = PySequence_GetItem(__pyx_v_point, 0); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; goto __pyx_L1;} __pyx_7 = PySequence_GetItem(__pyx_v_point, 1); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; goto __pyx_L1;} __pyx_8 = PySequence_GetItem(__pyx_v_point2, 0); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; goto __pyx_L1;} __pyx_9 = PySequence_GetItem(__pyx_v_point2, 1); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; goto __pyx_L1;} __pyx_10 = PyTuple_New(4); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_10, 0, __pyx_6); PyTuple_SET_ITEM(__pyx_10, 1, __pyx_7); PyTuple_SET_ITEM(__pyx_10, 2, __pyx_8); PyTuple_SET_ITEM(__pyx_10, 3, __pyx_9); __pyx_6 = 0; __pyx_7 = 0; __pyx_8 = 0; __pyx_9 = 0; __pyx_6 = PyObject_CallObject(__pyx_4, __pyx_10); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 23; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; Py_DECREF(__pyx_10); __pyx_10 = 0; Py_DECREF(__pyx_v_d); __pyx_v_d = __pyx_6; __pyx_6 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":24 */ __pyx_2 = (__pyx_v_min_d == 0); if (!__pyx_2) { __pyx_7 = PyFloat_FromDouble(__pyx_v_min_d); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;} if (PyObject_Cmp(__pyx_7, __pyx_v_d, &__pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;} __pyx_2 = __pyx_2 > 0; Py_DECREF(__pyx_7); __pyx_7 = 0; } if (__pyx_2) { /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":25 */ __pyx_11 = PyFloat_AsDouble(__pyx_v_d); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 25; goto __pyx_L1;} __pyx_v_min_d = __pyx_11; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":26 */ Py_INCREF(__pyx_v_point); Py_DECREF(__pyx_v_min_p1); __pyx_v_min_p1 = __pyx_v_point; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":27 */ Py_INCREF(__pyx_v_point2); Py_DECREF(__pyx_v_min_p2); __pyx_v_min_p2 = __pyx_v_point2; goto __pyx_L7; } __pyx_L7:; } Py_DECREF(__pyx_5); __pyx_5 = 0; } Py_DECREF(__pyx_3); __pyx_3 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":28 */ __pyx_8 = PyFloat_FromDouble(__pyx_v_min_d); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; goto __pyx_L1;} __pyx_9 = PyTuple_New(3); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_9, 0, __pyx_8); Py_INCREF(__pyx_v_min_p1); PyTuple_SET_ITEM(__pyx_9, 1, __pyx_v_min_p1); Py_INCREF(__pyx_v_min_p2); PyTuple_SET_ITEM(__pyx_9, 2, __pyx_v_min_p2); __pyx_8 = 0; __pyx_r = __pyx_9; __pyx_9 = 0; goto __pyx_L0; goto __pyx_L2; } /*else*/ { /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":30 */ __pyx_12 = PyList_Sort(((PyObject *)__pyx_v_points)); if (__pyx_12 == -1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; goto __pyx_L1;} /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":32 */ __pyx_1 = PyObject_Length(((PyObject *)__pyx_v_points)); if (__pyx_1 == -1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; goto __pyx_L1;} __pyx_4 = PyInt_FromSsize_t((__pyx_1 / 2)); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; goto __pyx_L1;} __pyx_10 = PyTuple_New(1); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_10, 0, __pyx_4); __pyx_4 = 0; __pyx_6 = PyObject_CallObject(((PyObject *)(&PyInt_Type)), __pyx_10); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; goto __pyx_L1;} Py_DECREF(__pyx_10); __pyx_10 = 0; Py_DECREF(__pyx_v_split); __pyx_v_split = __pyx_6; __pyx_6 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":33 */ __pyx_7 = __Pyx_GetName(__pyx_m, __pyx_n_closest_pair); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} __pyx_1 = PyInt_AsSsize_t(__pyx_v_split); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} __pyx_5 = PySequence_GetSlice(((PyObject *)__pyx_v_points), 0, __pyx_1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_3, 0, __pyx_5); __pyx_5 = 0; __pyx_8 = PyObject_CallObject(__pyx_7, __pyx_3); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} Py_DECREF(__pyx_7); __pyx_7 = 0; Py_DECREF(__pyx_3); __pyx_3 = 0; __pyx_9 = PyObject_GetIter(__pyx_8); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} Py_DECREF(__pyx_8); __pyx_8 = 0; __pyx_4 = __Pyx_UnpackItem(__pyx_9); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} Py_DECREF(__pyx_v_d1); __pyx_v_d1 = __pyx_4; __pyx_4 = 0; __pyx_10 = __Pyx_UnpackItem(__pyx_9); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} Py_DECREF(__pyx_v_p11); __pyx_v_p11 = __pyx_10; __pyx_10 = 0; __pyx_6 = __Pyx_UnpackItem(__pyx_9); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} Py_DECREF(__pyx_v_p12); __pyx_v_p12 = __pyx_6; __pyx_6 = 0; if (__Pyx_EndUnpack(__pyx_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} Py_DECREF(__pyx_9); __pyx_9 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":34 */ __pyx_5 = __Pyx_GetName(__pyx_m, __pyx_n_closest_pair); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;} __pyx_1 = PyInt_AsSsize_t(__pyx_v_split); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;} __pyx_7 = PySequence_GetSlice(((PyObject *)__pyx_v_points), __pyx_1, PY_SSIZE_T_MAX); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;} __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_3, 0, __pyx_7); __pyx_7 = 0; __pyx_8 = PyObject_CallObject(__pyx_5, __pyx_3); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;} Py_DECREF(__pyx_5); __pyx_5 = 0; Py_DECREF(__pyx_3); __pyx_3 = 0; __pyx_4 = PyObject_GetIter(__pyx_8); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;} Py_DECREF(__pyx_8); __pyx_8 = 0; __pyx_10 = __Pyx_UnpackItem(__pyx_4); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;} Py_DECREF(__pyx_v_d2); __pyx_v_d2 = __pyx_10; __pyx_10 = 0; __pyx_6 = __Pyx_UnpackItem(__pyx_4); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;} Py_DECREF(__pyx_v_p21); __pyx_v_p21 = __pyx_6; __pyx_6 = 0; __pyx_9 = __Pyx_UnpackItem(__pyx_4); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;} Py_DECREF(__pyx_v_p22); __pyx_v_p22 = __pyx_9; __pyx_9 = 0; if (__Pyx_EndUnpack(__pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":35 */ __pyx_7 = __Pyx_GetName(__pyx_b, __pyx_n_min); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; goto __pyx_L1;} __pyx_5 = PyTuple_New(2); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; goto __pyx_L1;} Py_INCREF(__pyx_v_d1); PyTuple_SET_ITEM(__pyx_5, 0, __pyx_v_d1); Py_INCREF(__pyx_v_d2); PyTuple_SET_ITEM(__pyx_5, 1, __pyx_v_d2); __pyx_3 = PyObject_CallObject(__pyx_7, __pyx_5); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; goto __pyx_L1;} Py_DECREF(__pyx_7); __pyx_7 = 0; Py_DECREF(__pyx_5); __pyx_5 = 0; Py_DECREF(__pyx_v_d); __pyx_v_d = __pyx_3; __pyx_3 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":37 */ __pyx_8 = PyList_New(0); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; goto __pyx_L1;} Py_DECREF(__pyx_v_points_in_strip); __pyx_v_points_in_strip = __pyx_8; __pyx_8 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":38 */ __pyx_10 = PyInt_FromLong(1); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;} __pyx_6 = PyNumber_Subtract(__pyx_v_split, __pyx_10); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;} Py_DECREF(__pyx_10); __pyx_10 = 0; __pyx_9 = PyObject_GetItem(((PyObject *)__pyx_v_points), __pyx_6); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;} Py_DECREF(__pyx_6); __pyx_6 = 0; __pyx_4 = PySequence_GetItem(__pyx_9, 0); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;} Py_DECREF(__pyx_9); __pyx_9 = 0; __pyx_7 = PyObject_GetItem(((PyObject *)__pyx_v_points), __pyx_v_split); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;} __pyx_5 = PySequence_GetItem(__pyx_7, 0); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;} Py_DECREF(__pyx_7); __pyx_7 = 0; __pyx_3 = PyNumber_Add(__pyx_4, __pyx_5); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; Py_DECREF(__pyx_5); __pyx_5 = 0; __pyx_8 = PyFloat_FromDouble(2.0); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;} __pyx_10 = PyNumber_Divide(__pyx_3, __pyx_8); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; Py_DECREF(__pyx_8); __pyx_8 = 0; Py_DECREF(__pyx_v_split_at); __pyx_v_split_at = __pyx_10; __pyx_10 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":39 */ __pyx_6 = PyObject_GetIter(((PyObject *)__pyx_v_points)); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; goto __pyx_L1;} for (;;) { __pyx_9 = PyIter_Next(__pyx_6); if (!__pyx_9) { if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; goto __pyx_L1;} break; } Py_DECREF(__pyx_v_point); __pyx_v_point = __pyx_9; __pyx_9 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":40 */ __pyx_7 = PySequence_GetItem(__pyx_v_point, 0); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; goto __pyx_L1;} __pyx_4 = PyNumber_Subtract(__pyx_v_split_at, __pyx_v_d); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; goto __pyx_L1;} if (PyObject_Cmp(__pyx_7, __pyx_4, &__pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; goto __pyx_L1;} __pyx_2 = __pyx_2 < 0; Py_DECREF(__pyx_7); __pyx_7 = 0; Py_DECREF(__pyx_4); __pyx_4 = 0; if (__pyx_2) { goto __pyx_L8; goto __pyx_L10; } __pyx_5 = PySequence_GetItem(__pyx_v_point, 0); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; goto __pyx_L1;} __pyx_3 = PyNumber_Add(__pyx_v_split_at, __pyx_v_d); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; goto __pyx_L1;} if (PyObject_Cmp(__pyx_5, __pyx_3, &__pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; goto __pyx_L1;} __pyx_2 = __pyx_2 > 0; Py_DECREF(__pyx_5); __pyx_5 = 0; Py_DECREF(__pyx_3); __pyx_3 = 0; if (__pyx_2) { goto __pyx_L9; goto __pyx_L10; } __pyx_L10:; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":44 */ __pyx_8 = PyObject_GetAttr(__pyx_v_points_in_strip, __pyx_n_append); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; goto __pyx_L1;} __pyx_10 = PySequence_GetItem(__pyx_v_point, 1); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; goto __pyx_L1;} __pyx_9 = PySequence_GetItem(__pyx_v_point, 0); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; goto __pyx_L1;} __pyx_7 = PySequence_GetItem(__pyx_v_point, 2); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; goto __pyx_L1;} __pyx_4 = PyTuple_New(3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_4, 0, __pyx_10); PyTuple_SET_ITEM(__pyx_4, 1, __pyx_9); PyTuple_SET_ITEM(__pyx_4, 2, __pyx_7); __pyx_10 = 0; __pyx_9 = 0; __pyx_7 = 0; __pyx_5 = PyTuple_New(1); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_5, 0, __pyx_4); __pyx_4 = 0; __pyx_3 = PyObject_CallObject(__pyx_8, __pyx_5); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; goto __pyx_L1;} Py_DECREF(__pyx_8); __pyx_8 = 0; Py_DECREF(__pyx_5); __pyx_5 = 0; Py_DECREF(__pyx_3); __pyx_3 = 0; __pyx_L8:; } __pyx_L9:; Py_DECREF(__pyx_6); __pyx_6 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":46 */ __pyx_10 = PyObject_GetAttr(__pyx_v_points_in_strip, __pyx_n_sort); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; goto __pyx_L1;} __pyx_9 = PyObject_CallObject(__pyx_10, 0); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; goto __pyx_L1;} Py_DECREF(__pyx_10); __pyx_10 = 0; Py_DECREF(__pyx_9); __pyx_9 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":48 */ __pyx_v_min_d = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":49 */ Py_INCREF(Py_None); Py_DECREF(__pyx_v_min_p1); __pyx_v_min_p1 = Py_None; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":50 */ Py_INCREF(Py_None); Py_DECREF(__pyx_v_min_p2); __pyx_v_min_p2 = Py_None; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":51 */ __pyx_1 = PyObject_Length(__pyx_v_points_in_strip); if (__pyx_1 == -1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; goto __pyx_L1;} __pyx_7 = PyInt_FromSsize_t(__pyx_1); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; goto __pyx_L1;} Py_DECREF(__pyx_v_max_i); __pyx_v_max_i = __pyx_7; __pyx_7 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":52 */ __pyx_4 = PyTuple_New(1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; goto __pyx_L1;} Py_INCREF(__pyx_v_points_in_strip); PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_points_in_strip); __pyx_8 = PyObject_CallObject(((PyObject *)(&PyEnum_Type)), __pyx_4); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; __pyx_5 = PyObject_GetIter(__pyx_8); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; goto __pyx_L1;} Py_DECREF(__pyx_8); __pyx_8 = 0; for (;;) { __pyx_3 = PyIter_Next(__pyx_5); if (!__pyx_3) { if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; goto __pyx_L1;} break; } __pyx_6 = PyObject_GetIter(__pyx_3); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; __pyx_10 = __Pyx_UnpackItem(__pyx_6); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; goto __pyx_L1;} Py_DECREF(__pyx_v_i); __pyx_v_i = __pyx_10; __pyx_10 = 0; __pyx_9 = __Pyx_UnpackItem(__pyx_6); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; goto __pyx_L1;} Py_DECREF(__pyx_v_point); __pyx_v_point = __pyx_9; __pyx_9 = 0; if (__Pyx_EndUnpack(__pyx_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; goto __pyx_L1;} Py_DECREF(__pyx_6); __pyx_6 = 0; __pyx_7 = PyInt_FromLong(1); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; goto __pyx_L1;} __pyx_4 = PyNumber_Add(__pyx_v_i, __pyx_7); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; goto __pyx_L1;} Py_DECREF(__pyx_7); __pyx_7 = 0; __pyx_1 = PyInt_AsSsize_t(__pyx_4); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; goto __pyx_L1;} Py_DECREF(__pyx_4); __pyx_4 = 0; __pyx_8 = __Pyx_GetName(__pyx_b, __pyx_n_min); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; goto __pyx_L1;} __pyx_3 = PyInt_FromLong(7); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; goto __pyx_L1;} __pyx_10 = PyNumber_Add(__pyx_v_i, __pyx_3); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; goto __pyx_L1;} Py_DECREF(__pyx_3); __pyx_3 = 0; __pyx_9 = PyTuple_New(2); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; goto __pyx_L1;} Py_INCREF(__pyx_v_max_i); PyTuple_SET_ITEM(__pyx_9, 0, __pyx_v_max_i); PyTuple_SET_ITEM(__pyx_9, 1, __pyx_10); __pyx_10 = 0; __pyx_6 = PyObject_CallObject(__pyx_8, __pyx_9); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; goto __pyx_L1;} Py_DECREF(__pyx_8); __pyx_8 = 0; Py_DECREF(__pyx_9); __pyx_9 = 0; __pyx_13 = PyInt_AsSsize_t(__pyx_6); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; goto __pyx_L1;} Py_DECREF(__pyx_6); __pyx_6 = 0; __pyx_7 = PySequence_GetSlice(__pyx_v_points_in_strip, __pyx_1, __pyx_13); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; goto __pyx_L1;} __pyx_4 = PyObject_GetIter(__pyx_7); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; goto __pyx_L1;} Py_DECREF(__pyx_7); __pyx_7 = 0; for (;;) { __pyx_3 = PyIter_Next(__pyx_4); if (!__pyx_3) { if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; goto __pyx_L1;} break; } Py_DECREF(__pyx_v_point2); __pyx_v_point2 = __pyx_3; __pyx_3 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":54 */ __pyx_10 = __Pyx_GetName(__pyx_m, __pyx_n_distance); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; goto __pyx_L1;} __pyx_8 = PySequence_GetItem(__pyx_v_point, 0); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; goto __pyx_L1;} __pyx_9 = PySequence_GetItem(__pyx_v_point, 1); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; goto __pyx_L1;} __pyx_6 = PySequence_GetItem(__pyx_v_point2, 0); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; goto __pyx_L1;} __pyx_7 = PySequence_GetItem(__pyx_v_point2, 1); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; goto __pyx_L1;} __pyx_3 = PyTuple_New(4); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_3, 0, __pyx_8); PyTuple_SET_ITEM(__pyx_3, 1, __pyx_9); PyTuple_SET_ITEM(__pyx_3, 2, __pyx_6); PyTuple_SET_ITEM(__pyx_3, 3, __pyx_7); __pyx_8 = 0; __pyx_9 = 0; __pyx_6 = 0; __pyx_7 = 0; __pyx_8 = PyObject_CallObject(__pyx_10, __pyx_3); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 54; goto __pyx_L1;} Py_DECREF(__pyx_10); __pyx_10 = 0; Py_DECREF(__pyx_3); __pyx_3 = 0; Py_DECREF(__pyx_v_sd); __pyx_v_sd = __pyx_8; __pyx_8 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":55 */ __pyx_2 = (__pyx_v_min_d == 0); if (!__pyx_2) { __pyx_9 = PyFloat_FromDouble(__pyx_v_min_d); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; goto __pyx_L1;} if (PyObject_Cmp(__pyx_9, __pyx_v_sd, &__pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; goto __pyx_L1;} __pyx_2 = __pyx_2 > 0; Py_DECREF(__pyx_9); __pyx_9 = 0; } if (__pyx_2) { /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":56 */ __pyx_11 = PyFloat_AsDouble(__pyx_v_sd); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; goto __pyx_L1;} __pyx_v_min_d = __pyx_11; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":57 */ __pyx_6 = PySequence_GetItem(__pyx_v_point, 1); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; goto __pyx_L1;} __pyx_7 = PySequence_GetItem(__pyx_v_point, 0); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; goto __pyx_L1;} __pyx_10 = PySequence_GetItem(__pyx_v_point, 2); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; goto __pyx_L1;} __pyx_3 = PyTuple_New(3); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 57; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_3, 0, __pyx_6); PyTuple_SET_ITEM(__pyx_3, 1, __pyx_7); PyTuple_SET_ITEM(__pyx_3, 2, __pyx_10); __pyx_6 = 0; __pyx_7 = 0; __pyx_10 = 0; Py_DECREF(__pyx_v_min_p1); __pyx_v_min_p1 = __pyx_3; __pyx_3 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":58 */ __pyx_8 = PySequence_GetItem(__pyx_v_point2, 1); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; goto __pyx_L1;} __pyx_9 = PySequence_GetItem(__pyx_v_point2, 0); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; goto __pyx_L1;} __pyx_6 = PySequence_GetItem(__pyx_v_point2, 2); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; goto __pyx_L1;} __pyx_7 = PyTuple_New(3); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_7, 0, __pyx_8); PyTuple_SET_ITEM(__pyx_7, 1, __pyx_9); PyTuple_SET_ITEM(__pyx_7, 2, __pyx_6); __pyx_8 = 0; __pyx_9 = 0; __pyx_6 = 0; Py_DECREF(__pyx_v_min_p2); __pyx_v_min_p2 = __pyx_7; __pyx_7 = 0; goto __pyx_L15; } __pyx_L15:; } Py_DECREF(__pyx_4); __pyx_4 = 0; } Py_DECREF(__pyx_5); __pyx_5 = 0; /* "/home/andrew/Programs/cluster/clusterer/closestpair.pyx":59 */ __pyx_2 = (__pyx_v_min_d != 0); if (__pyx_2) { __pyx_10 = PyFloat_FromDouble(__pyx_v_min_d); if (!__pyx_10) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; goto __pyx_L1;} if (PyObject_Cmp(__pyx_10, __pyx_v_d, &__pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; goto __pyx_L1;} __pyx_2 = __pyx_2 < 0; Py_DECREF(__pyx_10); __pyx_10 = 0; } if (__pyx_2) { __pyx_3 = PyFloat_FromDouble(__pyx_v_min_d); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; goto __pyx_L1;} __pyx_8 = PyTuple_New(3); if (!__pyx_8) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; goto __pyx_L1;} PyTuple_SET_ITEM(__pyx_8, 0, __pyx_3); Py_INCREF(__pyx_v_min_p1); PyTuple_SET_ITEM(__pyx_8, 1, __pyx_v_min_p1); Py_INCREF(__pyx_v_min_p2); PyTuple_SET_ITEM(__pyx_8, 2, __pyx_v_min_p2); __pyx_3 = 0; __pyx_r = __pyx_8; __pyx_8 = 0; goto __pyx_L0; goto __pyx_L16; } if (PyObject_Cmp(__pyx_v_d1, __pyx_v_d2, &__pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; goto __pyx_L1;} __pyx_2 = __pyx_2 < 0; if (__pyx_2) { __pyx_9 = PyTuple_New(3); if (!__pyx_9) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; goto __pyx_L1;} Py_INCREF(__pyx_v_d1); PyTuple_SET_ITEM(__pyx_9, 0, __pyx_v_d1); Py_INCREF(__pyx_v_p11); PyTuple_SET_ITEM(__pyx_9, 1, __pyx_v_p11); Py_INCREF(__pyx_v_p12); PyTuple_SET_ITEM(__pyx_9, 2, __pyx_v_p12); __pyx_r = __pyx_9; __pyx_9 = 0; goto __pyx_L0; goto __pyx_L16; } /*else*/ { __pyx_6 = PyTuple_New(3); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;} Py_INCREF(__pyx_v_d2); PyTuple_SET_ITEM(__pyx_6, 0, __pyx_v_d2); Py_INCREF(__pyx_v_p21); PyTuple_SET_ITEM(__pyx_6, 1, __pyx_v_p21); Py_INCREF(__pyx_v_p22); PyTuple_SET_ITEM(__pyx_6, 2, __pyx_v_p22); __pyx_r = __pyx_6; __pyx_6 = 0; goto __pyx_L0; } __pyx_L16:; } __pyx_L2:; __pyx_r = Py_None; Py_INCREF(Py_None); goto __pyx_L0; __pyx_L1:; Py_XDECREF(__pyx_3); Py_XDECREF(__pyx_4); Py_XDECREF(__pyx_5); Py_XDECREF(__pyx_6); Py_XDECREF(__pyx_7); Py_XDECREF(__pyx_8); Py_XDECREF(__pyx_9); Py_XDECREF(__pyx_10); __Pyx_AddTraceback("closestpair.closest_pair"); __pyx_r = 0; __pyx_L0:; Py_DECREF(__pyx_v_min_p1); Py_DECREF(__pyx_v_min_p2); Py_DECREF(__pyx_v_i); Py_DECREF(__pyx_v_point); Py_DECREF(__pyx_v_point2); Py_DECREF(__pyx_v_d); Py_DECREF(__pyx_v_split); Py_DECREF(__pyx_v_d1); Py_DECREF(__pyx_v_p11); Py_DECREF(__pyx_v_p12); Py_DECREF(__pyx_v_d2); Py_DECREF(__pyx_v_p21); Py_DECREF(__pyx_v_p22); Py_DECREF(__pyx_v_points_in_strip); Py_DECREF(__pyx_v_split_at); Py_DECREF(__pyx_v_max_i); Py_DECREF(__pyx_v_sd); Py_DECREF(__pyx_v_points); return __pyx_r; }
static PyObject * nsmallest(PyObject *self, PyObject *args) { PyObject *heap=NULL, *elem, *iterable, *los, *it, *oldelem; Py_ssize_t i, n; int cmp; if (!PyArg_ParseTuple(args, "nO:nsmallest", &n, &iterable)) return NULL; it = PyObject_GetIter(iterable); if (it == NULL) return NULL; heap = PyList_New(0); if (heap == NULL) goto fail; for (i=0 ; i<n ; i++ ){ elem = PyIter_Next(it); if (elem == NULL) { if (PyErr_Occurred()) goto fail; else goto sortit; } if (PyList_Append(heap, elem) == -1) { Py_DECREF(elem); goto fail; } Py_DECREF(elem); } n = PyList_GET_SIZE(heap); if (n == 0) goto sortit; for (i=n/2-1 ; i>=0 ; i--) if(_siftupmax((PyListObject *)heap, i) == -1) goto fail; los = PyList_GET_ITEM(heap, 0); while (1) { elem = PyIter_Next(it); if (elem == NULL) { if (PyErr_Occurred()) goto fail; else goto sortit; } cmp = PyObject_RichCompareBool(elem, los, Py_LT); if (cmp == -1) { Py_DECREF(elem); goto fail; } if (cmp == 0) { Py_DECREF(elem); continue; } oldelem = PyList_GET_ITEM(heap, 0); PyList_SET_ITEM(heap, 0, elem); Py_DECREF(oldelem); if (_siftupmax((PyListObject *)heap, 0) == -1) goto fail; los = PyList_GET_ITEM(heap, 0); } sortit: if (PyList_Sort(heap) == -1) goto fail; Py_DECREF(it); return heap; fail: Py_DECREF(it); Py_XDECREF(heap); return NULL; }
PyObject * PyObject_Dir(PyObject *arg) { /* Set exactly one of these non-NULL before the end. */ PyObject *result = NULL; /* result list */ PyObject *masterdict = NULL; /* result is masterdict.keys() */ /* If NULL arg, return the locals. */ if (arg == NULL) { PyObject *locals = PyEval_GetLocals(); if (locals == NULL) goto error; result = PyDict_Keys(locals); if (result == NULL) goto error; } /* Elif this is some form of module, we only want its dict. */ else if (PyModule_Check(arg)) { masterdict = PyObject_GetAttrString(arg, "__dict__"); if (masterdict == NULL) goto error; if (!PyDict_Check(masterdict)) { PyErr_SetString(PyExc_TypeError, "module.__dict__ is not a dictionary"); goto error; } } /* Elif some form of type or class, grab its dict and its bases. We deliberately don't suck up its __class__, as methods belonging to the metaclass would probably be more confusing than helpful. */ else if (PyType_Check(arg) || PyClass_Check(arg)) { masterdict = PyDict_New(); if (masterdict == NULL) goto error; if (merge_class_dict(masterdict, arg) < 0) goto error; } /* Else look at its dict, and the attrs reachable from its class. */ else { PyObject *itsclass; /* Create a dict to start with. CAUTION: Not everything responding to __dict__ returns a dict! */ masterdict = PyObject_GetAttrString(arg, "__dict__"); if (masterdict == NULL) { PyErr_Clear(); masterdict = PyDict_New(); } else if (!PyDict_Check(masterdict)) { Py_DECREF(masterdict); masterdict = PyDict_New(); } else { /* The object may have returned a reference to its dict, so copy it to avoid mutating it. */ PyObject *temp = PyDict_Copy(masterdict); Py_DECREF(masterdict); masterdict = temp; } if (masterdict == NULL) goto error; /* Merge in __members__ and __methods__ (if any). XXX Would like this to go away someday; for now, it's XXX needed to get at im_self etc of method objects. */ if (merge_list_attr(masterdict, arg, "__members__") < 0) goto error; if (merge_list_attr(masterdict, arg, "__methods__") < 0) goto error; /* Merge in attrs reachable from its class. CAUTION: Not all objects have a __class__ attr. */ itsclass = PyObject_GetAttrString(arg, "__class__"); if (itsclass == NULL) PyErr_Clear(); else { int status = merge_class_dict(masterdict, itsclass); Py_DECREF(itsclass); if (status < 0) goto error; } } assert((result == NULL) ^ (masterdict == NULL)); if (masterdict != NULL) { /* The result comes from its keys. */ assert(result == NULL); result = PyDict_Keys(masterdict); if (result == NULL) goto error; } assert(result); if (PyList_Sort(result) != 0) goto error; else goto normal_return; error: Py_XDECREF(result); result = NULL; /* fall through */ normal_return: Py_XDECREF(masterdict); return result; }
static PyObject * namespace_repr(PyObject *ns) { int i, loop_error = 0; PyObject *pairs = NULL, *d = NULL, *keys = NULL, *keys_iter = NULL; PyObject *key; PyObject *separator, *pairsrepr, *repr = NULL; const char * name; name = (Py_TYPE(ns) == &_PyNamespace_Type) ? "namespace" : ns->ob_type->tp_name; i = Py_ReprEnter(ns); if (i != 0) { return i > 0 ? PyUnicode_FromFormat("%s(...)", name) : NULL; } pairs = PyList_New(0); if (pairs == NULL) goto error; d = ((_PyNamespaceObject *)ns)->ns_dict; assert(d != NULL); Py_INCREF(d); keys = PyDict_Keys(d); if (keys == NULL) goto error; if (PyList_Sort(keys) != 0) goto error; keys_iter = PyObject_GetIter(keys); if (keys_iter == NULL) goto error; while ((key = PyIter_Next(keys_iter)) != NULL) { if (PyUnicode_Check(key) && PyUnicode_GET_LENGTH(key) > 0) { PyObject *value, *item; value = PyDict_GetItem(d, key); assert(value != NULL); item = PyUnicode_FromFormat("%S=%R", key, value); if (item == NULL) { loop_error = 1; } else { loop_error = PyList_Append(pairs, item); Py_DECREF(item); } } Py_DECREF(key); if (loop_error) goto error; } separator = PyUnicode_FromString(", "); if (separator == NULL) goto error; pairsrepr = PyUnicode_Join(separator, pairs); Py_DECREF(separator); if (pairsrepr == NULL) goto error; repr = PyUnicode_FromFormat("%s(%S)", name, pairsrepr); Py_DECREF(pairsrepr); error: Py_XDECREF(pairs); Py_XDECREF(d); Py_XDECREF(keys); Py_XDECREF(keys_iter); Py_ReprLeave(ns); return repr; }
static PyObject * Struct_repr(PyObject *self) { Py_ssize_t i; PyObject *inner_repr = NULL; PyObject *equals = NULL; PyObject *pieces = NULL, *result = NULL; PyObject *items = NULL, *s; PyTypeObject *type = Py_TYPE(self); i = Py_ReprEnter(self); if (i < 0) { return NULL; } if (i > 0) { inner_repr = str_from_string("..."); if (inner_repr == NULL) goto done; result = format_with_type(type, inner_repr); } else if (((PyDictObject *)self)->ma_used == 0) { result = format_with_type(type, NULL); } else { /* basically `dict_repr` but with keyword notation */ pieces = PyList_New(0); if (pieces == NULL) goto done; equals = str_from_string("="); if (equals == NULL) goto done; items = PyDict_Items(self); if (items == NULL) goto done; if (PyList_Sort(items) < 0) goto done; for (i = 0; i < PyList_GET_SIZE(items); i++) { PyObject *temp, *key, *value; int status; temp = PyList_GET_ITEM(items, i); key = PyTuple_GetItem(temp, 0); if (key == NULL) goto done; value = PyTuple_GetItem(temp, 1); if (value == NULL) goto done; /* Prevent repr from deleting value during key format. */ Py_INCREF(value); s = PyObject_Str(key); str_concat(&s, equals); str_concat_and_del(&s, PyObject_Repr(value)); Py_DECREF(value); if (s == NULL) goto done; status = PyList_Append(pieces, s); Py_DECREF(s); /* append created a new ref */ if (status < 0) goto done; } /* Paste them all together with ", " between. */ s = str_from_string(", "); if (s == NULL) goto done; inner_repr = str_join(s, pieces); Py_DECREF(s); if (inner_repr == NULL) goto done; result = format_with_type(type, inner_repr); } done: Py_XDECREF(inner_repr); Py_XDECREF(items); Py_XDECREF(pieces); Py_XDECREF(equals); Py_ReprLeave(self); return result; }