Tasks BaseTools Python3 Support - jljusten/tianocore GitHub Wiki
This task updating the existing Python-base BaseTools to run under both Python 2.7 and Python 3.0.
Not started.
- AutoGen
- Common
- CommonDataClass
- Workspace
- Table
- build
- BPDG
- Eot
- GenFds
- GenPatchPcdTable
- PatchPcdValue
- Trim
- UPT
- Difficulty: Complex
- Language: Python
- Suggested by:
- Required completion date: End of year, 2020
Issues:
- Individual tools use shared modules that will need to be ported prior to
- Current sources contain depricated content
- Files need to conform to the Python Coding Style Guideline and pass pylint
- Several standard Python module functions are overridden for handling long
- Several filenames are duplicated in different directory trees
- Some imports are ambiguous
Location of Source Code:
[[email protected]:tianocore/edk2.git BaseTools/Source/Python]
Requirements:
-
Update content to conform to Coding Style (see below)>
-
Modules must pass pylint - a custom pylint RC file is available.
-
Python files must start with the standard header
-
Update code, replacing deprecated modules with newer modules.
-
First line python code statement in each file must be:
```from
- All tools are 32-bit versions of the tools, in order to create Win32
executables.
Python 2.7.x
- must be able to run with 2.7.3 or later Python 3.x.x
- must be able to run with 3.4.x or later pip
- recommended version is 8.1.1
- used to install other modules logilab-common
- 1.2.0 or later logilab-astng
- 0.24.3 or later pylint
- 1.5.5 or later astroid
- 1.4.5 or later uuid
- 1.20 pywin32
- 217 or later antlr-python-runtime
- 3.0.1 ONLY cx-Freeze
- 4.3.4 or later
Python PEP-8 Coding Style Guidelines
Python PEP-257 Docstring Conventions
- Maximum line length for code: 100 characters
- Maximum line length for comments and docstrings: 72 characters
- Regular Expressions allow camel case: [a-zA-Z_][a-zA-Z0-9_]{2,30}$
- Const Regular Expressions: (([gA-Z_][a-zA-Z0-9_]*)|(__.*__))$
- min-similarity-lines=10
- ignored-classes=SQLObject
- generated-members=REQUEST,acl_users,aq_parent
- dummy-variables-rgx=_|dummy
- max-args=12
- max-locals=25
- max-returns=10
- max-branches=25
- max-statements=100
- max-attributes=15
- min-public-methods=0
- deprecated-modules=regsub,string,TERMIOS,Bastion,rexec,optparse
- Python 2.7.x requires all files to be endcoded on disk as ASCII, not UTF-8.
All modules must be able to execute from source with both Python 2.7.x and Python 3.x.x.
The following two files should be removed:
Common\MigrationUtilities.py
Common\PyUtility.pyd