.. _contributing feature: ============================= New Features ============================= Moto has a script that can automatically provide the scaffolding for a new service, and for adding new features to an existing service. This script does all the heavy lifting of generating template code, by looking up the API specification of a given `boto3` method and adding the necessary code to mock it. Please try it out by running: .. sourcecode:: bash export AWS_DEFAULT_REGION="us-east-2" python scripts/scaffold.py The script uses the `click`-module to assists with autocompletion. - Use Tab to auto-complete the first suggest service, or - Use the up and down-arrows on the keyboard to select something from the dropdown - Press enter to continue An example interaction: .. sourcecode:: bash $ python scripts/scaffold.py Select service: codedeploy ==Current Implementation Status== [ ] add_tags_to_on_premises_instances ... [ ] create_deployment ... [ ] update_deployment_group ================================= Select Operation: create_deployment Initializing service codedeploy creating moto/codedeploy creating moto/codedeploy/models.py creating moto/codedeploy/exceptions.py creating moto/codedeploy/__init__.py creating moto/codedeploy/responses.py creating moto/codedeploy/urls.py creating tests/test_codedeploy creating tests/test_codedeploy/test_server.py creating tests/test_codedeploy/test_codedeploy.py inserting code moto/codedeploy/responses.py inserting code moto/codedeploy/models.py Remaining steps after development is complete: - Run scripts/implementation_coverage.py, - Run scripts/update_backend_index.py. .. note:: The implementation coverage script is used to automatically update the full list of supported services. .. warning:: In order to speed up the performance of MotoServer, all AWS URL's that need intercepting are indexed. When adding/replacing any URLs in `{service}/urls.py`, please run `python scripts/update_backend_index.py` to update this index.