Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update parsetree.py removed "?" from for x in re.compile(r"(\${.+})" … #397

Closed
wants to merge 3 commits into from

Conversation

jjgalvez
Copy link
Contributor

@jjgalvez jjgalvez commented May 7, 2024

…which was preventing a dict from being consumed as an expression in ${}

In relation to the discussion on how to pass a dict to an expression, removing the ? from the regular expression on line 325 for parsetree.py allows ${} to consume expressions with also contain "{","}" in the expression.
Please consider accepting this pull-request.

…which was preventing a dict from being consumed as an expression in ${}
@zzzeek
Copy link
Member

zzzeek commented May 7, 2024

hi -

it is essential that tests be added , in in this case in test_lexer.py . A change like this is very high risk. See #387, #383 for examples of PRs that can be accepted.

@jjgalvez
Copy link
Contributor Author

jjgalvez commented May 7, 2024

hi -

it is essential that tests be added , in in this case in test_lexer.py . A change like this is very high risk. See #387, #383 for examples of PRs that can be accepted.

understood I'll review the examples and add the tests. I'll create a new pull request once I've got the tests done and they are all passing.

@jjgalvez
Copy link
Contributor Author

jjgalvez commented May 7, 2024

Would you prefer that I add new tests or add usecases to either test_expressoin or test_tricky_expression. If a new test case I could add test_dict_expression

@zzzeek
Copy link
Member

zzzeek commented May 7, 2024

TBH I am skeptical this patch can work since you will now fail to parse lines like ${x} ${y} properly, but yes I would say add some new tests for this

@jjgalvez
Copy link
Contributor Author

jjgalvez commented May 7, 2024

I added tests to test_lexer, when I run the test locally I am passing all tests. including the ${x} ${y} test

@zzzeek
Copy link
Member

zzzeek commented May 7, 2024

OK, maybe it can work for this limited situation then...not sure about nested dictionaries? it depends on the scope of how that bracket is parsed. sort of surprised it works though, I would need to analyze very closely

@zzzeek zzzeek requested a review from sqla-tester May 7, 2024 21:30
Copy link
Collaborator

@sqla-tester sqla-tester left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, this is sqla-tester setting up my work on behalf of zzzeek to try to get revision 33a85f2 of this pull request into gerrit so we can run tests and reviews and stuff

@sqla-tester
Copy link
Collaborator

New Gerrit review created for change 33a85f2: https://gerrit.sqlalchemy.org/c/sqlalchemy/mako/+/5296

@jjgalvez
Copy link
Contributor Author

jjgalvez commented May 7, 2024

OK, maybe it can work for this limited situation then...not sure about nested dictionaries? it depends on the scope of how that bracket is parsed. sort of surprised it works though, I would need to analyze very closely

I hadn't though of nested dict I will give that a try and see if it works, and update the tests as appropriate

@jjgalvez
Copy link
Contributor Author

jjgalvez commented May 7, 2024

I updated the test to include a

OK, maybe it can work for this limited situation then...not sure about nested dictionaries? it depends on the scope of how that bracket is parsed. sort of surprised it works though, I would need to analyze very closely

I updated the test to include a dict within a dict. I have all tests passing

@jjgalvez
Copy link
Contributor Author

jjgalvez commented May 7, 2024

OK, maybe it can work for this limited situation then...not sure about nested dictionaries? it depends on the scope of how that bracket is parsed. sort of surprised it works though, I would need to analyze very closely

Also thank you for considering the pull request and for taking such a close look at it, Given it's the lexer I know how careful you need to be.

@sqla-tester
Copy link
Collaborator

Michael Bayer (zzzeek) wrote:

oh this is in parsetree and not lexer. Ah OK, that makes a little more sense why it doesnt go out of control.

still surprising the lexer gets the correct tokens in the first place. i will have to find some more time to review this, i have a lot going on next week

View this in Gerrit at https://gerrit.sqlalchemy.org/c/sqlalchemy/mako/+/5296

@sqla-tester
Copy link
Collaborator

Gerrit review https://gerrit.sqlalchemy.org/c/sqlalchemy/mako/+/5296 has been merged. Congratulations! :)

@zzzeek
Copy link
Member

zzzeek commented May 14, 2024

OK this did cause a regression, so I have to revert this.

@zzzeek
Copy link
Member

zzzeek commented May 14, 2024

1.3.4 is yanked. I will add a commit that adds the passing test for #401. if you want to try again, you'll have to start wiht a new PR and make sure #401's case works and we will also have to come up with a lot more.

@jjgalvez
Copy link
Contributor Author

of course I'll keep looking at if and I can figure out a better solution I will post a new PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants