예제 #1
0
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)
예제 #2
0
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"
예제 #3
0
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")
예제 #4
0
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"