def get_all(): "get all frozen modules for the current version of micropython" # get_cpython.get_core(stub_path=stubfolder('cpython_core'), requirements='./src/reqs-cpython-mpy.txt') mpy_path = '../micropython' version = clean_version(git.get_tag(mpy_path)) if version: log.info("found micropython version : {}".format(version)) # folder/{family}-{version}-frozen family = 'micropython' stub_path = stubfolder('{}-{}-frozen'.format(family, flat_version(version))) get_mpy.get_frozen(stub_path, version=version, mpy_path=mpy_path, lib_path='../micropython-lib') else: log.warning('Unable to find the micropython repo in folder : {}'.format(mpy_path)) get_lobo.get_frozen(stub_path=STUB_FOLDER + '/loboris-esp32_lobo_3_2_24' + '-frozen') # now generate typeshed files for all scripts log.info("Generate type hint files (pyi) in folder: {}".format(STUB_FOLDER)) utils.make_stub_files(STUB_FOLDER, levels=7)
def test_freezer_lobo(tmp_path): get_lobo.get_frozen(tmp_path) assert len(list( tmp_path.iterdir())) == 19, "there should be 18 files + 1 manifest"
def get_all( stub_folder: str = STUB_FOLDER, mpy_folder: str = MPY_FOLDER, mpy_lib_folder: str = MPY_LIB_FOLDER, version: str = "", core: bool = False, core_type: str = "pycopy", # pycopy or Micropython CPython stubs mpy: bool = False, lobo: bool = False, pyi: bool = True, black: bool = True, all: bool = False, ): "get all frozen modules for the current version of micropython" if not (core or mpy or lobo or all): log.warning("Nothing to do") exit(2) stub_paths: List[Path] = [] if core or all: for core_type in ["pycopy", "micropython"]: log.info(f"::group:: Get Cpython core :{core_type}") req_filename = f"requirements-core-{core_type}.txt" stub_path = Path(stub_folder) / f"cpython_core-{core_type}" get_cpython.get_core(stub_path=str(stub_path), requirements=req_filename, family=core_type) stub_paths.append(stub_path) if len(version) == 0: version = utils.clean_version(git.get_tag(mpy_folder) or "0.0") if mpy or all: if version: log.info("MicroPython version : {}".format(version)) # folder/{family}-{version}-frozen family = "micropython" stub_path = Path( stub_folder ) / f"{family}-{utils.clean_version(version, flat=True)}-frozen" stub_paths.append(stub_path) get_mpy.get_frozen(str(stub_path), version=version, mpy_path=mpy_folder, lib_path=mpy_lib_folder) else: log.warning( "Unable to find the micropython repo in folder : {}".format( mpy_folder)) if lobo or all: family = "loboris" version = "v3.2.24" stub_path = Path( stub_folder ) / f"{family}-{utils.clean_version(version, flat=True)}-frozen" stub_paths.append(stub_path) get_lobo.get_frozen(str(stub_path)) for pth in stub_paths: if pyi: log.info( "Generate type hint files (pyi) in folder: {}".format(pth)) utils.generate_pyi_files(pth) if black: try: cmd = ["black", str(pth), "--include", "\\.py$"] if sys.version_info.major == 3 and sys.version_info.minor == 7: # black on python 3.7 does not like some function defs # def sizeof(struct, layout_type=NATIVE, /) -> int: cmd += ["--fast"] # shell=false on ubuntu result = subprocess.run(cmd, capture_output=False, check=True, shell=False) if result.returncode != 0: raise Exception(result.stderr.decode("utf-8")) except subprocess.SubprocessError: log.error("some of the files are not in a proper format")
def test_get_lobo(tmp_path): get_lobo.get_frozen(tmp_path) filecount = len(list(tmp_path.iterdir())) assert filecount == 19, "there should be 18 files + 1 manifest"