From c92737eb8c828d75236392ad3c5ace6c233b9dab Mon Sep 17 00:00:00 2001 From: brostos <67740566+brostosjoined@users.noreply.github.com> Date: Tue, 3 Oct 2023 01:18:42 +0300 Subject: [PATCH 01/10] Loop and backward compability fix --- plugin_manager.py | 54 +++++++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/plugin_manager.py b/plugin_manager.py index ea65c03..923bf88 100644 --- a/plugin_manager.py +++ b/plugin_manager.py @@ -1,5 +1,6 @@ # ba_meta require api 8 from babase._meta import EXPORT_CLASS_NAME_SHORTCUTS +from baenv import TARGET_BALLISTICA_BUILD as build_number import babase import _babase import bauiv1 as bui @@ -32,7 +33,7 @@ _env = _babase.env() _uiscale = bui.app.ui_v1.uiscale -PLUGIN_MANAGER_VERSION = "1.0.2" +PLUGIN_MANAGER_VERSION = "1.0.3" REPOSITORY_URL = "https://github.com/bombsquad-community/plugin-manager" # Current tag can be changed to "staging" or any other branch in # plugin manager repo for testing purpose. @@ -43,7 +44,24 @@ HEADERS = { } PLUGIN_DIRECTORY = _env["python_directory_user"] - +def get_event_loop(): + # loop = asyncio.ProactorEventLoop() if sys.platform == 'win32' else asyncio.new_event_loop() + return ba._asyncio._asyncio_event_loop + # try: + # running = asyncio.get_running_loop() + # except RuntimeError: + # return loop + # if running.is_closed(): + # return loop + # else: + # if sys.platform in ('linux', 'darwin'): + # return running + # if sys.platform == 'win32': + # if isinstance(running, asyncio.ProactorEventLoop): + # return running + # else: + # return loop + def _regexp_friendly_class_name_shortcut(string): return string.replace(".", "\\.") @@ -100,7 +118,7 @@ def send_network_request(request): async def async_send_network_request(request): - loop = asyncio.get_event_loop() + loop = get_event_loop() response = await loop.run_in_executor(None, send_network_request, request) return response @@ -129,7 +147,7 @@ def stream_network_response_to_file(request, file, md5sum=None, retries=3): async def async_stream_network_response_to_file(request, file, md5sum=None, retries=3): - loop = asyncio.get_event_loop() + loop = get_event_loop() content = await loop.run_in_executor( None, stream_network_response_to_file, @@ -537,7 +555,7 @@ class PluginLocal: if self._content is None: if not self.is_installed: raise PluginNotInstalled("Plugin is not available locally.") - loop = asyncio.get_event_loop() + loop = get_event_loop() self._content = await loop.run_in_executor(None, self._get_content) return self._content @@ -669,7 +687,7 @@ class PluginLocal: async def set_content(self, content): if not self._content: - loop = asyncio.get_event_loop() + loop = get_event_loop() await loop.run_in_executor(None, self._set_content, content) self._content = content return self @@ -799,7 +817,7 @@ class Plugin: def latest_compatible_version(self): if self._latest_compatible_version is None: for number, info in self.info["versions"].items(): - if info["api_version"] == babase.app.env.api_version: + if info["api_version"] == babase.app.api_version if build_number < 21282 else babase.app.env.api_version: self._latest_compatible_version = PluginVersion( self, (number, info), @@ -855,7 +873,7 @@ class PluginWindow(popup.PopupWindow): self.plugin = plugin self.button_callback = button_callback self.scale_origin = origin_widget.get_screen_space_center() - loop = asyncio.get_event_loop() + loop = get_event_loop() loop.create_task(self.draw_ui()) def get_description(self, minimum_character_offset=40): @@ -1107,7 +1125,7 @@ class PluginWindow(popup.PopupWindow): def wrapper(self, *args, **kwargs): self._ok() - loop = asyncio.get_event_loop() + loop = get_event_loop() if asyncio.iscoroutinefunction(fn): loop.create_task(asyncio_handler(fn, self, *args, **kwargs)) else: @@ -1233,7 +1251,7 @@ class PluginManager: async def get_update_details(self): index = await self.get_index() for version, info in index["versions"].items(): - if info["api_version"] != babase.app.env.api_version: + if info["api_version"] != babase.app.api_version if build_number < 21282 else babase.app.env.api_version: # No point checking a version of the API game doesn't support. continue if version == PLUGIN_MANAGER_VERSION: @@ -1369,7 +1387,7 @@ class PluginSourcesWindow(popup.PopupWindow): # autoselect=True, description="Add Source") - loop = asyncio.get_event_loop() + loop = get_event_loop() bui.buttonwidget(parent=self._root_widget, position=(330, 28), @@ -1475,7 +1493,7 @@ class PluginCategoryWindow(popup.PopupMenuWindow): on_activate_call=self.show_sources_window) def popup_menu_selected_choice(self, window, choice): - loop = asyncio.get_event_loop() + loop = get_event_loop() loop.create_task(self._asyncio_callback(choice)) def popup_menu_closing(self, window): @@ -1497,7 +1515,7 @@ class PluginManagerWindow(bui.Window): self.selected_category = None self.plugins_in_current_view = {} - loop = asyncio.get_event_loop() + loop = get_event_loop() loop.create_task(self.draw_index()) self._width = (700 if _uiscale is babase.UIScale.SMALL @@ -1692,7 +1710,7 @@ class PluginManagerWindow(bui.Window): description=filter_txt) self._last_filter_text = None self._last_filter_plugins = [] - loop = asyncio.get_event_loop() + loop = get_event_loop() loop.create_task(self.process_search_term()) async def process_search_term(self): @@ -1751,7 +1769,7 @@ class PluginManagerWindow(bui.Window): 500 if _uiscale is babase.UIScale.MEDIUM else 510) refresh_pos_y = (180 if _uiscale is babase.UIScale.SMALL else 108 if _uiscale is babase.UIScale.MEDIUM else 120) - loop = asyncio.get_event_loop() + loop = get_event_loop() controller_button = bui.buttonwidget(parent=self._root_widget, # autoselect=True, position=(refresh_pos_x, refresh_pos_y), @@ -1908,7 +1926,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow): self._plugin_manager = plugin_manager self.scale_origin = origin_widget.get_screen_space_center() self.settings = babase.app.config["Community Plugin Manager"]["Settings"].copy() - loop = asyncio.get_event_loop() + loop = get_event_loop() loop.create_task(self.draw_ui()) async def draw_ui(self): @@ -2028,7 +2046,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow): plugin_manager_update_available = False if plugin_manager_update_available: text_color = (0.75, 0.2, 0.2) - loop = asyncio.get_event_loop() + loop = get_event_loop() button_size = (95 * s, 32 * s) update_button_label = f'Update to v{plugin_manager_update_available[0]}' self._update_button = bui.buttonwidget(parent=self._root_widget, @@ -2483,5 +2501,5 @@ class EntryPoint(babase.Plugin): DNSBlockWorkaround.apply() asyncio.set_event_loop(babase._asyncio._asyncio_event_loop) startup_tasks = StartupTasks() - loop = asyncio.get_event_loop() + loop = get_event_loop() loop.create_task(startup_tasks.execute()) From 6c9064e0a7e49768edcf58fc552e23761205c5a0 Mon Sep 17 00:00:00 2001 From: brostos <67740566+brostosjoined@users.noreply.github.com> Date: Tue, 3 Oct 2023 01:23:30 +0300 Subject: [PATCH 02/10] Update index.json --- index.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.json b/index.json index f913ecd..528b34a 100644 --- a/index.json +++ b/index.json @@ -1,6 +1,7 @@ { "plugin_manager_url": "https://github.com/bombsquad-community/plugin-manager/{content_type}/{tag}/plugin_manager.py", "versions": { + "1.0.3": null, "1.0.2": { "api_version": 8, "commit_sha": "818ec65", @@ -122,4 +123,4 @@ "https://github.com/bombsquad-community/plugin-manager/{content_type}/{tag}/plugins/maps.json" ], "external_source_url": "https://github.com/{repository}/{content_type}/{tag}/category.json" -} \ No newline at end of file +} From f3d874d3ecfdb0d03d5d5647b1d98526088778c0 Mon Sep 17 00:00:00 2001 From: brostosjoined Date: Mon, 2 Oct 2023 22:28:17 +0000 Subject: [PATCH 03/10] [ci] auto-format --- plugin_manager.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugin_manager.py b/plugin_manager.py index 923bf88..d0e08b1 100644 --- a/plugin_manager.py +++ b/plugin_manager.py @@ -44,6 +44,7 @@ HEADERS = { } PLUGIN_DIRECTORY = _env["python_directory_user"] + def get_event_loop(): # loop = asyncio.ProactorEventLoop() if sys.platform == 'win32' else asyncio.new_event_loop() return ba._asyncio._asyncio_event_loop @@ -61,7 +62,8 @@ def get_event_loop(): # return running # else: # return loop - + + def _regexp_friendly_class_name_shortcut(string): return string.replace(".", "\\.") From b83bc9c05cdbeb5d2c4b6d4f1c5516876144e3cb Mon Sep 17 00:00:00 2001 From: brostosjoined Date: Mon, 2 Oct 2023 22:28:18 +0000 Subject: [PATCH 04/10] [ci] apply-version-metadata --- index.json | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/index.json b/index.json index 528b34a..cc72565 100644 --- a/index.json +++ b/index.json @@ -1,7 +1,12 @@ { "plugin_manager_url": "https://github.com/bombsquad-community/plugin-manager/{content_type}/{tag}/plugin_manager.py", "versions": { - "1.0.3": null, + "1.0.3": { + "api_version": 8, + "commit_sha": "f3d874d", + "released_on": "02-10-2023", + "md5sum": "ab408d977dc7b88530d721d8cc19658d" + }, "1.0.2": { "api_version": 8, "commit_sha": "818ec65", @@ -123,4 +128,4 @@ "https://github.com/bombsquad-community/plugin-manager/{content_type}/{tag}/plugins/maps.json" ], "external_source_url": "https://github.com/{repository}/{content_type}/{tag}/category.json" -} +} \ No newline at end of file From c90face51e72b82e231e2ae178dd007147000b96 Mon Sep 17 00:00:00 2001 From: brostos <67740566+brostosjoined@users.noreply.github.com> Date: Tue, 3 Oct 2023 10:50:14 +0300 Subject: [PATCH 05/10] Update --- plugin_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin_manager.py b/plugin_manager.py index d0e08b1..7e4a53a 100644 --- a/plugin_manager.py +++ b/plugin_manager.py @@ -47,7 +47,7 @@ PLUGIN_DIRECTORY = _env["python_directory_user"] def get_event_loop(): # loop = asyncio.ProactorEventLoop() if sys.platform == 'win32' else asyncio.new_event_loop() - return ba._asyncio._asyncio_event_loop + return babase._asyncio._asyncio_event_loop # try: # running = asyncio.get_running_loop() # except RuntimeError: From 5c8606422316fa0c6174aae0560738f31f513e73 Mon Sep 17 00:00:00 2001 From: brostos <67740566+brostosjoined@users.noreply.github.com> Date: Tue, 3 Oct 2023 11:19:36 +0300 Subject: [PATCH 06/10] Update plugin_manager.py --- plugin_manager.py | 49 +++++++++++++++-------------------------------- 1 file changed, 15 insertions(+), 34 deletions(-) diff --git a/plugin_manager.py b/plugin_manager.py index 7e4a53a..e614112 100644 --- a/plugin_manager.py +++ b/plugin_manager.py @@ -43,26 +43,7 @@ HEADERS = { "User-Agent": _env["legacy_user_agent_string"], } PLUGIN_DIRECTORY = _env["python_directory_user"] - - -def get_event_loop(): - # loop = asyncio.ProactorEventLoop() if sys.platform == 'win32' else asyncio.new_event_loop() - return babase._asyncio._asyncio_event_loop - # try: - # running = asyncio.get_running_loop() - # except RuntimeError: - # return loop - # if running.is_closed(): - # return loop - # else: - # if sys.platform in ('linux', 'darwin'): - # return running - # if sys.platform == 'win32': - # if isinstance(running, asyncio.ProactorEventLoop): - # return running - # else: - # return loop - +loop = babase._asyncio._asyncio_event_loop def _regexp_friendly_class_name_shortcut(string): return string.replace(".", "\\.") @@ -120,7 +101,7 @@ def send_network_request(request): async def async_send_network_request(request): - loop = get_event_loop() + response = await loop.run_in_executor(None, send_network_request, request) return response @@ -149,7 +130,7 @@ def stream_network_response_to_file(request, file, md5sum=None, retries=3): async def async_stream_network_response_to_file(request, file, md5sum=None, retries=3): - loop = get_event_loop() + content = await loop.run_in_executor( None, stream_network_response_to_file, @@ -557,7 +538,7 @@ class PluginLocal: if self._content is None: if not self.is_installed: raise PluginNotInstalled("Plugin is not available locally.") - loop = get_event_loop() + self._content = await loop.run_in_executor(None, self._get_content) return self._content @@ -689,7 +670,7 @@ class PluginLocal: async def set_content(self, content): if not self._content: - loop = get_event_loop() + await loop.run_in_executor(None, self._set_content, content) self._content = content return self @@ -875,7 +856,7 @@ class PluginWindow(popup.PopupWindow): self.plugin = plugin self.button_callback = button_callback self.scale_origin = origin_widget.get_screen_space_center() - loop = get_event_loop() + loop.create_task(self.draw_ui()) def get_description(self, minimum_character_offset=40): @@ -1127,7 +1108,7 @@ class PluginWindow(popup.PopupWindow): def wrapper(self, *args, **kwargs): self._ok() - loop = get_event_loop() + if asyncio.iscoroutinefunction(fn): loop.create_task(asyncio_handler(fn, self, *args, **kwargs)) else: @@ -1389,7 +1370,7 @@ class PluginSourcesWindow(popup.PopupWindow): # autoselect=True, description="Add Source") - loop = get_event_loop() + bui.buttonwidget(parent=self._root_widget, position=(330, 28), @@ -1495,7 +1476,7 @@ class PluginCategoryWindow(popup.PopupMenuWindow): on_activate_call=self.show_sources_window) def popup_menu_selected_choice(self, window, choice): - loop = get_event_loop() + loop.create_task(self._asyncio_callback(choice)) def popup_menu_closing(self, window): @@ -1517,7 +1498,7 @@ class PluginManagerWindow(bui.Window): self.selected_category = None self.plugins_in_current_view = {} - loop = get_event_loop() + loop.create_task(self.draw_index()) self._width = (700 if _uiscale is babase.UIScale.SMALL @@ -1712,7 +1693,7 @@ class PluginManagerWindow(bui.Window): description=filter_txt) self._last_filter_text = None self._last_filter_plugins = [] - loop = get_event_loop() + loop.create_task(self.process_search_term()) async def process_search_term(self): @@ -1771,7 +1752,7 @@ class PluginManagerWindow(bui.Window): 500 if _uiscale is babase.UIScale.MEDIUM else 510) refresh_pos_y = (180 if _uiscale is babase.UIScale.SMALL else 108 if _uiscale is babase.UIScale.MEDIUM else 120) - loop = get_event_loop() + controller_button = bui.buttonwidget(parent=self._root_widget, # autoselect=True, position=(refresh_pos_x, refresh_pos_y), @@ -1928,7 +1909,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow): self._plugin_manager = plugin_manager self.scale_origin = origin_widget.get_screen_space_center() self.settings = babase.app.config["Community Plugin Manager"]["Settings"].copy() - loop = get_event_loop() + loop.create_task(self.draw_ui()) async def draw_ui(self): @@ -2048,7 +2029,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow): plugin_manager_update_available = False if plugin_manager_update_available: text_color = (0.75, 0.2, 0.2) - loop = get_event_loop() + button_size = (95 * s, 32 * s) update_button_label = f'Update to v{plugin_manager_update_available[0]}' self._update_button = bui.buttonwidget(parent=self._root_widget, @@ -2503,5 +2484,5 @@ class EntryPoint(babase.Plugin): DNSBlockWorkaround.apply() asyncio.set_event_loop(babase._asyncio._asyncio_event_loop) startup_tasks = StartupTasks() - loop = get_event_loop() + loop.create_task(startup_tasks.execute()) From e57c5417624a2f9a6750bc569c0430a0a90e88e1 Mon Sep 17 00:00:00 2001 From: brostosjoined Date: Tue, 3 Oct 2023 08:20:09 +0000 Subject: [PATCH 07/10] [ci] auto-format --- plugin_manager.py | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/plugin_manager.py b/plugin_manager.py index e614112..b28dde0 100644 --- a/plugin_manager.py +++ b/plugin_manager.py @@ -45,6 +45,7 @@ HEADERS = { PLUGIN_DIRECTORY = _env["python_directory_user"] loop = babase._asyncio._asyncio_event_loop + def _regexp_friendly_class_name_shortcut(string): return string.replace(".", "\\.") @@ -101,7 +102,7 @@ def send_network_request(request): async def async_send_network_request(request): - + response = await loop.run_in_executor(None, send_network_request, request) return response @@ -130,7 +131,7 @@ def stream_network_response_to_file(request, file, md5sum=None, retries=3): async def async_stream_network_response_to_file(request, file, md5sum=None, retries=3): - + content = await loop.run_in_executor( None, stream_network_response_to_file, @@ -538,7 +539,7 @@ class PluginLocal: if self._content is None: if not self.is_installed: raise PluginNotInstalled("Plugin is not available locally.") - + self._content = await loop.run_in_executor(None, self._get_content) return self._content @@ -670,7 +671,7 @@ class PluginLocal: async def set_content(self, content): if not self._content: - + await loop.run_in_executor(None, self._set_content, content) self._content = content return self @@ -856,7 +857,7 @@ class PluginWindow(popup.PopupWindow): self.plugin = plugin self.button_callback = button_callback self.scale_origin = origin_widget.get_screen_space_center() - + loop.create_task(self.draw_ui()) def get_description(self, minimum_character_offset=40): @@ -1108,7 +1109,7 @@ class PluginWindow(popup.PopupWindow): def wrapper(self, *args, **kwargs): self._ok() - + if asyncio.iscoroutinefunction(fn): loop.create_task(asyncio_handler(fn, self, *args, **kwargs)) else: @@ -1370,8 +1371,6 @@ class PluginSourcesWindow(popup.PopupWindow): # autoselect=True, description="Add Source") - - bui.buttonwidget(parent=self._root_widget, position=(330, 28), size=(37, 37), @@ -1476,7 +1475,7 @@ class PluginCategoryWindow(popup.PopupMenuWindow): on_activate_call=self.show_sources_window) def popup_menu_selected_choice(self, window, choice): - + loop.create_task(self._asyncio_callback(choice)) def popup_menu_closing(self, window): @@ -1498,7 +1497,6 @@ class PluginManagerWindow(bui.Window): self.selected_category = None self.plugins_in_current_view = {} - loop.create_task(self.draw_index()) self._width = (700 if _uiscale is babase.UIScale.SMALL @@ -1693,7 +1691,7 @@ class PluginManagerWindow(bui.Window): description=filter_txt) self._last_filter_text = None self._last_filter_plugins = [] - + loop.create_task(self.process_search_term()) async def process_search_term(self): @@ -1752,7 +1750,7 @@ class PluginManagerWindow(bui.Window): 500 if _uiscale is babase.UIScale.MEDIUM else 510) refresh_pos_y = (180 if _uiscale is babase.UIScale.SMALL else 108 if _uiscale is babase.UIScale.MEDIUM else 120) - + controller_button = bui.buttonwidget(parent=self._root_widget, # autoselect=True, position=(refresh_pos_x, refresh_pos_y), @@ -1909,7 +1907,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow): self._plugin_manager = plugin_manager self.scale_origin = origin_widget.get_screen_space_center() self.settings = babase.app.config["Community Plugin Manager"]["Settings"].copy() - + loop.create_task(self.draw_ui()) async def draw_ui(self): @@ -2029,7 +2027,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow): plugin_manager_update_available = False if plugin_manager_update_available: text_color = (0.75, 0.2, 0.2) - + button_size = (95 * s, 32 * s) update_button_label = f'Update to v{plugin_manager_update_available[0]}' self._update_button = bui.buttonwidget(parent=self._root_widget, @@ -2484,5 +2482,5 @@ class EntryPoint(babase.Plugin): DNSBlockWorkaround.apply() asyncio.set_event_loop(babase._asyncio._asyncio_event_loop) startup_tasks = StartupTasks() - + loop.create_task(startup_tasks.execute()) From 68360e77143b91608df5ec3f0286529a969ba35e Mon Sep 17 00:00:00 2001 From: brostos <67740566+brostosjoined@users.noreply.github.com> Date: Tue, 3 Oct 2023 12:08:21 +0300 Subject: [PATCH 08/10] Update plugin_manager.py --- plugin_manager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin_manager.py b/plugin_manager.py index b28dde0..840cd48 100644 --- a/plugin_manager.py +++ b/plugin_manager.py @@ -810,7 +810,7 @@ class Plugin: break if self._latest_compatible_version is None: raise NoCompatibleVersion( - f"{self.name} has no version compatible with API {babase.app.api_version}." + f"{self.name} has no version compatible with API {babase.app.api_version if build_number < 21282 else babase.app.env.api_version}." ) return self._latest_compatible_version @@ -2072,7 +2072,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow): size=(0, 0), h_align='center', v_align='center', - text=f'API Version: {babase.app.api_version}', + text=f'API Version: {babase.app.api_version if build_number < 21282 else babase.app.env.api_version}', scale=text_scale * 0.7, color=(0.4, 0.8, 1), maxwidth=width * 0.95) From 2a5ce50834b81a1b0c3d68fa027e19676530b644 Mon Sep 17 00:00:00 2001 From: Rikko Date: Fri, 6 Oct 2023 22:16:07 +0530 Subject: [PATCH 09/10] Add a compatibility layer for older builds --- index.json | 9 ++------ plugin_manager.py | 52 +++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/index.json b/index.json index cc72565..528b34a 100644 --- a/index.json +++ b/index.json @@ -1,12 +1,7 @@ { "plugin_manager_url": "https://github.com/bombsquad-community/plugin-manager/{content_type}/{tag}/plugin_manager.py", "versions": { - "1.0.3": { - "api_version": 8, - "commit_sha": "f3d874d", - "released_on": "02-10-2023", - "md5sum": "ab408d977dc7b88530d721d8cc19658d" - }, + "1.0.3": null, "1.0.2": { "api_version": 8, "commit_sha": "818ec65", @@ -128,4 +123,4 @@ "https://github.com/bombsquad-community/plugin-manager/{content_type}/{tag}/plugins/maps.json" ], "external_source_url": "https://github.com/{repository}/{content_type}/{tag}/category.json" -} \ No newline at end of file +} diff --git a/plugin_manager.py b/plugin_manager.py index 840cd48..a75b9fe 100644 --- a/plugin_manager.py +++ b/plugin_manager.py @@ -1,6 +1,6 @@ # ba_meta require api 8 from babase._meta import EXPORT_CLASS_NAME_SHORTCUTS -from baenv import TARGET_BALLISTICA_BUILD as build_number +from baenv import TARGET_BALLISTICA_BUILD import babase import _babase import bauiv1 as bui @@ -29,15 +29,46 @@ from datetime import datetime from threading import Thread import logging -_env = _babase.env() -_uiscale = bui.app.ui_v1.uiscale - PLUGIN_MANAGER_VERSION = "1.0.3" REPOSITORY_URL = "https://github.com/bombsquad-community/plugin-manager" # Current tag can be changed to "staging" or any other branch in # plugin manager repo for testing purpose. CURRENT_TAG = "main" + + +if TARGET_BALLISTICA_BUILD < 21282: + # These attributes have been deprecated as of 1.7.27. For more info see: + # https://github.com/efroemling/ballistica/blob/master/CHANGELOG.md#1727-build-21282-api-8-2023-08-30 + # Adding a compatibility layer here so older builds still work fine. + class Dummy: + pass + + babase.app.env = Dummy() + + babase.app.env.build_number = babase.app.build_number + babase.app.env.device_name = babase.app.device_name + babase.app.env.config_file_path = babase.app.config_file_path + babase.app.env.version = babase.app.version + babase.app.env.debug_build = babase.app.debug_build + babase.app.env.test_build = babase.app.test_build + babase.app.env.data_directory = babase.app.data_directory + babase.app.env.python_directory_user = babase.app.python_directory_user + babase.app.env.python_directory_app = babase.app.python_directory_app + babase.app.env.python_directory_app_site = babase.app.python_directory_app_site + babase.app.env.api_version = babase.app.api_version + babase.app.env.on_tv = babase.app.on_tv + babase.app.env.vr_mode = babase.app.vr_mode + babase.app.env.toolbar_test = babase.app.toolbar_test + babase.app.env.arcade_mode = babase.app.arcade_mode + babase.app.env.headless_mode = babase.app.arcade_mode + babase.app.env.demo_mode = babase.app.demo_mode + babase.app.env.protocl_version = babase.app.protocol_version + + +_env = _babase.env() +_uiscale = bui.app.ui_v1.uiscale + INDEX_META = "{repository_url}/{content_type}/{tag}/index.json" HEADERS = { "User-Agent": _env["legacy_user_agent_string"], @@ -70,6 +101,7 @@ REGEXP = { } DISCORD_URL = "https://ballistica.net/discord" + _CACHE = {} @@ -102,7 +134,6 @@ def send_network_request(request): async def async_send_network_request(request): - response = await loop.run_in_executor(None, send_network_request, request) return response @@ -158,6 +189,9 @@ class DNSBlockWorkaround: Such as Jio, a pretty popular ISP in India has a DNS block on raw.githubusercontent.com (sigh..). + References: + * https://github.com/orgs/community/discussions/42655 + Usage: ----- >>> import urllib.request @@ -801,7 +835,7 @@ class Plugin: def latest_compatible_version(self): if self._latest_compatible_version is None: for number, info in self.info["versions"].items(): - if info["api_version"] == babase.app.api_version if build_number < 21282 else babase.app.env.api_version: + if info["api_version"] == babase.app.env.api_version: self._latest_compatible_version = PluginVersion( self, (number, info), @@ -810,7 +844,7 @@ class Plugin: break if self._latest_compatible_version is None: raise NoCompatibleVersion( - f"{self.name} has no version compatible with API {babase.app.api_version if build_number < 21282 else babase.app.env.api_version}." + f"{self.name} has no version compatible with API {babase.app.env.api_version}." ) return self._latest_compatible_version @@ -1235,7 +1269,7 @@ class PluginManager: async def get_update_details(self): index = await self.get_index() for version, info in index["versions"].items(): - if info["api_version"] != babase.app.api_version if build_number < 21282 else babase.app.env.api_version: + if info["api_version"] != babase.app.env.api_version: # No point checking a version of the API game doesn't support. continue if version == PLUGIN_MANAGER_VERSION: @@ -2072,7 +2106,7 @@ class PluginManagerSettingsWindow(popup.PopupWindow): size=(0, 0), h_align='center', v_align='center', - text=f'API Version: {babase.app.api_version if build_number < 21282 else babase.app.env.api_version}', + text=f'API Version: {babase.app.env.api_version}', scale=text_scale * 0.7, color=(0.4, 0.8, 1), maxwidth=width * 0.95) From c50e986d413d8545a87a76b8d58b3fbc77065491 Mon Sep 17 00:00:00 2001 From: rikkolovescats Date: Fri, 6 Oct 2023 16:46:57 +0000 Subject: [PATCH 10/10] [ci] apply-version-metadata --- index.json | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/index.json b/index.json index 528b34a..96d4945 100644 --- a/index.json +++ b/index.json @@ -1,7 +1,12 @@ { "plugin_manager_url": "https://github.com/bombsquad-community/plugin-manager/{content_type}/{tag}/plugin_manager.py", "versions": { - "1.0.3": null, + "1.0.3": { + "api_version": 8, + "commit_sha": "2a5ce50", + "released_on": "06-10-2023", + "md5sum": "d8e6267b2eae6fc21efd77bbb47c0a07" + }, "1.0.2": { "api_version": 8, "commit_sha": "818ec65", @@ -123,4 +128,4 @@ "https://github.com/bombsquad-community/plugin-manager/{content_type}/{tag}/plugins/maps.json" ], "external_source_url": "https://github.com/{repository}/{content_type}/{tag}/category.json" -} +} \ No newline at end of file