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
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
* Added interactive debugging
* Better exception logging
* More tests for errors
* Added ONBUILD to dockerfile
Now creating new images based on senpy's is as easy as:
```from senpy:<version>```. This will automatically mount the code to
/senpy-plugins and install all dependencies
* Added /data as a VOLUME
* Added `--use-wheel` to pip install both on the image and in the
auto-install function.
* Closes#9
Break compatibilitity:
* Removed ability to (de)activate plugins through the web
Bug-fixes and improvements:
* Closes#5
* Closes#1
* Adds Client (beta)
* Added several schemas
* Lighter string representation -> should avoid delays in the analysis
with plugins that have 'heavy' attributes
Backwards-incompatible changes:
* Context in headers by default
* All schemas include a "@type" argument that is used for autodetection
in the client
... And possibly many more, this is still <1.0
* The API has also changed, there are new parameters to send the
context as part of the headers.
* Improved tests
* PEP8 compliance (despite the line about gevent)
Moved from Yapsy again (it is not flexible enough), now we use a
custom solution.
The activation and deactivation of plugins is asynchronous, so
that plugins that take a long time don't interfere with the rest.