CHANGELOG
List of release changes.
0.43dev
Wed Jan 05, 2014
- migrated from mercurial to git and the project is now tracked via github.
- removed tayra and tayrakit dependencies from setup.py.
- Bug fix to PluginBase __new__() method.
- added library function to calculate age from certain date.
- removed explicit dependency on tayra and tayrakit
- updated relchk.sh to run on mac.
0.42dev
Wed Jun 12, 2013
- 3-way merge library tool added for scaffolding.
- minor release for pagd.
0.41dev
Wed May 29, 2013
- command plugins are not to be prefixed with Command. This is because
plugins are now referred by their canonical names.
- mainargs() function added to gather main-script parameters from command
line. Remaining parameters will be passed on to the sub-commands.
- Added a query_pluginr() method similar to query_plugins() method, except that
it accepts an additional pattern argument that will be matched with
plugin’s canonical-names. Only matching plugins will be instantiated and
returned as a list. query_pluginr() method is aliased as qpr()
- Sphinx documentation style. min-width of <body> tag is adjusted to
970px.
- Removed IHTTPRenderer interface from pluggdapps.web.interfaces
module, instead a similar interface ITemplate is added to
pluggdapps.interfaces module. IHTTPResponse plugins are expected to use
this new interface.
- webapp command/scaffold is renamed to newwebapp.
- Added a script bin/relchk.sh to check pre and post releases of pluggdapps
package.
0.4dev
Tue May 21, 2013
- scaffold source files must not end with .py, as python module, this will
throw errors while installing them via pip. To solve this problem,
.py files are suffixed with .tmpl, and utils.scaff module will remove the
suffix before creating the scaffold logic in target directory.
- Sub command confdoc is added to automatically generate a catalog of
configuration settings for plugins in pluggdapps, or any other, package.
- A new alias for query_plugin(), as qp(),
and query_plugins(), as qps() is now available.
- Cleaned up and refactored platform boot sequence.
- First all pluggdapps-packages are gathered from the environment.
- Then gathered packages are loaded.
- And during platform boot-time, package entry-point is called.
- added namespace for plugins. Every plugin name can be queried and accessed
by prefixing its class-name with package name. This is not the canonical
form for plugin-names. For example, plugin ConfigSqlite3DB defined
in pluggdapps package is to be accessed as, pluggdapps.ConfigSqlite3DB.
- Every instantiated plugin will now have a caname attribute that provides
the canonical name of the plugin. This is automatically populated by
component-arch during plugin instantiation.
- query_plugin() and query_plugins() method calls now supports interface
argument as string of interface-name, specified in canonical-form.
- plugincall(), pluginname() function is removed and canonical_name()
function is added in pluggdapps.plugin module. Note that canonical_name()
function is meant to be called only by logic inside PluginMeta class.
- pluggdapps.initialize() is now pluggdapps.callpackages().
- platform.Pluggdapps class has _preboot() local method to handle pre-booting
logic.
- Moved sphinx-documentation to docs/ directory. It is more work to manage two
separate versions of documentation. All articles under docs/ directory are
active and publishable, while documentation that are more specific to
internals of pluggdapps are under docs/dev/ directory.
0.3dev
Tue Mar 12, 2013
- Live debug. Interactive debugging to catch exception and introspect stack
frame via web.
- WebAdmin configuration application.
- ConfigSQlite3DB plugin for storing configuration settings in sqlite3
database.
- CatchAndDebug plugin re-writes tracebacks involving template tracebacks to
accurately point mis-behaving template text.
- package documentation using sphinx.
- routemapper configuration to add_views() is now handled by
matchrouter plugin.
- HTTP content negotiation abstracted into IHTTPNegotiator
interface and plugin by name httpnegotiator is supplied for
matchrouter.
- match_predicates() method added while resolving view-callables. Right now a
request resolution to view-callable follows three steps.
- URL pattern matching
- match_predicates on add_view arguments and request.
- Content_negotiation to pick a resource-variant.
- Order of calls to add_view() method is preserved while resolving request to
view-callable.
- added platform pre-booting feature.
- First load all pluggdapps packages to create a Pluggdapss() platform, then
call package() entry point in all pluggdapps packages and finally create
the platform.
- package loading during platform pre-booting should happen after all relevant
pluggdapps modules are imported in __init__.py
- Package loading during pluggdapps platform pre-boot is now handled by
an explicit call to pluggdapps.loadpackages() function.
- pluggdapps project static files - logos and css files.
- Documentation for configuration help.
- Gathering files for reloading is now moved to Serve sub-command plugin,
instead of handling it in platform classes.
- Improved interactive excaption handling in errorpage.ttl (WebAdmin plugin).
- WebAdmin configuration app is more or less functional.
- package() entry-point now can return ‘ttlplugins’ info.
- Automatic server restart now monitors .ini files and .ttl files as well.
- request.getparams and request.postparams now provide key,value pairs as
string.
- Added view callable for serving static files for an application.
- Configured cache directory for ttl template-modules.
- Added scaffolding plugin Env sub-command plugin to create pluggdapps
environment. This plugin provides the blue-print for paenv repository
which is now reponsible for setting up pluggdapps environment for all kind
of pluggdapps users.
0.2dev
Thu Dec 13, 2012
- Releasing DocRoot web-application, to server static web files, as part of
Pluggdapps package.
- Releasing IHTTPView plugin StaticFile to serve static files.
- New interface-specification defined for in-bound and out-bound
messages. And two plugins ResponseHeaders and GZipOutBound, implementing
IHTTPOutBound interface, are released.
- ETag computation is now part of response-context.
- max_age cache control configuration is supported by IHTTPView plugin
StaticFile.
- For DocRoot application, resource variant mapping can be defined as a python
list of dictionaries. This will be compiled and used while doing
content-negotiation with the client.
- Configurable index page and favicon for DocRoot web-application.
- Implementing Content negotiation protocol.
- Support for GZip content-encoding added.
- Add plaform method to log debug messages.
- Fixed http_fromdate() helper function.
- Fixed bugs, and cleaned up code, in HTTPEPollServer plugin and HTTPResponse
plugin
0.1dev
Fri Jan 13, 2012
First release. Provides,
- Component system using python meta-classing, a plugin system using
interface specifications and a wonderful configuration system.
- Pluggable sub-commands accessible via pa script.
- Web-framework to host more than one application in the same environment.
- Documentation available using sphinx.