* origin/dmw: (135 commits)
tests: just disable the test.
tests: hopefully fix this dumb test for the final time
docs: update Changelog; closes#477.
issue #477: use MITOGEN_INVENTORY_FILE everywhere.
issue #477: hacksmash weird 2.3 inventory_file var issue.
issue #477: travis.yml typo.
issue #477: fix sudo_args selection.
issue #477: one more conditional test.
issue #477: enable Ansible 2.3.3 CI.
issue #477: some more conditional tests.
docs: update Changelog.
issue #477 / ansible: avoid a race in async job startup.
issue #477: use assert_equal for nicer debug.
issue #477: fix source of become_flags on 2.3.
issue #477: add Connection.homedir test.
core: docstring tidyups.
core: ensure early debug messages are logged correctly.
core: log disconnection reason.
issue #477: target.file_exists() wrapper.
issue #477: introduce subprocess isolation.
ansible: docstring fixes.
issue #477: paper over Ansible 2.3 flag handling difference
issue #477: update forking_correct_parent for subprocess isolation
issue #477: shlex.split() in 2.4 required bytes input.
issue #477: get rid of perl JSON module requirement.
issue #477: Ansible 2.3 did not support gather_facts min subset.
issue #477: CentOS 5 image requires perl installed too.
issue #477: missing stub-su.py from 137f5fa6c5
issue #477: 2.4-compatible syntax.
issue #477: clearing glibc caches is not possible on Py2.4.
parent: --with-pydebug bootstrap could fail due to corrupted stream
issue #477: install simplejson for vanilla tests.
docs: update Changelog.
ansible: synchronize module needs '.docker_cmd' attr for Docker plugin.
issue #477: add basic su_test and Py2.4 polyfill.
issue #477: import updated Python build scripts
ci: don't use the TTY->pipe hack except on Travis where it's needed.
WIP first run of py24 CI
issue #477: initial Python 2.4.6 build for CI.
issue #477: enable git-lfs for tests/data/*.tar.bz2.
issue #477: import build script for Python 2.4.6.
issue #477: add mitogen_py24 CI test type.
issue #477: disable Django parts of module_finder_test on 2.4.
issue #477: clean up globals after unix_test.
issue #477: remove unused pytest bits from importer_test.
issue #477: remove fork use from unix_test.
parent: don't kill child when profiling=True
issue #485: import new throuhgput bench
issue #477: more fork removal
issue #477: Py2.4 startswith() did not support tuples.
issue #477: util/fakessh/two_three_compat fixes.
issue #477: call_function_test fixes for 2.4.
issue #477: promote setup_gil() to mitogen.utils
issue #477: fix lxc_test any polyfill import.
issue #477: stop using fork in responder_test.
issue #477: stop using fork in service_test.
issue #477: Python<2.5 ioctl() request parameter was signed.
issue #477: stop using fork() in parent_test, compatible enumerate().
issue #477: Popen.terminate() polyfill for Py2.4.
issue #477: stop using .fork() in router_test, one small 2.4 fix.
issue #477: document master.Router.max_message_size.
issue #477: old Py zlib did not include extended exception text.
issue #477: stop using router.fork() in receiver_test
issue #477: any() polyfill for lxc_test.
issue #477: replace type(e) -> __class__ for an exception
issue #477: old Mock does not throw side_effect exceptions from a list
issue #477: 2.4 stat() returned int timestamps not float.
issue #477: set().union(a, b, ..) unsupported on Py2.4.
issue #477: Logger.log(extra=) unsupported on Py2.4.
issue #477: fix another Threading.getName() call.
issue #477: %f date format requires Py2.6 or newer.
issue #477: make mitogen.fork unsupported on Py<2.6.
issue #477: Py2.4 dep scanner bytecode difference
Drop 'alpha' trove classifier
issue #477: fix another str/bytes mixup.
issue #477: blacklist 'thread' module to avoid roundtrip on 2.x->3.x
issue #477: fix 3.x failure in new target.set_file_mode() function.
issue #477: fix 3.x failure in new target.set_file_mode() function.
issue #477: fix 2 runner tests on Ansible 2.7.
issue #477: fix 3.x test regressions.
issue #477: fix new KwargsTest on Python 3.x.
issue #477: ModuleFinder now returns Unicode module names.
issue #477: Python3 does not have Pickler.dispatch.
issue #477: ModuleFinder test fixes.
issue #477: Ansible 2.3 compatible regression/all.yml.
issue #477: Ansible 2.3 requires placeholder module for assert_equals
issue #477: build a CentOS 5/Py2.4 container + playbook compat fixes.
issue #477: use PY24 constant rather than explicit test.
issue #477: backport mitogen.master to Python 2.4.
issue #477: parent: make iter_read() log disconnect reason.
issue #477: backport ansible_mitogen.runner to 2.4.
issue #477: backport various test modules to Python 2.4.
issue #477: backport ansible_mitogen/target.py to Python2.4
issue #477: add all() polyfill to custom_python_detect_environmnet
issue #477: polyfill partition() use in mitogen.parent.
issue #477: polyfill partition() use in mitogen.service.
issue #477: polyfill partition() use in mitogen.ssh.
issue #477: vendorize the last 2.4-compatible simplejson
issue #477: _update_linecache() must append newlines.
issue #415, #477: Poller must handle POLLHUP too.
...
Ansible 2.3/Python 2.4 work revealed there is no guarantee a slow target
will have written the initial job status file out before a fast
controller makes an initial check for it. Therefore, provide AsyncRunner
with a sender it should send a message to when the initial job file has
been written.
As a bonus, also catch and report exceptions happening early in
AsyncRunner, rather than leaving them to end up in -vvv output.
Since Python 2.4 fork is so defective, we must use subprocesses for
mitogen_task_isolation=fork. This has plenty of upside, since the long
term goal is to dump forking altogether. This allows a gentle
introduction of its replacement.
* python24:
WIP first run of py24 CI
issue #477: initial Python 2.4.6 build for CI.
issue #477: enable git-lfs for tests/data/*.tar.bz2.
issue #477: import build script for Python 2.4.6.
issue #477: add mitogen_py24 CI test type.
issue #477: disable Django parts of module_finder_test on 2.4.
issue #477: clean up globals after unix_test.
issue #477: remove unused pytest bits from importer_test.
issue #477: remove fork use from unix_test.
parent: don't kill child when profiling=True
issue #485: import new throuhgput bench
issue #477: more fork removal
issue #477: Py2.4 startswith() did not support tuples.
issue #477: util/fakessh/two_three_compat fixes.
issue #477: call_function_test fixes for 2.4.
issue #477: promote setup_gil() to mitogen.utils
issue #477: fix lxc_test any polyfill import.
issue #477: stop using fork in responder_test.
issue #477: stop using fork in service_test.
issue #477: Python<2.5 ioctl() request parameter was signed.
issue #477: stop using fork() in parent_test, compatible enumerate().
issue #477: Popen.terminate() polyfill for Py2.4.
issue #477: stop using .fork() in router_test, one small 2.4 fix.
issue #477: document master.Router.max_message_size.
issue #477: old Py zlib did not include extended exception text.
issue #477: stop using router.fork() in receiver_test
issue #477: any() polyfill for lxc_test.
issue #477: replace type(e) -> __class__ for an exception
issue #477: old Mock does not throw side_effect exceptions from a list
issue #477: 2.4 stat() returned int timestamps not float.
issue #477: set().union(a, b, ..) unsupported on Py2.4.
issue #477: Logger.log(extra=) unsupported on Py2.4.
issue #477: fix another Threading.getName() call.
issue #477: %f date format requires Py2.6 or newer.
issue #477: make mitogen.fork unsupported on Py<2.6.
issue #477: Py2.4 dep scanner bytecode difference
Drop 'alpha' trove classifier
issue #477: fix another str/bytes mixup.
issue #477: blacklist 'thread' module to avoid roundtrip on 2.x->3.x
issue #477: fix 3.x failure in new target.set_file_mode() function.
issue #477: fix 3.x failure in new target.set_file_mode() function.
issue #477: fix 2 runner tests on Ansible 2.7.
issue #477: fix 3.x test regressions.
issue #477: fix new KwargsTest on Python 3.x.
issue #477: ModuleFinder now returns Unicode module names.
issue #477: Python3 does not have Pickler.dispatch.
issue #477: ModuleFinder test fixes.
issue #477: Ansible 2.3 compatible regression/all.yml.
issue #477: Ansible 2.3 requires placeholder module for assert_equals
issue #477: build a CentOS 5/Py2.4 container + playbook compat fixes.
issue #477: use PY24 constant rather than explicit test.
issue #477: backport mitogen.master to Python 2.4.
issue #477: parent: make iter_read() log disconnect reason.
issue #477: backport ansible_mitogen.runner to 2.4.
issue #477: backport various test modules to Python 2.4.
issue #477: backport ansible_mitogen/target.py to Python2.4
issue #477: add all() polyfill to custom_python_detect_environmnet
issue #477: polyfill partition() use in mitogen.parent.
issue #477: polyfill partition() use in mitogen.service.
issue #477: polyfill partition() use in mitogen.ssh.
issue #477: vendorize the last 2.4-compatible simplejson
issue #477: _update_linecache() must append newlines.
issue #415, #477: Poller must handle POLLHUP too.
issue #477: Python 2.5 needs next() polyfill too.
issue #477: explicitly populate Py2.4 linecache from Importer.
issue #477: rename and add tests for polyfill functions.
issue #477: various core.py docstring cleanups.
issue #477: Ansible 2.3 module output format difference.
issue #477: Ansible 2.3 cannot use when: on an include.
issue #477: tests: use Ansible 2.3-compatible include rather than import
issue #477: serve up junk ansible/__init__.py just like Ansible.
issue #477: testlib: Py2.4 did not have BaseException.
issue #477: master: ability to override ModuleResponder output.
issue #477: yet another bug in core._partition().
issue #477: 2.4.x compat fixes for mitogen.service.
issue #477: Py2.4 lacks all().
issue #477: Ansible 2.3 had stricter arg spec format.
issue #477: make CallError serializable on 2.4.
issue #477: log full module name when SyntaxError occurs.
issue #477: more Py2.4 (str|unicode).partition().
issue #477: Py2.4 cannot tolerate unicode kwargs.
issue #477: Py2.4 lacks BaseException.
issue #477: Py2.4: enumerate() may return stopped threads.
issue #477: Py2.4: more unicode.rpartition() usage.
issue #477: Python 2.4 type(exc) returns old-style instance.
issue #477: Python 2.4 lacked str.partition.
issue #477: Python 2.4 lacked Thread.name.
issue #477: Python 2.4 lacked context managers.
issue #477: Python <2.5 did not have combined try/finally/except.
issue #477: older Ansibles had no vars plugin base class.
issue #477: Python <2.5 lacked any().
issue #477: Python <2.6 lacked rpartition().
issue #477: make CallError inherit from object for 2.4/2.5.
issue #477: 2.4/2.5 had no better poller than poll().