We adopt PEP8 as the preferred code style.
We use the following toolsseed isortseed isortseed isort for linting and formatting:
Style configurations of yapf and isort can be found in setup.cfg.
We use pre-commit hook that checks and formats for flake8, yapf, seed-isort-config, isort, trailing whitespaces,
fixes end-of-files, sorts requirments.txt automatically on every commit.
The config for a pre-commit hook is stored in .pre-commit-config.
After you clone the repository, you will need to install initialize pre-commit hook.
pip install -r requirements/tests.txt
From the repository folder
pre-commit install
After this on every commit check code linters and formatter will be enforced.
If you want to use pre-commit to check all the files, you can run
pre-commit run --all-files
If you only want to format and lint your code, you can run
make linter
There are mainly three test levels:
tests/trainers/test_trainer_base.pytests/pipelines/test_image_matting.pyDefault test level is 0, which will only run those cases of level 0, you can set test level
via environment variable TEST_LEVEL.
# run all tests
TEST_LEVEL=2 make test
# run important functional tests
TEST_LEVEL=1 make test
# run core UT and basic functional tests
make test
When writing test cases, you should assign a test level for your test case using
following code. If left default, the test level will be 0, it will run in each
test stage.
File test_module.py
from modelscope.utils.test_utils import test_level
class ImageCartoonTest(unittest.TestCase):
@unittest.skipUnless(test_level() >= 1, 'skip test in current test level')
def test_run_by_direct_model_download(self):
pass
TEST_LEVELpython tests/path/to/your_test.py
make tests
After you start a code review, ci tests will be triggered which will run test cases with level 1
Daily regression tests will run all cases at 0 am each day using master branch.
As we need a lot of data for testing, including images, videos, models. We use git lfs
to store those large files.
brew install git-lfs
git lfs install
for centos, please download rpm from git-lfs github release website
and then execute
sudo rpm -ivh your_rpm_file_name.rpm
git lfs install
for ubuntu
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
git lfs track "*.png"
data/test/ folder, you can make directories if you need.git add data/test/test.png
git commit -m "xxx"
To pull data from remote repo, just as the same way you pull git files.
git pull origin branch_name
git pull origin master --rebase
git checkout -b dev/my-dev-branch
note: replace "dev/my-dev-branch" with a meaningful branch name. We recommend using a new dev branch for every change.git add .
git commit -m "[to #42322933] my commit message"
note: you may replace [to #42322933] with your own aone issue id (if any). git push --set-upstream origin dev/my-dev-branch
Note that you may push multiple times to the same branch with 'git push' commands later.make whl