* To avoid an incompatible patch that landed in Twisted trunk after the
16.1.1 release, autobahn pinned their requirement on Twisted to
be <=16.1.1 . However Twisted reverted the patch before making a
release. The new 16.2.0 is fine. Since autobahn has this pin, and
since pip doesn't do full dependency resolution, I must add the pin
too, so that 'pip install magic-wormhole' can work. I plan to remove
this pin as soon as autobahn does the same upstream.
https://github.com/crossbario/autobahn-python/issues/680
* A previous version of autobahn had a bug where it tried to import
something that wasn't actually depended upon, exposed by having pynacl
installed. Installing 'pytrie' manually fixed it. This doesn't seem to
be a problem anymore, so I'm removing the manual dependency.
Use 'autobahn[twisted]' just to be sure (plain 'autobahn' worked fine
for py27, but maybe it's needed for py35 or something).
Autobahn is failing to do some conditional import and accidentally
depends upon pytrie (for some encrypted WAMP thing) when we didn't ask
for it (https://github.com/crossbario/autobahn-python/issues/604). This
commit also adds a manual dependency on pytrie (which is pretty small)
until the upstream bug is fixed.
The core Wormhole exchange will retain a blocking/non-Twisted
implementation, but the file-transferring Transit class is going to be
Twisted-only (maybe Twisted+asyncio). I want to improve the
protocol (add more parallelism, reduce round-trips), and the blocking
implementation is a messy bundle of threads and ick.
When this process is done (eventually), I'll be splitting out the
blocking Wormhole class into a separate distribution, which doesn't
depend upon Twisted.
The latest Twisted fixes the web.Agent code we need for proper async
support. There's still a daemonization bug that prevents 'wormhole
server start' from succeeding (it hangs).
* use modern/portable "next(iter)" instead of "iter.next()"
* use six.moves.input() instead of raw_input()
* tell requests' Response.iter_lines that we want str, not bytes
We used to use twisted.python.usage.Options, hence we depended upon
Twisted. Now we depend upon "argparse" instead, which is in the py2.7
stdlib (and on pypi for 2.6). This package will still (eventually)
provide Twisted support, but applications which need it will already
express a dependency on twisted themselves, so by removing the
dependency here, we make life easier for applications that don't use it.