コード例 #1
0
ファイル: gtypes.py プロジェクト: gourdian/gourdian
 def _bucket_scalar(cls, val, step, head):
   if pdutils.is_empty(val):
     return None
   if (cls.TAIL is not None) and (val == cls.TAIL):
     val = cls.TAIL - (0.5 * step)
   index = math.floor((val - head) / step)
   return head + (index * step)
コード例 #2
0
ファイル: gtypes.py プロジェクト: gourdian/gourdian
 def _coax_scalar(cls, obj, fmt='%m'):
   if pdutils.is_empty(obj):
     return None
   if isinstance(obj, (datetime.datetime, pd.Timestamp)):
     return obj.month
   if isinstance(obj, str) and (fmt is not None):
     return pd.to_datetime(obj, format=fmt, errors=COERCE).month
   return int(obj)
コード例 #3
0
ファイル: balance.py プロジェクト: gourdian/gourdian
def weighted_tqdm(items, weights=None, default_weight=0, total=None, **kwargs):
    weights = pdutils.coalesce(weights, {})
    total = total if not pdutils.is_empty(total) else (
        sum(weights.values()) if weights else None)
    if not weights and not default_weight:
        yield from items
    else:
        with tqdm.tqdm(items, total=total, **kwargs) as tq:
            for item in items:
                yield item
                weight = weights.get(item, default_weight)
                tq.update(weight)
コード例 #4
0
ファイル: lib.py プロジェクト: gourdian/gourdian
 def label_column(self, name=None, gtype=None, label_kwargs=None):
     # Create a set of candidate columns that match the search criteria.
     candidates = list(self.label_columns)
     if name is not None:
         candidates = [x for x in candidates if x.name == name]
     if gtype is not None:
         candidates = [x for x in candidates if x.gtype == gtype]
     if label_kwargs is not None:
         candidates = [
             x for x in candidates if x.labeler().kwargs == label_kwargs
         ]
     # Assert that we found exactly 1 candidate, and return it.
     if len(candidates) == 0:
         target = {
             k: v
             for k, v in [('name',
                           name), ('gtype',
                                   gtype), ('label_kwargs', label_kwargs)]
             if not pdutils.is_empty(v)
         }
         raise lib_errors.NoLabelColumnsError(
             '0 columns found on %r for %r' % (
                 str(self.endpointer),
                 target,
             ))
     if len(candidates) > 1:
         target = {
             k: v
             for k, v in [('name',
                           name), ('gtype',
                                   gtype), ('label_kwargs', label_kwargs)]
             if not pdutils.is_empty(v)
         }
         raise lib_errors.MultipleLabelColumnsError(
             '%d columns found on %r for %r: %r' %
             (str(self.endpointer), target, len(candidates), candidates))
     return more_itertools.one(candidates)
コード例 #5
0
ファイル: ui.py プロジェクト: gourdian/gourdian
 def _cell(self, position, col_index, val, width):
     align = pd_align(self._df.iloc[:, col_index].dtype)
     is_hilighted = (self.focus == position)
     if pdutils.is_empty(val):
         widget = urwid.AttrMap(
             SelectableText(str(val), wrap='clip', align=align),
             'row-item-nil-hilighted' if is_hilighted else 'row-item-nil',
             'row-item-nil-selected')
     else:
         widget = urwid.AttrMap(
             SelectableText(str(val).replace('\n',
                                             '\\n').replace('\r', '\\r'),
                            wrap='clip',
                            align=align), None, 'row-item-selected')
     return (width, widget)
コード例 #6
0
ファイル: gpd.py プロジェクト: gourdian/gourdian
 def how_name(self, how):
   """Returns the value used by How.name for any How instance that points to this target."""
   kw = ((k, v) for k, v in how.coax_kwargs.items() if not pdutils.is_empty(v))
   kw_str = ','.join('%s=%r' % (k, v) for k, v in kw)
   kw_str = '(%s)' % (kw_str,) if kw_str else ''
   return '%s%s|%s' % (how.via_column, kw_str, self.name)
コード例 #7
0
ファイル: gtypes.py プロジェクト: gourdian/gourdian
 def _coax_scalar(cls, obj):
   if pdutils.is_empty(obj):
     return None
   if not isinstance(obj, float):
     obj = float(obj)
   return obj if cls.is_valid(obj) else None
コード例 #8
0
ファイル: gtypes.py プロジェクト: gourdian/gourdian
 def _label_scalar_nocontext(cls, bucket):
   if pdutils.is_empty(bucket):
     return None
   return cls.LABEL_FMT.format(decimal.Decimal(bucket))
コード例 #9
0
ファイル: gtypes.py プロジェクト: gourdian/gourdian
 def name(self):
   if self._name is None:
     kw = ((k, v) for k, v in self._kwargs.items() if not pdutils.is_empty(v))
     kw_str = ', '.join('%s=%r' % (k, v) for k, v in kw)
     self._name = '%s(%s)' % (self._gtype.qualname, kw_str)
   return self._name
コード例 #10
0
ファイル: gtypes.py プロジェクト: gourdian/gourdian
 def __repr__(self):
   kw = ((k, v) for k, v in self._kwargs.items() if not pdutils.is_empty(v))
   kw_str = ', '.join('%s=%r' % (k, v) for k, v in kw)
   return ('<%s %s(%s)>' % (self.__class__.__name__, self._gtype.qualname, kw_str))