)]}'
{"trove/guestagent/pkg.py":[{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"6fa7600d56527e7734f92c985da5d24368fbcb1c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            return cls._packager"},{"line_number":72,"context_line":"        else:"},{"line_number":73,"context_line":"            if os.path.isfile(\"/etc/debian_version\"):"},{"line_number":74,"context_line":"                BasePackager.__bases__ +\u003d (DebianPackagerMixin, )"},{"line_number":75,"context_line":"            elif os.path.isfile(\"/etc/redhat-release\"):"},{"line_number":76,"context_line":"                BasePackager.__bases__ +\u003d (RedhatPackagerMixin, )"},{"line_number":77,"context_line":"            cls._packager \u003d BasePackager()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAP3%2F%2F3v4%3D","line":74,"updated":"2013-07-10 01:49:29.000000000","message":"This is a bit crazy, get rid of the BasePackager and just set cls._packager to Debain or Redhat.\n\nAlternatively you could just have an if statement at the end of this file and declare PkgFactory to the correct one.","commit_id":"87096c3519c25f74cb20c896143a87215d7bf0c8"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"f29866a837ec9080bd26a157f9358eb3acedaaf5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        return \"1.0\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def pkg_remove(self, package_name, time_out):"},{"line_number":68,"context_line":"        pass"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class DebianPackagerMixin:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2FVLQ%3D","line":68,"updated":"2013-08-01 21:07:19.000000000","message":"Should these all raise NotImplementedError?","commit_id":"7390957b1f437b2090c7ae558ab385e81ac5cfea"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"03f28895a496214c189acd30cdfafbdbfd45f480","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                                           % package_name)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"class BasePackage(type):"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def __new__(meta, name, bases, dct):"},{"line_number":241,"context_line":"        if os.path.isfile(\"/etc/debian_version\"):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2FgIQ%3D","line":238,"updated":"2013-07-30 06:09:29.000000000","message":"I\u0027m no python guru, but why not just extend object?  Is there a reason why this needs to extend \u0027type\u0027?","commit_id":"7390957b1f437b2090c7ae558ab385e81ac5cfea"},{"author":{"_account_id":1925,"name":"Vipul Sabhaya","email":"vipuls@gmail.com","username":"vipuls"},"change_message_id":"99e108b8f7b74313fcee47ffb7404b68967aaa76","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                                           % package_name)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"class BasePackage(type):"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def __new__(meta, name, bases, dct):"},{"line_number":241,"context_line":"        if os.path.isfile(\"/etc/debian_version\"):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2FeBI%3D","line":238,"in_reply_to":"AAAAQn%2F%2Feec%3D","updated":"2013-07-30 17:30:55.000000000","message":"Cool makes sense.  I think it would be useful to have a test that verifies that the correct Package gets created.","commit_id":"7390957b1f437b2090c7ae558ab385e81ac5cfea"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"f5e0b3d6017ed1e75ba4e6c0f78ecac8b0dfbda0","unresolved":false,"context_lines":[{"line_number":235,"context_line":"                                           % package_name)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"class BasePackage(type):"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def __new__(meta, name, bases, dct):"},{"line_number":241,"context_line":"        if os.path.isfile(\"/etc/debian_version\"):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2Feec%3D","line":238,"in_reply_to":"AAAAQn%2F%2FgIQ%3D","updated":"2013-07-30 15:42:11.000000000","message":"subclassing \u0027type\u0027 allows you to create a metaclass. Basically a metaclass is a class generator, which you can use to alter the way a class is constructed. So the class \u0027Package\u0027 will get constructed with either debian or redhat depending on the os. By default if no __metaclass__ is defined \u0027type\u0027 is used to construct the class.","commit_id":"7390957b1f437b2090c7ae558ab385e81ac5cfea"}]}
