Merge branch 'parse_setup_cmd' of github.com:davidmarin/mrjob
Merge remote-tracking branch 'origin/setup_regression_tests'
Merge branch 'setup_regression_tests' of github.com:davidmarin/mrjob
Merge branch 'master' of github.com:Yelp/mrjob
Merge branch 'master' of github.com:Yelp/mrjob
added max_hours_idle option
we now infer region endpoints (fixes #658, #621)

factored a lot of AWS administrivia out of emr.py into aws.py
added max_hours_idle functionality, going to try it out
got create-job-flow to set an IsIdle alarm
Removed no explicit interpreter optimization

In rare cases, files that are installed via a setup.py seem to get their
executable bit set (even when they shouldn't). This causes the
emr._executable method to assume they are executable and causes it to
skip adding the interepretter to the command to be exectuted. If the
script in questions lacks (or has an incorrect) #! line then the job
will fail.

I decided the best way to fix this is safety first and always include
the interpreter.

Signed-off-by: Tim Henderson <tim.tadh@gmail.com>
Fix urlparse import in mrjob.fs.s3
Merge pull request #685 from irskep/fix-a-urlparse-import

Fix urlparse import in mrjob.fs.s3
Normalize urlparse behavior for s3, s3n, hdfs, mapreduce url schemes for all Python versions
Better solution to py2.7.4 urlparse behavior fix
Support allow_fragments in mrjob.parse.urlparse()
Reinstate @wraps, future proof against extremely unlikely func sig changes
Merge pull request #686 from irskep/fix-urlparse-2.7.4

Normalize urlparse fragment behavior across all supported Python versions
Merge pull request #683 from timtadh/bug/exec-get-steps-os-error-8

Bug/exec get steps os error 8
added comment explaining what we'd need to do to give CloudWatch the info
it needs to terminate idle job flows' master nodes, and why it doesn't
work anyway
added avshkop to __credits__, bumped version to 0.4.1-dev