-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
PEP 750: Tag Strings For Writing Domain-Specific Languages #3858
Conversation
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Co-authored-by: Hugo van Kemenade <1324225 [email protected]>
Lambda-wrapped expressions use class scope
This is great. I hope we'll get I'm also guessing projects like mypy will automatically detect |
In this PEP, we don't support dotted names as prefixes for tag strings. We looked into it, and it required a fairly large number of parser changes. We decided to keep it simple instead. But dotted names should be supportable in a future PEP, if there's interest.
So the way I would think we would support Tag function. Create a tag function def struct_log(*args: str | Interpolation) -> LogRecordMessage:
... where @dataclass
class LogRecordMessage:
args: tuple[str | Interpolation, ...] A few things:
Now add the following to the above class:
With Logging integration. The most straightforward way to do this is with
That's an interesting idea. Definitely it goes the opposite way. |
…ple, explain *args.) (#5) Co-authored-by: pauleveritt <[email protected]>
This PEP should be ready for approval, now that all earlier questions have been addressed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall, I like this PEP a lot. I've made some suggestions to help with clarity and distinction from f-strings.
Co-authored-by: Carol Willing <[email protected]>
Co-authored-by: Carol Willing <[email protected]>
Co-authored-by: Carol Willing <[email protected]>
Co-authored-by: Carol Willing <[email protected]>
* Include three comments from @Carreau (drop two bullets, *args in example, explain *args.) * Lambda-wrapped expressions use annotation scope * Clarify use of annotation scope * Mention what happens to named unicodes followed by text * Use DecodedConcrete in assertion * Rewrite why annotation scope is needed (#4) * Rewrite why annotation scope is needed * Minor copyediting * PEP 747: Fix rules related to UnionType (T1 | T2). Contrast TypeExpr with TypeAlias. Apply other feedback. (python#3856) * PEP 694: Fix typo (python#3859) * PEP 2026: Update following discussion (python#3860) Co-authored-by: Erlend E. Aasland <[email protected]> * PEP 101: Remove outdated info and add new info (python#3863) * PEP 101: Remove outdated info * PEP 101: Update make command for running tests * PEP 101: Replace '#python-dev and/or python-committers' with 'Discord and/or Discourse * PEP 101: Add Hugo as 3.14 RM * PEP 101: Add to PSRT * PEP 11: Add Russell as an iOS contact (python#3865) * Meta: Document the PEPs API (python#3864) Co-authored-by: Adam Turner <9087854 [email protected]> * PEP 719: Update for today's release of 3.13.0b4 (python#3868) * PEP 740: Mark as Provisional (python#3848) Signed-off-by: William Woodruff <[email protected]> * PEP 749: Add section on metaclasses (python#3847) Co-authored-by: Carl Meyer <[email protected]> * PEP 8: Update a Wikipedia link (python#3552) * PEP 635: Minor typo fix in code sample (python#3871) Looks like an unclosed f-string. * PEP 751: A file format to list Python dependencies for installation reproducibility (python#3870) Co-authored-by: Hugo van Kemenade <1324225 [email protected]> Co-authored-by: Adam Turner <9087854 [email protected]> Co-authored-by: Jelle Zijlstra <[email protected]> Co-authored-by: Carol Willing <[email protected]> * PEP 743: Rewrite to hide (soft-)deprecated API (pythonGH-3869) Co-authored-by: Victor Stinner <[email protected]> * PEP 751: Add Discussions-To and Post-History (python#3872) * PEP 639: Incorporate the latest discussion feedback (python#3866) * Remove the requirement of license-files defaults * Cover all rejected subkeysideas in one paragraph * Change the deprecation policy around classifiers * Flatten the value of the license-files key, only globs are specified * Update the Rejected ideas to match the current license-files proposal --------- Co-authored-by: Miro Hrončok <[email protected]> * PEP 715: clarify what `[package.tool]` is (python#3873) * PEP 665: Superseded-By: 751 (python#3875) * PEP 751: update based on feedback (python#3877) * PEP 751: update based on feedback * Fix a section underline * Include three comments from @Carreau (drop two bullets, *args in example, explain *args.) * From Carol, move the point about import to the following paragraph. * Per Carol: Remove paragraph about lifecycles as that is about *a* DSL, not DSLs in general. --------- Signed-off-by: William Woodruff <[email protected]> Co-authored-by: pauleveritt <[email protected]> Co-authored-by: Jim Baker <[email protected]> Co-authored-by: Lysandros Nikolaou <[email protected]> Co-authored-by: David Foster <[email protected]> Co-authored-by: Barry Warsaw <[email protected]> Co-authored-by: Hugo van Kemenade <1324225 [email protected]> Co-authored-by: Erlend E. Aasland <[email protected]> Co-authored-by: Adam Turner <9087854 [email protected]> Co-authored-by: T. Wouters <[email protected]> Co-authored-by: William Woodruff <[email protected]> Co-authored-by: Jelle Zijlstra <[email protected]> Co-authored-by: Carl Meyer <[email protected]> Co-authored-by: Lavrentiy Rubtsov <[email protected]> Co-authored-by: Mariatta <[email protected]> Co-authored-by: Brett Cannon <[email protected]> Co-authored-by: Carol Willing <[email protected]> Co-authored-by: Petr Viktorin <[email protected]> Co-authored-by: Victor Stinner <[email protected]> Co-authored-by: Karolina Surma <33810531 [email protected]> Co-authored-by: Miro Hrončok <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the changes.
Thanks everyone for the reviews! I'll merge this to get the conversation started and we can always come back to fix more issues. |
This PEP introduces tag strings for custom, repeatable string processing. Tag strings are an extension to f-strings, with a custom function -- the "tag" -- in place of the
f
prefix. This function can then provide rich features such as safety checks, lazy evaluation, domain specific languages (DSLs) for web templating, and more.Tag strings are similar to JavaScript tagged template literals and related ideas in other languages.
📚 Documentation preview 📚: https://pep-previews--3858.org.readthedocs.build/