Closes#28 for python 2.
Apparently, process pools are not contexts in python 2.7.
On the other hand, in py2 you cannot pickle instance methods, so
you have to implement Pool tasks as independent functions.
Closes#28
Added:
* Async test (still missing one that includes the IOLoop)
* Async plugin under tests. To manually try async functionalities:
```
senpy -f tests/
```
It turns out setting "plugins" as a @list in the context causes the
"plugins" property to expand to its full name.
Removing the type causes a regression of #17, which I initially missed
because the test in #17 was wrong.
Closes#26
Does a weighted average of centroids.
If intensity sums to zero for a category, a 'neutral' category is used or 0 if it's not present. I'm not 100% sure this is the best approach, and the name of the "neutral" category perhaps should use some convention?
Note that if there are no categories present, then no VAD (or other dimensional) estimate is returned. It may be better to use the neutral centroid if it's present in this case also.
In index.html, there is a suggestion to try out the api with a link to "/api". Clicking that link results in a json error report - not ideal.
Instead, I added text suggesting that a use can find example api url's after clickgin "Analyse!".
* Improved debugging (back to using Flask's built-in mechanisms)
* Recursive model loading from json
* Added DEVPORT to Makefile
* Accept json-ld input. Closes#16
* Improved Exception handling in client
* Modified default plugin selection to only include analysis plugins
* More tests
Closes#12
* Shows only analysis plugins by default on /api/plugins
* Adds a plugin_type parameter to get other types of plugins
* default_plugin chosen from analysis plugins
pip install needs the VERSION file - `make version` will create that file
I also added the -U flag to pip install to force install (this is important if the user is playing with the code or trying out different older versions, as pip will not install if it thinks the git repo represents a version already installed or older than the one installed)
Installing depends on the VERSION file, so it raies an error if it is
installed in some other way.
ReadTheDocs installs the package so it can generate code docs.
This commit adds a default version 0.0
Since __init__ is imported by setup.py, future may not be installed yet.
Other options would be:
* Read VERSION -> and that code has to be duplicated in setup.py and
senpy (to avoid the import, once again)
* Eval version.py
* Do without versioning :)
* Changed the way modules are imported -> we can now use dotted
notation (e.g. senpy.plugins.conversion.centroids)
* Refactored ekman2vad's plugin -> generic centroids
* Added some basic tests