)]}'
{"automaton/machines.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"575f69ea5026b0d0e4b1c3f2560274f521fe15ed","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    def build(cls, state_space,"},{"line_number":109,"context_line":"              event_generator\u003dNone,"},{"line_number":110,"context_line":"              terminal_states\u003dNone):"},{"line_number":111,"context_line":"        \"\"\"Builds a machine from a [(state, event list, next states)] list.\"\"\""},{"line_number":112,"context_line":"        m \u003d cls()"},{"line_number":113,"context_line":"        if terminal_states is None:"},{"line_number":114,"context_line":"            terminal_states \u003d set()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_f15667cd","line":111,"updated":"2015-07-31 10:02:35.000000000","message":"1. please expand a docstring to document each param\n\n2. what about accepting list of new namedtuple State with attributes \u0027name\u0027, \u0027next_states\u0027, \u0027is_terminal\u0027? where next_states \u003d {event: state_name}, is_terminal\u003dTrue/False.","commit_id":"d13b8864712200d3d26097d8852e720f8b870e2c"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"9b6b416c5ab3171ebe866107ac7dd0fdf9dfbce3","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    def build(cls, state_space,"},{"line_number":109,"context_line":"              event_generator\u003dNone,"},{"line_number":110,"context_line":"              terminal_states\u003dNone):"},{"line_number":111,"context_line":"        \"\"\"Builds a machine from a [(state, event list, next states)] list.\"\"\""},{"line_number":112,"context_line":"        m \u003d cls()"},{"line_number":113,"context_line":"        if terminal_states is None:"},{"line_number":114,"context_line":"            terminal_states \u003d set()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_62b954e9","line":111,"in_reply_to":"3a50d1a3_f15667cd","updated":"2015-08-04 04:06:20.000000000","message":"Seems ok with me.","commit_id":"d13b8864712200d3d26097d8852e720f8b870e2c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"575f69ea5026b0d0e4b1c3f2560274f521fe15ed","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            if state in terminal_states:"},{"line_number":117,"context_line":"                m.add_state(state, terminal\u003dTrue)"},{"line_number":118,"context_line":"            else:"},{"line_number":119,"context_line":"                m.add_state(state)"},{"line_number":120,"context_line":"            for state in next_states:"},{"line_number":121,"context_line":"                try:"},{"line_number":122,"context_line":"                    if state in terminal_states:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_115af3f2","line":119,"updated":"2015-07-31 10:02:35.000000000","message":"with my suggestion above this could be\n\n m.add_state(state.name, terminal\u003dstate.is_terminal)","commit_id":"d13b8864712200d3d26097d8852e720f8b870e2c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"575f69ea5026b0d0e4b1c3f2560274f521fe15ed","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                    else:"},{"line_number":125,"context_line":"                        m.add_state(state)"},{"line_number":126,"context_line":"                except excp.Duplicate:"},{"line_number":127,"context_line":"                    pass"},{"line_number":128,"context_line":"        for (state, next_events, next_states) in state_space:"},{"line_number":129,"context_line":"            for i, next_state in enumerate(next_states):"},{"line_number":130,"context_line":"                event \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_b171bf79","line":127,"updated":"2015-07-31 10:02:35.000000000","message":"this is probably not needed, if we expect all states to be in state_space (which I hope we do).","commit_id":"d13b8864712200d3d26097d8852e720f8b870e2c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"575f69ea5026b0d0e4b1c3f2560274f521fe15ed","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                try:"},{"line_number":132,"context_line":"                    event \u003d next_events[i]"},{"line_number":133,"context_line":"                except IndexError:"},{"line_number":134,"context_line":"                    pass"},{"line_number":135,"context_line":"                if event is None and event_generator is not None:"},{"line_number":136,"context_line":"                    event \u003d event_generator(state, next_state)"},{"line_number":137,"context_line":"                if event is None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_d16c8b9f","line":134,"updated":"2015-07-31 10:02:35.000000000","message":"we won\u0027t need this check if we link events + next states in one dict (as above)","commit_id":"d13b8864712200d3d26097d8852e720f8b870e2c"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cba14b8f926731fae24c1214eb67d8ec077c314b","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    Usage of this and the :meth:`~.FiniteMachine.build` make creating finite"},{"line_number":31,"context_line":"    state machines that much easier."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    :ivar name: The name of the state."},{"line_number":34,"context_line":"    :ivar is_terminal: Whether this state is terminal (or not)."},{"line_number":35,"context_line":"    :ivar next_states: Dictionary of \u0027event\u0027 -\u003e \u0027next state name\u0027 (or none)."},{"line_number":36,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_cfddb471","line":33,"updated":"2015-09-02 21:05:10.000000000","message":"first time I\u0027ve seen \u0027ivar\u0027. Is that similar to \u0027param\u0027?","commit_id":"ede80323424bb5575c91f33bd4511a93a1bb3241"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"43d2e919c7393fbe24cf934b45f909bb92426453","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    Usage of this and the :meth:`~.FiniteMachine.build` make creating finite"},{"line_number":31,"context_line":"    state machines that much easier."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    :ivar name: The name of the state."},{"line_number":34,"context_line":"    :ivar is_terminal: Whether this state is terminal (or not)."},{"line_number":35,"context_line":"    :ivar next_states: Dictionary of \u0027event\u0027 -\u003e \u0027next state name\u0027 (or none)."},{"line_number":36,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_d1025f3e","line":33,"in_reply_to":"da20952f_cfddb471","updated":"2015-09-14 16:26:57.000000000","message":"ivar \u003d\u003d instance variable afaik.","commit_id":"ede80323424bb5575c91f33bd4511a93a1bb3241"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"39c43c49f8af59592038e61445921b0edc85dfdc","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        self._default_start_state \u003d state"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    @classmethod"},{"line_number":125,"context_line":"    def build(cls, state_space):"},{"line_number":126,"context_line":"        \"\"\"Builds a machine from a state space listing."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        Each element of this list must be an instance of :py:class:`.State`."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_914e27c0","line":125,"updated":"2015-09-14 16:25:34.000000000","message":"this is definitely better than building the state machine from scratch...  how about going a step further and taking in a list or dict that represents the inputs to the state?\n\ni.e. build([{state\u003d\u0027down\u0027, next_states\u003d{\u0027jump\u0027: \u0027up\u0027, \u0027dig\u0027: \u0027underground\u0027}}]","commit_id":"ede80323424bb5575c91f33bd4511a93a1bb3241"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cba14b8f926731fae24c1214eb67d8ec077c314b","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    def build(cls, state_space):"},{"line_number":126,"context_line":"        \"\"\"Builds a machine from a state space listing."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        Each element of this list must be an instance of :py:class:`.State`."},{"line_number":129,"context_line":"        \"\"\""},{"line_number":130,"context_line":"        m \u003d cls()"},{"line_number":131,"context_line":"        for state in state_space:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_4f0524c0","line":128,"updated":"2015-09-02 21:05:10.000000000","message":"\u0027this list\u0027 \u003d\u003d state_space? Maybe put your fancy \u0027:ivar state_space...\u0027?\n\nwhat does it return?\n\nDo we care about exceptions raised here?","commit_id":"ede80323424bb5575c91f33bd4511a93a1bb3241"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"6d2de5a63c00fdfe5cc349136c47801783152cad","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def _convert_to_states(state_space):"},{"line_number":45,"context_line":"    # NOTE(harlowja): if provided dicts, convert them..."},{"line_number":46,"context_line":"    for state in state_space:"},{"line_number":47,"context_line":"        if isinstance(state, dict):"},{"line_number":48,"context_line":"            state \u003d State(**state)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_c616e7a6","line":45,"updated":"2015-09-15 20:21:49.000000000","message":"I\u0027m not sure why a NOTE is better than eg a docstring for the method.\n\nYou\u0027re assuming that state is either a dict or a State, right?","commit_id":"ae7d6df7f47237a83c9cd0dcd33d04ae199d7190"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"23bbfe00ce785ff73822d037a1c60880ada9f663","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def _convert_to_states(state_space):"},{"line_number":45,"context_line":"    # NOTE(harlowja): if provided dicts, convert them..."},{"line_number":46,"context_line":"    for state in state_space:"},{"line_number":47,"context_line":"        if isinstance(state, dict):"},{"line_number":48,"context_line":"            state \u003d State(**state)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_54583632","line":45,"in_reply_to":"ba15a1d1_c616e7a6","updated":"2015-09-16 00:23:05.000000000","message":"ya, thats what i assume, probably could just use docstring, meh, ha.","commit_id":"ae7d6df7f47237a83c9cd0dcd33d04ae199d7190"}],"automaton/tests/test_fsm.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"6d2de5a63c00fdfe5cc349136c47801783152cad","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        expected \u003d [(\u0027down\u0027, \u0027jump\u0027, \u0027up\u0027), (\u0027up\u0027, \u0027fall\u0027, \u0027down\u0027)]"},{"line_number":70,"context_line":"        self.assertEqual(expected, list(m))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def test_build_transitions_dct(self):"},{"line_number":73,"context_line":"        space \u003d ["},{"line_number":74,"context_line":"            {"},{"line_number":75,"context_line":"                \u0027name\u0027: \u0027down\u0027, \u0027is_terminal\u0027: False,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_665b5b88","line":72,"updated":"2015-09-15 20:21:49.000000000","message":"I think for one character, \u0027dict\u0027 is more readable than \u0027dct\u0027.","commit_id":"ae7d6df7f47237a83c9cd0dcd33d04ae199d7190"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"23bbfe00ce785ff73822d037a1c60880ada9f663","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        expected \u003d [(\u0027down\u0027, \u0027jump\u0027, \u0027up\u0027), (\u0027up\u0027, \u0027fall\u0027, \u0027down\u0027)]"},{"line_number":70,"context_line":"        self.assertEqual(expected, list(m))"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def test_build_transitions_dct(self):"},{"line_number":73,"context_line":"        space \u003d ["},{"line_number":74,"context_line":"            {"},{"line_number":75,"context_line":"                \u0027name\u0027: \u0027down\u0027, \u0027is_terminal\u0027: False,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_745bfa2e","line":72,"in_reply_to":"ba15a1d1_665b5b88","updated":"2015-09-16 00:23:05.000000000","message":":-P but i saved typing \u0027i\u0027\nlol","commit_id":"ae7d6df7f47237a83c9cd0dcd33d04ae199d7190"}]}
