summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/allnoconfig_simpler.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/examples/allnoconfig_simpler.py b/examples/allnoconfig_simpler.py
new file mode 100644
index 0000000..b80e79a
--- /dev/null
+++ b/examples/allnoconfig_simpler.py
@@ -0,0 +1,23 @@
+# This is a simpler version of allnoconfig.py, corresponding to how the C
+# implementation does it. Setting a user value that's not in the assignable
+# range of the symbol (between get_lower_bound() and get_upper_bound(), or,
+# equivalently, not in get_assignable_values()) is OK; the value will simply
+# get truncated downwards or upwards as determined by the visibility and
+# selects.
+
+# Note: This version will be very slow since Kconfiglib invalidates all
+# dependent symbols for each set_value() call. This does not happen for
+# load_config(), which instead invalidates all symbols once after the
+# configuration has been loaded. This is OK for load_config() since nearly all
+# symbols will tend to be affected anyway.
+
+import kconfiglib
+import sys
+
+conf = kconfiglib.Config(sys.argv[1])
+
+for sym in conf:
+ if sym.get_type() in (kconfiglib.BOOL, kconfiglib.TRISTATE):
+ sym.set_value("n")
+
+conf.write_config(".config")