From 12b0ee0a3e16c6db0e359fdc6cd8d23b54168789 Mon Sep 17 00:00:00 2001 From: Neradoc Date: Mon, 29 Mar 2021 18:14:37 +0200 Subject: add alias boards and bus_device to the support matrix add list with manual brand names for aliases the new info in the support_matrix is used in build_board_info.py --- docs/shared_bindings_matrix.py | 65 +++++++++++++++++++++++++++++++++++++----- tools/build_board_info.py | 28 ++++-------------- 2 files changed, 63 insertions(+), 30 deletions(-) diff --git a/docs/shared_bindings_matrix.py b/docs/shared_bindings_matrix.py index e62b1d218..e87769f06 100644 --- a/docs/shared_bindings_matrix.py +++ b/docs/shared_bindings_matrix.py @@ -32,6 +32,39 @@ from concurrent.futures import ThreadPoolExecutor SUPPORTED_PORTS = ['atmel-samd', 'cxd56', 'esp32s2', 'litex', 'mimxrt10xx', 'nrf', 'raspberrypi', 'stm'] +aliases_by_board = { + "circuitplayground_express": [ + "circuitplayground_express_4h", + "circuitplayground_express_digikey_pycon2019", + ], + "pybadge": ["edgebadge"], + "pyportal": ["pyportal_pynt"], + "gemma_m0": ["gemma_m0_pycon2018"], + "pewpew10": ["pewpew13"], +} + +aliases_brand_names = { + "circuitplayground_express_4h": + "Adafruit Circuit Playground Express 4-H", + "circuitplayground_express_digikey_pycon2019": + "Circuit Playground Express Digi-Key PyCon 2019", + "edgebadge": + "Adafruit EdgeBadge", + "pyportal_pynt": + "Adafruit PyPortal Pynt", + "gemma_m0_pycon2018": + "Adafruit Gemma M0 PyCon 2018", + "pewpew13": + "PewPew 13", +} + +additional_modules = { + "fontio": "CIRCUITPY_DISPLAYIO", + "terminalio": "CIRCUITPY_DISPLAYIO", + # "socket": "CIRCUITPY_NETWORK", + "adafruit_bus_device": "CIRCUITPY_BUSDEVICE", +} + def get_circuitpython_root_dir(): """ The path to the root './circuitpython' directory """ @@ -71,8 +104,11 @@ def build_module_map(): full_build = False for module in modules: full_name = module - search_name = module.lstrip("_") - re_pattern = "CIRCUITPY_{}\s*\??=\s*(.+)".format(search_name.upper()) + if module in additional_modules: + search_identifier = additional_modules[module] + else: + search_identifier = 'CIRCUITPY_'+module.lstrip("_").upper() + re_pattern = f"{re.escape(search_identifier)}\s*\??=\s*(.+)" find_config = re.findall(re_pattern, configs) if not find_config: continue @@ -84,11 +120,12 @@ def build_module_map(): else: default_val = "None" - base[search_name] = { + base[module] = { "name": full_name, "full_build": str(full_build), "default_value": default_val, - "excluded": {} + "excluded": {}, + "key": search_identifier, } return base @@ -164,14 +201,28 @@ def support_matrix_by_board(use_branded_name=True): board_modules = [] for module in base: - key = f'CIRCUITPY_{module.upper()}' + key = base[module]['key'] if int(lookup_setting(settings, key, '0')): board_modules.append(base[module]['name']) + board_modules.sort() + + # generate alias boards too + board_matrix = [(board_name, board_modules)] + if entry.name in aliases_by_board: + for alias in aliases_by_board[entry.name]: + if use_branded_name: + if alias in aliases_brand_names: + alias = aliases_brand_names[alias] + else: + alias = alias.replace("_"," ").title() + board_matrix.append( (alias, board_modules) ) - return (board_name, sorted(board_modules)) + return board_matrix # this is now a list of (board,modules) executor = ThreadPoolExecutor(max_workers=os.cpu_count()) - boards = dict(sorted(executor.map(support_matrix, all_ports_all_boards()))) + mapped_exec = executor.map(support_matrix, all_ports_all_boards()) + # flatmap with comprehensions + boards = dict(sorted([board for matrix in mapped_exec for board in matrix])) #print(json.dumps(boards, indent=2)) return boards diff --git a/tools/build_board_info.py b/tools/build_board_info.py index d89b6ac2c..94f6e50af 100644 --- a/tools/build_board_info.py +++ b/tools/build_board_info.py @@ -19,16 +19,8 @@ import shared_bindings_matrix sys.path.append("adabot") import adabot.github_requests as github -SUPPORTED_PORTS = [ - "atmel-samd", - "cxd56", - "esp32s2", - "litex", - "mimxrt10xx", - "nrf", - "raspberrypi", - "stm", -] +from shared_bindings_matrix import SUPPORTED_PORTS +from shared_bindings_matrix import aliases_by_board BIN = ("bin",) UF2 = ("uf2",) @@ -73,17 +65,6 @@ extension_by_board = { "meowbit_v121": UF2, } -aliases_by_board = { - "circuitplayground_express": [ - "circuitplayground_express_4h", - "circuitplayground_express_digikey_pycon2019", - ], - "pybadge": ["edgebadge"], - "pyportal": ["pyportal_pynt"], - "gemma_m0": ["gemma_m0_pycon2018"], - "pewpew10": ["pewpew13"], -} - language_allow_list = set([ "ID", "de_DE", @@ -312,7 +293,7 @@ def generate_download_info(): new_version = { "stable": new_stable, "version": new_tag, - "modules": support_matrix[board_id], + "modules": support_matrix[alias], "languages": languages, "extensions": board_info["extensions"], } @@ -325,7 +306,8 @@ def generate_download_info(): create_pr(changes, current_info, git_info, user) else: print("No new release to update") - # print(create_json(current_info).decode("utf8")) + if "DEBUG" in os.environ: + print(create_json(current_info).decode("utf8")) if __name__ == "__main__": -- cgit v1.2.3