Changelog¶
0.4.4¶
Triumphant return of the readthedocs page
Tutorial
Major step forward documenting the Python library, along with multiple tiny tweaks to the Python codebase. Mainly cleaned up & removed unused methods.
Fix disappearing
feature_parametersin new analysis dialog and on the configure pageAdd CLI commands to interact with the git repository
For end users that may not want to deal with git
Throwback to the “mandatory update system” of the olden days:
update to new release versions if any are available, but when you
actually want to.
Setup ~ CLI commands
Deployment scripts execute
shapeflow/setup/post-deploy.pyas a setup step
Make
cairoan optional dependencyNo longer depend on
OnionSVG; design file rendering is now handled byshapeflow.design.onions.Peelerandshapeflow.design.render.Renderer.SVG layer operations (
lxml) are decoupled from renderingRenderers are selected based on the system configuration:
cairois still the go-to option, but we can now fall back onWand(ImageMagick) and the commandline interface of a Windows installation of Inkscape.
Fix
tkinterdialog windows not appearing on Windowstkintercan’t handle not being in the main thread, which was the case in the “updated” version of :module:shapeflow.util.filedialog.Should not have deprecated subprocess-based filedialog script; it was added in the first place to solve this issue.
Made subprocess-based file dialogs complain on cancel / error; this bug stayed unnoticed because they used to be silent about it.
0.4.3¶
Add frontend tests
And also some general clean-up and fixes in the process
Deprecate caching contexts and related functionality
We’re assuming that caching will never be performed in advance of an analysis. Instead, we rely on caching during an analysis to speed up any subsequent analyses.
Separate internal routing from general
FlaskroutingAPI routes are organised based on
shapeflow.core.DispatcherDispatcherinstances map addresses toEndpointinstancesNested
Dispatcherinstances in their own address spaceThe top-level
Dispatcherhas a flat address space of all endpoints, which it uses to resolve requestsThe Flask server delegates requests to this top-level
Dispatcherfor addresses starting with"/api/"
Expose
Endpointinstances with ownexpose()method instead of global functionDeprecate
RootInstance/BackendInstanceImplementation should not care about routing
Note
This means that methods of
BackendInstancesubclass instances nested inVideoAnalyzercan no longer be exposed atEndpointinstances. Only methods of objects directly associated withDispatcherinstances can be exposed.More sensible API structure
Global top-level API at
shapeflow.api.apiGroup related functionality
api: general stuffapi.fs: dealing with files and directoriesapi.cache: dealing with the cacheapi.db: dealing with the databaseapi.va: dealing with analyzersapi.va.<id>: dealing with a specific analyzer
Open analyzers are handled by new
DispatcherinstancesAnalyzer methods should be exposed with the placeholder
Dispatcheratapi.va.__id__By themselves, methods exposed in this way can’t be invoked since they don’t have an instance yet
New analyzers are opened from
_VideoAnalyzerManagerand given anidUse shorter
idstrings for URL readabilityAssociate newly instantiated
VideoAnalyzerwith a newDispatcherinstance atapi.va.<id>This
Dispatcher, binds methods exposed inapi.va.__id__to theVideoAnalyzerinstanceNow these methods can be invoked when requested by
/api/va/<id>/<endpoint>
Included in top-level address space at launch to reduce address resolution overhead
Mirror API structure in frontend
api.js
0.4.2¶
Subcommands to divide up the functionality of the library.
Implemented to make accessing backend schemas easier when testing the frontend; instead of starting the whole server, run
sf.py dump <path>. The server is now a subcommand,serve.Potentially useful commands to add in the future
analyzecould run a single analysis as specified in a .json filecheckoutcould set the repository to a specific versionsetupcould replace in-repo setup scripts
It may also be interesting to make these commands accessible from the frontend
Some major naming changes
Entry point script
shapeflow.pybecomessf.pyServer-related stuff renamed from
maintoserver
0.4.1¶
Tutorials and high-level documentation
0.4.0¶
Clean-up git history¶
The first year of development was at isimple, named after the technology/the team that used it for some reason.
Because the original repository was a bit too large, its git history was rewritten after moving to shapeflow. The old repository is still up to preserve this history and to support legacy deployment scripts.
Removed…
Compiled JavaScript from
ui/dist/An accidentally huge screenshot, mysteriously named datetime
All in all, the repo went from almost 30MB to about 6MB.
bfg --delete-folders dist .
bfg --delete-files datetime .
bfg --delete-files img.bmp .
git reflow expire --expire=now --all
git --prune=now --aggressive
Note
A short summary of the major changes in the older versions will be added soon.