Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _prepare(self, ufunc, identity, dtype):
if isinstance(self._content, awkward.array.table.Table):
out = self._content.copy(contents={})
for n, x in self._content._contents.items():
out[n] = self.copy(content=x)._prepare(ufunc, identity, dtype)
return out
if isinstance(self._content, self.numpy.ndarray):
if dtype is None and issubclass(self._content.dtype.type, (self.numpy.bool_, self.numpy.bool)):
dtype = self.numpy.dtype(type(identity))
if ufunc is None:
content = self.numpy.zeros(self._content.shape, dtype=self.numpy.float32)
content[self.numpy.isnan(self._content)] = self.numpy.nan
elif ufunc is self.numpy.count_nonzero:
content = self.numpy.ones(self._content.shape, dtype=self.numpy.int8)
content[self.numpy.isnan(self._content)] = 0
content[self._content == 0] = 0
elif dtype is None:
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import awkward.array.table
from .base import NumbaMethods
class TableNumba(NumbaMethods, awkward.array.table.Table):
pass
def _reduce(self, ufunc, identity, dtype, regularaxis):
if self._util_hasjagged(self._content):
return self.copy(content=self._content._reduce(ufunc, identity, dtype, regularaxis))
elif isinstance(self._content, awkward.array.table.Table):
out = awkward.array.table.Table()
for n, x in self._content._contents.items():
out[n] = self.copy(content=x)
return out._reduce(ufunc, identity, dtype, regularaxis)
else:
return ufunc.reduce(self._prepare(identity, dtype))
def flattentuple(self):
out = self.copy()
out._contents = OrderedDict([(n, x.flattentuple() if isinstance(x, Table) else x) for n, x in out._contents.items()])
if self.istuple:
contents = OrderedDict()
for n, x in out._contents.items():
if isinstance(x, Table) and x.istuple:
if x._view is None:
view = slice(x._length())
elif isinstance(x._view, tuple):
start, step, length = x._view
stop = start + step*length
if stop < 0:
stop = None
view = slice(start, stop, step)
else:
return recurse(obj.array, mask)
else:
raise TypeError("cannot convert type {0} to Arrow".format(type(obj)))
if isinstance(obj, awkward.array.chunked.ChunkedArray): # includes AppendableArray
batches = []
for chunk in obj.chunks:
arr = toarrow(chunk)
if isinstance(arr, pyarrow.Table):
batches.extend(arr.to_batches())
else:
batches.append(pyarrow.RecordBatch.from_arrays([arr], [""]))
return pyarrow.Table.from_batches(batches)
elif isinstance(obj, awkward.array.masked.IndexedMaskedArray) and isinstance(obj.content, awkward.array.table.Table):
mask = obj.boolmask(maskedwhen=True)
if len(obj.content) == 0:
content = obj.numpy.empty(len(obj.mask), dtype=obj.DEFAULTTYPE)
else:
content = obj.content[obj.mask]
return pyarrow.Table.from_batches([pyarrow.RecordBatch.from_arrays([recurse(x, mask) for x in obj.content.contents.values()], list(obj.content.contents))])
elif isinstance(obj, awkward.array.masked.MaskedArray) and isinstance(obj.content, awkward.array.table.Table): # includes BitMaskedArray
mask = obj.boolmask(maskedwhen=True)
return pyarrow.Table.from_batches([pyarrow.RecordBatch.from_arrays([recurse(x, mask) for x in obj.content.contents.values()], list(obj.content.contents))])
elif isinstance(obj, awkward.array.table.Table):
return pyarrow.Table.from_batches([pyarrow.RecordBatch.from_arrays([recurse(x, None) for x in obj.contents.values()], list(obj.contents))])
else:
return recurse(obj, None)
def _reduce(self, ufunc, identity, dtype, regularaxis):
if self._hasjagged():
return self.copy(contents=[x._reduce(ufunc, identity, dtype, regularaxis) for x in self._contents])
elif self.columns != []:
out = awkward.array.table.Table()
for n in self.columns:
out[n] = self.copy(content=self[n])
return out._reduce(ufunc, identity, dtype, regularaxis)
else:
return ufunc.reduce(self._prepare(identity, dtype))
def _reduce(self, ufunc, identity, dtype, regularaxis):
if self._util_hasjagged(self._content):
return self.copy(content=self._content._reduce(ufunc, identity, dtype, regularaxis))
elif isinstance(self._content, awkward.array.table.Table):
out = awkward.array.table.Table()
for n, x in self._content._contents.items():
out[n] = self.copy(content=x)
return out._reduce(ufunc, identity, dtype, regularaxis)
else:
return ufunc.reduce(self._prepare(identity, dtype))
def Table(self):
import awkward.array.table
return awkward.array.table.Table
def __eq__(self, other):
if not isinstance(other, Table.Row):
return False
elif self._table is other._table and self._index == other._index:
return True
else:
return set(self._table._contents) == set(other._table._contents) and all(self._table._contents[n][self._index] == other._table._contents[n][other._index] for n in self._table._contents)
def topandas_regular(array):
import numpy
import pandas
import awkward.type
import awkward.array.base
import awkward.array.jagged
import awkward.array.table
if isinstance(array, awkward.array.base.AwkwardArray):
numpy = array.numpy
JaggedArray = array.JaggedArray
Table = array.Table
else:
JaggedArray = awkward.array.jagged.JaggedArray
Table = awkward.array.table.Table
globalindex = [None]
localindex = []
columns = []
def recurse(array, tpe, cols, seriously):
if isinstance(tpe, awkward.type.TableType):
starts, stops = None, None
out, deferred, unflattened = None, {}, None
for n in tpe.columns:
if not isinstance(n, str):
raise ValueError("column names must be strings")
tpen = tpe[n]
colsn = cols + (n,) if seriously else cols
if isinstance(tpen, awkward.type.OptionType):