summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-11-08Clarify that load_config() still just worksUlf Magnusson
2017-11-08Explain changes from Kconfiglib 1 to Kconfiglib 2Ulf Magnusson
I wonder if there's a nicer way to get an italic link with RST...
2017-11-07Test for m, y assignability in a more readable wayUlf Magnusson
2017-11-07Clean up the test suite section a bit moreUlf Magnusson
2017-11-07Clean up the test suite section a bitUlf Magnusson
2017-11-07Add a separate section with real-world examplesUlf Magnusson
Add the esp-idf script too.
2017-11-07Add separate section for real-world examplesUlf Magnusson
2017-11-07Fix typoUlf Magnusson
2017-11-07Add a separate example script README sectionUlf Magnusson
2017-11-07Add a sample 'make scriptconfig'Ulf Magnusson
To demonstrate some different possibilities. Will need to move some stuff around later too.
2017-11-07Remove outdated notesUlf Magnusson
Kconfiglib 2 has proper menuconfig support, and currently uses __slots__ too.
2017-11-07Update documentation to sync. with updated READMEUlf Magnusson
2017-11-07Reference module docstring for Linux installationUlf Magnusson
Less documentation duplication.
2017-11-07Update the documentation sectionUlf Magnusson
Also move it directly after the intro.
2017-11-07Clean up intro a bitUlf Magnusson
2017-11-07Update intro in README.rstUlf Magnusson
Copied straight from the module docstring, with some formatting added. Need to update other parts too.
2017-11-07s/overriden/overridden/Ulf Magnusson
Add test coverage for that Choice.__repr__() path too.
2017-11-07Polish Symbol, Choice, and MenuNode docsUlf Magnusson
2017-11-06Simplify n/m/y to constant symbol translationUlf Magnusson
Hit way too seldomly for it to make a performance difference, but a bit neater. We know n, m, and y already exist since they're precreated.
2017-11-06Get rid of Choice.default_selectionUlf Magnusson
Was only used by allyesconfig.py. Easy to add back if needed at any point.
2017-11-06Polish some Symbol and Choice docsUlf Magnusson
2017-11-06Polish the module documentationUlf Magnusson
Doing a (hopefully) final pass through the docs before release.
2017-11-06Refer to kconfiglib.py for iterative tree walkingUlf Magnusson
Turns out to be kinda awkward to implement print_tree.py iteratively, because the indent.
2017-11-06Rename _RELATION_TO_STR to _REL_TO_STRUlf Magnusson
Consistent with e.g. _TOKEN_TO_REL.
2017-11-06Use 'sym' instead of 'item' in choice-related loopUlf Magnusson
Only symbols appear in choice.syms. Clearer.
2017-11-06Remove redundant n/m/y._cached_str_val assignmentsUlf Magnusson
Will be automatically calculated and cached as needed. Less magic code.
2017-11-06Remove redundant 'is not None' testUlf Magnusson
Always a MenuNode or None. Can be tested simpler.
2017-11-06Rename variable from 'add_fn' to 'append'Ulf Magnusson
2017-11-06Call it 'kconf' in iscriptconfig tooUlf Magnusson
Consistency
2017-11-06Clean up examples a bitUlf Magnusson
conf -> kconf, for consistency, plus various nits.
2017-11-06Simplify allyesconfig.pyUlf Magnusson
Can be implemented in a simpler/better way with Choice.assignable. Also rename 'conf' to 'kconf' in allnoconfig.py for consistency.
2017-11-05Add invalidation warning to Choice.selectionUlf Magnusson
Now in all paths that cache values.
2017-11-05Simplify redundant 'is (not) None' testsUlf Magnusson
Menu node pointers and .choice in particular is always either an object or None. Prompts are always either a (text, cond) tuple or None. Some other things could (though unlikely) be empty strings, and some things use symbolic constants that might be 0, so keep the None tests there. Cleaner, especially for menu nodes. Also remove redundant 'node2.dep is None' test. Expressions are never None. Also fix node.prompt == "" comparison in _flatten(). Should be node.prompt[0] == "". Not sure why the C implementation checks for an existing but empty prompt to begin with. It's just cosmetic menu stuff at least.
2017-11-05Simplify redundant 'is (not) None' tests in examplesUlf Magnusson
2017-11-05Simplify allnoconfig.py choice handlingUlf Magnusson
Don't need to handle them at all now that .assignable doesn't claim that choice symbols in y-mode choices can be set to n. 20/20 hindsight.
2017-11-05Fix find_symbol.py typoUlf Magnusson
Argument must be "X86" to get that output. "x86" just returns some constant symbols.
2017-11-05Add example that finds references to a symbolUlf Magnusson
Demonstrates expression fetching and walking. Basically a much better version of get_ref_locations() from Kconfiglib 1, now that the user API is flexible enough to implement it. Should be it for new examples before release.
2017-11-05Get rid of some more tristate quotesUlf Magnusson
2017-11-04Add symbolic ../kconfiglib.py link to examples/Ulf Magnusson
Handy for running menuconfig.py
2017-11-04Fix some menuconfig.py typosUlf Magnusson
2017-11-04Add documentation for menuconfig exampleUlf Magnusson
Also avoid printing (None) as the name for unnamed (normal) choices.
2017-11-04Optimize tri_value() a bitUlf Magnusson
- Detect a 0 weak reverse dependency earlier. Being implied is rare, and the direct deps don't need to be calculated for symbols that aren't. Bit cleaner too, and closer to the rev. dep code. Shaves a few % off the time spent in tri_value() while writing a .config. - Look at the symbol's visibility to determine the choice mode instead of going to the choice itself. Works since the mode acts as an upper bound on the visibility of choice symbols. No detectable performance difference, but a bit cleaner anyway. Piggyback some nits.
2017-11-04Fix test suite Python 3 syntax errorUlf Magnusson
"List comprehensions no longer support the...", https://docs.python.org/3.0/whatsnew/3.0.html
2017-11-04Add menuconfig example/proof of conceptUlf Magnusson
Still needs documentation and some cleanup. Interface deliberately kept super simple/clunky to focus on the concepts. Not something you'd actually want to use. Sample session: $ python Kconfiglib/examples/menuconfig.py Kconfiglib/examples/Kmenuconfig ======== Example Kconfig configuration ======== [*] Enable loadable module support (MODULES) Bool and tristate symbols [*] Bool symbol (BOOL) [ ] Dependent bool symbol (BOOL_DEP) < > Dependent tristate symbol (TRI_DEP) [ ] First prompt (TWO_MENU_NODES) < > Tristate symbol (TRI) [ ] Second prompt (TWO_MENU_NODES) *** These are selected by TRI_DEP *** < > Tristate selected by TRI_DEP (SELECTED_BY_TRI_DEP) < > Tristate implied by TRI_DEP (IMPLIED_BY_TRI_DEP) String, int, and hex symbols (foo) String symbol (STRING) (747) Int symbol (INT) (0xABC) Hex symbol (HEX) Various choices -*- Bool choice (BOOL_CHOICE) --> Bool choice sym 1 (BOOL_CHOICE_SYM_1) Bool choice sym 2 (BOOL_CHOICE_SYM_2) {M} Tristate choice (TRI_CHOICE) < > Tristate choice sym 1 (TRI_CHOICE_SYM_1) < > Tristate choice sym 2 (TRI_CHOICE_SYM_2) [ ] Optional bool choice (OPT_BOOL_CHOICE) Enter a symbol/choice name, "load_config", or "write_config" (or press CTRL+D to exit): BOOL Value for BOOL (available: n, y): n ======== Example Kconfig configuration ======== [*] Enable loadable module support (MODULES) Bool and tristate symbols [ ] Bool symbol (BOOL) < > Tristate symbol (TRI) [ ] Second prompt (TWO_MENU_NODES) *** These are selected by TRI_DEP *** < > Tristate selected by TRI_DEP (SELECTED_BY_TRI_DEP) < > Tristate implied by TRI_DEP (IMPLIED_BY_TRI_DEP) String, int, and hex symbols (foo) String symbol (STRING) (747) Int symbol (INT) (0xABC) Hex symbol (HEX) Various choices -*- Bool choice (BOOL_CHOICE) --> Bool choice sym 1 (BOOL_CHOICE_SYM_1) Bool choice sym 2 (BOOL_CHOICE_SYM_2) {M} Tristate choice (TRI_CHOICE) < > Tristate choice sym 1 (TRI_CHOICE_SYM_1) < > Tristate choice sym 2 (TRI_CHOICE_SYM_2) [ ] Optional bool choice (OPT_BOOL_CHOICE) Enter a symbol/choice name, "load_config", or "write_config" (or press CTRL+D to exit): MODULES Value for MODULES (available: n, y): n ======== Example Kconfig configuration ======== [ ] Enable loadable module support (MODULES) Bool and tristate symbols [ ] Bool symbol (BOOL) [ ] Tristate symbol (TRI) [ ] Second prompt (TWO_MENU_NODES) *** These are selected by TRI_DEP *** [ ] Tristate selected by TRI_DEP (SELECTED_BY_TRI_DEP) [ ] Tristate implied by TRI_DEP (IMPLIED_BY_TRI_DEP) String, int, and hex symbols (foo) String symbol (STRING) (747) Int symbol (INT) (0xABC) Hex symbol (HEX) Various choices -*- Bool choice (BOOL_CHOICE) --> Bool choice sym 1 (BOOL_CHOICE_SYM_1) Bool choice sym 2 (BOOL_CHOICE_SYM_2) -*- Tristate choice (TRI_CHOICE) --> Tristate choice sym 1 (TRI_CHOICE_SYM_1) Tristate choice sym 2 (TRI_CHOICE_SYM_2) [ ] Optional bool choice (OPT_BOOL_CHOICE) Enter a symbol/choice name, "load_config", or "write_config" (or press CTRL+D to exit): ^D Unsetting modules demonstrates one reason why it makes sense to have .type be magic and change from TRISTATE to BOOL without modules (<> = tristate, [] = bool). The C implementation uses the same trick. (The original type is still available in .orig_type though.) Piggyback printing of tristates as n, m, y in the warning for invalid values in set_value().
2017-11-04Don't put 0 in .assignable for y-mode choice symsUlf Magnusson
Just return (2,). More intuitive, and makes y-mode choices just work in the menuconfig example. Turns out to be simple to implement with choice symbol visibility depending on the Choice.
2017-11-04Return False from set_value() for invalid valuesUlf Magnusson
Usability improvement discovered while putting together menuconfig example. Would have to duplicate validity checking otherwise. Also reject negative values for HEX symbols, just to be compatible with the C implementation. Keep TRI_TO_STR and STR_TO_TRI public. They're pretty handy even if they're trivial.
2017-11-03Fix error in commentUlf Magnusson
s/absolute/relative/
2017-11-03Remove outdated commentUlf Magnusson
Used to set a bunch of other options too on MODULES in the test, but it's cleaner to do it separately.
2017-11-03Remove outdated TODO commentUlf Magnusson
Tests for .assignable have been added.
2017-11-03Test .assignable with no modulesUlf Magnusson
Just add a column for the expected values for the no-modules case to the existing tests. Also automatically detect choice symbols in choices with y mode and disable the value setting test, instead of having to pass a flag.