)]}'
{"pbr/packaging.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"5eac3f486190bc1755cdb1656b1fe2db3c213fd2","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            str(os.getenv(env_name)).lower() in TRUE_VALUES)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"class FileAndString(object):"},{"line_number":252,"context_line":"    PYPI_TAG_DEPTH \u003d 5"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def __init__(self, changelog_file):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_6e6c8437","line":251,"updated":"2014-06-09 17:43:41.000000000","message":"The weirdness here for me is the monolithic nature. I mean - it seems like a generator of changelog entries + tee(it) + islice(0,5) would be a lot more modular and avoid the weirdness entirely.","commit_id":"c7896ea76b43a21fce6c82680cb86c9ee5dea532"},{"author":{"_account_id":11011,"name":"Marc Abramowitz","email":"marc@marc-abramowitz.com","username":"msabramo"},"change_message_id":"75ca30ed6ecd8c16f3316832aa02725b68f8e93e","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            str(os.getenv(env_name)).lower() in TRUE_VALUES)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"class FileAndString(object):"},{"line_number":252,"context_line":"    PYPI_TAG_DEPTH \u003d 5"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def __init__(self, changelog_file):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3ae8d1ca_9f311aa5","line":251,"updated":"2014-05-27 18:13:05.000000000","message":"This seems like a weird class in that it writes to a file and a string. Seems like it\u0027s trying to do too much.\n\nIs it possible to just write the changelog to a StringIO and then you get call getvalue() to get the string and use `shutil.copyfileobj` (https://docs.python.org/dev/library/shutil.html#shutil.copyfileobj) to copy the StringIO to a real file?","commit_id":"c7896ea76b43a21fce6c82680cb86c9ee5dea532"},{"author":{"_account_id":11011,"name":"Marc Abramowitz","email":"marc@marc-abramowitz.com","username":"msabramo"},"change_message_id":"b784d70069ef8d7f76764b5a8cf9657a4dd70840","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            str(os.getenv(env_name)).lower() in TRUE_VALUES)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"class FileAndString(object):"},{"line_number":252,"context_line":"    PYPI_TAG_DEPTH \u003d 5"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def __init__(self, changelog_file):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_f642823c","line":251,"in_reply_to":"1ae5cdf2_1fa6c810","updated":"2014-06-13 16:33:12.000000000","message":"What about a `ChangeLog` class? It would do:\n\n    log_cmd \u003d [\u0027log\u0027, \u0027--oneline\u0027, \u0027--decorate\u0027]\n    changelog \u003d _run_git_command(log_cmd, git_dir)\n\nand parse the output into a list of changes for each version.\n\nThen it would have a method like:\n\n    def get_changes(self, num_versions\u003dNone): \n\nAnd then you could do stuff like:\n\n    changelog \u003d ChangeLog(git_repo)\n    self.distribution.metadata.long_description  +\u003d changelog.get_changes(num_versions\u003d3)\n    ...\n    changelog_file.write(changelog.get_changes())\n\nThis seems easier to understand.","commit_id":"c7896ea76b43a21fce6c82680cb86c9ee5dea532"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"16da0589eee96c31ef8a38fde7af4d8f1faf2674","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            str(os.getenv(env_name)).lower() in TRUE_VALUES)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"class FileAndString(object):"},{"line_number":252,"context_line":"    PYPI_TAG_DEPTH \u003d 5"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def __init__(self, changelog_file):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_1fa6c810","line":251,"in_reply_to":"3ae8d1ca_9f311aa5","updated":"2014-06-01 02:14:28.000000000","message":"I tried the StringIO idea out (great idea, btw) but it gets awkward because we only want to collect the first few entries for the long_description, but we want the whole thing to go to the file. I agree the class is a little wonky - but the other approaches I\u0027ve tried are even uglier.","commit_id":"c7896ea76b43a21fce6c82680cb86c9ee5dea532"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"5eac3f486190bc1755cdb1656b1fe2db3c213fd2","unresolved":false,"context_lines":[{"line_number":334,"context_line":"                changelog_file.write("},{"line_number":335,"context_line":"                    (\"* %(msg)s\\n\" % dict(msg\u003dmsg)))"},{"line_number":336,"context_line":"            first_line \u003d False"},{"line_number":337,"context_line":"        return str(changelog_file)"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"def generate_authors(git_dir\u003dNone, dest_dir\u003d\u0027.\u0027, option_dict\u003ddict()):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_8e69d027","line":337,"updated":"2014-06-09 17:43:41.000000000","message":"This will be unicode on Python3 and not on Python2. I\u0027m worried about UnicodeEncodeError being thrown here.","commit_id":"c7896ea76b43a21fce6c82680cb86c9ee5dea532"}]}
