Skip to main content

Reads meta comment block from source files

Project description

Provides plugin basename lookup and meta data extraction functionality. It’s meant for in-application feature and option management. The descriptor format (self-contained in each script) is basically:

# encoding: UTF-8
# api: python
# type: handler
# category: io
# title: Plugin configuration
# description: Read meta data, pyz/package contents, module locating
# version: 0.5
# priority: core
# docs: http://fossil.include-once.org/streamtuner2/wiki/plugin+meta+data
# config: { name: xyz, value: 1, type: bool, description: "Sets..." }
#
# Documentation goes here...

The key: value format is language-agnostic. It’s basically YAML in the topmost script comment. For Python only # hash comments are used. Defaults to rather common field names, encourages a documentation block, and an obvious config: { .. } spec for options and defaults.

What it’s not:

  • This is not another config reader/parser/storage class.

  • It doesn’t impose a specific module/plugin API.

  • Neither concerns itself with module/package loading. (How boring.)

What for then?

  • Separates code from meta data.

  • Avoids keeping seldomly used descriptors in variables.

  • Does away with cluttering external ini/json files with each module script.

  • Prevents hodgepodge and premature module loading just to inspect meta data.

  • Simplifies both internal use and meta info accessibility to external tools.

  • (pluginconf is less about a concrete implementation/code, but pushing a universal meta data format.)

Sample

See streamtuner2-2.1.7-dev.pyz for the original implementation.

Plugin enable/disable and option list in streamtuner2

pluginconf doesn’t yet bundle GUI construction (a Gtk handler exists, Tk alternative planned).

API

Configuration is currently just done by injecting:

plugin_base = ["myapp.plugins", "etc.extensions"]
module_base = "pluginconf"

Which declares module and plugin basenames. (Works for literal setups and within PYZ applications.)

plugin_meta( module= | fn= | src= | frame= )

Returns a meta data dictionary for the given module name, file, source code, or caller frame.:

{
  "title": "Compound★",
  "description": "...",
  "version": "0.1",
  "type": "channel",
  "category": "virtual",
  ...
}

module_list()

Returns basenames of available/installed plugins.

add_plugin_defaults()

Populates your config_options{} and plugin_states{} list. Can be a classic dict, or one of the hundreds of config parser/managers.

get_data( fn= )

Is mostly an alias for pkgutil.get_data(). Abstracts usage within PYZ packages a little.

argparse_map()

Provides a simpler way to specify ugly argparse definitions. And allows to amass options from plugins.

Status

It’s currently just an excerpt from streamtuner2.

  • Lacks the configuration GUI integration.

  • Or the plugin repo JSON loader.

  • Definitely needs customization prior use.

  • See some format documentation

It’s also not a proper wheel package; just quickly built per xpm:

fpm -s src -t pip pluginconf.py

(Yep, the description fields can double as packaging source. An additional # pack: specifier allows deb/rpm/arch/exe/pyzw/pip generation without tedious duplication of package descriptions.)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

pluginconf-0.5-py2-none-any.whl (10.1 kB view details)

Uploaded Python 2

File details

Details for the file pluginconf-0.5-py2-none-any.whl.

File metadata

File hashes

Hashes for pluginconf-0.5-py2-none-any.whl
Algorithm Hash digest
SHA256 ac817c8f10c48fe06fd5f5866f0b3d8971d42ba1f8b746d15865bf15be78a091
MD5 5cd88c35b4278630cc04deef36cab888
BLAKE2b-256 e542e933bb9b9e3036c802ed85382525c92c209d8b9b0940415d9715a2e9fd73

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page