Browse Source

black format

Fabian Peter Hammerle 4 years ago
parent
commit
a6a79b1510
6 changed files with 153 additions and 91 deletions
  1. 1 0
      Pipfile
  2. 79 1
      Pipfile.lock
  3. 2 0
      README.md
  4. 14 14
      setup.py
  5. 8 8
      tests/test_.py
  6. 49 68
      tooncher/__init__.py

+ 1 - 0
Pipfile

@@ -7,6 +7,7 @@ name = "pypi"
 tooncher = {editable = true, path = "."}
 
 [dev-packages]
+black = "==19.10b0"
 pytest = "*"
 
 [requires]

+ 79 - 1
Pipfile.lock

@@ -1,7 +1,7 @@
 {
     "_meta": {
         "hash": {
-            "sha256": "73c4772801d752445205fbd8c6b83fe6f343eea9e9e74c0d55efd79a43335239"
+            "sha256": "b3b678ed4d7ed28a251992a9d87da75a01c6d6d9cf7778e956cac7de53c3b56c"
         },
         "pipfile-spec": 6,
         "requires": {
@@ -38,6 +38,13 @@
         }
     },
     "develop": {
+        "appdirs": {
+            "hashes": [
+                "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92",
+                "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e"
+            ],
+            "version": "==1.4.3"
+        },
         "attrs": {
             "hashes": [
                 "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c",
@@ -45,6 +52,21 @@
             ],
             "version": "==19.3.0"
         },
+        "black": {
+            "hashes": [
+                "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b",
+                "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539"
+            ],
+            "index": "pypi",
+            "version": "==19.10b0"
+        },
+        "click": {
+            "hashes": [
+                "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13",
+                "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"
+            ],
+            "version": "==7.0"
+        },
         "importlib-metadata": {
             "hashes": [
                 "sha256:b044f07694ef14a6683b097ba56bd081dbc7cdc7c7fe46011e499dfecc082f21",
@@ -67,6 +89,12 @@
             ],
             "version": "==19.2"
         },
+        "pathspec": {
+            "hashes": [
+                "sha256:e285ccc8b0785beadd4c18e5708b12bb8fcf529a1e61215b3feff1d1e559ea5c"
+            ],
+            "version": "==0.6.0"
+        },
         "pluggy": {
             "hashes": [
                 "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0",
@@ -96,6 +124,24 @@
             "index": "pypi",
             "version": "==5.3.1"
         },
+        "regex": {
+            "hashes": [
+                "sha256:15454b37c5a278f46f7aa2d9339bda450c300617ca2fca6558d05d870245edc7",
+                "sha256:1ad40708c255943a227e778b022c6497c129ad614bb7a2a2f916e12e8a359ee7",
+                "sha256:5e00f65cc507d13ab4dfa92c1232d004fa202c1d43a32a13940ab8a5afe2fb96",
+                "sha256:604dc563a02a74d70ae1f55208ddc9bfb6d9f470f6d1a5054c4bd5ae58744ab1",
+                "sha256:720e34a539a76a1fedcebe4397290604cc2bdf6f81eca44adb9fb2ea071c0c69",
+                "sha256:7caf47e4a9ac6ef08cabd3442cc4ca3386db141fb3c8b2a7e202d0470028e910",
+                "sha256:7faf534c1841c09d8fefa60ccde7b9903c9b528853ecf41628689793290ca143",
+                "sha256:b4e0406d822aa4993ac45072a584d57aa4931cf8288b5455bbf30c1d59dbad59",
+                "sha256:c31eaf28c6fe75ea329add0022efeed249e37861c19681960f99bbc7db981fb2",
+                "sha256:c7393597191fc2043c744db021643549061e12abe0b3ff5c429d806de7b93b66",
+                "sha256:d2b302f8cdd82c8f48e9de749d1d17f85ce9a0f082880b9a4859f66b07037dc6",
+                "sha256:e3d8dd0ec0ea280cf89026b0898971f5750a7bd92cb62c51af5a52abd020054a",
+                "sha256:ec032cbfed59bd5a4b8eab943c310acfaaa81394e14f44454ad5c9eba4f24a74"
+            ],
+            "version": "==2019.11.1"
+        },
         "six": {
             "hashes": [
                 "sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd",
@@ -103,6 +149,38 @@
             ],
             "version": "==1.13.0"
         },
+        "toml": {
+            "hashes": [
+                "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c",
+                "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e"
+            ],
+            "version": "==0.10.0"
+        },
+        "typed-ast": {
+            "hashes": [
+                "sha256:1170afa46a3799e18b4c977777ce137bb53c7485379d9706af8a59f2ea1aa161",
+                "sha256:18511a0b3e7922276346bcb47e2ef9f38fb90fd31cb9223eed42c85d1312344e",
+                "sha256:262c247a82d005e43b5b7f69aff746370538e176131c32dda9cb0f324d27141e",
+                "sha256:2b907eb046d049bcd9892e3076c7a6456c93a25bebfe554e931620c90e6a25b0",
+                "sha256:354c16e5babd09f5cb0ee000d54cfa38401d8b8891eefa878ac772f827181a3c",
+                "sha256:48e5b1e71f25cfdef98b013263a88d7145879fbb2d5185f2a0c79fa7ebbeae47",
+                "sha256:4e0b70c6fc4d010f8107726af5fd37921b666f5b31d9331f0bd24ad9a088e631",
+                "sha256:630968c5cdee51a11c05a30453f8cd65e0cc1d2ad0d9192819df9978984529f4",
+                "sha256:66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34",
+                "sha256:71211d26ffd12d63a83e079ff258ac9d56a1376a25bc80b1cdcdf601b855b90b",
+                "sha256:7954560051331d003b4e2b3eb822d9dd2e376fa4f6d98fee32f452f52dd6ebb2",
+                "sha256:838997f4310012cf2e1ad3803bce2f3402e9ffb71ded61b5ee22617b3a7f6b6e",
+                "sha256:95bd11af7eafc16e829af2d3df510cecfd4387f6453355188342c3e79a2ec87a",
+                "sha256:bc6c7d3fa1325a0c6613512a093bc2a2a15aeec350451cbdf9e1d4bffe3e3233",
+                "sha256:cc34a6f5b426748a507dd5d1de4c1978f2eb5626d51326e43280941206c209e1",
+                "sha256:d755f03c1e4a51e9b24d899561fec4ccaf51f210d52abdf8c07ee2849b212a36",
+                "sha256:d7c45933b1bdfaf9f36c579671fec15d25b06c8398f113dab64c18ed1adda01d",
+                "sha256:d896919306dd0aa22d0132f62a1b78d11aaf4c9fc5b3410d3c666b818191630a",
+                "sha256:fdc1c9bbf79510b76408840e009ed65958feba92a88833cdceecff93ae8fff66",
+                "sha256:ffde2fbfad571af120fcbfbbc61c72469e72f550d676c3342492a9dfdefb8f12"
+            ],
+            "version": "==1.4.0"
+        },
         "wcwidth": {
             "hashes": [
                 "sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e",

+ 2 - 0
README.md

@@ -1,6 +1,8 @@
 # tooncher
 automates toontown rewritten's login process
 
+[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+
 ## Installation
 
     $ pip3 install --user --upgrade tooncher

+ 14 - 14
setup.py

@@ -5,17 +5,17 @@ from setuptools import setup
 import glob
 
 setup(
-    name = 'tooncher',
-    packages = ['tooncher'],
-    version = '0.4.0',
-    description = "automates toontown rewritten's login process",
-    author = 'Fabian Peter Hammerle',
-    author_email = 'fabian.hammerle@gmail.com',
-    url = 'https://github.com/fphammerle/tooncher',
-    download_url = 'https://github.com/fphammerle/tooncher/tarball/0.3.1',
-    keywords = ['game', 'launcher', 'toontown rewritten', 'ttr'],
-    classifiers = [],
-    scripts = glob.glob('scripts/*'),
-    install_requires = ['pyyaml'],
-    tests_require = ['pytest'],
-    )
+    name="tooncher",
+    packages=["tooncher"],
+    version="0.4.0",
+    description="automates toontown rewritten's login process",
+    author="Fabian Peter Hammerle",
+    author_email="fabian.hammerle@gmail.com",
+    url="https://github.com/fphammerle/tooncher",
+    download_url="https://github.com/fphammerle/tooncher/tarball/0.3.1",
+    keywords=["game", "launcher", "toontown rewritten", "ttr"],
+    classifiers=[],
+    scripts=glob.glob("scripts/*"),
+    install_requires=["pyyaml"],
+    tests_require=["pytest"],
+)

+ 8 - 8
tests/test_.py

@@ -8,20 +8,20 @@ import tooncher
 
 def test_start_engine():
     p = tooncher.start_engine(
-        engine_path=shutil.which('printenv'),
-        gameserver='gameserver',
-        playcookie='cookie',
+        engine_path=shutil.which("printenv"),
+        gameserver="gameserver",
+        playcookie="cookie",
         stdout=subprocess.PIPE,
         stderr=subprocess.PIPE,
     )
     assert isinstance(p, subprocess.Popen)
     stdout, stderr = p.communicate()
-    assert b'' == stderr
-    env = stdout.strip().split(b'\n')
-    assert b'TTR_GAMESERVER=gameserver' in env
-    assert b'TTR_PLAYCOOKIE=cookie' in env
+    assert b"" == stderr
+    env = stdout.strip().split(b"\n")
+    assert b"TTR_GAMESERVER=gameserver" in env
+    assert b"TTR_PLAYCOOKIE=cookie" in env
 
 
 def test_api_request_invasions():
     resp_data = tooncher.api_request(tooncher.INVASIONS_API_URL)
-    assert 'invasions' in resp_data
+    assert "invasions" in resp_data

+ 49 - 68
tooncher/__init__.py

@@ -13,17 +13,15 @@ https://github.com/ToontownRewritten/api-doc/blob/master/login.md
 https://github.com/ToontownRewritten/api-doc/blob/master/invasions.md
 """
 
-INVASIONS_API_URL = 'https://www.toontownrewritten.com/api/invasions?format=json'
-LOGIN_API_URL = 'https://www.toontownrewritten.com/api/login?format=json'
+INVASIONS_API_URL = "https://www.toontownrewritten.com/api/invasions?format=json"
+LOGIN_API_URL = "https://www.toontownrewritten.com/api/login?format=json"
 
-if sys.platform == 'darwin':
+if sys.platform == "darwin":
     TOONTOWN_LIBRARY_PATH = os.path.join(
-        os.path.expanduser('~'), 'Library',
-        'Application Support', 'Toontown Rewritten',
+        os.path.expanduser("~"), "Library", "Application Support", "Toontown Rewritten",
     )
     TOONTOWN_ENGINE_DEFAULT_PATH = os.path.join(
-        TOONTOWN_LIBRARY_PATH,
-        'Toontown Rewritten',
+        TOONTOWN_LIBRARY_PATH, "Toontown Rewritten",
     )
 else:
     TOONTOWN_LIBRARY_PATH = None
@@ -32,19 +30,15 @@ else:
 
 def start_engine(engine_path, gameserver, playcookie, **kwargs):
     env = {
-        'TTR_GAMESERVER': gameserver,
-        'TTR_PLAYCOOKIE': playcookie,
+        "TTR_GAMESERVER": gameserver,
+        "TTR_PLAYCOOKIE": playcookie,
     }
-    if sys.platform == 'darwin':
-        env['DYLD_LIBRARY_PATH'] = os.path.join(
-            TOONTOWN_LIBRARY_PATH,
-            'Libraries.bundle',
+    if sys.platform == "darwin":
+        env["DYLD_LIBRARY_PATH"] = os.path.join(
+            TOONTOWN_LIBRARY_PATH, "Libraries.bundle",
         )
-        env['DYLD_FRAMEWORK_PATH'] = os.path.join(
-            TOONTOWN_LIBRARY_PATH,
-            'Frameworks',
-        )
-    elif sys.platform == 'linux' and 'XAUTHORITY' in os.environ:
+        env["DYLD_FRAMEWORK_PATH"] = os.path.join(TOONTOWN_LIBRARY_PATH, "Frameworks",)
+    elif sys.platform == "linux" and "XAUTHORITY" in os.environ:
         """
         Fix for TTREngine reporting:
         > :display:x11display(error): Could not open display ":0.0".
@@ -56,82 +50,67 @@ def start_engine(engine_path, gameserver, playcookie, **kwargs):
         >   File "<compiled 'direct.vlt8f63e471.ShowBase'>", line 0, in vltf05fd21b
         > Exception: Could not open window.
         """
-        env['XAUTHORITY'] = os.environ['XAUTHORITY']
+        env["XAUTHORITY"] = os.environ["XAUTHORITY"]
     return subprocess.Popen(
-        args=[engine_path],
-        cwd=os.path.dirname(engine_path),
-        env=env,
-        **kwargs,
+        args=[engine_path], cwd=os.path.dirname(engine_path), env=env, **kwargs,
     )
 
 
 def api_request(url, params=None, validate_ssl_cert=True):
     resp = urllib.request.urlopen(
         url=url,
-        data=urllib.parse.urlencode(params).encode('ascii')
-            if params else None,
-        context=None if validate_ssl_cert
-            else ssl._create_unverified_context(),
+        data=urllib.parse.urlencode(params).encode("ascii") if params else None,
+        context=None if validate_ssl_cert else ssl._create_unverified_context(),
     )
-    return json.loads(resp.read().decode('ascii'))
+    return json.loads(resp.read().decode("ascii"))
 
 
 class LoginSuccessful:
-
     def __init__(self, playcookie, gameserver):
         self.playcookie = playcookie
         self.gameserver = gameserver
 
 
 class LoginDelayed:
-
     def __init__(self, queue_token):
         self.queue_token = queue_token
 
 
-def login(username=None, password=None,
-          queue_token=None, validate_ssl_cert=True):
+def login(username=None, password=None, queue_token=None, validate_ssl_cert=True):
     if username is not None and queue_token is None:
         assert password is not None
         req_params = {
-            'username': username,
-            'password': password,
+            "username": username,
+            "password": password,
         }
     elif username is None and queue_token is not None:
         req_params = {
-            'queueToken': queue_token,
+            "queueToken": queue_token,
         }
     else:
-        raise Exception('either specify username or queue token')
+        raise Exception("either specify username or queue token")
     resp_data = api_request(
-        url=LOGIN_API_URL,
-        params=req_params,
-        validate_ssl_cert=validate_ssl_cert,
+        url=LOGIN_API_URL, params=req_params, validate_ssl_cert=validate_ssl_cert,
     )
-    if resp_data['success'] == 'true':
+    if resp_data["success"] == "true":
         return LoginSuccessful(
-            playcookie=resp_data['cookie'],
-            gameserver=resp_data['gameserver'],
-        )
-    elif resp_data['success'] == 'delayed':
-        return LoginDelayed(
-            queue_token=resp_data['queueToken'],
+            playcookie=resp_data["cookie"], gameserver=resp_data["gameserver"],
         )
+    elif resp_data["success"] == "delayed":
+        return LoginDelayed(queue_token=resp_data["queueToken"],)
     else:
         raise Exception(repr(resp_data))
 
 
-def launch(engine_path, username, password, validate_ssl_certs=True,
-           cpu_limit_percent=None):
+def launch(
+    engine_path, username, password, validate_ssl_certs=True, cpu_limit_percent=None
+):
     result = login(
-        username=username,
-        password=password,
-        validate_ssl_cert=validate_ssl_certs,
+        username=username, password=password, validate_ssl_cert=validate_ssl_certs,
     )
     if isinstance(result, LoginDelayed):
         result = login(
-            queue_token=result.queue_token,
-            validate_ssl_cert=validate_ssl_certs,
+            queue_token=result.queue_token, validate_ssl_cert=validate_ssl_certs,
         )
     if isinstance(result, LoginSuccessful):
         p = start_engine(
@@ -140,21 +119,23 @@ def launch(engine_path, username, password, validate_ssl_certs=True,
             playcookie=result.playcookie,
         )
         if cpu_limit_percent is not None:
-            subprocess.Popen(args=[
-                'cpulimit',
-                '--pid', str(p.pid),
-                '--limit', str(cpu_limit_percent),
-                # '--verbose',
-            ])
+            subprocess.Popen(
+                args=[
+                    "cpulimit",
+                    "--pid",
+                    str(p.pid),
+                    "--limit",
+                    str(cpu_limit_percent),
+                    # '--verbose',
+                ]
+            )
         p.wait()
     else:
         raise Exception(repr(result))
 
 
 class InvasionProgress:
-
-    def __init__(self, district, date, cog_type,
-                 despawned_number, total_number):
+    def __init__(self, district, date, cog_type, despawned_number, total_number):
         self.district = district
         self.date = date
         self.cog_type = cog_type
@@ -168,16 +149,16 @@ class InvasionProgress:
 
 def request_active_invasions(validate_ssl_certs=True):
     resp_data = api_request(INVASIONS_API_URL)
-    if resp_data['error'] is not None:
-        raise Exception(resp_data['error'])
+    if resp_data["error"] is not None:
+        raise Exception(resp_data["error"])
     else:
         invs = {}
-        for district, inv_data in resp_data['invasions'].items():
-            despawned_number, total_number = inv_data['progress'].split('/')
+        for district, inv_data in resp_data["invasions"].items():
+            despawned_number, total_number = inv_data["progress"].split("/")
             invs[district] = InvasionProgress(
                 district=district,
-                date=datetime.datetime.utcfromtimestamp(inv_data['asOf']),
-                cog_type=inv_data['type'],
+                date=datetime.datetime.utcfromtimestamp(inv_data["asOf"]),
+                cog_type=inv_data["type"],
                 despawned_number=int(despawned_number),
                 total_number=int(total_number),
             )