Artifact fa261911f4aa3c0d916b87e535c806b63f122402a157327a52f6e8ccf66c010b:

Wiki page [pluginconf] by mario on 2022-11-01 18:12:17.
D 2022-11-01T18:12:17.990
L pluginconf
N text/x-markdown
P f4c9b0c9dc430d2b32c7b456a747f7de1b077f3cc28d6b69a370f7617c06f968
U mario
W 1901
## pluginconf

Is a Python implementation of [plugin meta data](wiki/Plugin+Meta+Data).
It's somewhat fault tolerant (syntax/format variations supported), and
adds a module loader.

| proejct | info                                      |
|---------|-------------------------------------------|
| Repo    | [/tree/pluginconf/](tree/pluginconf)      |
| **API** | [/doc/trunk/html/](doc/trunk/html/)       |
| pypi    | **<https://pypi.org/project/pluginconf/>**|
| depends | re, pysimplegui, setuptools, flit         |
| compat  | Python ≥2.7                               |
| testing | 0.5, infreq                               |
| contrib | mail, fossil                              |
| announce| -                                         |

It [originated](http://fossil.include-once.org/streamtuner2/wiki/plugin+meta+data)
in streamtuner2. But has since gained some config dialog implementation of its own
(for modseccfg and other small tools). Simplifies configuration management, and has
a pretty terse API.

 * Only supports Python `#` comments.
 * Works from within pyz/zip packages.
 * Additionally wraps setup() and flit package builds.

### sample

    # api: python
    # title: example
    # description: shows plugin_meta() reading
    ##type: main
    # version: 0.1
    # 
    # Imagine this being a real Python script.

    import pluginconf
    meta = pluginconf.plugin_meta(filename=__file__)
    print(meta.title)

    pluginconf.plugin_base = ["plugins", "contrib"]
    print(pluginconf.all_plugin_meta())

There's also a simplified interface now ([pluginconf.bind](doc/tip/html/bind.html))
for most common use cases. Though of course it makes most sense if there are actual
script/extension downloads.

The double-escaped `##type:` is a concession to pylint. It's not actually
required, espcially if `#category:` or `#class:` could alternatively be
used for extension grouping.

Z 65c79a443e57ef76591b0533082f6d9d