summaryrefslogtreecommitdiff
path: root/kconfiglib.py
AgeCommit message (Collapse)Author
2015-06-20Clean up Config method ordering.Ulf Magnusson
Split into logical sections and put more related methods closer to one another.
2015-06-19Optimize .config writing.Ulf Magnusson
The old note no longer seems to apply. Going through the defconfig part of the test suite without verification in PyPy drops from ~5:50 to ~5:30, and line_prof shows some improvement for CPython too. Passing the 'write' method around instead was a bit slower.
2015-06-19Make the _parse_expr() docstring more informative.Ulf Magnusson
2015-06-19Get rid of _Feed.__len__().Ulf Magnusson
Cleaner to just check for more tokens in the few spots that used it. Seems slightly faster too, though it might be in the noise.
2015-06-19Avoid creating redundant lists when parsing expressions.Ulf Magnusson
The most common case by far (> 85% for both && and || with the x86 Kconfigs) is a single operand (i.e., no && or ||). Sticking it in a list and then immediately throwing the list away is wasteful. Makes _parse_expr() at least 10% faster during testing.
2015-06-19Use consistent capitalization.Ulf Magnusson
2015-06-18Rename the *_2() methods to *_rec().Ulf Magnusson
Matches their function.
2015-06-18Optimize _get_expr_syms().Ulf Magnusson
Instantiating that nested function with free variables turned out to be quite expensive in cProfile. For the _build_dep() case, it would be even neater to have a function like _add_sym_deps(sym, expr) that adds 'sym' to each 'deps' set in 'expr', removing the need for a temporary set. Unfortunately, _get_expr_syms() is used elsewhere too, and it's probably not worthwhile having another very similar function just as a small optimization.
2015-06-17Remove unused _tokenize() default parameter value.Ulf Magnusson
2015-06-17Comment consistency nit.Ulf Magnusson
2015-06-17_sym_lookup() docstring nit.Ulf Magnusson
2015-06-17Invert _sym_lookup()'s register-new-symbols flag.Ulf Magnusson
Simpler.
2015-06-17_tokenize() comment nit.Ulf Magnusson
2015-06-17_tokenize() comment nits.Ulf Magnusson
2015-06-17Add __slots__ to internal classes.Ulf Magnusson
Speeds _Feed creation up a bit during tokenization. Keep public classes slotless for flexibility.
2015-06-17Check for T_HELP before None during tokenization.Ulf Magnusson
Optimization. Saves an 'if None' check for each 'help'.
2015-06-17Set the initial index later in _tokenize().Ulf Magnusson
Small optimization. No need to fetch it for 'help' tokens, which return early.
2015-06-17Remove probably unhelpful tokenization comment.Ulf Magnusson
The regexes handle most stripping of trailing space now too.
2015-06-17Make automatic choice type comment more accurate.Ulf Magnusson
2015-06-16Simplify next_nonblank() a bit.Ulf Magnusson
2015-06-16Clean up and optimize tokenization some more.Ulf Magnusson
- Get rid of the weird strip/reindex dance and keep 's' intact throughout. This also fixes _tokenization_error() output, as it would previously report the stripped string. - Strip trailing whitespace in the regexes. This makes the stripping loop very cheap. - Shorten a comment that might've been more confusing than helpful.
2015-06-16Make _make_and/_or() comments more accurate.Ulf Magnusson
We're never updating nodes here, since the original expressions should be preserved. We're just trying to avoid creating redundant nodes.
2015-06-16Space nit.Ulf Magnusson
2015-06-15Turn remove_blank() into next_nonblank().Ulf Magnusson
Only way it's used.
2015-06-15Report correct locations in the presence of continuation lines.Ulf Magnusson
The line number was previously for logical lines only. Oversight. Get rid of _get_lines() and keep the raw lines in _FileFeed instead, only joining lines with continuation lines as they are fetched. This makes the index correspond to the correct line number from the file. (It also means most lines are returned as-is without any logic applied to them, which is nice.) Litter tests/Klocation with continuation lines to get test coverage. Remove some unused functions that were previously inherited from _Feed and remove it as a base class of _FileFeed.
2015-06-15_eval_expr() docstring nit.Ulf Magnusson
2015-06-15Use _get_visibility() directly when printing items.Ulf Magnusson
Internal details are already assumed.
2015-06-15Space nit.Ulf Magnusson
2015-06-15Move 'expr is None' check up to _eval_expr().Ulf Magnusson
None should never appear as a subexpression.
2015-06-15Symbols are expressions too.Ulf Magnusson
2015-06-15Merge _has_modules() into _eval_expr().Ulf Magnusson
Single trivial user.
2015-06-15Simplify expression printing routines.Ulf Magnusson
Bit overengineered. Not performance-sensitive.
2015-06-15Remove 'first_expr' in _eval_expr_2().Ulf Magnusson
Dubious value and poorly named. Also rearrange cases by frequency.
2015-06-15Reflow nit.Ulf Magnusson
2015-06-15Rename go_back()/go_to_start() to unget()/unget_all().Ulf Magnusson
Bit more standard. Piggyback space nit.
2015-06-15Blank line nit.Ulf Magnusson
2015-06-15Use just .format() instead of .format() and '+'.Ulf Magnusson
2015-06-15Use a neater docstring style.Ulf Magnusson
Keeps a consistent indentation for extra lines in parameter descriptions. More compact too. Also fix parameter name documentation mismatch for Config.__getitem__().
2015-06-14Space nit.Ulf Magnusson
2015-06-14Remove redundant 'write_to_conf' assignment.Ulf Magnusson
It will be recalculated in get_value() if cached_val is None.
2015-06-14Access Choice.actual_symbols directly internally.Ulf Magnusson
Other internal details are already needed/used in those spots.
2015-06-14Remove two seldom-used expression simplifications.Ulf Magnusson
These never trigger for the x86 Kconfigs, wasting time instead.
2015-06-14Blank line nit.Ulf Magnusson
2015-06-14Clean up constructors.Ulf Magnusson
Order things consistently, make a bit more compact, add some comments.
2015-06-14allnoconfig_y line nit.Ulf Magnusson
2015-06-14Make more global constant uppercase.Ulf Magnusson
Leave the regex helper functions lowercase, as they're conceptually the same as other global functions.
2015-06-14Initialize already_written in Symbol.__init__().Ulf Magnusson
Oversight. No functional changes, but less cryptic than creating it dynamically. Also comment and rearrange a bit.
2015-06-13Bail early when a bool is selected to "m".Ulf Magnusson
It will pin it to "y", meaning it's non-modifiable. No need to go on. Maybe some common code should be extracted here too.
2015-06-13Swap some visibility conditionals.Ulf Magnusson
rev_dep == "m" is relatively rare, so check it first.
2015-06-13Simplify visibility functions.Ulf Magnusson
Not sure why I used that form the first time around.