(self, typ, dims, intent, obj)
| 266 | f' {self.obj})|arr={self.arr}') |
| 267 | |
| 268 | def __init__(self, typ, dims, intent, obj): |
| 269 | self.type = typ |
| 270 | self.dims = dims |
| 271 | self.intent = intent |
| 272 | self.obj_copy = copy.deepcopy(obj) |
| 273 | self.obj = obj |
| 274 | |
| 275 | # arr.dtypechar may be different from typ.dtypechar |
| 276 | self.arr = wrap.call(typ.type_num, |
| 277 | typ.elsize, |
| 278 | dims, intent.flags, obj) |
| 279 | |
| 280 | assert isinstance(self.arr, np.ndarray) |
| 281 | |
| 282 | self.arr_attr = wrap.array_attrs(self.arr) |
| 283 | |
| 284 | if len(dims) > 1: |
| 285 | if self.intent.is_intent("c"): |
| 286 | assert (intent.flags & wrap.F2PY_INTENT_C) |
| 287 | assert not self.arr.flags["FORTRAN"] |
| 288 | assert self.arr.flags["CONTIGUOUS"] |
| 289 | assert (not self.arr_attr[6] & wrap.FORTRAN) |
| 290 | else: |
| 291 | assert (not intent.flags & wrap.F2PY_INTENT_C) |
| 292 | assert self.arr.flags["FORTRAN"] |
| 293 | assert not self.arr.flags["CONTIGUOUS"] |
| 294 | assert (self.arr_attr[6] & wrap.FORTRAN) |
| 295 | |
| 296 | if obj is None: |
| 297 | self.pyarr = None |
| 298 | self.pyarr_attr = None |
| 299 | return |
| 300 | |
| 301 | if intent.is_intent("cache"): |
| 302 | assert isinstance(obj, np.ndarray), repr(type(obj)) |
| 303 | self.pyarr = np.array(obj).reshape(*dims).copy() |
| 304 | else: |
| 305 | self.pyarr = np.array( |
| 306 | np.array(obj, dtype=typ.dtypechar).reshape(*dims), |
| 307 | order=self.intent.is_intent("c") and "C" or "F", |
| 308 | ) |
| 309 | assert self.pyarr.dtype == typ |
| 310 | self.pyarr.setflags(write=self.arr.flags["WRITEABLE"]) |
| 311 | assert self.pyarr.flags["OWNDATA"], (obj, intent) |
| 312 | self.pyarr_attr = wrap.array_attrs(self.pyarr) |
| 313 | |
| 314 | if len(dims) > 1: |
| 315 | if self.intent.is_intent("c"): |
| 316 | assert not self.pyarr.flags["FORTRAN"] |
| 317 | assert self.pyarr.flags["CONTIGUOUS"] |
| 318 | assert (not self.pyarr_attr[6] & wrap.FORTRAN) |
| 319 | else: |
| 320 | assert self.pyarr.flags["FORTRAN"] |
| 321 | assert not self.pyarr.flags["CONTIGUOUS"] |
| 322 | assert (self.pyarr_attr[6] & wrap.FORTRAN) |
| 323 | |
| 324 | assert self.arr_attr[1] == self.pyarr_attr[1] # nd |
| 325 | assert self.arr_attr[2] == self.pyarr_attr[2] # dimensions |
nothing calls this directly
no test coverage detected