debian-forge/osbuild/util
Achilleas Koutsou 94cdcecafb util: add new module for reading and writing toml
The toml module situation in Python is a bit of a mess.  Different
distro versions have different modules packaged or built-in, sometimes
with different capabilities (no writing).  Since we need to support
reading and writing toml files both on the host (osbuild internals,
sources, inputs) and in the build root (stages), let's centralise the
import decision making in an internal utility module that covers all
cases.

Two of the modules we might import (tomli and tomllib) don't support
writing, so we need to either import a separate module (tomli_w) or
raise an exception when dump() is called without a write-capable module.

The tomli and tomllib modules require files be opened in binary mode
(not text) while the others require text mode.  So we can't wrap the
toml.load() and toml.dump() functions directly; the caller doesn't know
which module it will be using.  Let's keep track of the mode based on
which import succeeded and have our functions open the files as needed.

The wrapper functions are named load_from_file() and dump_to_file() to
avoid confusion with the load() and dump() functions that take a file
object.

See also #1847
2024-08-21 19:26:31 +02:00
..
__init__.py util: mark as module 2020-04-21 17:00:04 +02:00
bls.py util: tweak bls.options_append() support no/multiple options 2024-02-28 10:37:01 +01:00
checksum.py osbuild: run isort on all files 2022-09-12 13:32:51 +02:00
chroot.py util/chroot: rename context class to ChrootProcDevSys 2024-08-21 18:50:05 +02:00
containers.py util/containers: remount containers store as rw 2024-03-11 18:15:24 +02:00
ctx.py osbuild: run isort on all files 2022-09-12 13:32:51 +02:00
fscache.py fscache: use remove_lru() to reclaim space when the cache is full 2024-02-06 17:16:48 +01:00
jsoncomm.py osbuild: make inputs map() function use fd for reply as well 2024-08-13 13:13:24 +02:00
linux.py osutil: add Libc.futimens() wrapper for futimens() call 2023-12-12 22:57:21 +01:00
lorax.py autopep8: Update with changes to make autopep8 -a -a -a happy 2023-08-10 13:04:14 +02:00
lvm2.py autopep8: Update with changes to make autopep8 -a -a -a happy 2023-08-10 13:04:14 +02:00
mnt.py util/mnt: add a remount paramater 2024-03-11 18:15:24 +02:00
osrelease.py osbuild: run isort on all files 2022-09-12 13:32:51 +02:00
ostree.py lint: sort import(s) 2024-03-05 16:10:27 +01:00
parsing.py util: Rename function 2024-03-25 18:26:53 +01:00
path.py util/path: new clamp mtime function 2022-12-15 13:10:35 +00:00
pe32p.py util: add module to parse PE32+ files 2022-11-14 20:10:59 +01:00
rhsm.py util: fix typo in get_consumer_secrets 2022-12-09 21:46:43 +01:00
rmrf.py ostuild: fix new pylint error with latest pylint version 2023-11-15 18:31:56 +01:00
runners.py Revert "runners: clean up temp files before exiting the runner" 2024-05-20 11:55:24 -07:00
selinux.py osbuild: add support to exclude_paths to setfiles() 2024-03-20 18:05:51 +01:00
term.py osbuild: run isort on all files 2022-09-12 13:32:51 +02:00
toml.py util: add new module for reading and writing toml 2024-08-21 19:26:31 +02:00
types.py osbuild: fix optional-types 2022-07-13 17:31:37 +02:00
udev.py osbuild: run isort on all files 2022-09-12 13:32:51 +02:00