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/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/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/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/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/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", "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/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/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/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/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/b1/71/34760e818883dfec12b9dde3deab", "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/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/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", "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/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/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/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/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/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", "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/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/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/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/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/7f/bb/6239adeb551be5e09f3457d7b411", "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/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/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", "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/__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", "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", "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/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/00/9b/eaa284f779a3de4213b79cd92107", "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/42/55/3cb41badd1d45910283e0b64df88", "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/95/ff/5c57780407fcb6b7feb0764706df", "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/d8/40/839b1117d4f93b054eb85cb1b0d5", "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/bc/15/56d8be246fe39a106db0439833b3", "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/a9/05/27ca686143f14394c1b8837d7cb2", "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/a5/86/afe3eee3898e9c9fb189f3b77e85", "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/ff/95/de9839cdfec8f326131aa05384c3", "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/e2/26/17c4ae54581e4b5c0330b0719224", "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/a4/4c/b89ec4327945297f4d72f9d80d94", "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/4c/c6/55b8ba4e0b5c8975712fa0fd1767", "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/0b/8b/05d548a8a72955c0cb386d9d60b3", "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/60/27/721444bbebc52a864d8a04b2208c", "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/e2/f2/25cff5d0e4f918a9f6d57dfa5285", "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/da/82/ec893df8e6ee94feed9ddb759e6e", "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/46/6c/eb3d14ac4a6c363962a8066e39e5", "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/54/b4/4f9767d0cea37f328844507e8ea7", "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/ff/b6/401674aa0a886de14f437947b728", "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/2d/6d/5f1c3004f2bf9258162379e26054", "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/05/99/3cadc83ce9288f9352a3a4a5559c", "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/7a/c2/1c132470c13fc8af1f5d94dfbf6c", "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/98/a6/42ee7341d4a75c5d58f80d2f4dbc", "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/3a/b9/f01ad696e634735773da5f841407", "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/06/8d/27bfcaedab349160f55ce618384e", "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/e3/74/6c47384a303b68378a80e6d00bac", "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/3c/2c/7eb58e0a6678fe13271ec4e1689f", "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/ce/a4/37f7da427da665e42b23689ee2b1", "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/aa/d3/c1f6f9b2487397ff3b8deacdfb88", "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/a0/d1/065efb021ade658501fe3ccbd238", "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/7c/6e/116acc4f5c4d51608f56a74a1a35", "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/a3/59/9765f24b69af3382eb1ba72a175e", "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/23/e7/978c348d104ad002d3cc0cef17e9", "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/d1/27/1635e8fd16e9e21e673f5cba7eb3", "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/fa/f1/9f93bc6fa9bbdc6547414528b22c", "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/4d/a7/b764b6fc1ac50a426e8fec3238df", "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/91/d3/9689394fc2464ae3b0be6fb662ca", "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/15/2c/29c2e9c783211c5184dc012a7e2a", "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/30/84/1b5e42cc51d43c7c0ad256a5d0b8", "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/5e/9c/726f930f02dece54d7f1e9be1565", "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/c5/9b/fab63617403f92c0eb3af53c5ceb", "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/92/b1/79f2c94d070fa8d5a279f67429c8", "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/ab/72/2f6f56a9a47658b1b8ffbdd323ca", "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/a7/82/3943a555db1dc3e2ca1ac281248b", "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/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" "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="typing.Sequence.register" />
<option value="xml.dom.*" /> <option value="xml.dom.*" />
<option value="type.__getitem__" /> <option value="type.__getitem__" />
<option value="typing_extensions.assert_type" />
</list> </list>
</option> </option>
</inspection_tool> </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 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). - 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) - Various minor bug fixes (mostly cleaning up unnecessary error logging)

View File

@ -21,7 +21,7 @@
namespace ballistica { namespace ballistica {
// These are set automatically via script; don't modify them here. // 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"; const char* kAppVersion = "1.7.5";
// Our standalone globals. // Our standalone globals.

View File

@ -9,9 +9,10 @@ import asyncio
from typing import TYPE_CHECKING, overload from typing import TYPE_CHECKING, overload
from dataclasses import dataclass from dataclasses import dataclass
from typing_extensions import assert_type
import pytest 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.error import CleanError, RemoteError, CommunicationError
from efro.dataclassio import ioprepped from efro.dataclassio import ioprepped
from efro.message import (Message, Response, MessageProtocol, MessageSender, 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. # Make sure static typing lines up with what we expect.
if os.environ.get('EFRO_TEST_MESSAGE_FAST') != '1': if os.environ.get('EFRO_TEST_MESSAGE_FAST') != '1':
assert static_type_equals(response1, _TResp1) # assert static_type_equals(response1, _TResp1)
assert static_type_equals(response3, None) assert_type(response1, _TResp1)
# assert static_type_equals(response3, None)
assert_type(response3, None)
assert isinstance(response1, _TResp1) assert isinstance(response1, _TResp1)
assert isinstance(response2, (_TResp1, _TResp2)) assert isinstance(response2, (_TResp1, _TResp2))
@ -935,7 +938,8 @@ def test_full_pipeline() -> None:
# Make sure static typing lines up with what we expect. # Make sure static typing lines up with what we expect.
if os.environ.get('EFRO_TEST_MESSAGE_FAST') != '1': 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 # Now test adding extra data to messages. This should be transferred
# into the encoded message, copied to the response, and again back # 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 # installing it. And as far as manually-installed bits, pip itself must
# have some way to allow for that, right?... # have some way to allow for that, right?...
PIP_REQUIREMENTS = [ PIP_REQUIREMENTS = [
PipRequirement(modulename='pylint', minversion=[2, 14, 4]), PipRequirement(modulename='pylint', minversion=[2, 14, 5]),
PipRequirement(modulename='mypy', minversion=[0, 961]), PipRequirement(modulename='mypy', minversion=[0, 971]),
PipRequirement(modulename='yapf', minversion=[0, 32, 0]), PipRequirement(modulename='yapf', minversion=[0, 32, 0]),
PipRequirement(modulename='cpplint', minversion=[1, 6, 0]), PipRequirement(modulename='cpplint', minversion=[1, 6, 0]),
PipRequirement(modulename='pytest', minversion=[7, 1, 2]), PipRequirement(modulename='pytest', minversion=[7, 1, 2]),
@ -49,10 +49,10 @@ PIP_REQUIREMENTS = [
PipRequirement(modulename='requests'), PipRequirement(modulename='requests'),
PipRequirement(modulename='pdoc'), PipRequirement(modulename='pdoc'),
PipRequirement(pipname='typing_extensions', minversion=[4, 3, 0]), PipRequirement(pipname='typing_extensions', minversion=[4, 3, 0]),
PipRequirement(pipname='types-filelock', minversion=[3, 2, 6]), PipRequirement(pipname='types-filelock', minversion=[3, 2, 7]),
PipRequirement(pipname='types-requests', minversion=[2, 27, 29]), PipRequirement(pipname='types-requests', minversion=[2, 28, 2]),
PipRequirement(pipname='types-pytz', minversion=[2021, 3, 8]), PipRequirement(pipname='types-pytz', minversion=[2022, 1, 2]),
PipRequirement(pipname='types-PyYAML', minversion=[6, 0, 7]), PipRequirement(pipname='types-PyYAML', minversion=[6, 0, 10]),
PipRequirement(pipname='certifi', minversion=[2022, 6, 15]), PipRequirement(pipname='certifi', minversion=[2022, 6, 15]),
PipRequirement(pipname='types-certifi', minversion=[2021, 10, 8, 3]), 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