Glyph Lefkowitz <gl...@twistedmatrix.com> writes:
> I frequently answer stack overflow questions where I want to say what release 
> of Twisted a particular bug was fixed in, and it's unfortunately hard to 
> discover.

The attached script should get most of the versions for tickets. There
are a handful of tickets that get mis-categorized, though. This could
probably be used to back-fill fix versions, too.

import re
from yaml import safe_dump
from twisted.python.versions import Version

with open('NEWS') as news:
    lines = news.readlines()

versions = {}
current_version = None

for line in lines:
    matches = re.match(r"(?:Twisted )?[A-Z][a-z]+ ([0-9]+).([0-9]+).([0-9]+) \(([0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2})\)", line)
    if matches:
        major, minor, micro, date = matches.groups()
        version_number = Version('Twisted', int(major), int(minor), int(micro))
        current_version = versions.setdefault((major, minor, micro), dict(
            number=version_number,
            date=date,
            tickets=set(),
        ))

    if current_version is not None:
        matches = re.findall(r"#([0-9]+)", line)
        current_version['tickets'].update(map(int, matches))


# for _1, v1 in versions.items():
#     for _2, v2 in versions.items():
#         if v1 is v2: continue
#         int = v1.tickets.intersection(v2.tickets)
#         if int: print int, _1, _2

for version  in sorted(versions.values(), key=lambda _:_['number']):
    print "{number} ({date}):".format(number=version['number'].short(), date=version['date'])
    for ticket in sorted(version['tickets']):
        print " - #{ticket}".format(ticket=ticket)
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to