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.
--comment
can 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.py
stubber make-variants
This 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)