Checks that field names ``descr`` are not reserved keywords. If this is the case, a default 'f%i' is substituted. If the argument `names` is not None, updates the field names to valid names.
(descr, names=None)
| 43 | |
| 44 | |
| 45 | def _checknames(descr, names=None): |
| 46 | """ |
| 47 | Checks that field names ``descr`` are not reserved keywords. |
| 48 | |
| 49 | If this is the case, a default 'f%i' is substituted. If the argument |
| 50 | `names` is not None, updates the field names to valid names. |
| 51 | |
| 52 | """ |
| 53 | ndescr = len(descr) |
| 54 | default_names = ['f%i' % i for i in range(ndescr)] |
| 55 | if names is None: |
| 56 | new_names = default_names |
| 57 | else: |
| 58 | if isinstance(names, (tuple, list)): |
| 59 | new_names = names |
| 60 | elif isinstance(names, str): |
| 61 | new_names = names.split(',') |
| 62 | else: |
| 63 | raise NameError(f'illegal input names {names!r}') |
| 64 | nnames = len(new_names) |
| 65 | if nnames < ndescr: |
| 66 | new_names += default_names[nnames:] |
| 67 | ndescr = [] |
| 68 | for (n, d, t) in zip(new_names, default_names, descr.descr): |
| 69 | if n in reserved_fields: |
| 70 | if t[0] in reserved_fields: |
| 71 | ndescr.append((d, t[1])) |
| 72 | else: |
| 73 | ndescr.append(t) |
| 74 | else: |
| 75 | ndescr.append((n, t[1])) |
| 76 | return np.dtype(ndescr) |
| 77 | |
| 78 | |
| 79 | def _get_fieldmask(self): |