summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsommersoft <sommersoft@users.noreply.github.com>2020-08-26 15:45:56 -0500
committerGitHub <noreply@github.com>2020-08-26 15:45:56 -0500
commit58a7419b4ffcc99a7ea290f878f65b7e09acf027 (patch)
tree1877bb031ed7dd8fa9b13b4cba0f0510853a5f36
parent4a682cd72067181d629cc05d51d09e52127b160a (diff)
parente121e267adacf69809b78fdafc0209ad9a824266 (diff)
Merge pull request #3332 from jepler/shared-bindings-matrix-ulab
Shared bindings matrix ulab
-rw-r--r--docs/shared_bindings_matrix.py59
1 files changed, 33 insertions, 26 deletions
diff --git a/docs/shared_bindings_matrix.py b/docs/shared_bindings_matrix.py
index 7b96c14f2..e81ae188c 100644
--- a/docs/shared_bindings_matrix.py
+++ b/docs/shared_bindings_matrix.py
@@ -28,6 +28,7 @@ import re
import subprocess
import sys
+from concurrent.futures import ThreadPoolExecutor
SUPPORTED_PORTS = ['atmel-samd', 'esp32s2', 'litex', 'mimxrt10xx', 'nrf', 'stm']
@@ -42,7 +43,7 @@ def get_circuitpython_root_dir():
def get_shared_bindings():
""" Get a list of modules in shared-bindings based on folder names
"""
- shared_bindings_dir = get_circuitpython_root_dir() / "shared-bindings"
+ shared_bindings_dir = get_circuitpython_root_dir() / "circuitpython-stubs"
return [item.name for item in shared_bindings_dir.iterdir()]
@@ -131,38 +132,44 @@ def lookup_setting(settings, key, default=''):
key = value[2:-1]
return value
+def all_ports_all_boards(ports=SUPPORTED_PORTS):
+ for port in ports:
+
+ port_dir = get_circuitpython_root_dir() / "ports" / port
+ for entry in (port_dir / "boards").iterdir():
+ if not entry.is_dir():
+ continue
+ yield (port, entry)
+
def support_matrix_by_board(use_branded_name=True):
""" Compiles a list of the available core modules available for each
board.
"""
base = build_module_map()
- boards = dict()
- for port in SUPPORTED_PORTS:
-
+ def support_matrix(arg):
+ port, entry = arg
port_dir = get_circuitpython_root_dir() / "ports" / port
- for entry in (port_dir / "boards").iterdir():
- if not entry.is_dir():
- continue
- board_modules = []
- board_name = entry.name
-
- settings = get_settings_from_makefile(str(port_dir), entry.name)
-
- if use_branded_name:
- with open(entry / "mpconfigboard.h") as get_name:
- board_contents = get_name.read()
- board_name_re = re.search(r"(?<=MICROPY_HW_BOARD_NAME)\s+(.+)",
- board_contents)
- if board_name_re:
- board_name = board_name_re.group(1).strip('"')
-
- board_modules = []
- for module in base:
- key = f'CIRCUITPY_{module.upper()}'
- if int(lookup_setting(settings, key, '0')):
- board_modules.append(base[module]['name'])
- boards[board_name] = sorted(board_modules)
+ settings = get_settings_from_makefile(str(port_dir), entry.name)
+
+ if use_branded_name:
+ with open(entry / "mpconfigboard.h") as get_name:
+ board_contents = get_name.read()
+ board_name_re = re.search(r"(?<=MICROPY_HW_BOARD_NAME)\s+(.+)",
+ board_contents)
+ if board_name_re:
+ board_name = board_name_re.group(1).strip('"')
+
+ board_modules = []
+ for module in base:
+ key = f'CIRCUITPY_{module.upper()}'
+ if int(lookup_setting(settings, key, '0')):
+ board_modules.append(base[module]['name'])
+
+ return (board_name, sorted(board_modules))
+
+ executor = ThreadPoolExecutor(max_workers=os.cpu_count())
+ boards = dict(sorted(executor.map(support_matrix, all_ports_all_boards())))
#print(json.dumps(boards, indent=2))
return boards