aboutsummaryrefslogtreecommitdiff
path: root/diplomacy/communication/notifications.py
diff options
context:
space:
mode:
authorPhilip Paquette <pcpaquette@gmail.com>2019-09-11 12:58:45 -0400
committerPhilip Paquette <pcpaquette@gmail.com>2019-09-14 18:18:53 -0400
commitabb42dcd4886705d6ba8af27f68ef605218ac67c (patch)
tree9ae16f7a09fff539fa72e65198e284bca6ac3376 /diplomacy/communication/notifications.py
parenta954a00d263750c279dbb2c0a9ae85707022bcd7 (diff)
Added ReadtheDocs documentation for the public API
- Reformatted the docstring to be compatible - Added tests to make sure the documentation compiles properly - Added sphinx as a pip requirement Co-authored-by: Philip Paquette <pcpaquette@gmail.com> Co-authored-by: notoraptor <stevenbocco@gmail.com>
Diffstat (limited to 'diplomacy/communication/notifications.py')
-rw-r--r--diplomacy/communication/notifications.py93
1 files changed, 77 insertions, 16 deletions
diff --git a/diplomacy/communication/notifications.py b/diplomacy/communication/notifications.py
index c88d526..1751182 100644
--- a/diplomacy/communication/notifications.py
+++ b/diplomacy/communication/notifications.py
@@ -73,7 +73,13 @@ class AccountDeleted(_ChannelNotification):
__slots__ = []
class OmniscientUpdated(_GameNotification):
- """ Notification about a grade updated. Sent at channel level. """
+ """ Notification about a grade updated. Sent at channel level.
+
+ Properties:
+
+ - **grade_update**: :class:`str` One of 'promote' or 'demote'.
+ - **game**: :class:`parsing.JsonableClassType(Game)` a :class:`diplomacy.engine.game.Game` object.
+ """
__slots__ = ['grade_update', 'game']
params = {
strings.GRADE_UPDATE: parsing.EnumerationType(strings.ALL_GRADE_UPDATES),
@@ -98,10 +104,12 @@ class ClearedUnits(_GameNotification):
__slots__ = []
class VoteCountUpdated(_GameNotification):
- """ Notification about new count of draw votes for a game (for observers)
+ """ Notification about new count of draw votes for a game (for observers).
+
Properties:
- - count_voted: number of powers that have voted.
- - count_expected: number of powers to be expected to vote.
+
+ - **count_voted**: :class:`int` number of powers that have voted.
+ - **count_expected**: :class:`int` number of powers to be expected to vote.
"""
__slots__ = ['count_voted', 'count_expected']
params = {
@@ -115,8 +123,12 @@ class VoteCountUpdated(_GameNotification):
super(VoteCountUpdated, self).__init__(**kwargs)
class VoteUpdated(_GameNotification):
- """ Notification about votes updated for a game (for omniscient observers). Properties:
- - vote: dictionary mapping a power name to a Vote object representing power vote.
+ """ Notification about votes updated for a game (for omniscient observers).
+
+ Properties:
+
+ - **vote**: :class:`Dict` mapping a power name to a Vote (:class:`str`) object representing power vote.
+ Possible votes are: yes, no, neutral.
"""
__slots__ = ['vote']
params = {
@@ -128,8 +140,11 @@ class VoteUpdated(_GameNotification):
super(VoteUpdated, self).__init__(**kwargs)
class PowerVoteUpdated(VoteCountUpdated):
- """ Notification about a new vote for a specific game power (for player games). Properties:
- - vote: vote object representing associated power vote.
+ """ Notification about a new vote for a specific game power (for player games).
+
+ Properties:
+
+ - **vote**: :class:`str` vote object representing associated power vote. Can be yes, no, neutral.
"""
__slots__ = ['vote']
params = parsing.extend_model(VoteCountUpdated.params, {
@@ -141,7 +156,13 @@ class PowerVoteUpdated(VoteCountUpdated):
super(PowerVoteUpdated, self).__init__(**kwargs)
class PowersControllers(_GameNotification):
- """ Notification about current controller for each power in a game. """
+ """ Notification about current controller for each power in a game.
+
+ Properties:
+
+ - **powers**: A :class:`Dict` that maps a power_name to a controller_name :class:`str`.
+ - **timestamps**: A :class:`Dict` that maps a power_name to timestamp where the controller took over.
+ """
__slots__ = ['powers', 'timestamps']
params = {
# {power_name => controller_name}
@@ -160,7 +181,13 @@ class GameDeleted(_GameNotification):
__slots__ = []
class GameProcessed(_GameNotification):
- """ Notification about a game phase update. Sent after game had processed a phase. """
+ """ Notification about a game phase update. Sent after game has processed a phase.
+
+ Properties:
+
+ - **previous_phase_data**: :class:`diplomacy.utils.game_phase_data.GamePhaseData` of the previous phase
+ - **current_phase_data**: :class:`diplomacy.utils.game_phase_data.GamePhaseData` of the current phase
+ """
__slots__ = ['previous_phase_data', 'current_phase_data']
params = {
strings.PREVIOUS_PHASE_DATA: parsing.JsonableClassType(GamePhaseData),
@@ -173,7 +200,13 @@ class GameProcessed(_GameNotification):
super(GameProcessed, self).__init__(**kwargs)
class GamePhaseUpdate(_GameNotification):
- """ Notification about a game phase update. """
+ """ Notification about a game phase update.
+
+ Properties:
+
+ - **phase_data**: :class:`diplomacy.utils.game_phase_data.GamePhaseData` of the updated phase
+ - **phase_data_type**: :class:`str`. One of 'state_history', 'state', 'phase'
+ """
__slots__ = ['phase_data', 'phase_data_type']
params = {
strings.PHASE_DATA: parsing.JsonableClassType(GamePhaseData),
@@ -186,7 +219,12 @@ class GamePhaseUpdate(_GameNotification):
super(GamePhaseUpdate, self).__init__(**kwargs)
class GameStatusUpdate(_GameNotification):
- """ Notification about a game status update. """
+ """ Notification about a game status update.
+
+ Properties:
+
+ -**status**: :class:`str`. One of 'forming', 'active', 'paused', 'completed', 'canceled'
+ """
__slots__ = ['status']
params = {
strings.STATUS: parsing.EnumerationType(strings.ALL_GAME_STATUSES),
@@ -197,7 +235,12 @@ class GameStatusUpdate(_GameNotification):
super(GameStatusUpdate, self).__init__(**kwargs)
class GameMessageReceived(_GameNotification):
- """ Notification about a game message received. """
+ """ Notification about a game message received.
+
+ Properties:
+
+ - **message**: :class:`diplomacy.engine.message.Message` received.
+ """
__slots__ = ['message']
params = {
strings.MESSAGE: parsing.JsonableClassType(Message),
@@ -208,7 +251,12 @@ class GameMessageReceived(_GameNotification):
super(GameMessageReceived, self).__init__(**kwargs)
class PowerOrdersUpdate(_GameNotification):
- """ Notification about a power order update. """
+ """ Notification about a power order update.
+
+ Properties:
+
+ - **orders**: List of updated orders (i.e. :class:`str`)
+ """
__slots__ = ['orders']
params = {
strings.ORDERS: parsing.OptionalValueType(parsing.SequenceType(str)),
@@ -219,7 +267,12 @@ class PowerOrdersUpdate(_GameNotification):
super(PowerOrdersUpdate, self).__init__(**kwargs)
class PowerOrdersFlag(_GameNotification):
- """ Notification about a power order flag update. """
+ """ Notification about a power order flag update.
+
+ Properties:
+
+ - **order_is_set**: :class:`int`. O = ORDER_NOT_SET, 1 = ORDER_SET_EMPTY, 2 = ORDER_SET.
+ """
__slots__ = ['order_is_set']
params = {
strings.ORDER_IS_SET: parsing.EnumerationType(OrderSettings.ALL_SETTINGS),
@@ -230,7 +283,14 @@ class PowerOrdersFlag(_GameNotification):
super(PowerOrdersFlag, self).__init__(**kwargs)
class PowerWaitFlag(_GameNotification):
- """ Notification about a power wait flag update. """
+ """ Notification about a power wait flag update.
+
+ Properties:
+
+ - **wait**: :class:`bool` that indicates to wait until the deadline is reached before proceeding. Otherwise
+ if all powers are not waiting, the game is processed as soon as all non-eliminated powers have submitted
+ their orders.
+ """
__slots__ = ['wait']
params = {
strings.WAIT: bool,
@@ -242,6 +302,7 @@ class PowerWaitFlag(_GameNotification):
def parse_dict(json_notification):
""" Parse a JSON expected to represent a notification. Raise an exception if parsing failed.
+
:param json_notification: JSON dictionary.
:return: a notification class instance.
"""