Thank you for your interest in contributing to SkyPilot! We welcome and value
all contributions to the project, including but not limited to:
We use GitHub to track issues and features. For new contributors, we recommend looking at issues labeled "good first issue".
# SkyPilot requires python >= 3.6.
# You can just install the dependencies for
# certain clouds, e.g., ".[aws,azure,gcp,lambda]"
pip install -e ".[all]"
pip install -r requirements-dev.txt
To run smoke tests (NOTE: Running all smoke tests launches ~20 clusters):
# Run all tests except for AWS and Lambda Cloud
pytest tests/test_smoke.py
# Terminate a test's cluster even if the test failed (default is to keep it around for debugging)
pytest tests/test_smoke.py --terminate-on-failure
# Re-run last failed tests
pytest --lf
# Run one of the smoke tests
pytest tests/test_smoke.py::test_minimal
# Only run managed spot tests
pytest tests/test_smoke.py --managed-spot
# Only run test for AWS + generic tests
pytest tests/test_smoke.py --aws
# Change cloud for generic tests to aws
pytest tests/test_smoke.py --generic-cloud aws
For profiling code, use:
pip install tuna # Tuna is used for visualization of profiling data.
python3 -m cProfile -o sky.prof -m sky.cli status # Or some other command
tuna sky.prof
format.sh
.Tested:
section to describe relevant tests performed.These are suggestions, not strict rules to follow. When in doubt, follow the style guide.
TODO(author_name)
/FIXME(author_name)
instead of blank TODO/FIXME
. This is critical for tracking down issues. You can write TODOs with your name and assign it to others (on github) if it is someone else's issue.assert
for debugging or proof-checking purposes. This is because exception messages usually contain more information..format()
for short expressions to increase readability.class MyClass:
instead of class MyClass(object):
. The later one was a workaround for python2.x.abc
module for abstract classes to ensure all abstract methods are implemented.if typing.TYPE_CHECKING:
.export SKYPILOT_DISABLE_USAGE_COLLECTION=1
to disable usage logging.export SKYPILOT_DEBUG=1
to show debugging logs (use logging.DEBUG level).export SKYPILOT_MINIMIZE_LOGGING=1
to minimize logging. Useful when trying to avoid multiple lines of output, such as for demos.Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》