[Yum-devel] [PATCH] Allow ranges of transactions in list/summary/pkg-list.
tim.lauridsen at gmail.com
tim.lauridsen at gmail.com
Tue Dec 7 10:21:08 UTC 2010
On Mon, Dec 6, 2010 at 10:02 PM, James Antill <james at and.org> wrote:
> ---
> output.py | 78
> ++++++++++++++++++++++++++++++++++++++++++------------------
> 1 files changed, 54 insertions(+), 24 deletions(-)
>
> diff --git a/output.py b/output.py
> index f99ab37..0f3543f 100755
> --- a/output.py
> +++ b/output.py
> @@ -1353,7 +1353,52 @@ to exit.
> except KeyError:
> return to_unicode(str(uid))
>
> + @staticmethod
> + def _historyRangeRTIDs(old, tid):
> + ''' Convert a user "TID" string of 2..4 into: (2, 4). '''
> + def str2int(x):
> + try:
> + return int(x)
> + except ValueError:
> + return None
> +
> + if '..' not in tid:
> + return None
> + btid, etid = tid.split('..', 2)
> + btid = str2int(btid)
> + if btid > old.tid:
> + return None
> + elif btid <= 0:
> + return None
> + etid = str2int(etid)
> + if etid > old.tid:
> + return None
> +
> + # Have a range ... do a "merged" transaction.
> + if btid > etid:
> + btid, etid = etid, btid
> + return (btid, etid)
> +
> + def _historyRangeTIDs(self, rtids):
> + ''' Convert a list of ranged tid typles into all the tids needed,
> Eg.
> + [(2,4), (6,8)] == [2, 3, 4, 6, 7, 8]. '''
> + tids = set()
> + last_end = -1 # This just makes displaying it easier...
> + for mtid in sorted(rtids):
> + if mtid[0] < last_end:
> + self.logger.warn(_('Skipping merged transaction %d to %d,
> as it overlaps' % (mtid[0], mtid[1])))
> + continue # Don't do overlapping
> + last_end = mtid[1]
> + for num in range(mtid[0], mtid[1] + 1):
> + tids.add(num)
> + return tids
> +
> def _history_list_transactions(self, extcmds):
> + old = self.history.last()
> + if old is None:
> + self.logger.critical(_('No transactions'))
> + return None, None
> +
> tids = set()
> pats = []
> usertids = extcmds[1:]
> @@ -1367,6 +1412,10 @@ to exit.
> int(tid)
> tids.add(tid)
> except ValueError:
> + rtid = self._historyRangeRTIDs(old, tid)
> + if rtid:
> + tids.update(self._historyRangeTIDs([rtid]))
> + continue
> pats.append(tid)
> if pats:
> tids.update(self.history.search(pats))
> @@ -1493,22 +1542,10 @@ to exit.
> return 1, ['Failed history info']
>
> for tid in extcmds[1:]:
> - if '..' in tid:
> - btid, etid = tid.split('..', 2)
> - btid = str2int(btid)
> - if btid > old.tid:
> - btid = None
> - elif btid <= 0:
> - btid = None
> - etid = str2int(etid)
> - if etid > old.tid:
> - etid = None
> - if btid is not None and etid is not None:
> - # Have a range ... do a "merged" transaction.
> - if btid > etid:
> - btid, etid = etid, btid
> - mtids.add((btid, etid))
> - continue
> + if self._historyRangeRTIDs(old, tid):
> + # Have a range ... do a "merged" transaction.
> + mtids.add(self._historyRangeRTIDs(old, tid))
> + continue
> elif str2int(tid) is not None:
> tids.add(str2int(tid))
> continue
> @@ -1518,14 +1555,7 @@ to exit.
> utids = tids.copy()
> if mtids:
> mtids = sorted(mtids)
> - last_end = -1 # This just makes displaying it easier...
> - for mtid in mtids:
> - if mtid[0] < last_end:
> - self.logger.warn(_('Skipping merged transaction %d to
> %d, as it overlaps', mtid[0], mtid[1]))
> - continue # Don't do overlapping
> - last_end = mtid[1]
> - for num in range(mtid[0], mtid[1] + 1):
> - tids.add(num)
> + tids.update(self._historyRangeTIDs(mtids))
>
> if not tids and len(extcmds) < 2:
> old = self.history.last(complete_transactions_only=False)
> --
> 1.7.2.3
>
> _______________________________________________
> Yum-devel mailing list
> Yum-devel at lists.baseurl.org
> http://lists.baseurl.org/mailman/listinfo/yum-devel
>
ACK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.baseurl.org/pipermail/yum-devel/attachments/20101207/5f2c66ae/attachment.html>
More information about the Yum-devel
mailing list