)]}'
{"futurist/periodics.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f7ad887b6429d0f5f245c26ed1840ea5e67bfecd","unresolved":false,"context_lines":[{"line_number":313,"context_line":"                        self._waiter.wait(when_next)"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def add(self, cb, *args, **kwargs):"},{"line_number":316,"context_line":"        \"\"\"Adds a new periodic callback to the current worker."},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        :param cb: a callable object/method/function previously decorated"},{"line_number":319,"context_line":"                   with the :py:func:`.periodic` decorator"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_56ed0624","line":316,"updated":"2015-06-19 14:41:58.000000000","message":"It just occured to me that in threading context it\u0027s worth mentioning which functions are thread-safe. This one is not, for example.","commit_id":"b29f3fc84ae208f6ffde6f530dcdeb331b205fff"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"b888496d7a2856cdfdc129e0b66d40ecdc0f18f5","unresolved":false,"context_lines":[{"line_number":313,"context_line":"                        self._waiter.wait(when_next)"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def add(self, cb, *args, **kwargs):"},{"line_number":316,"context_line":"        \"\"\"Adds a new periodic callback to the current worker."},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        :param cb: a callable object/method/function previously decorated"},{"line_number":319,"context_line":"                   with the :py:func:`.periodic` decorator"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_0af74df6","line":316,"in_reply_to":"fa32b979_56ed0624","updated":"2015-06-19 16:02:58.000000000","message":"It should be thread safe... The append takes place holding the condition variable (which is attached to a lock), and therefore disallows mutation of \u0027self._callables\u0027 by others at the same time, the validation of the callback takes place without this lock (since it doesn\u0027t need to be thread safe).","commit_id":"b29f3fc84ae208f6ffde6f530dcdeb331b205fff"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f7ad887b6429d0f5f245c26ed1840ea5e67bfecd","unresolved":false,"context_lines":[{"line_number":337,"context_line":"    def start(self, allow_none\u003dFalse):"},{"line_number":338,"context_line":"        \"\"\"Starts running (will not return until :py:meth:`.stop` is called)."},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        :param allow_none: instead of running with no callbacks raise when"},{"line_number":341,"context_line":"                           it has no contained callables (this can be set"},{"line_number":342,"context_line":"                           to true and :py:meth:`.add` can be used to add"},{"line_number":343,"context_line":"                           new callables on demand)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_f6f1ba02","line":340,"updated":"2015-06-19 14:41:58.000000000","message":"I would rather call it \"allow_empty\"","commit_id":"b29f3fc84ae208f6ffde6f530dcdeb331b205fff"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"b888496d7a2856cdfdc129e0b66d40ecdc0f18f5","unresolved":false,"context_lines":[{"line_number":337,"context_line":"    def start(self, allow_none\u003dFalse):"},{"line_number":338,"context_line":"        \"\"\"Starts running (will not return until :py:meth:`.stop` is called)."},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        :param allow_none: instead of running with no callbacks raise when"},{"line_number":341,"context_line":"                           it has no contained callables (this can be set"},{"line_number":342,"context_line":"                           to true and :py:meth:`.add` can be used to add"},{"line_number":343,"context_line":"                           new callables on demand)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa32b979_aadc2175","line":340,"in_reply_to":"fa32b979_f6f1ba02","updated":"2015-06-19 16:02:58.000000000","message":"Ok dokie.","commit_id":"b29f3fc84ae208f6ffde6f530dcdeb331b205fff"}]}
