Overview
| Comment: | shift warning for undiscoverable modules |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
18c5918a6d4cdba063ae15f344c155e4 |
| User & Date: | mario on 2022-11-01 23:30:26 |
| Other Links: | manifest | tags |
Context
|
2022-11-12
| ||
| 15:25 | introduce plugin_icon() for gui window check-in: 64c2c60322 user: mario tags: trunk | |
|
2022-11-01
| ||
| 23:30 | shift warning for undiscoverable modules check-in: 18c5918a6d user: mario tags: trunk | |
| 23:30 | predefine conf[plugins], note .base(__package__) as example check-in: 94218baefa user: mario tags: trunk | |
Changes
Modified pluginconf/__init__.py from [295be38bfd] to [8fbfda3a70].
| ︙ | ︙ | |||
183 184 185 186 187 188 189 |
return execute
return wrapped
# Resource retrieval
# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
@renamed_arguments({"fn": "filename", "gz": "gzip"})
| | | 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 |
return execute
return wrapped
# Resource retrieval
# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
@renamed_arguments({"fn": "filename", "gz": "gzip"})
def get_data(filename, decode=False, gzip=False, file_root=None, warn=True):
"""
Fetches file content from install path or from within PYZ
archive. This is just an alias and convenience wrapper for
pkgutil.get_data().
Utilizes the data_root as top-level reference.
| Parameters | | |
|
| ︙ | ︙ | |||
206 207 208 209 210 211 212 |
data = pkgutil.get_data(file_root or data_root, filename)
if gzip:
data = gzip_decode(data)
if decode:
return data.decode("utf-8", errors='ignore')
return str(data)
except: #(FileNotFoundError, IOError, OSError, ImportError, gzip.BadGzipFile):
| > | | 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 |
data = pkgutil.get_data(file_root or data_root, filename)
if gzip:
data = gzip_decode(data)
if decode:
return data.decode("utf-8", errors='ignore')
return str(data)
except: #(FileNotFoundError, IOError, OSError, ImportError, gzip.BadGzipFile):
if warn:
log.warning("get_data() didn't find '%s' in '%s'", filename, file_root)
# Plugin name lookup
# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
def module_list(extra_paths=None):
"""
Search through ./plugins/ (and other configured plugin_base
|
| ︙ | ︙ | |||
287 288 289 290 291 292 293 |
# Try via pkgutil first,
# find any plugins.* modules, or main packages
if module:
search = plugin_base + kwargs.get("extra_base", [])
for base, sfx in itertools.product(search, [".py", "/__init__.py"]):
try:
#log.debug(f"mod={base} fn={filename}.py")
| | > > | 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 |
# Try via pkgutil first,
# find any plugins.* modules, or main packages
if module:
search = plugin_base + kwargs.get("extra_base", [])
for base, sfx in itertools.product(search, [".py", "/__init__.py"]):
try:
#log.debug(f"mod={base} fn={filename}.py")
src = get_data(filename=module+sfx, decode=True, file_root=base, warn=False)
if src:
break
except (IOError, OSError, FileNotFoundError):
continue # plugin_meta_extract() will print a notice later
else:
log.warning("Found no source candidate for '%s'", module)
filename = module
# Real filename/path
elif filename and os.path.exists(filename):
src = open(filename).read(kwargs.get("max_length", 6144))
# Else get source directly from caller
|
| ︙ | ︙ |