What's SAWS?
So what's under the hood?
AWS CLI
Python-powered official AWS CLI. Does the heavy lifting communicating with AWS and feeds completions to SAWS
. The AWS CLI uses boto, the official Python SDK for AWS.
Check out completer.py for more details on how awscli
is used.
Python-Prompt Toolkit
Python-prompt-toolkit simplifies the creation of interactive command lines.
Used throughout the SAWS
source code.
Pygments
Pygments is a syntax highlighter for SAWS
commands and output.
Check out lexer.py for more details on how pygments
is used.
Unit Tests
SAWS
uses:
- unittest
- Check out the tests folder
- pexpect
- Used in test_cli.py to run, interact, and stop the CLI
- Not supported on Windows
- Mock
- Could be intimidating at first, here's a helpful tutorial
If you want to play around the development environment, run the following:
$ git clone https://github.com/donnemartin/saws.git
$ pip install -e .
$ pip install -r requirements-dev.txt
$ saws
Run unit tests in your active Python environment:
$ python tests/run_tests.py
I'm also a fan of:
While working on SAWS
I came across 'behavior driven development' with behave--interesting!
Tox
Tox is used to automate and standardize testing in Python 2.6, 2.7, 3.3, 3.4, and pypy.
I've found Tox + Travis CI to be a great combination. To hook up tox to Travis CI, add the following to your .travis.yml:
install:
- travis_retry pip install tox
after_success:
- codecov
To run locally:
$ tox
The tox.ini file specifies:
- Python environments
- Travis CI arguments
- Dependencies
- Test commands
Coverage Tests
Codecov provides code coverage. SAWS
uses codecov-python to interact with CodeCov.
Coveralls is also very popular and can be used with python-coveralls and coveralls-python.
To hook up to Codecov to Travis CI, add the following to your .travis.yml:
install:
- pip install codecov
after_success:
- codecov
TravisCI
Travis CI provides continuous integration.
The .travis.yml file specifies:
- Python versions
- OS (I had trouble getting Mac OS X to work)
- Install dependencies
- Script to run
- What to do after running (send the coverage stats to Codecov)
Sphinx
Sphinx is a great documentation tool. It takes your docstrings and turns it into documentation that can be hosted on sites such as Readthedocs.org and PyPi.
Here's a handy article to learn more about how to build and upload your Sphinx docs to PyPi:
Run the following to build the docs:
$ python setup.py build_sphinx
PyPI and Setup.py
Setup.py contains information on versioning, package requirements, and other useful info for PyPI.
This allows end-users to install with a one-liner:
$ pip install saws
A virtualenv
install is recommended to avoid potential permissions or package dependency issues.
Check out this article to learn more about posting to PyPI.
Git-Flow
Git-Flow is a set of Git extensions that provide high-level repository operations for the popular git branching model.