)]}'
{"tooz/drivers/etcd.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"987ba039af7e4577d7d89e85d313a19897245b80","unresolved":false,"context_lines":[{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _form_and_validate_lock_url(base_url, prefix, name):"},{"line_number":31,"context_line":"    # See the following for reference:"},{"line_number":32,"context_line":"    #"},{"line_number":33,"context_line":"    # https://github.com/coreos/etcd/issues/669"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_236ef62f","line":30,"updated":"2015-12-31 09:48:48.000000000","message":"This should be a static method that then could be overridden by a subclass.","commit_id":"5f9694e1eef2ca473febb42edaa374a848679aa9"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"8e0de5b53ac27045fcdd25c0987ce6c905d74bea","unresolved":false,"context_lines":[{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _form_and_validate_lock_url(base_url, prefix, name):"},{"line_number":31,"context_line":"    # See the following for reference:"},{"line_number":32,"context_line":"    #"},{"line_number":33,"context_line":"    # https://github.com/coreos/etcd/issues/669"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_b578d22c","line":30,"in_reply_to":"fa69d971_236ef62f","updated":"2015-12-31 17:14:59.000000000","message":"Okie dokie, let me refine this.","commit_id":"5f9694e1eef2ca473febb42edaa374a848679aa9"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"987ba039af7e4577d7d89e85d313a19897245b80","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        keyspace_url +\u003d prefix"},{"line_number":44,"context_line":"    # Restrict to ascii for now (although utf8 should really be ok)."},{"line_number":45,"context_line":"    name \u003d name.decode(\"ascii\")"},{"line_number":46,"context_line":"    if \"../\" in name:"},{"line_number":47,"context_line":"        raise ValueError(\"Key name \u0027%s\u0027 is invalid as it may backtrack\""},{"line_number":48,"context_line":"                         \" out of the key space \u0027%s\u0027\" % (name, keyspace_url))"},{"line_number":49,"context_line":"    tmp_name \u003d name.replace(\"/.\", \"\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_43d9aaf2","line":46,"updated":"2015-12-31 09:48:48.000000000","message":"So what about encoding in base64 or something? So everything would work.","commit_id":"5f9694e1eef2ca473febb42edaa374a848679aa9"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"8e0de5b53ac27045fcdd25c0987ce6c905d74bea","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        keyspace_url +\u003d prefix"},{"line_number":44,"context_line":"    # Restrict to ascii for now (although utf8 should really be ok)."},{"line_number":45,"context_line":"    name \u003d name.decode(\"ascii\")"},{"line_number":46,"context_line":"    if \"../\" in name:"},{"line_number":47,"context_line":"        raise ValueError(\"Key name \u0027%s\u0027 is invalid as it may backtrack\""},{"line_number":48,"context_line":"                         \" out of the key space \u0027%s\u0027\" % (name, keyspace_url))"},{"line_number":49,"context_line":"    tmp_name \u003d name.replace(\"/.\", \"\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_957d8e1e","line":46,"in_reply_to":"fa69d971_43d9aaf2","updated":"2015-12-31 17:14:59.000000000","message":"Ya, I\u0027d be fine with that honestly. It makes it harder to view the keyspace from etcd utils such as https://github.com/m-o-a-t/etcd-tree (or similar) though...","commit_id":"5f9694e1eef2ca473febb42edaa374a848679aa9"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"577abe68796e3fc13d634aff76913881a59a194f","unresolved":false,"context_lines":[{"line_number":234,"context_line":"    #: Default port used if none provided (4001 or 2379 are the common ones)."},{"line_number":235,"context_line":"    DEFAULT_PORT \u003d 2379"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    #: Routines that will be used to encode lock names into a valid etcd url."},{"line_number":238,"context_line":"    lock_encoders \u003d {"},{"line_number":239,"context_line":"        \u0027base64\u0027: _Base64LockEncoder,"},{"line_number":240,"context_line":"        \u0027raw\u0027: _RawLockEncoder,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_182d5546","line":237,"updated":"2015-12-31 18:55:02.000000000","message":"Do we need to make this a user choice? Can\u0027t we, developers, pick a good one that will cover all use cases and remove a weight from the deployer shoulder?","commit_id":"f29de2d18471fc05eb57888c55f8c5863bc310ee"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"54eb03bb36e7519c6ce1793397fd008850ae5699","unresolved":false,"context_lines":[{"line_number":234,"context_line":"    #: Default port used if none provided (4001 or 2379 are the common ones)."},{"line_number":235,"context_line":"    DEFAULT_PORT \u003d 2379"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"    #: Routines that will be used to encode lock names into a valid etcd url."},{"line_number":238,"context_line":"    lock_encoders \u003d {"},{"line_number":239,"context_line":"        \u0027base64\u0027: _Base64LockEncoder,"},{"line_number":240,"context_line":"        \u0027raw\u0027: _RawLockEncoder,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_f838813f","line":237,"in_reply_to":"fa69d971_182d5546","updated":"2015-12-31 19:23:30.000000000","message":"Sure, which one (my preference would be base64)?","commit_id":"f29de2d18471fc05eb57888c55f8c5863bc310ee"}]}
