)]}'
{"doc/source/domain_model.rst":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9ed67c476bc5b8320a7313f08d16fb0f4762f09c","unresolved":false,"context_lines":[{"line_number":38,"context_line":"The layers nesting can be specified explicitly using the programmer"},{"line_number":39,"context_line":"interface Gateway or implicitly using the ``helper`` classes. Nesting"},{"line_number":40,"context_line":"may also depend on various conditions, skipping or adding additional"},{"line_number":41,"context_line":"layers during the domain object creation."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Proxies"},{"line_number":44,"context_line":"~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a50d1a3_ad286934","line":41,"updated":"2015-07-31 19:32:21.000000000","message":"I think your use of \"the\" in the above two sentences is a bit misleading.  It implies that you\u0027re talking about a specific Gateway, helper class, domain object, whereas I think you\u0027re talking about concepts.  Not sure what I\u0027ve said is clear.  Does this convey the correct idea:\n\nThe layers of nesting can be specified explicitly using a programmer interface Gateway or implicitly using ``helper`` classes. Nesting may also depend on various conditions, skipping or adding additional layers during domain object creation.","commit_id":"c1011adde844f56584ce5fc1083b966ef6e29049"},{"author":{"_account_id":14962,"name":"ologvinova","email":"ologvinova@mirantis.com","username":"ologvinova"},"change_message_id":"e8dc667207e3e4679f667d0338b45fcf6fc0d59b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"The layers nesting can be specified explicitly using the programmer"},{"line_number":39,"context_line":"interface Gateway or implicitly using the ``helper`` classes. Nesting"},{"line_number":40,"context_line":"may also depend on various conditions, skipping or adding additional"},{"line_number":41,"context_line":"layers during the domain object creation."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Proxies"},{"line_number":44,"context_line":"~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a50d1a3_04b82c10","line":41,"in_reply_to":"3a50d1a3_ad286934","updated":"2015-08-19 12:49:06.000000000","message":"Thanks Brian, please check the next patch with this change.","commit_id":"c1011adde844f56584ce5fc1083b966ef6e29049"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9ed67c476bc5b8320a7313f08d16fb0f4762f09c","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"It is important to consider that the order of nesting ``proxy``"},{"line_number":180,"context_line":"classes can be arbitrary, since it is assumed that the layers are"},{"line_number":181,"context_line":"independent from each other."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"Helpers"},{"line_number":184,"context_line":"~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a50d1a3_4df8c57c","line":181,"updated":"2015-07-31 19:32:21.000000000","message":"Not clear if you\u0027re saying this is true in general, or just for this example.","commit_id":"c1011adde844f56584ce5fc1083b966ef6e29049"},{"author":{"_account_id":14962,"name":"ologvinova","email":"ologvinova@mirantis.com","username":"ologvinova"},"change_message_id":"e8dc667207e3e4679f667d0338b45fcf6fc0d59b","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"It is important to consider that the order of nesting ``proxy``"},{"line_number":180,"context_line":"classes can be arbitrary, since it is assumed that the layers are"},{"line_number":181,"context_line":"independent from each other."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"Helpers"},{"line_number":184,"context_line":"~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3a50d1a3_a42cd84a","line":181,"in_reply_to":"3a50d1a3_4df8c57c","updated":"2015-08-19 12:49:06.000000000","message":"Done","commit_id":"c1011adde844f56584ce5fc1083b966ef6e29049"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"b1e5782fc319bf38fdc139a0fa48cd471cf7b18d","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"It is important to consider that the order of nesting ``proxy``"},{"line_number":180,"context_line":"classes can be arbitrary, since it is assumed that the layers are"},{"line_number":181,"context_line":"independent from each other."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"Helpers"},{"line_number":184,"context_line":"~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa1b9901_69ba6ec2","line":181,"in_reply_to":"3a50d1a3_4df8c57c","updated":"2015-08-18 15:51:02.000000000","message":"Yep, We forgot that domain model is not a clear implementation of Decorator pattern. I think руку we should say, that the order of the layers matters and even if they are logically independent from each other, anyway rearranging them in different order may lead to another result. Thanks for having found a flaw.","commit_id":"c1011adde844f56584ce5fc1083b966ef6e29049"},{"author":{"_account_id":14396,"name":"Alexander Adamov","email":"aadamov@mirantis.com","username":"Alexander"},"change_message_id":"6680631b91225468e3fa5c6fb63c0dc697381bf4","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Domain model"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The main goal of domain model is refactoring the logic around"},{"line_number":22,"context_line":"object manipulation by splitting it to independent layers. Each"},{"line_number":23,"context_line":"subsequent layer wraps the previous one creating an \"onion\" structure,"},{"line_number":24,"context_line":"thus realizing a design pattern called \"Decorator\". The main feature"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_5bb3699a","line":21,"updated":"2015-08-25 19:23:59.000000000","message":"a domain model","commit_id":"505fdfa86191db43d1a33c908ad3e9dee107f483"},{"author":{"_account_id":14962,"name":"ologvinova","email":"ologvinova@mirantis.com","username":"ologvinova"},"change_message_id":"b60cf8f7f71c7fa772546894ea91d95006e1f82b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Domain model"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The main goal of domain model is refactoring the logic around"},{"line_number":22,"context_line":"object manipulation by splitting it to independent layers. Each"},{"line_number":23,"context_line":"subsequent layer wraps the previous one creating an \"onion\" structure,"},{"line_number":24,"context_line":"thus realizing a design pattern called \"Decorator\". The main feature"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_2648bfb2","line":21,"in_reply_to":"fa1b9901_5bb3699a","updated":"2015-08-26 09:09:24.000000000","message":"Done","commit_id":"505fdfa86191db43d1a33c908ad3e9dee107f483"},{"author":{"_account_id":14396,"name":"Alexander Adamov","email":"aadamov@mirantis.com","username":"Alexander"},"change_message_id":"6680631b91225468e3fa5c6fb63c0dc697381bf4","unresolved":false,"context_lines":[{"line_number":22,"context_line":"object manipulation by splitting it to independent layers. Each"},{"line_number":23,"context_line":"subsequent layer wraps the previous one creating an \"onion\" structure,"},{"line_number":24,"context_line":"thus realizing a design pattern called \"Decorator\". The main feature"},{"line_number":25,"context_line":"of domain model is to use a composition instead of inheritance or"},{"line_number":26,"context_line":"basic decoration while building an architecture. This provides a"},{"line_number":27,"context_line":"flexibility and transparency of internal organization for a developer,"},{"line_number":28,"context_line":"because he doesn\u0027t know what layers are used and works with a domain"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_5b6a89ee","line":25,"updated":"2015-08-25 19:23:59.000000000","message":"a domain model\nan inheritance\na basic decoration","commit_id":"505fdfa86191db43d1a33c908ad3e9dee107f483"},{"author":{"_account_id":14962,"name":"ologvinova","email":"ologvinova@mirantis.com","username":"ologvinova"},"change_message_id":"b60cf8f7f71c7fa772546894ea91d95006e1f82b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"object manipulation by splitting it to independent layers. Each"},{"line_number":23,"context_line":"subsequent layer wraps the previous one creating an \"onion\" structure,"},{"line_number":24,"context_line":"thus realizing a design pattern called \"Decorator\". The main feature"},{"line_number":25,"context_line":"of domain model is to use a composition instead of inheritance or"},{"line_number":26,"context_line":"basic decoration while building an architecture. This provides a"},{"line_number":27,"context_line":"flexibility and transparency of internal organization for a developer,"},{"line_number":28,"context_line":"because he doesn\u0027t know what layers are used and works with a domain"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_064b3bb2","line":25,"in_reply_to":"fa1b9901_5b6a89ee","updated":"2015-08-26 09:09:24.000000000","message":"declined","commit_id":"505fdfa86191db43d1a33c908ad3e9dee107f483"},{"author":{"_account_id":14396,"name":"Alexander Adamov","email":"aadamov@mirantis.com","username":"Alexander"},"change_message_id":"6680631b91225468e3fa5c6fb63c0dc697381bf4","unresolved":false,"context_lines":[{"line_number":24,"context_line":"thus realizing a design pattern called \"Decorator\". The main feature"},{"line_number":25,"context_line":"of domain model is to use a composition instead of inheritance or"},{"line_number":26,"context_line":"basic decoration while building an architecture. This provides a"},{"line_number":27,"context_line":"flexibility and transparency of internal organization for a developer,"},{"line_number":28,"context_line":"because he doesn\u0027t know what layers are used and works with a domain"},{"line_number":29,"context_line":"model object as with a common object."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_de1a076f","line":27,"updated":"2015-08-25 19:23:59.000000000","message":"provides flexibility\nof an internal organization","commit_id":"505fdfa86191db43d1a33c908ad3e9dee107f483"},{"author":{"_account_id":14962,"name":"ologvinova","email":"ologvinova@mirantis.com","username":"ologvinova"},"change_message_id":"b60cf8f7f71c7fa772546894ea91d95006e1f82b","unresolved":false,"context_lines":[{"line_number":24,"context_line":"thus realizing a design pattern called \"Decorator\". The main feature"},{"line_number":25,"context_line":"of domain model is to use a composition instead of inheritance or"},{"line_number":26,"context_line":"basic decoration while building an architecture. This provides a"},{"line_number":27,"context_line":"flexibility and transparency of internal organization for a developer,"},{"line_number":28,"context_line":"because he doesn\u0027t know what layers are used and works with a domain"},{"line_number":29,"context_line":"model object as with a common object."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa1b9901_b76f1bc3","line":27,"in_reply_to":"fa1b9901_de1a076f","updated":"2015-08-26 09:09:24.000000000","message":"Done","commit_id":"505fdfa86191db43d1a33c908ad3e9dee107f483"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"768ba294f1dadccc2d05f9d931cb6c5b07bb3d47","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"   class LoggerFactory(object):"},{"line_number":229,"context_line":"       \"\"\"Proxy class to add logging functionality\"\"\""},{"line_number":230,"context_line":"       def __init__(self, base, logg, proxy_class\u003dNone, proxy_kwargs\u003dNone):"},{"line_number":231,"context_line":"           self.helper \u003d Helper(proxy_class, proxy_kwargs)"},{"line_number":232,"context_line":"           self.base \u003d base"},{"line_number":233,"context_line":"           self.logg \u003d logg"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_971a14c5","line":230,"updated":"2015-08-26 10:12:54.000000000","message":"It is quite hard to understand for me why do we need proxy_class here?\nAccording to typical Fabric pattern logger_factory can create LoggerProxy only.\nThe same is for ValidatorFactory.\nAm I missed something important in this implementation?","commit_id":"46f5b782e850454ccc5727a53c553065a7281e72"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"26368316e0ed9ddea4a0a59c2847d05815ffdda2","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"   class LoggerFactory(object):"},{"line_number":229,"context_line":"       \"\"\"Proxy class to add logging functionality\"\"\""},{"line_number":230,"context_line":"       def __init__(self, base, logg, proxy_class\u003dNone, proxy_kwargs\u003dNone):"},{"line_number":231,"context_line":"           self.helper \u003d Helper(proxy_class, proxy_kwargs)"},{"line_number":232,"context_line":"           self.base \u003d base"},{"line_number":233,"context_line":"           self.logg \u003d logg"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_87a86e21","line":230,"in_reply_to":"da20952f_df10af02","updated":"2015-09-07 13:29:52.000000000","message":"Ok, it seems reasonable.","commit_id":"46f5b782e850454ccc5727a53c553065a7281e72"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"d21a66b83ff625e7065cec0fd05006eee2e159df","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":"   class LoggerFactory(object):"},{"line_number":229,"context_line":"       \"\"\"Proxy class to add logging functionality\"\"\""},{"line_number":230,"context_line":"       def __init__(self, base, logg, proxy_class\u003dNone, proxy_kwargs\u003dNone):"},{"line_number":231,"context_line":"           self.helper \u003d Helper(proxy_class, proxy_kwargs)"},{"line_number":232,"context_line":"           self.base \u003d base"},{"line_number":233,"context_line":"           self.logg \u003d logg"}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_df10af02","line":230,"in_reply_to":"fa1b9901_971a14c5","updated":"2015-09-04 15:08:15.000000000","message":"We use the domain model to combine several factories together and make a composite architecture. Here the output of one factory going as input to another one, and there it\u0027s wrapped in additional logic to achieve new functionality. It\u0027s a main feature of Domain Model architecture.","commit_id":"46f5b782e850454ccc5727a53c553065a7281e72"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"768ba294f1dadccc2d05f9d931cb6c5b07bb3d47","unresolved":false,"context_lines":[{"line_number":233,"context_line":"           self.logg \u003d logg"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"       def generate(self):"},{"line_number":236,"context_line":"           return self.helper.proxy(self.base.generate(logg\u003dself.logg))"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"   class ValidatorFactory(object):"},{"line_number":239,"context_line":"       \"\"\"Proxy class to add validation\"\"\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa1b9901_771740ee","line":236,"updated":"2015-08-26 10:12:54.000000000","message":"Looks like base factory must not have any parameters but we have logg here. It seems that logg should be passed as Helper proxy_kwargs here.","commit_id":"46f5b782e850454ccc5727a53c553065a7281e72"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"26368316e0ed9ddea4a0a59c2847d05815ffdda2","unresolved":false,"context_lines":[{"line_number":233,"context_line":"           self.logg \u003d logg"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"       def generate(self):"},{"line_number":236,"context_line":"           return self.helper.proxy(self.base.generate(logg\u003dself.logg))"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"   class ValidatorFactory(object):"},{"line_number":239,"context_line":"       \"\"\"Proxy class to add validation\"\"\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_821b7c72","line":236,"in_reply_to":"da20952f_9ff6b78d","updated":"2015-09-07 13:29:52.000000000","message":"Here I disagree. If you try to launch your example then you will get an error because BaseFactory.generate expect no attributes but you passed one.","commit_id":"46f5b782e850454ccc5727a53c553065a7281e72"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"d21a66b83ff625e7065cec0fd05006eee2e159df","unresolved":false,"context_lines":[{"line_number":233,"context_line":"           self.logg \u003d logg"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"       def generate(self):"},{"line_number":236,"context_line":"           return self.helper.proxy(self.base.generate(logg\u003dself.logg))"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"   class ValidatorFactory(object):"},{"line_number":239,"context_line":"       \"\"\"Proxy class to add validation\"\"\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"da20952f_9ff6b78d","line":236,"in_reply_to":"fa1b9901_771740ee","updated":"2015-09-04 15:08:15.000000000","message":"It may be optional and depends only on the will of a programmer. I made this example to present an alternative possible Domain Model implementation. \n\nOf course, you\u0027re right - we can pass \u0027logg\u0027 in Helper\u0027s proxy_kwargs too. But proposed here solution increases flexibility of architecture and allows to create Domain Model objects with custom logger each time, instead of only once during factory creation.","commit_id":"46f5b782e850454ccc5727a53c553065a7281e72"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"d937d433178330bf61f498ec0dc0000d099496ba","unresolved":false,"context_lines":[{"line_number":21,"context_line":"The main goal of a domain model is refactoring the logic around"},{"line_number":22,"context_line":"object manipulation by splitting it to independent layers. Each"},{"line_number":23,"context_line":"subsequent layer wraps the previous one creating an \"onion\" structure,"},{"line_number":24,"context_line":"thus realizing a design pattern called \"Decorator\". The main feature"},{"line_number":25,"context_line":"of domain model is to use a composition instead of inheritance or"},{"line_number":26,"context_line":"basic decoration while building an architecture. This provides"},{"line_number":27,"context_line":"flexibility and transparency of an internal organization for a developer,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_3ef84ae5","line":24,"updated":"2015-09-14 16:09:16.000000000","message":"nit: the \".\" is in the wrong place. It should be:\n\n... pattern called \"Decorator.\" The main...","commit_id":"18b82868f9553efa8eea5d09fb9452d94c816493"},{"author":{"_account_id":14962,"name":"ologvinova","email":"ologvinova@mirantis.com","username":"ologvinova"},"change_message_id":"fcabbc3adb28fa6c6765e241a9e70232a0c37f25","unresolved":false,"context_lines":[{"line_number":21,"context_line":"The main goal of a domain model is refactoring the logic around"},{"line_number":22,"context_line":"object manipulation by splitting it to independent layers. Each"},{"line_number":23,"context_line":"subsequent layer wraps the previous one creating an \"onion\" structure,"},{"line_number":24,"context_line":"thus realizing a design pattern called \"Decorator\". The main feature"},{"line_number":25,"context_line":"of domain model is to use a composition instead of inheritance or"},{"line_number":26,"context_line":"basic decoration while building an architecture. This provides"},{"line_number":27,"context_line":"flexibility and transparency of an internal organization for a developer,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_d1d1fffc","line":24,"in_reply_to":"ba15a1d1_3ef84ae5","updated":"2015-09-14 17:11:34.000000000","message":"hmm, as for me, the full stop is in the right place: quotes relate only to the word Decorator and not to the whole sentence. So they should precede the end of sentence. Or maybe there is a specific rule that I am not aware of?","commit_id":"18b82868f9553efa8eea5d09fb9452d94c816493"},{"author":{"_account_id":14962,"name":"ologvinova","email":"ologvinova@mirantis.com","username":"ologvinova"},"change_message_id":"f1adeb279b626358ec28d0ecf58aa43e41bc3fe3","unresolved":false,"context_lines":[{"line_number":21,"context_line":"The main goal of a domain model is refactoring the logic around"},{"line_number":22,"context_line":"object manipulation by splitting it to independent layers. Each"},{"line_number":23,"context_line":"subsequent layer wraps the previous one creating an \"onion\" structure,"},{"line_number":24,"context_line":"thus realizing a design pattern called \"Decorator\". The main feature"},{"line_number":25,"context_line":"of domain model is to use a composition instead of inheritance or"},{"line_number":26,"context_line":"basic decoration while building an architecture. This provides"},{"line_number":27,"context_line":"flexibility and transparency of an internal organization for a developer,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_0f1e6b63","line":24,"in_reply_to":"ba15a1d1_ca4628bf","updated":"2015-09-14 19:38:41.000000000","message":"Thanks much, Brianna! \u003d) Although I can\u0027t get the logic of US practice in this matter (British one sounds much more adequate for me), I will still change this as you initially suggested, bc we follow US style in OpenStack docs.","commit_id":"18b82868f9553efa8eea5d09fb9452d94c816493"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"765942d557cdbc026af19df9993e6e8037b3406a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"The main goal of a domain model is refactoring the logic around"},{"line_number":22,"context_line":"object manipulation by splitting it to independent layers. Each"},{"line_number":23,"context_line":"subsequent layer wraps the previous one creating an \"onion\" structure,"},{"line_number":24,"context_line":"thus realizing a design pattern called \"Decorator\". The main feature"},{"line_number":25,"context_line":"of domain model is to use a composition instead of inheritance or"},{"line_number":26,"context_line":"basic decoration while building an architecture. This provides"},{"line_number":27,"context_line":"flexibility and transparency of an internal organization for a developer,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_ca4628bf","line":24,"in_reply_to":"ba15a1d1_d1d1fffc","updated":"2015-09-14 17:24:23.000000000","message":"It appears that my suggestion follows the \"US English\" practice, while your original version follows the \"British English\" practice.  To that end, I think it is fine to leave it as-is.\n\nhttps://en.wikipedia.org/wiki/Quotation_marks_in_English#Order_of_punctuation","commit_id":"18b82868f9553efa8eea5d09fb9452d94c816493"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"d937d433178330bf61f498ec0dc0000d099496ba","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Each layer defines its own operations’ implementation through a"},{"line_number":35,"context_line":"special ``proxy`` class. At first, operations are performed on the"},{"line_number":36,"context_line":"upper layer, then they successively pass the control to the underlying"},{"line_number":37,"context_line":"layers."},{"line_number":38,"context_line":"The nesting of layers can be specified explicitly using a programmer"},{"line_number":39,"context_line":"interface Gateway or implicitly using ``helper`` classes. Nesting"},{"line_number":40,"context_line":"may also depend on various conditions, skipping or adding additional"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_7e3c8293","line":37,"updated":"2015-09-14 16:09:16.000000000","message":"Nit: Should there be a line break between the two paragraphs?","commit_id":"18b82868f9553efa8eea5d09fb9452d94c816493"},{"author":{"_account_id":14962,"name":"ologvinova","email":"ologvinova@mirantis.com","username":"ologvinova"},"change_message_id":"fcabbc3adb28fa6c6765e241a9e70232a0c37f25","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Each layer defines its own operations’ implementation through a"},{"line_number":35,"context_line":"special ``proxy`` class. At first, operations are performed on the"},{"line_number":36,"context_line":"upper layer, then they successively pass the control to the underlying"},{"line_number":37,"context_line":"layers."},{"line_number":38,"context_line":"The nesting of layers can be specified explicitly using a programmer"},{"line_number":39,"context_line":"interface Gateway or implicitly using ``helper`` classes. Nesting"},{"line_number":40,"context_line":"may also depend on various conditions, skipping or adding additional"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_d4256dc2","line":37,"in_reply_to":"ba15a1d1_7e3c8293","updated":"2015-09-14 17:11:34.000000000","message":"Will be done in a separate patch.","commit_id":"18b82868f9553efa8eea5d09fb9452d94c816493"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"d937d433178330bf61f498ec0dc0000d099496ba","unresolved":false,"context_lines":[{"line_number":128,"context_line":"         return sum(args)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":" class LoggerProxy(object):"},{"line_number":131,"context_line":"     \"\"\"\"Class extends functionality by writing message to log\"\"\""},{"line_number":132,"context_line":"     def __init__(self, base, logg):"},{"line_number":133,"context_line":"         self.base \u003d base"},{"line_number":134,"context_line":"         self.logg \u003d logg"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_fe92d256","line":131,"updated":"2015-09-14 16:09:16.000000000","message":"nit: there should be a \".\" at the end of the doc string.  This is true for future doc strings noted below as well.\n\nA wording suggestion: maybe \"by writing a message to the log\" or \"by writing the message to the log\"","commit_id":"18b82868f9553efa8eea5d09fb9452d94c816493"},{"author":{"_account_id":14962,"name":"ologvinova","email":"ologvinova@mirantis.com","username":"ologvinova"},"change_message_id":"fcabbc3adb28fa6c6765e241a9e70232a0c37f25","unresolved":false,"context_lines":[{"line_number":128,"context_line":"         return sum(args)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":" class LoggerProxy(object):"},{"line_number":131,"context_line":"     \"\"\"\"Class extends functionality by writing message to log\"\"\""},{"line_number":132,"context_line":"     def __init__(self, base, logg):"},{"line_number":133,"context_line":"         self.base \u003d base"},{"line_number":134,"context_line":"         self.logg \u003d logg"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_9406151f","line":131,"in_reply_to":"ba15a1d1_fe92d256","updated":"2015-09-14 17:11:34.000000000","message":"Will be done in a separate patch.","commit_id":"18b82868f9553efa8eea5d09fb9452d94c816493"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"d937d433178330bf61f498ec0dc0000d099496ba","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"     def print_msg(self):"},{"line_number":140,"context_line":"         # Write message to log and then pass the control to inner layer"},{"line_number":141,"context_line":"         self.logg.write(\"Message %s has written to log\") % self.msg"},{"line_number":142,"context_line":"         self.base.print_msg()"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"     def sum_numbers(self, *args):"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_5e8f3e23","line":141,"updated":"2015-09-14 16:09:16.000000000","message":"I think \"Message %s has been written to the log\" is preferable","commit_id":"18b82868f9553efa8eea5d09fb9452d94c816493"},{"author":{"_account_id":14962,"name":"ologvinova","email":"ologvinova@mirantis.com","username":"ologvinova"},"change_message_id":"fcabbc3adb28fa6c6765e241a9e70232a0c37f25","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"     def print_msg(self):"},{"line_number":140,"context_line":"         # Write message to log and then pass the control to inner layer"},{"line_number":141,"context_line":"         self.logg.write(\"Message %s has written to log\") % self.msg"},{"line_number":142,"context_line":"         self.base.print_msg()"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"     def sum_numbers(self, *args):"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ba15a1d1_6fffee01","line":141,"in_reply_to":"ba15a1d1_5e8f3e23","updated":"2015-09-14 17:11:34.000000000","message":"Will be done in a separate patch.","commit_id":"18b82868f9553efa8eea5d09fb9452d94c816493"}]}
