)]}'
{"dragonflow/cli/df_model.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bc4b68458ca36ef1eff10ab3e1adfb317d294beb","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def output_end(self):"},{"line_number":38,"context_line":"        pass"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def model_start(self, model_name):"},{"line_number":41,"context_line":"        pass"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def model_end(self, model_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_76fd3807","line":40,"updated":"2017-11-30 12:29:43.000000000","message":"Maybe (also?) pass the model class as well, for custom handling? I think it makes more sense than extracting the information in the caller.","commit_id":"9a8c0384d4927df7ebb9629829a47a95aeb21a94"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"8bec9223e9d41c449511156abdda67415f5582aa","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    def output_end(self):"},{"line_number":38,"context_line":"        pass"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def model_start(self, model_name):"},{"line_number":41,"context_line":"        pass"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def model_end(self, model_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_7677780a","line":40,"in_reply_to":"ff82abbf_76fd3807","updated":"2017-11-30 12:59:17.000000000","message":"I want the printers to be as agnostic to the model as possible, they need not know anything about how the model classes look like, so I believe this one is better","commit_id":"9a8c0384d4927df7ebb9629829a47a95aeb21a94"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bc4b68458ca36ef1eff10ab3e1adfb317d294beb","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def model_start(self, model_name):"},{"line_number":41,"context_line":"        pass"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def model_end(self, model_name):"},{"line_number":44,"context_line":"        pass"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_96023c09","line":43,"updated":"2017-11-30 12:29:43.000000000","message":"Same as above.","commit_id":"9a8c0384d4927df7ebb9629829a47a95aeb21a94"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"8bec9223e9d41c449511156abdda67415f5582aa","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def model_start(self, model_name):"},{"line_number":41,"context_line":"        pass"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def model_end(self, model_name):"},{"line_number":44,"context_line":"        pass"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_967c7cec","line":43,"in_reply_to":"ff82abbf_96023c09","updated":"2017-11-30 12:59:17.000000000","message":"same as above","commit_id":"9a8c0384d4927df7ebb9629829a47a95aeb21a94"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"bc4b68458ca36ef1eff10ab3e1adfb317d294beb","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        pass"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @abc.abstractmethod"},{"line_number":47,"context_line":"    def handle_field(self, name_, type_, is_single\u003dTrue, restrictions\u003dNone):"},{"line_number":48,"context_line":"        pass"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_3607b01b","line":47,"updated":"2017-11-30 12:29:43.000000000","message":"Same as above for field object","commit_id":"9a8c0384d4927df7ebb9629829a47a95aeb21a94"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"8bec9223e9d41c449511156abdda67415f5582aa","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        pass"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @abc.abstractmethod"},{"line_number":47,"context_line":"    def handle_field(self, name_, type_, is_single\u003dTrue, restrictions\u003dNone):"},{"line_number":48,"context_line":"        pass"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_3681f0c4","line":47,"in_reply_to":"ff82abbf_3607b01b","updated":"2017-11-30 12:59:17.000000000","message":"same here","commit_id":"9a8c0384d4927df7ebb9629829a47a95aeb21a94"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"329f913d4f324cfa9a4fce547f993c033322ab35","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":30,"context_line":"class ModelsPrinter(object):"},{"line_number":31,"context_line":"    def __init__(self, fh):"},{"line_number":32,"context_line":"        self._output \u003d fh"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def output_start(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_311ec5ba","line":31,"updated":"2017-12-03 10:57:23.000000000","message":"Please add docstrings to classes and methods","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"4585f04d674c4081031ad1d4fdf5b51a48a021f9","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":30,"context_line":"class ModelsPrinter(object):"},{"line_number":31,"context_line":"    def __init__(self, fh):"},{"line_number":32,"context_line":"        self._output \u003d fh"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def output_start(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_8c40d409","line":31,"in_reply_to":"df87a7cf_311ec5ba","updated":"2017-12-03 13:24:52.000000000","message":"This was done in a later patch","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6a998ba3c95f29a280bd19eb820cbaa455da5776","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"@six.add_metaclass(abc.ABCMeta)"},{"line_number":30,"context_line":"class ModelsPrinter(object):"},{"line_number":31,"context_line":"    def __init__(self, fh):"},{"line_number":32,"context_line":"        self._output \u003d fh"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def output_start(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_31e23cd7","line":31,"in_reply_to":"df87a7cf_8c40d409","updated":"2017-12-04 06:35:23.000000000","message":"Saw it, thanks","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"329f913d4f324cfa9a4fce547f993c033322ab35","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        pass"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class PlaintextPrinter(ModelsPrinter):"},{"line_number":52,"context_line":"    def __init__(self, fh):"},{"line_number":53,"context_line":"        super(PlaintextPrinter, self).__init__(fh)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_5127c913","line":51,"range":{"start_line":51,"start_character":5,"end_line":51,"end_character":21},"updated":"2017-12-03 10:57:23.000000000","message":"PlainTextPrinter","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"4585f04d674c4081031ad1d4fdf5b51a48a021f9","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        pass"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class PlaintextPrinter(ModelsPrinter):"},{"line_number":52,"context_line":"    def __init__(self, fh):"},{"line_number":53,"context_line":"        super(PlaintextPrinter, self).__init__(fh)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_ac459819","line":51,"range":{"start_line":51,"start_character":5,"end_line":51,"end_character":21},"in_reply_to":"df87a7cf_5127c913","updated":"2017-12-03 13:24:52.000000000","message":"Plaintext is a common term and not only as two separated words... https://en.wikipedia.org/wiki/Plaintext","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"6a998ba3c95f29a280bd19eb820cbaa455da5776","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        pass"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"class PlaintextPrinter(ModelsPrinter):"},{"line_number":52,"context_line":"    def __init__(self, fh):"},{"line_number":53,"context_line":"        super(PlaintextPrinter, self).__init__(fh)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_71c20436","line":51,"range":{"start_line":51,"start_character":5,"end_line":51,"end_character":21},"in_reply_to":"df87a7cf_ac459819","updated":"2017-12-04 06:35:23.000000000","message":"ok","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"e4adb7e7d3d11eedd9a8d77e92144d680f6ebe97","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        print(\u0027\u0027, file\u003dself._output)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def handle_field(self, name_, type_, is_single\u003dTrue, restrictions\u003dNone):"},{"line_number":64,"context_line":"        restriction_str \u003d \\"},{"line_number":65,"context_line":"            \u0027 {}\u0027.format(restrictions) if restrictions else \u0027\u0027"},{"line_number":66,"context_line":"        print(\u0027{name} : {type}{restriction}, {to_many}\u0027.format("},{"line_number":67,"context_line":"            name\u003dname_, type\u003dtype_, restriction\u003drestriction_str,"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_f1eb74ad","line":64,"range":{"start_line":64,"start_character":25,"end_line":64,"end_character":27},"updated":"2017-12-04 06:39:30.000000000","message":"please avoid using \u0027\\\u0027","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"adab301281ef2589da74dff014756011bdddd536","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        print(\u0027\u0027, file\u003dself._output)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def handle_field(self, name_, type_, is_single\u003dTrue, restrictions\u003dNone):"},{"line_number":64,"context_line":"        restriction_str \u003d \\"},{"line_number":65,"context_line":"            \u0027 {}\u0027.format(restrictions) if restrictions else \u0027\u0027"},{"line_number":66,"context_line":"        print(\u0027{name} : {type}{restriction}, {to_many}\u0027.format("},{"line_number":67,"context_line":"            name\u003dname_, type\u003dtype_, restriction\u003drestriction_str,"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_d708a029","line":64,"range":{"start_line":64,"start_character":25,"end_line":64,"end_character":27},"in_reply_to":"df87a7cf_f1eb74ad","updated":"2017-12-04 07:41:20.000000000","message":"Done","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"e4adb7e7d3d11eedd9a8d77e92144d680f6ebe97","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        for key, field in df_model.iterate_over_fields():"},{"line_number":96,"context_line":"            if isinstance(field, field_types.ListOfField):"},{"line_number":97,"context_line":"                is_single \u003d False"},{"line_number":98,"context_line":"                field_type, restrictions \u003d \\"},{"line_number":99,"context_line":"                    self._stringify_field_type(field.field)"},{"line_number":100,"context_line":"            elif isinstance(field, fields.ListField):"},{"line_number":101,"context_line":"                is_single \u003d False"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_b1f64c8f","line":98,"range":{"start_line":98,"start_character":42,"end_line":98,"end_character":44},"updated":"2017-12-04 06:39:30.000000000","message":"ditto","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"adab301281ef2589da74dff014756011bdddd536","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        for key, field in df_model.iterate_over_fields():"},{"line_number":96,"context_line":"            if isinstance(field, field_types.ListOfField):"},{"line_number":97,"context_line":"                is_single \u003d False"},{"line_number":98,"context_line":"                field_type, restrictions \u003d \\"},{"line_number":99,"context_line":"                    self._stringify_field_type(field.field)"},{"line_number":100,"context_line":"            elif isinstance(field, fields.ListField):"},{"line_number":101,"context_line":"                is_single \u003d False"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_f70da437","line":98,"range":{"start_line":98,"start_character":42,"end_line":98,"end_character":44},"in_reply_to":"df87a7cf_b1f64c8f","updated":"2017-12-04 07:41:20.000000000","message":"Done","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"e4adb7e7d3d11eedd9a8d77e92144d680f6ebe97","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                    self._stringify_field_type(field.field)"},{"line_number":100,"context_line":"            elif isinstance(field, fields.ListField):"},{"line_number":101,"context_line":"                is_single \u003d False"},{"line_number":102,"context_line":"                field_type, restrictions \u003d \\"},{"line_number":103,"context_line":"                    self._stringify_field_type(field.items_types[0])"},{"line_number":104,"context_line":"                if isinstance(field, field_types.EnumListField):"},{"line_number":105,"context_line":"                    restrictions \u003d list(field._valid_values)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_51f3409f","line":102,"range":{"start_line":102,"start_character":43,"end_line":102,"end_character":44},"updated":"2017-12-04 06:39:30.000000000","message":"ditto","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"adab301281ef2589da74dff014756011bdddd536","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                    self._stringify_field_type(field.field)"},{"line_number":100,"context_line":"            elif isinstance(field, fields.ListField):"},{"line_number":101,"context_line":"                is_single \u003d False"},{"line_number":102,"context_line":"                field_type, restrictions \u003d \\"},{"line_number":103,"context_line":"                    self._stringify_field_type(field.items_types[0])"},{"line_number":104,"context_line":"                if isinstance(field, field_types.EnumListField):"},{"line_number":105,"context_line":"                    restrictions \u003d list(field._valid_values)"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_97121858","line":102,"range":{"start_line":102,"start_character":43,"end_line":102,"end_character":44},"in_reply_to":"df87a7cf_51f3409f","updated":"2017-12-04 07:41:20.000000000","message":"Done","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"e4adb7e7d3d11eedd9a8d77e92144d680f6ebe97","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                    restrictions \u003d list(field._valid_values)"},{"line_number":106,"context_line":"            elif isinstance(field, fields.EmbeddedField):"},{"line_number":107,"context_line":"                is_single \u003d True"},{"line_number":108,"context_line":"                field_type, restrictions \u003d \\"},{"line_number":109,"context_line":"                    self._stringify_field_type(field.types[0])"},{"line_number":110,"context_line":"            else:"},{"line_number":111,"context_line":"                is_single \u003d True"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_3130fc56","line":108,"range":{"start_line":108,"start_character":43,"end_line":108,"end_character":44},"updated":"2017-12-04 06:39:30.000000000","message":"ditto","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"adab301281ef2589da74dff014756011bdddd536","unresolved":false,"context_lines":[{"line_number":105,"context_line":"                    restrictions \u003d list(field._valid_values)"},{"line_number":106,"context_line":"            elif isinstance(field, fields.EmbeddedField):"},{"line_number":107,"context_line":"                is_single \u003d True"},{"line_number":108,"context_line":"                field_type, restrictions \u003d \\"},{"line_number":109,"context_line":"                    self._stringify_field_type(field.types[0])"},{"line_number":110,"context_line":"            else:"},{"line_number":111,"context_line":"                is_single \u003d True"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_77199477","line":108,"range":{"start_line":108,"start_character":43,"end_line":108,"end_character":44},"in_reply_to":"df87a7cf_3130fc56","updated":"2017-12-04 07:41:20.000000000","message":"Done","commit_id":"5d17bc3d03b963197afd1d6472fe315f2dd492e2"},{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"1c18a1eef38c9db3cd6042e215de21e33f262fdc","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class DfModelParser(object):"},{"line_number":72,"context_line":"    def __init__(self, printer):"},{"line_number":73,"context_line":"        self._printer \u003d printer"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _stringify_field_type(self, field):"}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_d2a42e0b","line":72,"updated":"2017-12-04 08:38:24.000000000","message":"Please add docstring to this class","commit_id":"55e95a5a024fa202b08d6dff02bcd0bf87d64391"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"1ef249f052c0c50215864a2cf2a8d323a40d928b","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class DfModelParser(object):"},{"line_number":72,"context_line":"    def __init__(self, printer):"},{"line_number":73,"context_line":"        self._printer \u003d printer"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _stringify_field_type(self, field):"}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_6809932a","line":72,"in_reply_to":"df87a7cf_d2a42e0b","updated":"2017-12-05 06:43:16.000000000","message":"Done, please see https://review.openstack.org/523848","commit_id":"55e95a5a024fa202b08d6dff02bcd0bf87d64391"},{"author":{"_account_id":26131,"name":"Eyal Leshem","email":"eyal.leshem@toganetworks.com","username":"leyal"},"change_message_id":"bfbec0f6cd0af930e88ed412d6bfa8179407fdfb","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        elif isinstance(field, fields.BaseField):"},{"line_number":86,"context_line":"            return type(field).__name__, None"},{"line_number":87,"context_line":"        else:"},{"line_number":88,"context_line":"            return field.__name__, None"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _process_model(self, df_model):"},{"line_number":91,"context_line":"        model_name \u003d df_model.__name__"}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_5c0d903c","line":88,"updated":"2017-12-04 11:16:07.000000000","message":"should be such fields ?  maybe throw an exception here - or print some error msg , that ask to update the code with the new type?","commit_id":"55e95a5a024fa202b08d6dff02bcd0bf87d64391"},{"author":{"_account_id":17880,"name":"Shachar Snapiri","email":"shachar.snapiri@toganetworks.com","username":"snapiri"},"change_message_id":"6586b6dcda17015243c2d13b8ce1cf4035797c44","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        elif isinstance(field, fields.BaseField):"},{"line_number":86,"context_line":"            return type(field).__name__, None"},{"line_number":87,"context_line":"        else:"},{"line_number":88,"context_line":"            return field.__name__, None"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _process_model(self, df_model):"},{"line_number":91,"context_line":"        model_name \u003d df_model.__name__"}],"source_content_type":"text/x-python","patch_set":9,"id":"df87a7cf_7f7ac624","line":88,"in_reply_to":"df87a7cf_5c0d903c","updated":"2017-12-04 11:38:20.000000000","message":"This is actually the general case for a field that is of a different model type (e.g. LogicalPort). All the other cases are special cases that need to be handled.","commit_id":"55e95a5a024fa202b08d6dff02bcd0bf87d64391"}]}
