| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
| def __repr__(self): | ||
| return f'dataclasses.InitVar[{self.type.__name__}]' | ||
|
|
||
| def __class_getitem__(cls, params): |
There was a problem hiding this comment.
These changes aren't related to the title of this PR. Please either split it out into a separate PR, or retitle this PR.
Sorry, something went wrong.
There was a problem hiding this comment.
Oh, yes. They are from other issue.
Sorry, something went wrong.
| braceidpattern = None | ||
| flags = _re.IGNORECASE | ||
|
|
||
| def __init_subclass__(cls): |
There was a problem hiding this comment.
This seems like a better approach, but if you're modernizing this then I have a few other suggestions.
Sorry, something went wrong.
| if 'pattern' in cls.__dict__: | ||
| pattern = cls.pattern | ||
| else: | ||
| pattern = r""" |
There was a problem hiding this comment.
Perhaps this pattern ought to be put at module scope, just above the class definition? The verbose representation might be more readable without all that leading whitespace.
Sorry, something went wrong.
| {(?P<braced>%(bid)s)} | # delimiter and a braced identifier | ||
| (?P<invalid>) # Other ill-formed delimiter exprs | ||
| ) | ||
| """ % { |
There was a problem hiding this comment.
Too bad we can't convert this to a .format() string without breaking backward compatibility.
Sorry, something went wrong.
There was a problem hiding this comment.
We can. We can even convert it to f-string. I tried, but returned to the old format.
Sorry, something went wrong.
There was a problem hiding this comment.
The only problem with .format() and f-string is that we nee to duplicate literal braces. And the template/f-string will look strange, because braces have special meaning in regexpes and in new format.
Sorry, something went wrong.
There was a problem hiding this comment.
With f-string it would look:
def __init_subclass__(cls):
super().__init_subclass__()
if 'pattern' in cls.__dict__:
pattern = cls.pattern
else:
delim = _re.escape(cls.delimiter)
id = cls.idpattern
bid = cls.braceidpattern or cls.idpattern
pattern = fr"""
{delim}(?:
(?P<escaped>{delim}) | # Escape sequence of two delimiters
(?P<named>{id}) | # delimiter and a Python identifier
{{(?P<braced>{bid})}} | # delimiter and a braced identifier
(?P<invalid>) # Other ill-formed delimiter exprs
)
"""
cls.pattern = _re.compile(pattern, cls.flags | _re.VERBOSE)
Sorry, something went wrong.
| self.pattern) | ||
| return self.pattern.sub(convert, self.template) | ||
|
|
||
| Template.__init_subclass__() # setup pattern |
There was a problem hiding this comment.
This is a bit of a head scratcher, but I think the comment could be improved to make it more clear. What's really going on is that this is required to initialize pattern when no subclass is created. Can you improve the clarity of the comment (and maybe move it above this line, and make it a full sentence)? If you need a suggestion, let me know.
Sorry, something went wrong.
There was a problem hiding this comment.
I would appreciate your help with a comment.
Sorry, something went wrong.
|
When you're done making the requested changes, leave the comment: I have made the requested changes; please review again. |
Sorry, something went wrong.
|
@warsaw, what is your thought about using an f-string? |
Sorry, something went wrong.
There was a problem hiding this comment.
Ok
Sorry, something went wrong.
There was a problem hiding this comment.
Ok
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
https://bugs.python.org/issue38208