)]}'
{"mistral_lib/actions/api/context.py":[{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"772ff531dbdd885a60762a805ba57a48502d2160","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    _elements \u003d set()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, __mapping\u003dNone, **kwargs):"},{"line_number":47,"context_line":"        if __mapping is None:"},{"line_number":48,"context_line":"            self.__values \u003d dict(**kwargs)"},{"line_number":49,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_5f331d62","line":46,"updated":"2016-08-11 07:56:40.000000000","message":"__mapping doesn\u0027t seem to be used anywhere (not here, or in Mistral\u0027s repo). Can we remove it and clean up?","commit_id":"5c8cfdeb1a2be1edab54a11fa9874a7e0d1408c3"},{"author":{"_account_id":8532,"name":"Ryan Brady","email":"rbrady@redhat.com","username":"rbrady"},"change_message_id":"096e2ded3dfcc68d212a69dfdad91ff3d1dd8c78","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    _elements \u003d set()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, __mapping\u003dNone, **kwargs):"},{"line_number":47,"context_line":"        if __mapping is None:"},{"line_number":48,"context_line":"            self.__values \u003d dict(**kwargs)"},{"line_number":49,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ac06dbe_b62280ff","line":46,"in_reply_to":"9ad45d7e_5f331d62","updated":"2016-08-22 15:52:16.000000000","message":"Done","commit_id":"5c8cfdeb1a2be1edab54a11fa9874a7e0d1408c3"},{"author":{"_account_id":8532,"name":"Ryan Brady","email":"rbrady@redhat.com","username":"rbrady"},"change_message_id":"2e539eb940716c6de64064e5c9f75671a73b9c91","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    _elements \u003d set()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, __mapping\u003dNone, **kwargs):"},{"line_number":47,"context_line":"        if __mapping is None:"},{"line_number":48,"context_line":"            self.__values \u003d dict(**kwargs)"},{"line_number":49,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_f95c9f4c","line":46,"in_reply_to":"9ad45d7e_5f331d62","updated":"2016-08-11 12:37:52.000000000","message":"Thanks, I will take a look at making that change.","commit_id":"5c8cfdeb1a2be1edab54a11fa9874a7e0d1408c3"}],"mistral_lib/actions/api/exceptions.py":[{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"772ff531dbdd885a60762a805ba57a48502d2160","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        return self.message"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"# Database errors."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class DBError(MistralError):"},{"line_number":93,"context_line":"    http_code \u003d 400"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_7a954f85","line":90,"updated":"2016-08-11 07:56:40.000000000","message":"I think we are copying over too many things here. A database exception belongs in Mistral - We don\u0027t know anything about the database here and I wouldn\u0027t expect Mistral to import a database exception from mistral-lib to then raise it","commit_id":"5c8cfdeb1a2be1edab54a11fa9874a7e0d1408c3"},{"author":{"_account_id":8532,"name":"Ryan Brady","email":"rbrady@redhat.com","username":"rbrady"},"change_message_id":"2e539eb940716c6de64064e5c9f75671a73b9c91","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        return self.message"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"# Database errors."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class DBError(MistralError):"},{"line_number":93,"context_line":"    http_code \u003d 400"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_f4adc6e9","line":90,"in_reply_to":"9ad45d7e_7a954f85","updated":"2016-08-11 12:37:52.000000000","message":"If I just keep the MistralError here, would you expect it also in mistral or will mistral import from mistral-lib and raise it?","commit_id":"5c8cfdeb1a2be1edab54a11fa9874a7e0d1408c3"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"9f3f30bb85245020e2922b89d6ca5d9db51936e5","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        return self.message"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"# Database errors."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"class DBError(MistralError):"},{"line_number":93,"context_line":"    http_code \u003d 400"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ac371cc_d986b564","line":90,"in_reply_to":"9ad45d7e_f4adc6e9","updated":"2016-08-15 05:33:24.000000000","message":"Having all these exceptions in mistral_lib is OK to me but we don\u0027t need to have all of them under \u0027actions/api\u0027 package. I believe we need to leave under \u0027actions/api\u0027 only ActionException (and other possible related exceptions) and move the rest to \u0027mistral_lib/exceptions.py\u0027\n\nThoughts?","commit_id":"5c8cfdeb1a2be1edab54a11fa9874a7e0d1408c3"}],"mistral_lib/actions/api/utils/threading.py":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"9f3f30bb85245020e2922b89d6ca5d9db51936e5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":"import threading"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from eventlet import corolocal"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3ac371cc_f90451c7","line":16,"updated":"2016-08-15 05:33:24.000000000","message":"Do you think this method should be under \u0027api\u0027? I\u0027m trying to imagine if action implementations may need this kind of functionality. Theoretically, running an action is just a matter of executing its run() method so it defines a scope in which something may be stored, seems like it\u0027s always single-threaded. Can you ever imagine when an action needs to be multi-threaded?","commit_id":"5c8cfdeb1a2be1edab54a11fa9874a7e0d1408c3"}]}
