Add verification script
This commit is contained in:
parent
088b5b1785
commit
46713482f4
4
Makefile
4
Makefile
@ -213,8 +213,8 @@ check-translate: locale/circuitpython.pot $(wildcard locale/*.po)
|
||||
$(PYTHON) tools/check_translations.py $^
|
||||
|
||||
stubs:
|
||||
rst2pyi $(VALIDATE) shared-bindings/ $(STUBDIR)
|
||||
python setup.py sdist
|
||||
python tools/extract_pyi.py shared-bindings/ $(STUBDIR)
|
||||
#python setup.py sdist
|
||||
|
||||
update-frozen-libraries:
|
||||
@echo "Updating all frozen libraries to latest tagged version."
|
||||
|
46
tools/extract_pyi.py
Normal file
46
tools/extract_pyi.py
Normal file
@ -0,0 +1,46 @@
|
||||
import os
|
||||
import sys
|
||||
import astroid
|
||||
import traceback
|
||||
|
||||
top_level = sys.argv[1].strip("/")
|
||||
stub_directory = sys.argv[2]
|
||||
|
||||
if top_level.count("/") == 1:
|
||||
top_level, module = top_level.split("/")
|
||||
modules = [module]
|
||||
else:
|
||||
modules = os.listdir(top_level)
|
||||
modules = sorted(modules)
|
||||
|
||||
ok = 0
|
||||
total = 0
|
||||
for module in modules:
|
||||
module_path = os.path.join(top_level, module)
|
||||
if not os.path.isdir(module_path):
|
||||
continue
|
||||
pyi_lines = []
|
||||
for class_file in os.listdir(module_path):
|
||||
class_path = os.path.join(module_path, class_file)
|
||||
with open(class_path, "r") as f:
|
||||
for line in f:
|
||||
if line.startswith("//| "):
|
||||
pyi_lines.append(line[4:])
|
||||
|
||||
stub_filename = os.path.join(stub_directory, module + ".pyi")
|
||||
print(stub_filename)
|
||||
stub_contents = "".join(pyi_lines)
|
||||
with open(stub_filename, "w") as f:
|
||||
f.write(stub_contents)
|
||||
|
||||
# Validate that the module is a parseable stub.
|
||||
total += 1
|
||||
try:
|
||||
astroid.parse(stub_contents)
|
||||
ok += 1
|
||||
except astroid.exceptions.AstroidSyntaxError as e:
|
||||
e = e.__cause__
|
||||
traceback.print_exception(type(e), e, e.__traceback__)
|
||||
print()
|
||||
|
||||
print(f"{ok} ok out of {total}")
|
Loading…
Reference in New Issue
Block a user