)]}'
{"cbmgr.py":[{"author":{"_account_id":1005039,"name":"Safian Ali","email":"safian.ali@couchbase.com","username":"safianalicb","avatars":[{"url":"https://www.gravatar.com/avatar/fd5ddc39eab136fd76ae4419d1a94039.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/fd5ddc39eab136fd76ae4419d1a94039.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/fd5ddc39eab136fd76ae4419d1a94039.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/fd5ddc39eab136fd76ae4419d1a94039.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"0b98e3a8804ccbbe6a23b35da626c3c44c885c80","unresolved":true,"context_lines":[{"line_number":617,"context_line":""},{"line_number":618,"context_line":"        return []"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"    def valid(self):"},{"line_number":621,"context_line":"        errors \u003d []"},{"line_number":622,"context_line":"        if self.bucket:"},{"line_number":623,"context_line":"            e \u003d self._valid_name(\"bucket\", self.bucket, \"abcdefghijklmnopqrstuvwxyz0123456789.%_-\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"1559b173_e2f747f5","line":620,"range":{"start_line":620,"start_character":8,"end_line":620,"end_character":13},"updated":"2025-05-20 13:53:30.000000000","message":"Do we need to check the validity? Can\u0027t we just rely on the cluster to do this?\n\nIf we do need to validate here, there are some other rules which might be worth checking for. See:\n\nhttps://docs.couchbase.com/server/current/learn/data/scopes-and-collections.html#naming-for-scopes-and-collections\n\nhttps://docs.couchbase.com/server/current/manage/manage-buckets/create-bucket.html#:~:text\u003dA%20bucket%20name%20can%20be,Digits%20(0%2D9)","commit_id":"7088dc7c594f07636aa7366148595cf12e619e23"},{"author":{"_account_id":1004879,"name":"Matt Hall","email":"matthew@quickbeam.me.uk","username":"mattyhall","avatars":[{"url":"https://www.gravatar.com/avatar/53d1d84f1bfdafc6399d56cba3efbe08.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/53d1d84f1bfdafc6399d56cba3efbe08.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/53d1d84f1bfdafc6399d56cba3efbe08.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/53d1d84f1bfdafc6399d56cba3efbe08.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"fa0edd65a185a83d6687c269d1739d24036ffba3","unresolved":false,"context_lines":[{"line_number":617,"context_line":""},{"line_number":618,"context_line":"        return []"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"    def valid(self):"},{"line_number":621,"context_line":"        errors \u003d []"},{"line_number":622,"context_line":"        if self.bucket:"},{"line_number":623,"context_line":"            e \u003d self._valid_name(\"bucket\", self.bucket, \"abcdefghijklmnopqrstuvwxyz0123456789.%_-\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"6feee9fb_90c99c51","line":620,"range":{"start_line":620,"start_character":8,"end_line":620,"end_character":13},"in_reply_to":"1559b173_e2f747f5","updated":"2025-05-21 14:17:00.000000000","message":"Done","commit_id":"7088dc7c594f07636aa7366148595cf12e619e23"},{"author":{"_account_id":1005039,"name":"Safian Ali","email":"safian.ali@couchbase.com","username":"safianalicb","avatars":[{"url":"https://www.gravatar.com/avatar/fd5ddc39eab136fd76ae4419d1a94039.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/fd5ddc39eab136fd76ae4419d1a94039.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/fd5ddc39eab136fd76ae4419d1a94039.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/fd5ddc39eab136fd76ae4419d1a94039.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"0b98e3a8804ccbbe6a23b35da626c3c44c885c80","unresolved":true,"context_lines":[{"line_number":641,"context_line":"def parse_collection_string(inp, start_at\u003d\"bucket\"):"},{"line_number":642,"context_line":"    items \u003d []"},{"line_number":643,"context_line":"    try:"},{"line_number":644,"context_line":"        items \u003d CollectionStringParser(inp).parse()"},{"line_number":645,"context_line":"    except ValueError as e:"},{"line_number":646,"context_line":"        return None, [str(e)]"},{"line_number":647,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"15ba30bf_96be91c5","line":644,"updated":"2025-05-20 13:53:30.000000000","message":"Can you make it so `CollectionStringParser().parse()` returns a `CollectionString` instead? Would be neater imo","commit_id":"7088dc7c594f07636aa7366148595cf12e619e23"},{"author":{"_account_id":1004879,"name":"Matt Hall","email":"matthew@quickbeam.me.uk","username":"mattyhall","avatars":[{"url":"https://www.gravatar.com/avatar/53d1d84f1bfdafc6399d56cba3efbe08.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/53d1d84f1bfdafc6399d56cba3efbe08.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/53d1d84f1bfdafc6399d56cba3efbe08.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/53d1d84f1bfdafc6399d56cba3efbe08.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"fa0edd65a185a83d6687c269d1739d24036ffba3","unresolved":false,"context_lines":[{"line_number":641,"context_line":"def parse_collection_string(inp, start_at\u003d\"bucket\"):"},{"line_number":642,"context_line":"    items \u003d []"},{"line_number":643,"context_line":"    try:"},{"line_number":644,"context_line":"        items \u003d CollectionStringParser(inp).parse()"},{"line_number":645,"context_line":"    except ValueError as e:"},{"line_number":646,"context_line":"        return None, [str(e)]"},{"line_number":647,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"4c6a0675_dfb28493","line":644,"in_reply_to":"15ba30bf_96be91c5","updated":"2025-05-21 14:17:00.000000000","message":"Done","commit_id":"7088dc7c594f07636aa7366148595cf12e619e23"}]}
