forked from M-Labs/artiq
1
0
Fork 0

sync_struct: flake8 [nfc] (#1317)

This commit is contained in:
hartytp 2019-05-10 12:42:06 +01:00 committed by GitHub
parent 1a3d71760d
commit 30fe624fe5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 15 deletions

View File

@ -33,8 +33,8 @@ class ModAction(Enum):
required. required.
The path (member field) the change applies to is given in The path (member field) the change applies to is given in
``m["path"]`` as a list; elements give successive levels of indexing. (There ``m["path"]`` as a list; elements give successive levels of indexing.
is no ``path`` on initial initialization.) (There is no ``path`` on initial initialization.)
Details on the modification are stored in additional data fields specific Details on the modification are stored in additional data fields specific
to each type. to each type.
@ -97,10 +97,11 @@ class Subscriber:
from the publisher. The mod is passed as parameter. The function is from the publisher. The mod is passed as parameter. The function is
called after the mod has been processed. called after the mod has been processed.
A list of functions may also be used, and they will be called in turn. A list of functions may also be used, and they will be called in turn.
:param disconnect_cb: An optional function called when disconnection happens :param disconnect_cb: An optional function called when disconnection
from external causes (i.e. not when ``close`` is called). happens from external causes (i.e. not when ``close`` is called).
""" """
def __init__(self, notifier_name, target_builder, notify_cb=None, disconnect_cb=None): def __init__(self, notifier_name, target_builder, notify_cb=None,
disconnect_cb=None):
self.notifier_name = notifier_name self.notifier_name = notifier_name
self.target_builder = target_builder self.target_builder = target_builder
if notify_cb is None: if notify_cb is None:
@ -162,12 +163,12 @@ class Subscriber:
class Notifier: class Notifier:
"""Encapsulates a structure whose changes need to be published. """Encapsulates a structure whose changes need to be published.
All mutations to the structure must be made through the :class:`.Notifier`. The All mutations to the structure must be made through the :class:`.Notifier`.
original structure must only be accessed for reads. The original structure must only be accessed for reads.
In addition to the list methods below, the :class:`.Notifier` supports the index In addition to the list methods below, the :class:`.Notifier` supports the
syntax for modification and deletion of elements. Modification of nested index syntax for modification and deletion of elements. Modification of
structures can be also done using the index syntax, for example: nested structures can be also done using the index syntax, for example:
>>> n = Notifier([]) >>> n = Notifier([])
>>> n.append([]) >>> n.append([])
@ -176,8 +177,8 @@ class Notifier:
[[42]] [[42]]
This class does not perform any network I/O and is meant to be used with This class does not perform any network I/O and is meant to be used with
e.g. the :class:`.Publisher` for this purpose. Only one publisher at most can be e.g. the :class:`.Publisher` for this purpose. Only one publisher at most
associated with a :class:`.Notifier`. can be associated with a :class:`.Notifier`.
:param backing_struct: Structure to encapsulate. :param backing_struct: Structure to encapsulate.
""" """
@ -269,8 +270,8 @@ class Publisher(AsyncioServer):
a :class:`.Notifier`. a :class:`.Notifier`.
:param notifiers: A dictionary containing the notifiers to associate with :param notifiers: A dictionary containing the notifiers to associate with
the :class:`.Publisher`. The keys of the dictionary are the names of the the :class:`.Publisher`. The keys of the dictionary are the names of
notifiers to be used with :class:`.Subscriber`. the notifiers to be used with :class:`.Subscriber`.
""" """
def __init__(self, notifiers): def __init__(self, notifiers):
AsyncioServer.__init__(self) AsyncioServer.__init__(self)
@ -311,7 +312,8 @@ class Publisher(AsyncioServer):
await writer.drain() await writer.drain()
finally: finally:
self._recipients[notifier_name].remove(queue) self._recipients[notifier_name].remove(queue)
except (ConnectionResetError, ConnectionAbortedError, BrokenPipeError, TimeoutError): except (ConnectionResetError, ConnectionAbortedError, BrokenPipeError,
TimeoutError):
# subscribers disconnecting are a normal occurrence # subscribers disconnecting are a normal occurrence
pass pass
finally: finally: