From a6f9a31fd96b35101f6e70945f9375a4d1a8c0bf Mon Sep 17 00:00:00 2001
From: Athanasius <Athanasius@miggy.org>
Date: Sun, 4 Dec 2022 16:20:08 +0000
Subject: [PATCH] plugins/edsy: flake8 and mypy pass

---
 plugins/edsy.py | 36 +++++++++++++++++++++++++++---------
 1 file changed, 27 insertions(+), 9 deletions(-)

diff --git a/plugins/edsy.py b/plugins/edsy.py
index df61683e..5ceb21d5 100644
--- a/plugins/edsy.py
+++ b/plugins/edsy.py
@@ -1,4 +1,4 @@
-# EDShipyard ship export
+"""Export data for ED Shipyard."""
 
 # ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $#
 # ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $#
@@ -15,25 +15,41 @@
 # Thus you **MUST** check if any imports you add in this file are only
 # referenced in this file (or only in any other core plugin), and if so...
 #
-#     YOU MUST ENSURE THAT PERTINENT ADJUSTMENTS ARE MADE IN `setup.py`
-#     SO AS TO ENSURE THE FILES ARE ACTUALLY PRESENT IN AN END-USER
-#     INSTALLATION ON WINDOWS.
+#     YOU MUST ENSURE THAT PERTINENT ADJUSTMENTS ARE MADE IN
+#     `Build-exe-and-msi.py` SO AS TO ENSURE THE FILES ARE ACTUALLY PRESENT IN
+#     AN END-USER INSTALLATION ON WINDOWS.
 #
 #
 # ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $#
 # ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $# ! $#
 import base64
 import gzip
-import json
 import io
+import json
+from typing import Any, Mapping
 
 
-def plugin_start3(plugin_dir):
+def plugin_start3(plugin_dir: str) -> str:
+    """
+    Start the plugin.
+
+    :param plugin_dir: NAme of directory this was loaded from.
+    :return: Identifier string for this plugin.
+    """
     return 'EDSY'
 
+
 # Return a URL for the current ship
-def shipyard_url(loadout, is_beta):
-    string = json.dumps(loadout, ensure_ascii=False, sort_keys=True, separators=(',', ':')).encode('utf-8')	# most compact representation
+def shipyard_url(loadout: Mapping[str, Any], is_beta) -> bool | str:
+    """
+    Construct a URL for ship loadout.
+
+    :param loadout:
+    :param is_beta:
+    :return:
+    """
+    # most compact representation
+    string = json.dumps(loadout, ensure_ascii=False, sort_keys=True, separators=(',', ':')).encode('utf-8')
     if not string:
         return False
 
@@ -41,4 +57,6 @@ def shipyard_url(loadout, is_beta):
     with gzip.GzipFile(fileobj=out, mode='w') as f:
         f.write(string)
 
-    return (is_beta and 'http://edsy.org/beta/#/I=' or 'http://edsy.org/#/I=') + base64.urlsafe_b64encode(out.getvalue()).decode().replace('=', '%3D')
+    return (
+               is_beta and 'http://edsy.org/beta/#/I=' or 'http://edsy.org/#/I='
+           ) + base64.urlsafe_b64encode(out.getvalue()).decode().replace('=', '%3D')