Internet radio browser GUI for music/video streams from various directory services.

⌈⌋ branch:  streamtuner2


Check-in [daf3f873bd]

Overview
Comment:fix for runtime error (dictionary changed size during iteration) on plugin alias: detection
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:daf3f873bdf84b9ca1fca9bba7a3e16a0a24cf0c
User & Date: mario on 2019-07-16 07:47:07
Other Links: manifest | tags
Context
2019-07-16
07:48
Dead-end update for radiolist.net channel (only titles+homepages now). check-in: 215234ddad user: mario tags: trunk
07:47
fix for runtime error (dictionary changed size during iteration) on plugin alias: detection check-in: daf3f873bd user: mario tags: trunk
2019-07-15
14:38
Add status messages for HTTP error responses check-in: c4b52b30d4 user: mario tags: trunk
Changes

Modified pluginconf.py from [b740a1a82c] to [df594147c1].

     1      1   # encoding: UTF-8
     2      2   # api: python
     3      3   # type: handler
     4      4   # category: io
     5      5   # title: Plugin configuration
     6      6   # description: Read meta data, pyz/package contents, module locating
     7         -# version: 0.6.8
            7  +# version: 0.6.9
     8      8   # priority: core
     9      9   # docs: http://fossil.include-once.org/streamtuner2/wiki/plugin+meta+data
    10     10   # config: -
    11     11   #
    12     12   # Provides plugin lookup and meta data extraction utility functions.
    13     13   # It's used to abstract module+option management in applications.
    14     14   # For consolidating internal use and external/tool accessibility.
................................................................................
   413    413               self.have[name] = meta
   414    414           # read plugins/*
   415    415           self.have.update(all_plugin_meta())
   416    416           # add core modules
   417    417           for name in core:
   418    418               self.have[name] = plugin_meta(module=name, extra_base=["config"])
   419    419           # aliases
   420         -        for name, meta in self.have.items():
          420  +        for name, meta in self.have.copy().items():
   421    421               if meta.get("alias"):
   422    422                   for alias in re.split("\s*[,;]\s*", meta["alias"]):
   423    423                       self.have[alias] = self.have[name]
   424    424   
   425    425       # basic plugin pre-screening (skip __init__, filter by api:,
   426    426       # exclude installed & same-version plugins)
   427    427       def valid(self, newpl, _log=lambda *x:0):