Open
Conversation
for more information, see https://pre-commit.ci
Owner
|
Thanks! I'll try to find the time to review this in the future. I will say already that I'm not 100% sure yet that I want this fixed, at least not until someone comes up with a real world issue regarding this limitation. Using recursion is a simpler approach (as can be seen e.g. from the number of lines added in this PR) so if there's even a small chance of introducing bugs, and a performance penalty, I'm not sure this is worth fixing. There will always be limits to how deeply nested structures we can parse due to memory constraints if nothing else. I don't know if a crash at something like 100000 levels of nesting is that much better than 1000 levels of nesting. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I noticed that there are couple of TOML test files without JSON counterparts (https://github.com/hukkin/tomli/blob/master/tests/data/toml-lang-compliance/valid/qa/qa-array-inline-nested-1000.toml, https://github.com/hukkin/tomli/blob/master/tests/data/toml-lang-compliance/valid/qa/qa-table-inline-nested-1000.toml) that couldn't be loaded with the current version due to deep recursion. Maybe they're not very realistic use cases, but the fix isn't that complicated. On my computer there's a 1-2% performance hit, but you might want to test more. One another thing is that I don't have deep knowledge about
NestedDict,Flagsand other more complicated inner workings of the software. I just naively copied more or less everything to the stack even though they might be available in some smarter way.