This is the first developer preview release of streamparse 3.0. It has **not been tested extensively in production** yet, so we are looking for as much feedback as we can get from users who are willing to test it out.
You can install this release via pip with `pip install --pre streamparse==3.0.0.dev0`. It will not automatically install because it's a pre-release.
:warning: API Breaking Changes :warning:
- Topologies are now specified via a [Python Topology DSL](http://streamparse.readthedocs.org/en/master/topologies.html#topology-dsl) instead of the Clojure Topology DSL. This means you can/must now write your topologies in Python! Components can still be written in any language supported by Storm, of course. (Issues 84 and 136, PR 199, 226)
- The deprecated `Spout.emit_many` method has been removed. (pystorm/pystorm004dc27)
- As a consequence of using the new Python Topology DSL, all Bolts and Spouts that emit anything are expected to have the `outputs` attribute declared. It must either be a list of `str` or `Stream` objects, as described in the docs.
- We temporarily removed the `sparse run` command, as we've removed all of our Clojure code, and this was the only thing that had to still be done in Clojure. (Watch issue 213 for future developments)
Features
- Added `sparse slot_usage` command that can show you how balanced your topologies are across nodes. This is something that isn't currently possible with the Storm UI on its own. (PR 218)
- Can now specify `ssh_password` in `config.json` if you don't have SSH keys setup. Storing your password in plaintext is not recommended, but nice to have for local VMs. (PR 224, thanks motazreda)
- Now fully Python 3 compatible (and tested on up to 3.5), because we rely on [fabric3](https://pypi.python.org/pypi/Fabric3) instead of plain old [fabric](http://www.fabfile.org/) now. (4acfa2f)
- Now remove `_resources` directory after JAR has been created.
Other Changes
- Now rely on [pystorm](https://github.com/pystorm/pystorm) package for handling Multi-Lang IPC between Storm and Python. This library is essentially the same as our old `storm` subpackage with a few enhancements (e.g., the ability to use MessagePack instead of JSON to serialize messages). (Issue #174, Commits aaeb3e9 and 1347ded)
- All Bolt, Spout, and Topology-related classes are all available directly at the `streamparse` package level (i.e., you can just do `from streamparse import Bolt` now) (Commit b9bf4ae).
- `sparse kill` now will kill inactive topologies. (Issue 156)
- All examples now use the Python DSL
- The Kafka-JVM example has been cleaned up a bit, so now you can click on Storm UI log links and they'll work.