/usr/lib/python3/dist-packages/h5py/h5ds.pyx is in python3-h5py 2.2.1-1build2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | # This file is part of h5py, a Python interface to the HDF5 library.
#
# http://www.h5py.org
#
# Copyright 2008-2013 Andrew Collette and contributors
#
# License: Standard 3-clause BSD; see "license.txt" for full license terms
# and contributor agreement.
"""
Low-level HDF5 "H5G" group interface.
"""
# Compile-time imports
from h5d cimport DatasetID
from utils cimport emalloc, efree
def set_scale(DatasetID dset not None, char* dimname=''):
"""(DatasetID dset, STRING dimname)
Convert dataset dset to a dimension scale, with optional name dimname.
"""
H5DSset_scale(dset.id, dimname)
def is_scale(DatasetID dset not None):
"""(DatasetID dset)
Determines whether dset is a dimension scale.
"""
return <bint>(H5DSis_scale(dset.id))
def attach_scale(DatasetID dset not None, DatasetID dscale not None, unsigned
int idx):
H5DSattach_scale(dset.id, dscale.id, idx)
def is_attached(DatasetID dset not None, DatasetID dscale not None,
unsigned int idx):
return <bint>(H5DSis_attached(dset.id, dscale.id, idx))
def detach_scale(DatasetID dset not None, DatasetID dscale not None,
unsigned int idx):
H5DSdetach_scale(dset.id, dscale.id, idx)
def get_num_scales(DatasetID dset not None, unsigned int dim):
return H5DSget_num_scales(dset.id, dim)
def set_label(DatasetID dset not None, unsigned int idx, char* label):
H5DSset_label(dset.id, idx, label)
def get_label(DatasetID dset not None, unsigned int idx):
cdef ssize_t size
cdef char* label
label = NULL
size = H5DSget_label(dset.id, idx, NULL, 0)
if size <= 0:
return b''
label = <char*>emalloc(sizeof(char)*(size+1))
try:
H5DSget_label(dset.id, idx, label, size+1)
plabel = label
return plabel
finally:
efree(label)
def get_scale_name(DatasetID dscale not None):
cdef ssize_t namelen
cdef char* name = NULL
namelen = H5DSget_scale_name(dscale.id, NULL, 0)
if namelen <= 0:
return b''
name = <char*>emalloc(sizeof(char)*(namelen+1))
try:
H5DSget_scale_name(dscale.id, name, namelen+1)
pname = name
return pname
finally:
efree(name)
cdef class _DimensionScaleVisitor:
cdef object func
cdef object retval
def __init__(self, func):
self.func = func
self.retval = None
cdef herr_t cb_ds_iter(hid_t dset, unsigned int dim, hid_t scale, void* vis_in) except 2:
cdef _DimensionScaleVisitor vis = <_DimensionScaleVisitor>vis_in
# we did not retrieve the scale identifier using the normal machinery,
# so we need to inc_ref it before using it to create a DatasetID.
H5Iinc_ref(scale)
vis.retval = vis.func(DatasetID.open(scale))
if vis.retval is not None:
return 1
return 0
def iterate(DatasetID dset not None, unsigned int dim, object func,
int startidx=0):
""" (DatasetID loc, UINT dim, CALLABLE func, UINT startidx=0)
=> Return value from func
Iterate a callable (function, method or callable object) over the
members of a group. Your callable shoutld have the signature::
func(STRING name) => Result
Returning None continues iteration; returning anything else aborts
iteration and returns that value. Keywords:
"""
if startidx < 0:
raise ValueError("Starting index must be non-negative")
cdef int i = startidx
cdef _DimensionScaleVisitor vis = _DimensionScaleVisitor(func)
H5DSiterate_scales(dset.id, dim, &i, <H5DS_iterate_t>cb_ds_iter, <void*>vis)
return vis.retval
|