kconfiglib
index
/Users/ulf/devel/opera/kconfig/kconfiglib.py

Kconfiglib is a Python library for scripting, debugging, and extracting
information from Kconfig-based configuration systems. Features include the
following:
 
 - Symbol values and properties can be looked up and values assigned
   programmatically.
 - .config files can be read and written.
 - Expressions can be evaluated in the context of a Kconfig configuration.
 - Relations between symbols can be quickly determined, such as finding all
   symbols that reference a particular symbol.
 - Symbol values are automatically cached and reevaluated only when needed.
 - Highly compatible with the C Kconfig implementation:
   * Generates a .config file that is character-for-character identical (modulo
     header) to the one generated by the C implementation (mconf) when fed each
     architecture/defconfig pair in the kernel and asked to generate a
     configuration. This includes nonsensical pairings such as powerpc with
     arch/x86/configs/x86_64_defconfig, for a total of 9096 combinations as of
     Linux 2.6.38-rc3.
   * Also generates a .config that is character-for-character identical to the
     one generated by mconf for all architectures when no .config is supplied.
   * The 'make allyesconfig' and 'make allnoconfig' implementations below
     generate output character-for-character identical to the C implementation
     for all architectures.
 
   See scripts/kconfig/kconfigtest.py for the Kconfiglib test suite.
 
For the Linux kernel, scripts should be run with
 
$ make scriptconfig SCRIPT=<path to script>
 
to ensure that the environment (SRCARCH, ARCH, and KERNELVERSION) is set up
correctly. Alternative architectures can be specified like for other 'make
*config' targets:
 
$ make scriptconfig ARCH=mips SCRIPT=<path to script>
 
The script will receive the name of the Kconfig file to load in sys.argv[1] (as
of Linux 2.6.38-rc3 this is always "Kconfig" from the kernel top-level
directory).
 
To get an interactive Python prompt with Kconfiglib preloaded, use
 
$ make iscriptconfig ARCH=<architecture>
 
Kconfiglib requires Python 2. For (i)scriptconfig the command to run the Python
interpreter can be passed in the environment variable PYTHONCMD (defaults to
'python').
 
Learning to use the library is probably easiest by looking at a few examples,
reading the documentation, and experimenting. The API is designed to be
intuitive and easy to use.
 
===============================================================================
Example 1: loading a configuration and a .config and printing information about
a symbol.
 
import kconfiglib
import sys
 
# Create a Config object representing a Kconfig configuration (any number of
# these can be created -- the library has no global state).
conf = kconfiglib.Config(sys.argv[1])
 
# Load values from a .config file. 'srctree' is an environment variable set by
# the Linux makefiles to the top-level directory of the kernel tree. It needs
# to be used here for the script to work with alternative build directories
# (specified e.g. with O=).
conf.load_config("$srctree/arch/x86/configs/i386_defconfig")
 
# Print some information about a symbol (the Config class implements
# __getitem__() to provide a handy syntax for getting symbols).
print conf["SERIAL_UARTLITE_CONSOLE"]
 
Output for ARCH=i386:
Symbol SERIAL_UARTLITE_CONSOLE
Type           : bool
Value          : "n"
User value     : (no user value)
Visibility     : "n"
Is choice item : false
Is defined     : true
Is from env.   : false
Is special     : false
Prompts:
 "Support for console on Xilinx uartlite serial port" if SERIAL_UARTLITE = y (value: "n")
Default values:
 (no default values)
Selects:
 SERIAL_CORE_CONSOLE if SERIAL_UARTLITE = y (value: "n")
Reverse dependencies:
 (no reverse dependencies)
Additional dependencies from enclosing menus and if's:
 HAS_IOMEM (value: "y")
Locations: drivers/serial/Kconfig:913
 
===============================================================================
Example 2: evaluate an expression in the context of a configuration (here we
           could load a .config as well).
 
import kconfiglib
import sys
 
conf = kconfiglib.Config(sys.argv[1])
print conf.eval("(TRACE_IRQFLAGS_SUPPORT || PPC32) && STACKTRACE_SUPPORT")
 
Output for ARCH=mips:
y
 
===============================================================================
Example 3: print the names of all symbols that are referenced but never defined
           in the current configuration together with the locations where they
           are referenced. Integers being included in the list is not a bug, as
           these need to be treated as symbols per the design of Kconfig.
 
import kconfiglib
import sys
 
conf = kconfiglib.Config(sys.argv[1])
 
for sym in conf.get_symbols():
    if not sym.is_defined():
        print sym.get_name()
        for (filename, linenr) in sym.get_ref_locations():
            print "  {0}:{1}".format(filename, linenr)
 
Output for ARCH=i386:
MACH_NET2BIG_V2
  drivers/leds/Kconfig:365
MACH_OMAP3517EVM
  sound/soc/omap/Kconfig:84
ARCH_OMAP16XX
  drivers/pcmcia/Kconfig:271
  drivers/char/hw_random/Kconfig:117
  drivers/watchdog/Kconfig:210
  drivers/rtc/Kconfig:694
SOC_JZ4740
  sound/soc/codecs/Kconfig:30
MACH_AT91SAM9261EK
  drivers/video/Kconfig:1055
PPC_83xx
  drivers/mtd/nand/Kconfig:463
  drivers/watchdog/Kconfig:951
  drivers/usb/Kconfig:58
  drivers/edac/Kconfig:221
PPC_PSERIES
  init/Kconfig:999
  drivers/pci/hotplug/Kconfig:146
  drivers/scsi/Kconfig:964
  drivers/scsi/Kconfig:975
  drivers/scsi/Kconfig:989
  drivers/net/Kconfig:1353
  drivers/serial/Kconfig:1261
  drivers/char/Kconfig:628
  drivers/char/Kconfig:712
  drivers/char/Kconfig:729
... (lots more)
 
===============================================================================
Example 4: print the names of all symbols that reference a particular symbol
           (there's also a method get_selected_symbols() for determining
           just selection relations).
 
import kconfiglib
import sys
 
conf = kconfiglib.Config(sys.argv[1])
 
x86 = conf["X86"]
for sym in conf:
    if x86 in sym.get_referenced_symbols():
        print sym.get_name()
 
Output for ARCH=i386:
AUDITSYSCALL
PCSPKR_PLATFORM
OPROFILE_EVENT_MULTIPLEX
GCOV_PROFILE_ALL
SCHED_OMIT_FRAME_POINTER
MEMORY_HOTPLUG
PM_TRACE_RTC
ACPI
ACPI_AC
ACPI_BATTERY
ACPI_VIDEO
ACPI_PROCESSOR_AGGREGATOR
ACPI_NUMA
X86_PM_TIMER
ACPI_SBS
ACPI_APEI
ACPI_APEI_GHES
INTEL_IDLE
XEN_PCIDEV_FRONTEND
EISA_VLB_PRIMING
EISA_VIRTUAL_ROOT
HOTPLUG_PCI_COMPAQ
HOTPLUG_PCI_IBM
HOTPLUG_PCI_CPCI_ZT5550
HOTPLUG_PCI_CPCI_GENERIC
MTD_SC520CDP
... (lots more)
 
===============================================================================
Example 5: print a tree of all items in the configuration.
 
import kconfiglib
import sys
 
def print_with_indent(s, indent):
    print (" " * indent) + s
 
def print_items(items, indent):
    for item in items:
        if item.is_symbol():
            print_with_indent("config {0}".format(item.get_name()), indent)
        elif item.is_menu():
            print_with_indent('menu "{0}"'.format(item.get_title()), indent)
            print_items(item.get_items(), indent + 2)
        elif item.is_choice():
            print_with_indent('choice', indent)
            print_items(item.get_items(), indent + 2)
        elif item.is_comment():
            print_with_indent('comment "{0}"'.format(item.get_text()), indent)
 
conf = kconfiglib.Config(sys.argv[1])
print_items(conf.get_top_level_items(), 0)
 
Output for ARCH=i386:
...
config ARCH
config KERNELVERSION
config CONSTRUCTORS
config HAVE_IRQ_WORK
config IRQ_WORK
menu "General setup"
  config EXPERIMENTAL
  config BROKEN
  config BROKEN_ON_SMP
  config LOCK_KERNEL
  config INIT_ENV_ARG_LIMIT
  config CROSS_COMPILE
  config LOCALVERSION
  config LOCALVERSION_AUTO
  config HAVE_KERNEL_GZIP
  config HAVE_KERNEL_BZIP2
  config HAVE_KERNEL_LZMA
  config HAVE_KERNEL_XZ
  config HAVE_KERNEL_LZO
  choice
    config KERNEL_GZIP
    config KERNEL_BZIP2
    config KERNEL_LZMA
    config KERNEL_XZ
    config KERNEL_LZO
  config SWAP
  config SYSVIPC
  config SYSVIPC_SYSCTL
  config POSIX_MQUEUE
  config POSIX_MQUEUE_SYSCTL
  config BSD_PROCESS_ACCT
  config BSD_PROCESS_ACCT_V3
...
 
===============================================================================
Example 6: this does the same thing as entering "make menuconfig" and
           immediately saving and exiting.
 
import kconfiglib
import os
import sys
 
conf = kconfiglib.Config(sys.argv[1])
 
if os.path.exists(".config"):
    conf.load_config(".config")
else:
    defconfig = conf.get_defconfig_filename()
    if defconfig is not None:
        print "Using " + defconfig
        conf.load_config(defconfig)
 
conf.write_config(".config")
 
===============================================================================
Example 7: as a more complex example, this is a reimplementation of allnoconfig
           (verified to produce identical output to 'make allnoconfig' for all
           ARCHes). The looping is done in case setting one symbol to "n"
           allows other symbols to be set to "n" (due to dependencies).
 
import kconfiglib
import sys
 
conf = kconfiglib.Config(sys.argv[1])
 
while True:
    done = True
 
    for sym in conf:
        # Choices take care of themselves for allnoconfig, so we only need to
        # worry about non-choice symbols
        if not sym.is_choice_item():
            lower_bound = sym.get_lower_bound()
 
            # If we can assign a lower value to the symbol (where "n", "m" and
            # "y" are ordered from lowest to highest), then do so.
            # lower_bound() returns None for symbols whose values cannot
            # (currently) be changed, as well as for non-bool, non-tristate
            # symbols.
            if lower_bound is not None and \
               kconfiglib.tri_less(lower_bound, sym.calc_value()):
 
                sym.set_value(lower_bound)
 
                # We just changed the value of some symbol. As this may affect
                # other symbols, keep going.
                done = False
 
    if done:
        break
 
conf.write_config(".config")
 
===============================================================================
Example 8: here's allyesconfig (also verified), which is a bit more involved
           as we need to handle choices in two different modes ("y", i.e.
           one-is-y-rest-is-n, and "m", i.e.
           any-number-of-symbols-are-m-rest-are-n).  The looping is in case
           setting one symbol to "y" (or "m") allows the value of other symbols
           to be raised.
 
import kconfiglib
import sys
 
conf = kconfiglib.Config(sys.argv[1])
 
# Get a list of all symbols that are not in choices
non_choice_syms = [sym for sym in conf.get_symbols() if
                   not sym.is_choice_item()]
 
while True:
    done = True
 
    # Handle symbols outside of choices
 
    for sym in non_choice_syms:
        upper_bound = sym.get_upper_bound()
 
        # See corresponding comment for allnoconfig implementation
        if upper_bound is not None and \
           kconfiglib.tri_less(sym.calc_value(), upper_bound):
            sym.set_value(upper_bound)
            done = False
 
    # Handle symbols within choices
 
    for choice in conf.get_choices():
 
        # Handle choices whose visibility allow them to be in "y" mode
 
        if choice.get_visibility() == "y":
            selection = choice.get_selection_from_defaults()
            if selection is not None and \
               selection is not choice.get_user_selection():
                selection.set_value("y")
                done = False
 
        # Handle choices whose visibility only allow them to be in "m" mode
 
        elif choice.get_visibility() == "m":
            for sym in choice.get_items():
                if sym.calc_value() != "m" and \
                   sym.get_upper_bound() != "n":
                    sym.set_value("m")
                    done = False
 
 
    if done:
        break
 
conf.write_config(".config")
 
 
Credits: written by Ulf "Ulfalizer" Magnusson
 
Send bug reports, suggestions (any missing APIs that would make your life
easier?) and other feedback to kconfiglib@gmail.com .

 
Modules
       
os
re
string
sys

 
Classes
       
exceptions.Exception(exceptions.BaseException)
Internal_Error
Kconfig_Syntax_Error
Config
Item
Choice(Item, _HasVisibility)
Comment
Menu
Symbol(Item, _HasVisibility)

 
class Choice(Item, _HasVisibility)
    Represents a choice statement. A choice can be in one of three modes:
"n", "m" and "y". "n" mode is for non-visible choices and optional choices
with no symbol selected; "m" means any number of symbols can be set to "m"
while the rest will be "n" (only tristate choices can be in this mode); and
"y" means one symbol will be "y" while the rest will be "n" (the most
common case). The visibility is an upper bound on the mode, and the mode
changes automatically as values are assigned to symbols within the
choice.
 
 
Method resolution order:
Choice
Item
_HasVisibility

Methods defined here:
__init__(self)
Choice constructor -- not intended to be called directly by
kconfiglib clients.
__str__(self)
Returns a string containing various information about the choice
statement.
calc_mode(self)
Returns the mode of the choice. See the class documentation for
an explanation of modes.
get_actual_items(self)
A quirk (perhaps better described as a bug -- at least for symbols)
of kconfig is that you can put items within a choice that will not be
considered members of the choice insofar as selection is concerned.
This happens for example if one symbol within a choice 'depends on' the
symbol preceding it, or if you put non-symbol items within choices.
 
This function gets a list of the "proper" elements of the choice,
excluding such items.
get_def_locations(self)
Returns a list of (filename, linenr) tuples, where filename (string)
and linenr (int) represent a location where the choice is defined. For
the vast majority of choices this list will only contain one element,
but its possible for named choices to be defined in multiple
locations.
get_items(self)
Gets all items contained in the choice in the same order as within
the configuration ("items" instead of "symbols" since choices and
comments might appear within choices. This only happens in one place as
of Linux 2.6.38-rc3, in drivers/usb/gadget/Kconfig).
get_name(self)
For named choices, returns the name. Returns None for unnamed
choices. No named choices appear anywhere in the kernel Kconfig
files as of Linux 2.6.38-rc3.
get_parent(self)
Returns the menu or choice statement that contains the choice, or
None if the choice is at the top level. Note that if statements are
treated as syntactic sugar and do not have an explicit class
representation.
get_referenced_symbols(self, refs_from_enclosing=False)
See Symbol.get_referenced_symbols().
get_selection(self)
Returns the symbol selected (either by the user or through
defaults), or None if either no symbol is selected or the mode is not
"y".
get_selection_from_defaults(self)
Like Choice.get_selection(), but acts as if no symbol has been
selected by the user and no 'optional' flag is in effect.
get_type(self)
Returns the type of the choice. See Symbol.get_type().
get_user_selection(self)
If the choice is in "y" mode and has a user-selected
symbol, returns that symbol. Otherwise, returns None.
get_visibility(self)
Returns the visibility of the choice statement: one of "n", "m" or
"y". This acts as an upper limit on the mode of the choice (though bool
choices can only have the mode "y"). See the class documentation for an
explanation of modes.
is_optional(self)
Returns True if the symbol has the optional flag set (and so will default
to "n" mode). Otherwise, returns False.

Methods inherited from Item:
is_choice(self)
Returns True if the item is a choice, otherwise False. Short for
isinstance(item, kconfiglib.Choice).
is_comment(self)
Returns True if the item is a comment, otherwise False. Short for
isinstance(item, kconfiglib.Comment).
is_menu(self)
Returns True if the item is a menu, otherwise False. Short for
isinstance(item, kconfiglib.Menu).
is_symbol(self)
Returns True if the item is a symbol, otherwise False. Short for
isinstance(item, kconfiglib.Symbol).

 
class Comment(Item)
    Represents a comment statement.
 
  Methods defined here:
__init__(self)
Comment constructor -- not intended to be called directly by
kconfiglib clients.
__str__(self)
Returns a string containing various information about the comment.
get_location(self)
Returns the location of the comment as a (filename, linenr) tuple,
where filename is a string and linenr an int.
get_parent(self)
Returns the menu or choice statement that contains the comment, or
None if the comment is at the top level. Note that if statements are
treated as syntactic sugar and do not have an explicit class
representation.
get_referenced_symbols(self, refs_from_enclosing=False)
See Symbol.get_referenced_symbols().
get_text(self)
Returns the text of the comment.

Methods inherited from Item:
is_choice(self)
Returns True if the item is a choice, otherwise False. Short for
isinstance(item, kconfiglib.Choice).
is_comment(self)
Returns True if the item is a comment, otherwise False. Short for
isinstance(item, kconfiglib.Comment).
is_menu(self)
Returns True if the item is a menu, otherwise False. Short for
isinstance(item, kconfiglib.Menu).
is_symbol(self)
Returns True if the item is a symbol, otherwise False. Short for
isinstance(item, kconfiglib.Symbol).

 
class Config
    Represents a Kconfig configuration.
 
  Methods defined here:
__getitem__(self, key)
Returns the symbol with name 'name'. Raises KeyError if the symbol
does not appear in the configuration.
__init__(self, filename='Kconfig', base_dir='$srctree', print_warnings=True, print_undef_assign=False)
Creates a new Config object, representing a Kconfig configuration.
Raises Kconfig_Syntax_Error on syntax errors.
 
filename (default: "Kconfig") -- The base Kconfig file of the
         configuration. For the Linux kernel, this should usually be be
         "Kconfig" from the top-level directory, as environment
         variables will make sure the right Kconfig is included from
         there (usually arch/<architecture/Kconfig). If you are using
         kconfiglib via 'make scriptconfig' the filename of the
         correct Kconfig will be in sys.argv[1].
 
base_dir (default: "$srctree") -- The base directory relative to which
        'source' statements within Kconfig files will work. For the
        Linux kernel this should be the top-level directory of the
        kernel tree. $-references to environment variables will be
        expanded.
 
        The environment variable 'srctree' is set by the Linux makefiles
        to the top-level kernel directory. A default of "." would not
        work if an alternative build directory is used.
 
print_warnings (default: True) -- Set to True if warnings related to
               this configuration should be printed to stderr. This can
               be changed later with Config.set_print_warnings(). It is
               provided as a constructor argument since warnings might
               be generated during parsing.
 
print_undef_assign (default: False) -- Set to True if informational
                   messages related to assignments to undefined symbols
                   should be printed to stderr for this configuration.
                   Can be changed later with
                   Config.set_print_undef_assign().
__iter__(self)
Convenience function for iterating over the set of all defined
symbols in the configuration, used like
 
for sym in conf:
    ...
 
The iteration happens in the order of definition within the Kconfig
configuration files. Symbols only referred to but not defined will not
be included, nor will the special symbols n, m, and y. If you want to
include such symbols as well, see config.get_symbols().
__str__(self)
Returns a string containing various information about the Config.
eval(self, s, transform_m=False)
Returns the value of the expression 's' -- where 's' is represented
as a string -- in the context of the configuration. Raises
Kconfig_Syntax_Error if syntax errors are detected in 's'.
 
For example, if FOO and BAR are tristate symbols at least
one of which has the value "y", then
config.eval("y && (FOO || BAR)") => "y"
 
Note that this functions always yields a tristate value. To get the
value of non-bool, non-tristate symbols, use calc_value().
 
transform_m (default: False) --
  Within conditional expressions (those following e.g. 'if' and
  'depends on') "m" is rewritten as "m" && MODULES internally by the C
  implementation and by kconfiglib, so that MODULES needs to be enabled
  for the expression to be true. Pass True here if you want that to
  happen; otherwise, pass False.
get_arch(self)
Mostly Linux specific. Returns the value the environment variable
ARCH had at the time the Config instance was created, or None if ARCH
was not defined. This corresponds to the architecture, with values such
as "i386" or "mips".
get_base_dir(self)
Returns the base directory for 'source' statements, passed as an
argument to Config.__init__().
get_choices(self)
Returns a list containing all choice statements in the
configuration, in the order they appear in the Kconfig files.
get_comments(self)
Returns a list containing all comments in the configuration, in the
order they appear in the Kconfig files.
get_config_header(self)
Returns the (uncommented) textual header of the .config file most
recently loaded with load_config(). Returns None if no .config file has
been loaded or if the most recently loaded .config file has no header.
The header comprises all lines up to but not including the first line
that either
 
1. Does not start with "#"
2. Has the form "# CONFIG_FOO is not set."
get_defconfig_filename(self)
Returns the name of the defconfig file, which is the first existing
file in the list given in a symbol having 'option defconfig_list' set.
$-references to symbols will be expanded ("$FOO bar" -> "foo bar" if
FOO has the value "foo"). Returns None in case of no defconfig file.
Setting 'option defconfig_list' on multiple symbols currently results
in undefined behavior.
 
If the environment variable 'srctree' was set when the Config was
created, get_defconfig_filename() will first look relative to that
directory before looking in the current directory. See
Config.__init__().
get_kconfig_filename(self)
Returns the name of the (base) kconfig file this configuration was
loaded from.
get_mainmenu_text(self)
Returns the text of the 'mainmenu' statement (with $-references to
symbols replaced by symbol values), or None if the configuration has no
'mainmenu' statement.
get_menus(self)
Returns a list containing all menus in the configuration, in the
order they appear in the Kconfig files.
get_symbol(self, name)
Returns the symbol with name 'name', or None if no such symbol
appears in the configuration. An alternative shorthand is conf[name],
where conf is a Config instance, though that will instead raise
KeyError if the symbol does not exist.
get_symbols(self, all_symbols=True)
Returns a list of symbols from the configuration. An alternative for
iterating over all defined symbols (in the order of definition) is
 
for sym in config:
    ...
 
which relies on Config implementing __iter__() and is equivalent to
 
for sym in config.get_symbols(False):
    ...
 
all_symbols (default: True) -- If True, all symbols - including special
            and undefined symbols - will be included in the result, in
            an undefined order. If False, only symbols actually defined
            and not merely referred to in the configuration will be
            included in the result, and will appear in the order that
            they are defined within the Kconfig configuration files.
get_top_level_items(self)
Returns a list containing the items (symbols, menus, choice
statements and comments) at the top level of the configuration -- that
is, all items that do not appear within a menu or choice. The items
appear in the same order as within the configuration.
load_config(self, filename, reset=True)
Loads symbol values from a file in the familiar .config format.
 
filename -- The .config file to load. $-references to environment
            variables will be expanded. For scripts to work even
            when an alternative build directory is used with the
            Linux kernel, you need to refer to the top-level kernel
            directory with "$srctree".
 
reset (default: True) -- True if the configuration should replace
      the old configuration; False if it should add to it.
reset(self)
Resets the values of all symbols, as if Config.load_config() or
Symbol.set_value() had never been called.
set_print_undef_assign(self, print_undef_assign)
Determines whether informational messages related to assignments to
undefined symbols should be printed to stderr for this configuration.
 
print_undef_assign -- If True, such messages will be printed.
set_print_warnings(self, print_warnings)
Determines whether warnings related to this configuration (for
things like attempting to assign illegal values to symbols) should be
printed to stderr.
 
print_warnings -- True if warnings should be
                  printed, otherwise False.
write_config(self, filename, header=None)
Writes out symbol values in the familiar .config format.
 
filename -- The filename under which to save the configuration.
 
header (default: None) -- A textual header that will appear at the
       beginning of the file, with each line commented out
       automatically. None means no header.

 
class Internal_Error(exceptions.Exception)
    Exception raised for internal errors.
 
 
Method resolution order:
Internal_Error
exceptions.Exception
exceptions.BaseException
__builtin__.object

Data descriptors defined here:
__weakref__
list of weak references to the object (if defined)

Methods inherited from exceptions.Exception:
__init__(...)
x.__init__(...) initializes x; see x.__class__.__doc__ for signature

Data and other attributes inherited from exceptions.Exception:
__new__ = <built-in method __new__ of type object at 0xefc40>
T.__new__(S, ...) -> a new object with type S, a subtype of T

Methods inherited from exceptions.BaseException:
__delattr__(...)
x.__delattr__('name') <==> del x.name
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__reduce__(...)
__repr__(...)
x.__repr__() <==> repr(x)
__setattr__(...)
x.__setattr__('name', value) <==> x.name = value
__setstate__(...)
__str__(...)
x.__str__() <==> str(x)
__unicode__(...)

Data descriptors inherited from exceptions.BaseException:
__dict__
args
message

 
class Item
    Base class for symbols and other Kconfig constructs. Subclasses are
SymbolChoiceMenu, and Comment.
 
  Methods defined here:
is_choice(self)
Returns True if the item is a choice, otherwise False. Short for
isinstance(item, kconfiglib.Choice).
is_comment(self)
Returns True if the item is a comment, otherwise False. Short for
isinstance(item, kconfiglib.Comment).
is_menu(self)
Returns True if the item is a menu, otherwise False. Short for
isinstance(item, kconfiglib.Menu).
is_symbol(self)
Returns True if the item is a symbol, otherwise False. Short for
isinstance(item, kconfiglib.Symbol).

 
class Kconfig_Syntax_Error(exceptions.Exception)
    Exception raised for syntax errors.
 
 
Method resolution order:
Kconfig_Syntax_Error
exceptions.Exception
exceptions.BaseException
__builtin__.object

Data descriptors defined here:
__weakref__
list of weak references to the object (if defined)

Methods inherited from exceptions.Exception:
__init__(...)
x.__init__(...) initializes x; see x.__class__.__doc__ for signature

Data and other attributes inherited from exceptions.Exception:
__new__ = <built-in method __new__ of type object at 0xefc40>
T.__new__(S, ...) -> a new object with type S, a subtype of T

Methods inherited from exceptions.BaseException:
__delattr__(...)
x.__delattr__('name') <==> del x.name
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__getitem__(...)
x.__getitem__(y) <==> x[y]
__getslice__(...)
x.__getslice__(i, j) <==> x[i:j]
 
Use of negative indices is not supported.
__reduce__(...)
__repr__(...)
x.__repr__() <==> repr(x)
__setattr__(...)
x.__setattr__('name', value) <==> x.name = value
__setstate__(...)
__str__(...)
x.__str__() <==> str(x)
__unicode__(...)

Data descriptors inherited from exceptions.BaseException:
__dict__
args
message

 
class Menu(Item)
    Represents a menu statement.
 
  Methods defined here:
__init__(self)
Menu constructor -- not intended to be called directly by
kconfiglib clients.
__str__(self)
Returns a string containing various information about the menu.
get_depends_on_visibility(self)
Returns the visibility the menu gets from 'depends on' conditions.
This is propagated to subitems.
get_items(self, recursive=False)
Returns a list containing the items (symbols, menus, choice
statements and comments) in in the menu, in the same order that the
items appear within the menu.
 
recursive (default: False) -- True if items contained in items within
                              the menu should be included
                              recursively (preorder).
get_location(self)
Returns the location of the menu as a (filename, linenr) tuple,
where filename is a string and linenr an int.
get_parent(self)
Returns the menu or choice statement that contains the menu, or
None if the menu is at the top level. Note that if statements are
treated as syntactic sugar and do not have an explicit class
representation.
get_referenced_symbols(self, refs_from_enclosing=False)
See Symbol.get_referenced_symbols().
get_symbols(self, recursive=False)
Returns a list containing the symbols in the menu, in the same order
that they appear within the menu.
 
recursive (default: False) -- True if symbols contained in items within
                              the menu should be included
                              recursively.
get_title(self)
Returns the title text of the menu.
get_visible_if_visibility(self)
Returns the visibility the menu gets from its 'visible if'
condition. "y" is the menu has no 'visible if' condition.

Methods inherited from Item:
is_choice(self)
Returns True if the item is a choice, otherwise False. Short for
isinstance(item, kconfiglib.Choice).
is_comment(self)
Returns True if the item is a comment, otherwise False. Short for
isinstance(item, kconfiglib.Comment).
is_menu(self)
Returns True if the item is a menu, otherwise False. Short for
isinstance(item, kconfiglib.Menu).
is_symbol(self)
Returns True if the item is a symbol, otherwise False. Short for
isinstance(item, kconfiglib.Symbol).

 
class Symbol(Item, _HasVisibility)
    Represents a configuration symbol.
 
 
Method resolution order:
Symbol
Item
_HasVisibility

Methods defined here:
__init__(self)
Symbol constructor -- not intended to be called directly by
kconfiglib clients.
__str__(self)
Returns a string containing various information about the symbol.
calc_default_value(self)
Calculates the value the symbol would get purely from defaults,
ignoring visibility (assumed to be "y"), reverse dependencies
(selects), user values and dependencies from enclosing menus and if's.
Returns None if no default would kick in.
calc_value(self)
Calculate and return the value of the symbol.
get_assignable_values(self)
For bool and tristate symbols, returns a list containing the values
the symbol can be given via Symbol.set_value() (see get_lower_bound()/
get_upper_bound()). Returns the empty list for symbol that cannot be
given a new value (that cannot be assigned a value that won't be
truncated/ignored that is), as well as for non-bool, non-tristate and
special symbols. Usage example:
 
if "m" in sym.get_assignable_values():
    sym.set_value("m")
get_config(self)
Returns the Config instance that represents the configuration this
symbol is from.
get_def_locations(self)
Returns a list of (filename, linenr) tuples, where filename (string)
and linenr (int) represent a location where the symbol is defined. For
the vast majority of symbols this list will only contain one element.
For the following Kconfig, FOO would get two entries: the lines marked
with *.
 
config FOO *
    bool "foo prompt 1"
 
config FOO *
    bool "foo prompt 2"
get_help(self)
Returns the help text of the symbol, or None if the symbol has no
help text.
get_lower_bound(self)
Returns the lowest value the symbol can be given via
Symbol.set_value() (that will not be truncated): one of "n" or "m",
arranged from lowest to highest. This corresponds to the lowest value
the symbol could be given in the 'make menuconfig' interface. Returns
None if the symbol is not visible (would not appear in the 'make
menuconfig' interface), or if the symbol's value cannot be changed (if
it is selected to "y", or to "m" if its visibility also happens to be
"m"). Also returns None for non-bool, non-tristate symbols and special
symbols.
 
See also the tri_less*() and tri_greater*() functions, which could
come in handy here.
get_name(self)
Returns the name of the symbol.
get_parent(self)
Returns the menu or choice statement that contains the symbol, or
None if the symbol is at the top level. Note that if statements are
treated as syntactic sugar and do not have an explicit class
representation.
get_ref_locations(self)
Returns a list of (filename, linenr) tuples, where filename (string)
and linenr (int) represent a location where the symbol is referenced in
the configuration. For example, the lines marked by * would be included
for FOO below:
 
config A
    bool
    default BAR || FOO *
 
config B
    tristate
    depends on FOO *
    default m if FOO *
 
if FOO *
    config A
        bool "A"
endif
 
config FOO (definition not included)
    bool
get_referenced_symbols(self, refs_from_enclosing=False)
Returns the set() of all symbols referenced by this symbol. For
example, the symbol defined by
 
config FOO
    bool
    prompt "foo" if A && B
    default C if D
    depends on E
    select F if G
 
references the symbols A through G.
 
refs_from_enclosing (default: False) -- If True, the symbols
                    referenced by enclosing menus and if's will be
                    included in the result.
get_selected_symbols(self)
Returns the set() of all symbols X for which this symbol has a
'select X' or 'select X if Y' (regardless of whether Y is satisfied or
not). This is a subset of the symbols returned by
get_referenced_symbols().
get_sibling_items(self, include_self=False)
Returns a list containing all items (symbols, menus, choice
statements and comments) that are in the same menu or choice statement
as the symbol, or that are also at the top level in case the symbol is
at the top level. The items appear in the same order as within the
configuration.
 
include_self (default: False) -- True if the symbol itself should be
                                 included in the result, otherwise
                                 False.
get_sibling_symbols(self, include_self=False)
Returns a list containing all symbols that are in the same menu or
choice statement as the symbol, or that are also at the top level in
case the symbol is at the top level.
 
include_self (default: False) -- True if the symbol itself should be
                                 included in the result, otherwise
                                 False.
get_type(self)
Returns the type of the symbol: one of UNKNOWN, BOOL, TRISTATE,
STRING, HEX, or INT. These are defined at the top level of the module,
so you'd do something like
 
if sym.get_type() == kconfiglib.STRING:
    ...
get_upper_bound(self)
Returns the highest value the symbol can be given via
Symbol.set_value() (that will not be truncated): one of "m" or "y",
arranged from lowest to highest. This corresponds to the highest value
the symbol could be given in the 'make menuconfig' interface. Returns
None if the symbol is not visible (would not appear in the 'make
menuconfig' interface), or if the symbol's value cannot be changed (if
it is selected to "y", or to "m" if its visibility also happens to be
"m"). Also returns None for non-bool, non-tristate symbols and special
symbols.
 
See also the tri_less*() and tri_greater*() functions, which could
come in handy here.
get_user_value(self)
Returns the value assigned to the symbol in a .config or via
Symbol.set_value() (provided the value was valid for the type of the
symbol). Returns None in case of no user value.
get_visibility(self)
Returns the visibility of the symbol: one of "n", "m" or "y". For
bool and tristate symbols, this is an upper bound on the value users
can set for the symbol. For other types of symbols, a visibility of "n"
means the user value will be ignored. A visibility of "n" corresponds
to not being visible in the 'make *config' interfaces.
has_ranges(self)
Returns True if the symbol is of type INT or HEX and has ranges that
limits what values it can take on, otherwise False.
is_choice_item(self)
Returns True if the symbol is in a choice statement and is an actual
choice item (see Choice.get_actual_items()); otherwise, returns
False.
is_choice_selection(self)
Returns True if the symbol is contained in a choice statement and is
the selected item, otherwise False. Equivalent to 'sym.is_choice_item()
and sym.get_parent().get_selection() is sym'.
is_defined(self)
Returns False if the symbol is referred to in the Kconfig but never
actually defined, otherwise True.
is_from_environment(self)
Returns True if the symbol gets its value from the environment.
Otherwise, returns False.
is_modifiable(self)
Returns True or False depending on if the value of symbol could be
modified by setting a user value with Symbol.set_value(). This
corresponds to symbols that would appear in the 'make menuconfig'
interface and not already be pinned to a specific value by being
selected. Returns False for special symbols (e.g. n, m and y).
is_special(self)
Returns True if the symbol is one of the special symbols n, m or y,
or gets its value from the environment. Otherwise, returns False.
reset(self)
Resets the value of the symbol, as if the symbol had never gotten a
(user) value via Config.load_config() or Symbol.set_value(). Dependent
symbols are recursively invalidated.
set_value(self, v)
Sets the (user) value of the symbol. Equal in effect to assigning
the value to the symbol within a .config file. Use
get_lower/upper_bound() to find the range of valid values for bool and
tristate symbols; setting values outside this range will cause the user
value to differ from the result of Symbol.calc_value(). Any value that
is valid for the type (bool, tristate, etc.) will end up being
reflected in Symbol.get_user_value() though.
 
Any symbols dependent on the symbol are (recursively) invalidated, so
things should just work with regards to dependencies.
 
v -- The value to give to the symbol.

Methods inherited from Item:
is_choice(self)
Returns True if the item is a choice, otherwise False. Short for
isinstance(item, kconfiglib.Choice).
is_comment(self)
Returns True if the item is a comment, otherwise False. Short for
isinstance(item, kconfiglib.Comment).
is_menu(self)
Returns True if the item is a menu, otherwise False. Short for
isinstance(item, kconfiglib.Menu).
is_symbol(self)
Returns True if the item is a symbol, otherwise False. Short for
isinstance(item, kconfiglib.Symbol).

 
Functions
       
tri_greater(v1, v2)
Returns True if the tristate v1 is greater than the tristate v2, where
"n", "m" and "y" are ordered from lowest to highest. Otherwise, returns
False.
tri_greater_eq(v1, v2)
Returns True if the tristate v1 is greater than or equal to the tristate
v2, where "n", "m" and "y" are ordered from lowest to highest. Otherwise,
returns False.
tri_less(v1, v2)
Returns True if the tristate v1 is less than the tristate v2, where "n",
"m" and "y" are ordered from lowest to highest. Otherwise, returns
False.
tri_less_eq(v1, v2)
Returns True if the tristate v1 is less than or equal to the tristate
v2, where "n", "m" and "y" are ordered from lowest to highest. Otherwise,
returns False.

 
Data
        AND = 1
BOOL = 1
EQUAL = 3
HEX = 4
INT = 5
NOT = 2
NO_SELECTION = 0
OR = 0
STRING = 3
TRISTATE = 2
T_AND = 1
T_BOOL = 24
T_CHOICE = 11
T_CLOSE_PAREN = 4
T_COMMENT = 13
T_CONFIG = 14
T_DEFAULT = 23
T_DEFCONFIG_LIST = 35
T_DEF_BOOL = 29
T_DEF_TRISTATE = 30
T_DEPENDS = 19
T_ENDCHOICE = 12
T_ENDIF = 18
T_ENDMENU = 9
T_ENV = 34
T_EQUAL = 5
T_HELP = 16
T_HEX = 26
T_IF = 17
T_INT = 27
T_MAINMENU = 7
T_MENU = 8
T_MENUCONFIG = 15
T_MODULES = 36
T_NOT = 2
T_ON = 20
T_OPEN_PAREN = 3
T_OPTION = 33
T_OPTIONAL = 21
T_OR = 0
T_PROMPT = 22
T_RANGE = 32
T_SELECT = 31
T_SOURCE = 10
T_STRING = 28
T_TRISTATE = 25
T_UNEQUAL = 6
T_VISIBLE = 37
UNDEF_ASSIGN = 1
UNEQUAL = 4
UNKNOWN = 0
WARNING = 0
bool_str = {False: 'false', True: 'true'}
default_value = {1: 'n', 2: 'n', 3: '', 4: '', 5: ''}
keywords = {'---': 16, '---help---': 16, 'bool': 24, 'boolean': 24, 'choice': 11, 'comment': 13, 'config': 14, 'def_bool': 29, 'def_tristate': 30, 'default': 23, ...}
op_to_str = {0: ' || ', 1: ' && ', 3: ' = ', 4: ' != '}
precedence = {0: 0, 1: 1, 2: 2}
set_re = <_sre.SRE_Pattern object at 0x17bde8>
string_lex = (24, 25, 27, 26, 28, 11, 22, 8, 13, 10, 7)
sym_chars = frozenset(['-', '.', '/', '0', '1', '2', ...])
sym_ref_re = <_sre.SRE_Pattern object at 0x4023e0>
token_to_type = {24: 1, 25: 2, 26: 4, 27: 5, 28: 3}
typename = {0: 'unknown', 1: 'bool', 2: 'tristate', 3: 'string', 4: 'hex', 5: 'int'}
unset_re = <_sre.SRE_Pattern object at 0x19edf0>
use_psyco = False
values = {'m': 1, 'n': 0, 'y': 2}