diff --git a/.efrocachemap b/.efrocachemap index 108993be..c17a73e9 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -4072,26 +4072,26 @@ "build/assets/workspace/ninjafightplug.py": "https://files.ballistica.net/cache/ba1/18/4b/787a9267e17be3c49966072581a5", "build/assets/workspace/onslaughtplug.py": "https://files.ballistica.net/cache/ba1/20/f6/4ce9bc3c1f3732f6adf8237fbe9b", "build/assets/workspace/runaroundplug.py": "https://files.ballistica.net/cache/ba1/a5/30/9058181df0b1255bf6950cbc7813", - "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/62/cd/d08e770b38acf623b5b1bb127e5d", - "build/prefab/full/linux_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/0e/99/b778ee89d825ad437afd5e985d74", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/37/19/e96634dcf5cf0b82d43f1452c310", - "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/89/89/670aab098a12f83e7e60db87c028", - "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/89/29/7a6e474273dff5d5155c8dc76780", - "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/1a/50/eba589fe6c27bbecb717c644ae52", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/ae/6d/3a40474aa8072a124a0487267e23", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/32/1c/e4e8cbff499975e12c73a43986a3", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/5a/48/1823ce966086d9db6aeecd434fce", - "build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/9f/9e/68acd514f01a55e750aaf9870136", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/ec/cd/6883d013c07be8c7116601b8480b", - "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/3f/b0/c3301e6d30b7ef398bb53a6318c8", - "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/d4/4b/6b2bf7e37b24c8279c697e98ca12", - "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/8a/72/269f9f0f1f2d0429866be5d76db5", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/22/fa/43eb0ed9388165d5ddac79fc9c8d", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/e1/7a/2ca64e3b1ef1e4a83c565ee30185", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/9f/77/cdd3caf8b07452fa84a93ef5d54d", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/50/35/2abd0ba2c01c51cac45ca25d154f", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/65/b9/4e1ebf0753fad9e3adec9a598efc", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/59/c2/82922c6bb43000f60e146d89ffff", + "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/a9/1a/d3954587d948c34aaa93c416164b", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/8e/ff/b4b55a4431332c9ca887a67fbf71", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/f3/08/98de2f087a4f7cb1d9a1034a3220", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/25/cd/1c19ea3f8e5f8d227484d6cb8287", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/10/13/fe2b90d207c702a982bf96e44c3b", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/74/50/e65355d1d6bf42b678deacceba13", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/03/08/c3346fc329d34f19f2e3543a734e", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/cc/f1/1395af8d8f105a6f2f5a22102b29", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/95/bb/5514281e755e860acbcd612443e3", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/72/47/f2f9f40029b9e75ee7a42caf866a", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/08/93/edeb433317a962d11485ec41d911", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/24/bf/9f3ac3969a6b296d200c75313f25", + "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/bd/3d/a35a7bf2a1e83db9c7f6486cffa6", + "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/9c/7d/bcb6736c26110528022f0addf13d", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/00/81/7ff15082671a039cd2a469994476", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/05/20/2b4b3500b2eef7f25877bc24e134", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/51/25/8f981fc4590e9ccc119d334f2767", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/9c/7e/4be7551c2f043f42f8e1a4cb84ae", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/93/8e/24faa33217f66ddbf44f501f3fc6", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/40/86/0f92a45a76ff540174c2306eeafe", "build/prefab/lib/linux_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/29/dc/e5b08aae2dbe3222082aaa1e90e7", "build/prefab/lib/linux_arm64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/ce/bb/5796a83ce9d1c9cf58e08f3ff351", "build/prefab/lib/linux_arm64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/31/65/014221e46f7974f40aa84c8922dc", @@ -4108,14 +4108,14 @@ "build/prefab/lib/mac_x86_64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/14/4b/68a0ece3c1f191183b695cf45a4d", "build/prefab/lib/mac_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/1f/3f/d899a46cc0dc8bc4f1b38f9318a5", "build/prefab/lib/mac_x86_64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/de/99/95fdcb3f614a7b83ada148bca38d", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/4f/6b/ebfab34748dfdeda9a9336c3d208", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/60/70/928f79ea56be618d2c2a8f041848", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/30/3b/ebb3771011b506c2162eac0cc70f", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/9b/7f/226e61a4f0fab3d66415451441c1", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/ac/ea/7af50be6464252224a4a9878dd9b", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/88/92/349325fffda0d6f6cedfc462b997", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/13/a2/a0a0457431a0219f2b6c665bbe4f", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/70/e5/42300dcb5257494588f140d2a3d9", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/81/52/74280b0576ea7a471fb77efea1e4", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/da/45/28272fe43705d29294c50712c773", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/63/ed/2d14fa909698d6f1237fda2bbbf0", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/27/ac/8013cdbf63f90c8ef836f10845bb", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/ce/60/daf6d760463bd2c18d80c1bdb2b4", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/e3/ce/e147052489017b99049440cc9b55", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/54/2e/6c035774dbdcf3398ce9cf575fe5", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/02/90/3fb7f942b44d41cc8b62f300783c", "src/assets/ba_data/python/babase/_mgen/__init__.py": "https://files.ballistica.net/cache/ba1/52/c6/c11130af7b10d6c0321add5518fa", "src/assets/ba_data/python/babase/_mgen/enums.py": "https://files.ballistica.net/cache/ba1/38/c3/1dedd5e74f2508efc5974c8815a1", "src/ballistica/base/mgen/pyembed/binding_base.inc": "https://files.ballistica.net/cache/ba1/ea/6a/6a4721b144e5e297b542d2a0eea2", diff --git a/.idea/dictionaries/ericf.xml b/.idea/dictionaries/ericf.xml index 9fe6b5e7..226d5142 100644 --- a/.idea/dictionaries/ericf.xml +++ b/.idea/dictionaries/ericf.xml @@ -1804,6 +1804,7 @@ mtvos mtype mtypenames + muckery mult multibytecodec multikillcount diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a634746..0a4e0eb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.20 (build 21094, api 8, 2023-06-13) +### 1.7.20 (build 21095, api 8, 2023-06-13) - This seems like a good time for a `refactoring` release in anticipation of changes coming in 1.8. Basically this means that a lot of things will be diff --git a/ballisticakit-cmake/.idea/dictionaries/ericf.xml b/ballisticakit-cmake/.idea/dictionaries/ericf.xml index ecb1e0c4..02fd4c03 100644 --- a/ballisticakit-cmake/.idea/dictionaries/ericf.xml +++ b/ballisticakit-cmake/.idea/dictionaries/ericf.xml @@ -1041,6 +1041,7 @@ msgtypes msgtypevar mtypenames + muckery mult multing multipass diff --git a/src/assets/ba_data/python/babase/_app.py b/src/assets/ba_data/python/babase/_app.py index e60ae10e..fc62794a 100644 --- a/src/assets/ba_data/python/babase/_app.py +++ b/src/assets/ba_data/python/babase/_app.py @@ -3,6 +3,7 @@ """Functionality related to the high level state of the app.""" from __future__ import annotations +import os from enum import Enum import logging from typing import TYPE_CHECKING @@ -230,6 +231,9 @@ class App: the single shared instance. """ + if os.environ.get('BA_RUNNING_WITH_DUMMY_MODULES') == '1': + return + self.state = self.State.INITIAL self._subsystems: list[AppSubsystem] = [] @@ -295,6 +299,9 @@ class App: def postinit(self) -> None: """Called after we are inited and assigned to babase.app.""" + if os.environ.get('BA_RUNNING_WITH_DUMMY_MODULES') == '1': + return + # NOTE: the reason we need a postinit here is that # some of this stuff accesses babase.app and that doesn't # exist yet as of our __init__() call. diff --git a/src/assets/ba_data/python/baenv.py b/src/assets/ba_data/python/baenv.py index daefbc57..906e9744 100644 --- a/src/assets/ba_data/python/baenv.py +++ b/src/assets/ba_data/python/baenv.py @@ -28,7 +28,7 @@ if TYPE_CHECKING: # Build number and version of the ballistica binary we expect to be # using. -TARGET_BALLISTICA_BUILD = 21094 +TARGET_BALLISTICA_BUILD = 21095 TARGET_BALLISTICA_VERSION = '1.7.20' _g_env_config: EnvConfig | None = None diff --git a/src/assets/ba_data/python/bauiv1lib/store/browser.py b/src/assets/ba_data/python/bauiv1lib/store/browser.py index 0a727107..6fec878e 100644 --- a/src/assets/ba_data/python/bauiv1lib/store/browser.py +++ b/src/assets/ba_data/python/bauiv1lib/store/browser.py @@ -4,6 +4,7 @@ # pylint: disable=too-many-lines from __future__ import annotations +import os import time import copy import math @@ -1408,5 +1409,8 @@ def _check_merch_availability_in_bg_thread() -> None: # Slight hack; start checking merch availability in the bg # (but only if it looks like we're part of a running app; don't want to # do this during docs generation/etc.) -if bui.app.state is not bui.app.State.INITIAL: +if ( + os.environ.get('BA_RUNNING_WITH_DUMMY_MODULES') != '1' + and bui.app.state is not bui.app.State.INITIAL +): Thread(target=_check_merch_availability_in_bg_thread, daemon=True).start() diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index 9e987414..d0581da2 100644 --- a/src/ballistica/shared/ballistica.cc +++ b/src/ballistica/shared/ballistica.cc @@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int { namespace ballistica { // These are set automatically via script; don't modify them here. -const int kEngineBuildNumber = 21094; +const int kEngineBuildNumber = 21095; const char* kEngineVersion = "1.7.20"; auto MonolithicMain(const core::CoreConfig& core_config) -> int { diff --git a/tools/batools/docs.py b/tools/batools/docs.py index f8e85d80..d2dcc0d8 100755 --- a/tools/batools/docs.py +++ b/tools/batools/docs.py @@ -5,6 +5,8 @@ from __future__ import annotations import os +import sys +import subprocess from dataclasses import dataclass from pathlib import Path from typing import TYPE_CHECKING @@ -24,6 +26,9 @@ class AttributeInfo: docs: str | None = None +_g_genned_pdoc_with_dummy_modules = False # pylint: disable=invalid-name + + def parse_docs_attrs(attrs: list[AttributeInfo], docs: str) -> str: """Given a docs str, parses attribute descriptions contained within.""" docs_lines = docs.splitlines() @@ -75,10 +80,30 @@ def parse_docs_attrs(attrs: list[AttributeInfo], docs: str) -> str: def generate_pdoc(projroot: str) -> None: """Generate a set of pdoc documentation.""" - from batools import apprun - del projroot # Unused. + if bool(False): + _run_pdoc_in_engine() + else: + _run_pdoc_with_dummy_modules() + + +def _run_pdoc_in_engine() -> None: + """Generate docs from within the running engine. + + The upside of this way is we have all built-in native modules + available. The downside is that we don't have typing information + for those modules aside from what's embedded in their docstrings + (which is not parsed by pdoc). So we get lots of ugly 'unknown' + arg types in docs/etc. + + The ideal solution might be to start writing .pyi files for + our native modules to provide their type information instead + of or in addition to our dummy-module approach. Just need to + see how that works with our pipeline. + """ + from batools import apprun + # Assemble and launch an app and do our docs generation from there. # Note: we set EFRO_SUPPRESS_SET_CANONICAL_MODULE_NAMES because pdoc # spits out lots of "UserWarning: cannot determine where FOO was @@ -86,44 +111,67 @@ def generate_pdoc(projroot: str) -> None: # it makes in the output though. Basically the canonical names stuff # makes things like bascenev1._actor.Actor show up as # bascenev1.Actor instead. - if bool(True): - # Gen docs from the engine. - apprun.python_command( - 'import batools.docs; batools.docs._run_pdoc_in_engine()', - purpose='pdocs generation', - include_project_tools=True, - env=dict(os.environ, EFRO_SUPPRESS_SET_CANONICAL_MODULE_NAMES='1'), - ) - else: - # Gen docs using dummy modules. - _run_pdoc_with_dummy_modules() + + # Grab names from live objects so things don't break if names + # change. + pycmd = f'import {__name__}; {__name__}.{_run_pdoc.__name__}()' + apprun.python_command( + pycmd, + purpose='pdocs generation', + include_project_tools=True, + env=dict(os.environ, EFRO_SUPPRESS_SET_CANONICAL_MODULE_NAMES='1'), + ) def _run_pdoc_with_dummy_modules() -> None: """Generate docs outside of the engine using our dummy modules. - Dummy modules stand in for native engine modules, and should be - just intact enough for us to spit out docs from. The upside is - that they have full typing information about arguments/etc. so our - docs will be more complete than if we talk to the live engine. + Dummy modules stand in for native engine modules, and should be just + intact enough for us to spit out docs from. + + The upside is that dummy modules have full typing information about + arguments/etc. so some docs will be more complete than if we talk to + the live engine. + + The downside is that we have to hack the engine a bit to be able to + spin itself up this way and there may be bits missing that would + otherwise not be when running in a live engine. """ - raise RuntimeError('UNDER CONSTRUCTION') + + # Not that this is likely to happen, but we muck with sys paths and + # whatnot here so let's make sure we only do this once. + global _g_genned_pdoc_with_dummy_modules # pylint: disable=global-statement + if _g_genned_pdoc_with_dummy_modules: + raise RuntimeError( + 'Can only run this once; it mucks with the environment.' + ) + _g_genned_pdoc_with_dummy_modules = True + + # Make sure dummy-modules are up to date and make them discoverable + # to Python. + subprocess.run(['make', 'dummymodules'], check=True) + sys.path.append('build/dummymodules') + + # Turn off canonical module name muckery (see longer note above). + os.environ['EFRO_SUPPRESS_SET_CANONICAL_MODULE_NAMES'] = '1' + + # Short circuits a few things in our Python code allowing this to + # work. + os.environ['BA_RUNNING_WITH_DUMMY_MODULES'] = '1' + + # Use raw sources for our other stuff. + sys.path.append('src/assets/ba_data/python') + + # We're using raw source dirs in this case, and we don't want Python + # dumping .pyc files there as it causes various small headaches with + # build pipeline stuff. + sys.dont_write_bytecode = True + + _run_pdoc() -def _run_pdoc_in_engine() -> None: - """Generate docs from within the running engine. - - The upside of this way is we have all built-in native modules - available. The downside is that we don't have typing information for - those modules aside from what's embedded in their docstrings (which - is not parsed by pdoc). So we get lots of 'unknown' arg types in - docs/etc. - - The ideal solution might be to start writing .pyi files for our - native modules to provide their type information instead of or in - addition to our dummy-module approach. Just need to see how that - works with our pipeline. - """ +def _run_pdoc() -> None: + """Do the actual docs generation with pdoc.""" import time import pdoc