Codemods¶
What are codemods¶
Codemods are a way to modify the codebase in a way that is not a breaking change. Codemods are built on [LibCST][libcst] and are written in [Python][python].
Simply said codemods allow one to manipulate python sourcecode (.py and .pyi) files in a structured way withouth the complexities and limitations of using regexes.
Provided codemods¶
You can list the codemods that are provided by micopython stubber using the libcst.tool’s list command.
python -m libcst.tool list
add_comment.AddComment - Add comment(s) to each file
merge_docstub.MergeCommand - Merge the type-rich information from a doc-stub into a firmware stub
To run a codemos use the codemod command:
python -m libcst.tool codemod <codemod.name> arguments ...
examples:
python -m libcst.tool codemod add_comment.AddComment --help
Get help on the add_comment codemod
add_comment.AddComment codemod¶
Addcomment is used to add comments to frozen modudels and modules that are copied from other sources in order to clarify their origin.
examples:
python -m libcst.tool codemod add_comment.AddComment --help
Get help on the add_comment codemodpython -m libcst.tool codemod add_comment.AddComment --comment="This is a comment" ./module.py
Add a comment to the module.py file.
--commentcan be specified multple times to add more comment lines.
The comment will be added below any existing comments at the top of the file, and will be prefixed with “# “ if it is not already present.
If the first comment line already exists in the source code, no comments will be addedpython -m libcst.tool codemod add_comment.AddComment --include-stubs --comment="MicroPython 1.18 frozen modules" ./stubs/micropython-v1_18-frozen
Add a comment to all the .py and .pyi files in the frozen module folder.
How to run a codemode from the commandline¶
merge_docstub.MergeCommand
examples:
python -m libcst.tool codemod merge_docstub.MergeCommand --help
Get help on the add_comment codemod
Where are codemods used¶
To merge the type-rich information from a doc-stub into a firmware stub
To create the different variants of
createstubs.pystubber make-variantsThis will use moding the code to:a memory efficient version (low memory)
a version that allows the MCU to restart without losing the progress ( very low memory)