tidying and ci fixes

This commit is contained in:
Eric Froemling 2022-07-20 07:53:30 -07:00
parent 5c77e7c24f
commit f0609cfc00
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
7 changed files with 67 additions and 291 deletions

View File

@ -420,7 +420,7 @@
"assets/build/ba_data/audio/zoeOw.ogg": "https://files.ballistica.net/cache/ba1/d5/f8/de3b22ac60d0caee44369117c8db",
"assets/build/ba_data/audio/zoePickup01.ogg": "https://files.ballistica.net/cache/ba1/c7/37/660e2ceca8b9b2db2cfce5a9f6f0",
"assets/build/ba_data/audio/zoeScream01.ogg": "https://files.ballistica.net/cache/ba1/d9/82/92157cb4f21fdd8c911eec910ad4",
"assets/build/ba_data/data/langdata.json": "https://files.ballistica.net/cache/ba1/d0/6f/c2718eee7a68ac8acc1b884db2b3",
"assets/build/ba_data/data/langdata.json": "https://files.ballistica.net/cache/ba1/50/bb/39239d1860008e70b3205f2d4767",
"assets/build/ba_data/data/languages/arabic.json": "https://files.ballistica.net/cache/ba1/ec/97/713007418488dd543cf6edcdd9d2",
"assets/build/ba_data/data/languages/belarussian.json": "https://files.ballistica.net/cache/ba1/61/03/89070ca765e06da3a419a579f503",
"assets/build/ba_data/data/languages/chinese.json": "https://files.ballistica.net/cache/ba1/6f/88/b74dac280d4dbd07dea74abb5fc6",
@ -431,8 +431,8 @@
"assets/build/ba_data/data/languages/dutch.json": "https://files.ballistica.net/cache/ba1/68/93/da8e9874f41a786edf52ba4ccaad",
"assets/build/ba_data/data/languages/english.json": "https://files.ballistica.net/cache/ba1/c0/03/106450033fe01fba06d733b6b107",
"assets/build/ba_data/data/languages/esperanto.json": "https://files.ballistica.net/cache/ba1/4c/c7/0184b8178869d1a3827a1bfcd5bb",
"assets/build/ba_data/data/languages/filipino.json": "https://files.ballistica.net/cache/ba1/10/45/197ea6179209f0aa440fe5366a95",
"assets/build/ba_data/data/languages/french.json": "https://files.ballistica.net/cache/ba1/b1/71/34760e818883dfec12b9dde3deab",
"assets/build/ba_data/data/languages/filipino.json": "https://files.ballistica.net/cache/ba1/69/ee/bd7ab2f7da13e65efc46a9e5f78e",
"assets/build/ba_data/data/languages/french.json": "https://files.ballistica.net/cache/ba1/49/42/328c5ed7a47a5e9c44a1c11bb2f4",
"assets/build/ba_data/data/languages/german.json": "https://files.ballistica.net/cache/ba1/7e/9c/11e9717282006b4cd8cfc02f0764",
"assets/build/ba_data/data/languages/gibberish.json": "https://files.ballistica.net/cache/ba1/23/b6/8f7175147d8a6d5de45c2147e294",
"assets/build/ba_data/data/languages/greek.json": "https://files.ballistica.net/cache/ba1/82/eb/37ff44af76812097f9c98f05c730",
@ -443,7 +443,7 @@
"assets/build/ba_data/data/languages/korean.json": "https://files.ballistica.net/cache/ba1/07/37/ab65ccee3a555bd40e9661860c58",
"assets/build/ba_data/data/languages/persian.json": "https://files.ballistica.net/cache/ba1/bf/71/11141b8a8c92604da47c7c575034",
"assets/build/ba_data/data/languages/polish.json": "https://files.ballistica.net/cache/ba1/76/be/84e567de0aabd9f9145b62179c2c",
"assets/build/ba_data/data/languages/portuguese.json": "https://files.ballistica.net/cache/ba1/a6/ad/7ee52772db14f9008044bb877ed1",
"assets/build/ba_data/data/languages/portuguese.json": "https://files.ballistica.net/cache/ba1/23/18/33f3364310ccc4c03930e2ac50b0",
"assets/build/ba_data/data/languages/romanian.json": "https://files.ballistica.net/cache/ba1/d7/06/9d70642d0a4d1e3b1c2149d7a17c",
"assets/build/ba_data/data/languages/russian.json": "https://files.ballistica.net/cache/ba1/8d/8a/dc288451eb6a1120a5868d64b771",
"assets/build/ba_data/data/languages/serbian.json": "https://files.ballistica.net/cache/ba1/4e/91/6f2a9a3ce733908e91377a6ddb9a",
@ -452,8 +452,8 @@
"assets/build/ba_data/data/languages/swedish.json": "https://files.ballistica.net/cache/ba1/91/0a/35c4baf539d5951fc03a794c0e0b",
"assets/build/ba_data/data/languages/tamil.json": "https://files.ballistica.net/cache/ba1/41/a4/841ab82927c41a6bc8fc9ae5ea11",
"assets/build/ba_data/data/languages/thai.json": "https://files.ballistica.net/cache/ba1/9d/51/f699dbd4beb88bc3cff699a287a7",
"assets/build/ba_data/data/languages/turkish.json": "https://files.ballistica.net/cache/ba1/c0/4e/c8a66ed415b8b0ce3ff30462b2a2",
"assets/build/ba_data/data/languages/ukrainian.json": "https://files.ballistica.net/cache/ba1/7f/bb/6239adeb551be5e09f3457d7b411",
"assets/build/ba_data/data/languages/turkish.json": "https://files.ballistica.net/cache/ba1/37/30/ba543ac18fa6c7f9721942d6984f",
"assets/build/ba_data/data/languages/ukrainian.json": "https://files.ballistica.net/cache/ba1/ab/35/644e4239cfa62a597a905412b90c",
"assets/build/ba_data/data/languages/venetian.json": "https://files.ballistica.net/cache/ba1/7c/98/c0f7c965a3ac36d86cc17f55428f",
"assets/build/ba_data/data/languages/vietnamese.json": "https://files.ballistica.net/cache/ba1/f2/af/afd1503c7a10cacaa15bc02369b2",
"assets/build/ba_data/data/maps/big_g.json": "https://files.ballistica.net/cache/ba1/47/0a/a617cc85d927b576c4e6fc1091ed",
@ -3995,50 +3995,50 @@
"assets/src/ba_data/python/ba/_generated/__init__.py": "https://files.ballistica.net/cache/ba1/ee/e8/cad05aa531c7faf7ff7b96db7f6e",
"assets/src/ba_data/python/ba/_generated/enums.py": "https://files.ballistica.net/cache/ba1/b2/e5/0ee0561e16257a32830645239f34",
"ballisticacore-windows/Generic/BallisticaCore.ico": "https://files.ballistica.net/cache/ba1/89/c0/e32c7d2a35dc9aef57cc73b0911a",
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/a4/c9/4b7f9effbe8c100648900eaa3261",
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/00/9b/eaa284f779a3de4213b79cd92107",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/42/55/3cb41badd1d45910283e0b64df88",
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/95/ff/5c57780407fcb6b7feb0764706df",
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/d8/40/839b1117d4f93b054eb85cb1b0d5",
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/bc/15/56d8be246fe39a106db0439833b3",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a9/05/27ca686143f14394c1b8837d7cb2",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a5/86/afe3eee3898e9c9fb189f3b77e85",
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/ff/95/de9839cdfec8f326131aa05384c3",
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/e2/26/17c4ae54581e4b5c0330b0719224",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a4/4c/b89ec4327945297f4d72f9d80d94",
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/4c/c6/55b8ba4e0b5c8975712fa0fd1767",
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/0b/8b/05d548a8a72955c0cb386d9d60b3",
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/60/27/721444bbebc52a864d8a04b2208c",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/e2/f2/25cff5d0e4f918a9f6d57dfa5285",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/da/82/ec893df8e6ee94feed9ddb759e6e",
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/46/6c/eb3d14ac4a6c363962a8066e39e5",
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/54/b4/4f9767d0cea37f328844507e8ea7",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/ff/b6/401674aa0a886de14f437947b728",
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/2d/6d/5f1c3004f2bf9258162379e26054",
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/05/99/3cadc83ce9288f9352a3a4a5559c",
"build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/7a/c2/1c132470c13fc8af1f5d94dfbf6c",
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/98/a6/42ee7341d4a75c5d58f80d2f4dbc",
"build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/3a/b9/f01ad696e634735773da5f841407",
"build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/06/8d/27bfcaedab349160f55ce618384e",
"build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e3/74/6c47384a303b68378a80e6d00bac",
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/3c/2c/7eb58e0a6678fe13271ec4e1689f",
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ce/a4/37f7da427da665e42b23689ee2b1",
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/aa/d3/c1f6f9b2487397ff3b8deacdfb88",
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a0/d1/065efb021ade658501fe3ccbd238",
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/7c/6e/116acc4f5c4d51608f56a74a1a35",
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a3/59/9765f24b69af3382eb1ba72a175e",
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/23/e7/978c348d104ad002d3cc0cef17e9",
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d1/27/1635e8fd16e9e21e673f5cba7eb3",
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/fa/f1/9f93bc6fa9bbdc6547414528b22c",
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4d/a7/b764b6fc1ac50a426e8fec3238df",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/91/d3/9689394fc2464ae3b0be6fb662ca",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/15/2c/29c2e9c783211c5184dc012a7e2a",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/30/84/1b5e42cc51d43c7c0ad256a5d0b8",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/5e/9c/726f930f02dece54d7f1e9be1565",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/c5/9b/fab63617403f92c0eb3af53c5ceb",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/92/b1/79f2c94d070fa8d5a279f67429c8",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/ab/72/2f6f56a9a47658b1b8ffbdd323ca",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/a7/82/3943a555db1dc3e2ca1ac281248b",
"build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/76/4a/06e99575caeee5cf7273599ec9f0",
"build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/4c/af/00c9c503d3f33bdadfb87a14095b",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/74/1c/2ba86b3d3de80ed1d15f0d326260",
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/77/f5/604119cad298810d443e696ee4a3",
"build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/a3/87/4528de33dd1076f2a3bf535b8508",
"build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/8a/c1/c6d51855fe24f16dad77cc45ef47",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/7f/5e/8897da98948c320f17faf8ea0656",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/63/30/a032035c499475cd0d55e281a7d7",
"build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/ae/06/59efc32e87d3283c7de7e7e85888",
"build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/e3/48/b1d8a1628c5d28237d52f8759c48",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/32/1b/f4acb08ea6b95129bd23e703ca49",
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/0a/fc/6a216a4dd65d0e824f9fdf2244c9",
"build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/6c/cf/453f32b097cf9265a884842ac405",
"build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/58/92/6b1a58f3ba98a938f1dd6ca004dd",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/40/5f/6004485ca667cb2eef90095d3dbb",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/d5/51/6049fc3c679136584cbf5ad75d02",
"build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/c4/11/9107ce942c7271450ecacdd422df",
"build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/e2/86/5c5ebf6c9ee05c38e3d426625ebf",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/1a/85/3fe1abb3209341ef039725477a51",
"build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/77/10/9c8e7c5e6be88532ca2819690d39",
"build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/98/21/935d1bb99fd8bb84b012028759ec",
"build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a4/c1/3cb0db41ee9daccb07aa525d3a71",
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/47/e0/0dbe6c9fb6c31c4826b2d9243ed8",
"build/prefab/lib/linux_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/16/d0/dd7a518e6fd1e022d77c036fffde",
"build/prefab/lib/linux_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/a8/c9/257b60004447d6ceb5b8ad1f902c",
"build/prefab/lib/linux_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/93/95/9f971fe4eed57cccf67e3f575a18",
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/56/42/4ccb8b84ef56f2741520c5b1271a",
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/46/1f/efb3c908285041971a0000a3fbba",
"build/prefab/lib/mac_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/47/3a/f8335b21bdbf5069c4b46e154306",
"build/prefab/lib/mac_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/98/99/0a5eb773681f20b08aa22e487804",
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/9e/ea/c6a322e0ea311fd586c96e84d5db",
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/19/3e/8ae66894c429a5a31bb278f2ae23",
"build/prefab/lib/mac_x86_64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d8/40/24d727e0a25c6e3254f168b89602",
"build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d5/f6/e235ab00e48d060949896936ea45",
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/fe/59/c4f1e0815cdd4bf52399bc8b9ac8",
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d8/4e/4e2e9eb401e21118b543cc267bc7",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/96/16/a5eaac79ea7ca52f963deaa39787",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/7e/80/44ea5ce953d612b27031f0d9ef3b",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/44/ef/1d29afdaaa33d39f67a3daffc34b",
"build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/ac/8e/aa6977c496137c902695cf1953af",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/e1/5f/2c08ba18c967621fcc297982885c",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/9a/ab/1539aa9be0ad2ab44d0d85f20818",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/b5/e8/3519ffee6476c14130b658c63931",
"build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/d2/55/eeb0bc76a02454ca14fb70775a68",
"src/ballistica/generated/python_embedded/binding.inc": "https://files.ballistica.net/cache/ba1/7d/3e/229a581cb2454ed856f1d8b564a7",
"src/ballistica/generated/python_embedded/bootstrap.inc": "https://files.ballistica.net/cache/ba1/d3/db/e73d4dcf1280d5f677c3cf8b47c3"
}

View File

@ -109,6 +109,7 @@
<option value="typing.Sequence.register" />
<option value="xml.dom.*" />
<option value="type.__getitem__" />
<option value="typing_extensions.assert_type" />
</list>
</option>
</inspection_tool>

View File

@ -1,4 +1,4 @@
### 1.7.5 (20653, 2022-07-15)
### 1.7.5 (20654, 2022-07-18)
- Android build now uses the ReLinker library to load the native main.so, which will (hopefully) avoid some random load failures on older Android versions.
- Android Google Play build now prints a message at launch if the billing library isn't available or needs to be updated (explaining why purchases won't work in that case).
- Various minor bug fixes (mostly cleaning up unnecessary error logging)

View File

@ -21,7 +21,7 @@
namespace ballistica {
// These are set automatically via script; don't modify them here.
const int kAppBuildNumber = 20653;
const int kAppBuildNumber = 20654;
const char* kAppVersion = "1.7.5";
// Our standalone globals.

View File

@ -9,9 +9,10 @@ import asyncio
from typing import TYPE_CHECKING, overload
from dataclasses import dataclass
from typing_extensions import assert_type
import pytest
from efrotools.statictest import static_type_equals
# from efrotools.statictest import static_type_equals
from efro.error import CleanError, RemoteError, CommunicationError
from efro.dataclassio import ioprepped
from efro.message import (Message, Response, MessageProtocol, MessageSender,
@ -898,8 +899,10 @@ def test_full_pipeline() -> None:
# Make sure static typing lines up with what we expect.
if os.environ.get('EFRO_TEST_MESSAGE_FAST') != '1':
assert static_type_equals(response1, _TResp1)
assert static_type_equals(response3, None)
# assert static_type_equals(response1, _TResp1)
assert_type(response1, _TResp1)
# assert static_type_equals(response3, None)
assert_type(response3, None)
assert isinstance(response1, _TResp1)
assert isinstance(response2, (_TResp1, _TResp2))
@ -935,7 +938,8 @@ def test_full_pipeline() -> None:
# Make sure static typing lines up with what we expect.
if os.environ.get('EFRO_TEST_MESSAGE_FAST') != '1':
assert static_type_equals(response6, _TResp1)
# assert static_type_equals(response6, _TResp1)
assert_type(response6, _TResp1)
# Now test adding extra data to messages. This should be transferred
# into the encoded message, copied to the response, and again back

View File

@ -38,8 +38,8 @@ class PipRequirement:
# installing it. And as far as manually-installed bits, pip itself must
# have some way to allow for that, right?...
PIP_REQUIREMENTS = [
PipRequirement(modulename='pylint', minversion=[2, 14, 4]),
PipRequirement(modulename='mypy', minversion=[0, 961]),
PipRequirement(modulename='pylint', minversion=[2, 14, 5]),
PipRequirement(modulename='mypy', minversion=[0, 971]),
PipRequirement(modulename='yapf', minversion=[0, 32, 0]),
PipRequirement(modulename='cpplint', minversion=[1, 6, 0]),
PipRequirement(modulename='pytest', minversion=[7, 1, 2]),
@ -49,10 +49,10 @@ PIP_REQUIREMENTS = [
PipRequirement(modulename='requests'),
PipRequirement(modulename='pdoc'),
PipRequirement(pipname='typing_extensions', minversion=[4, 3, 0]),
PipRequirement(pipname='types-filelock', minversion=[3, 2, 6]),
PipRequirement(pipname='types-requests', minversion=[2, 27, 29]),
PipRequirement(pipname='types-pytz', minversion=[2021, 3, 8]),
PipRequirement(pipname='types-PyYAML', minversion=[6, 0, 7]),
PipRequirement(pipname='types-filelock', minversion=[3, 2, 7]),
PipRequirement(pipname='types-requests', minversion=[2, 28, 2]),
PipRequirement(pipname='types-pytz', minversion=[2022, 1, 2]),
PipRequirement(pipname='types-PyYAML', minversion=[6, 0, 10]),
PipRequirement(pipname='certifi', minversion=[2022, 6, 15]),
PipRequirement(pipname='types-certifi', minversion=[2021, 10, 8, 3]),
]

View File

@ -1,229 +0,0 @@
# Released under the MIT License. See LICENSE for details.
#
"""Functionality for harnessing mypy for static type checking in unit tests."""
from __future__ import annotations
from typing import TYPE_CHECKING
import tempfile
import os
import subprocess
import logging
if TYPE_CHECKING:
from typing import Any
# Global state:
# We maintain a single temp dir where our mypy cache and our temp
# test files live. Every time we are asked to static-check a line
# in a file we haven't seen yet, we copy it into the temp dir,
# filter it a bit to add reveal_type() statements, and run mypy on it.
# The temp dir should tear itself down when Python exits.
_tempdir: str | None = None
_statictestfiles: dict[str, StaticTestFile] = {}
_nextfilenum: int = 1
class StaticTestFile:
"""A file which has been statically tested via mypy."""
def __init__(self, filename: str):
# pylint: disable=global-statement, invalid-name
global _tempdir, _nextfilenum
# pylint: enable=global-statement, invalid-name
from efrotools import PYTHON_BIN
self._filename = filename
self.modulename = f'temp{_nextfilenum}'
_nextfilenum += 1
# Types we *want* for lines
self.linetypes_wanted: dict[int, str] = {}
# Types Mypy gave us for lines
self.linetypes_mypy: dict[int, str] = {}
print(f'Running Mypy static testing on "{filename}"...')
with open(filename, 'r', encoding='utf-8') as infile:
fdata = infile.read()
# Make sure we're running where the config is..
if not os.path.isfile('.mypy.ini'):
raise RuntimeError('.mypy.ini not found where expected.')
# Create a single shared temp dir
# (so that we can recycle our mypy cache).
if _tempdir is None:
# Eww; not cleaning up this temp dir (though the
# OS should eventually). Using TemporaryDirectory() gives us
# a warning though because we don't explicitly clean it up.
_tempdir = tempfile.mkdtemp()
# print(f"Created temp dir at {_tempdir.name}")
# Copy our file into the temp dir with a unique name, find all
# instances of static_type_equals(), and run mypy type checks
# in those places to get static types.
tempfilepath = os.path.join(_tempdir, self.modulename + '.py')
with open(tempfilepath, 'w', encoding='utf-8') as outfile:
outfile.write(self.filter_file_contents(fdata))
results = subprocess.run(
[
PYTHON_BIN, '-m', 'mypy', '--no-error-summary',
'--config-file', '.mypy.ini', '--cache-dir',
os.path.join(_tempdir, '.mypy_cache'), tempfilepath
],
capture_output=True,
check=False,
)
# HMM; it seems we always get an errored return code due to
# our use of reveal_type() so we can't look at that.
# However we can look for error notices in the output and fail there.
lines = results.stdout.decode().splitlines()
for line in lines:
if ': error: ' in line:
print('Full mypy output:\n', results.stdout.decode())
raise RuntimeError('Errors detected in mypy output.')
if 'Revealed type is ' in line:
finfo = line.split(' ')[0]
fparts = finfo.split(':')
assert len(fparts) == 3
linenumber = int(fparts[1])
linetype = line.split('Revealed type is ')[-1][1:-1]
self.linetypes_mypy[linenumber] = linetype
def filter_file_contents(self, contents: str) -> str:
"""Filter the provided file contents and take note of type checks."""
import ast
lines = contents.splitlines()
lines_out: list[str] = []
for lineno, line in enumerate(lines):
if 'static_type_equals(' not in line:
lines_out.append(line)
else:
# Find the location of the end parentheses.
assert ')' in line
endparen = len(line) - 1
while line[endparen] != ')':
endparen -= 1
# Find the offset to the start of the line.
offset = 0
while line[offset] == ' ':
offset += 1
# Parse this line as AST - we should find an assert
# statement containing a static_type_equals() call
# with 2 args.
try:
tree = ast.parse(line[offset:])
except Exception:
raise RuntimeError(
f'{self._filename} line {lineno+1}: unable to '
f'parse line (static_type_equals() call cannot'
f' be split across lines).') from None
assert isinstance(tree, ast.Module)
if (len(tree.body) != 1
or not isinstance(tree.body[0], ast.Assert)):
raise RuntimeError(
f'{self._filename} line {lineno+1}: expected '
f' a single assert statement.')
assertnode = tree.body[0]
# noinspection PyUnresolvedReferences
callnode = assertnode.test
if (not isinstance(callnode, ast.Call)
or not isinstance(callnode.func, ast.Name)
or callnode.func.id != 'static_type_equals'
or len(callnode.args) != 2):
raise RuntimeError(
f'{self._filename} line {lineno+1}: expected '
f' a single static_type_equals() call with 2 args.')
# Use the column offsets for the 2 args along with our end
# paren offset to cut out the substrings representing the args.
arg1 = line[callnode.args[0].col_offset +
offset:callnode.args[1].col_offset + offset]
while arg1[-1] in (' ', ','):
arg1 = arg1[:-1]
arg2 = line[callnode.args[1].col_offset + offset:endparen]
# In our filtered file, replace the assert statement with
# a reveal_type() for the var, and also take note of the
# type they want it to equal.
self.linetypes_wanted[lineno + 1] = arg2
lines_out.append(' ' * offset + f'reveal_type({arg1})')
return '\n'.join(lines_out) + '\n'
def static_type_equals(value: Any, statictype: type | str | None) -> bool:
"""Check a type statically using mypy.
If a string is passed as statictype, it is checked against the mypy
output for an exact match.
If a type is passed, various filtering may apply when searching for
a match (for instance, if mypy outputs 'builtins.int*' it will match
the 'int' type passed in as statictype).
"""
import platform
from inspect import getframeinfo, stack
# NOTE: don't currently support windows here; just going to always
# pass so we don't have to conditionalize all our individual test
# locations.
if platform.system() == 'Windows':
logging.debug('static_type_equals not supported on windows;'
' will always pass...')
return True
# We don't actually use there here; we pull them as strings from the src.
del value
# Get the filename and line number of the calling function.
caller = getframeinfo(stack()[1][0])
filename = caller.filename
linenumber = caller.lineno
if filename not in _statictestfiles:
_statictestfiles[filename] = StaticTestFile(filename)
testfile = _statictestfiles[filename]
mypytype = testfile.linetypes_mypy[linenumber]
if isinstance(statictype, str):
# If they passed a string value as the statictype,
# do a comparison with the exact mypy value.
wanttype = statictype
else:
# If they passed a type object, things are a bit trickier because
# mypy's name for the type might not match the name we pass it in with.
# Try to do some filtering to minimize these differences...
wanttype = testfile.linetypes_wanted[linenumber]
del statictype
# Do some filtering of Mypy types so we can compare
# to simple python ones.
# (ie: 'builtins.list[builtins.int*]' -> int)
# Note to self: perhaps we'd want a fallback form where we can pass a
# type as a string if we want to match the exact mypy value?...
mypytype = mypytype.replace('*', '')
mypytype = mypytype.replace('?', '')
mypytype = mypytype.replace('builtins.int', 'int')
mypytype = mypytype.replace('builtins.float', 'float')
mypytype = mypytype.replace('builtins.list', 'List')
mypytype = mypytype.replace('builtins.bool', 'bool')
mypytype = mypytype.replace('typing.Sequence', 'Sequence')
# So classes declared in the test file can be passed using base names.
# ie: temp3.FooClass -> FooClass
mypytype = mypytype.replace(testfile.modulename + '.', '')
if wanttype != mypytype:
print(f'Mypy type "{mypytype}" does not match '
f'the desired type "{wanttype}" on line {linenumber}.')
return False
return True