Upgrade python project from paddle-1.x to paddle-2.0
Project description
Upgrade your python model from paddle-1.x to paddle-2.0
Change Spec
change_spec
is a python dict defined in spec.py, it defines the rules to refactor your code.
change_spec = {
"path.to.old_api": {
"alias": [
"path.to.old_api_alias1",
"path.to1.to2.old_api_alias2",
],
"update_to": "path.to.new_api",
"warning": "this api is deprecated.",
"args_list": ["arg1", "arg2"],
"args_change": [
["arg2", "arg2_rename"],
["arg3", ""],
["", "new_arg", "default_value"],
],
"args_warning": {"arg1":"warning message"},
"args_transformer": "_default_transformer",
},
}
alias
: a list of alias of main aliaspath.to.old_api
, all alias will be replaced with main alias.update_to
:path.to.old_api
will be replaced with this new api if specified.warning
: print specified warning message whenpath.to.old_api
is found. This field will be ignored ifupdate_to
is specified.args_list
: is argument list ofpath.to.old_api
.args_change
: a list of list. It contains following format:["arg", "new_arg"]
: rename a argument, e.g.func(arg=value)
->func(new_arg=value)
["arg", ""]
: remove a argument, e.g.func(arg=value)
->func()
["", "new_arg", "default_value"]
: add a new argument, e.g.func(arg=value)
->func(arg=value, new_arg=default_value)
args_warning
: print specified warning message for specified argument after applyargs_change
.args_transformer
: execute customized transformer on an AST node, it will be called after applyingargs_change
to do further refactor.
Install
- install with pip
pip install -U paddle1to2
paddle1to2 --help # show help
paddle1to2 --inpath /path/to/model.py # upgrade your model from paddle-1.x to paddle-2.0
- install from source
git clone https://github.com/T8T9/paddle1to2.git
cd paddle1to2
python setup.py sdist bdist_wheel
pip install -U ./dist/paddle1to2-*.whl
paddle1to2 --help # show help
paddle1to2 --inpath /path/to/model.py # upgrade your model from paddle-1.x to paddle-2.0
Develop
If you are a develop, and you want to test your code quickly, you can run the following command in project directory:
python -m paddle1to2 --inpath /path/to/model.py
#or
python paddle1to2/main.py --inpath /path/to/model.py
Moreover, if you want to run a specific refactor, you can use the following command:
python -m paddle1to2 --inpath /path/to/model.py --refactor <refactor_name>
use python -m paddle1to2 -h
to see full list of all refactors.
if you want to run all unittest, use command:
python -m unittest discover paddle1to2/tests/
# or
python setup.py test
or use command:
python -m unittest paddle1to2/tests/test_refactor.py
to run specific test file.
Other Tools
- find pattern of specific code snippet, usage:
find_pattern 'import paddle'
find_pattern
command will traverse all nodes in AST, if you see code snippet you want, type in 'y' to get pattern.
- find match node in specific code for specific pattern, usage:
find_match_node -ss 'import paddle' -ps 'any'
you can also specify "--print-results" option to got representation of matched node, specify "--print-lineno" to got line number of matched code.
Acknowledgements
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for paddle1to2-0.0.14-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dba9239823d4e7742b752d887f12d592429f67d9c5159d89496292818af3aa12 |
|
MD5 | 260a4b61e4c65ffb7d4fb49b01f2df30 |
|
BLAKE2b-256 | 0bfad381a7a43a3d939d6b4337b26348d4a0bee83f2fe169b860d43758c47d53 |