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

Do not override built-in Python function #486

Closed
wants to merge 2 commits into from
Closed

Do not override built-in Python function #486

wants to merge 2 commits into from

Conversation

kdeldycke
Copy link
Contributor

@kdeldycke kdeldycke commented Mar 29, 2017

format() is a Python bult-in function. To avoid collission and override of this default function, I just renamed all instance of format variables to pattern.

For reference, here is the script I used to perform this renaming:

sed -i "s/(format)/(pattern)/g" ./tests/test_numbers.py
sed -i "s/ format =/ pattern =/g" ./tests/test_numbers.py
sed -i "s/ format=/ pattern=/g" ./tests/test_numbers.py

sed -i "s/ format=/ pattern=/g" ./tests/test_dates.py
sed -i "s/format\./pattern\./g" ./tests/test_dates.py
sed -i "s/format = /pattern = /g" ./tests/test_dates.py

sed -i "s/ format=/ pattern=/g" ./docs/numbers.rst

sed -i "s/ format=/ pattern=/g" ./docs/dates.rst
sed -i "s/\x60\x60format\x60\x60/\x60\x60pattern\x60\x60/g" ./docs/dates.rst

sed -i "s/ format=format/pattern=pattern/g" ./babel/units.py
sed -i "s/:param format:/:param pattern:/g" ./babel/units.py
sed -i "s/,pattern=pattern,/, pattern=pattern,/g" ./babel/units.py
sed -i "s/, format=None,/, pattern=None,/g" ./babel/units.py
sed -i "s/, format,/, pattern,/g" ./babel/units.py
sed -i "s/\x60\x60format\x60\x60/\x60\x60pattern\x60\x60/g" ./babel/units.py

sed -i "s/, format,/, pattern,/g" ./babel/support.py
sed -i "s/ format=None/ pattern=None/g" ./babel/support.py
sed -i "s/format=format,/pattern=pattern,/g" ./babel/support.py
sed -i "s/format='/pattern='/g" ./babel/support.py

sed -i "s/(format)/(pattern)/g" ./babel/numbers.py
sed -i "s/ format = / pattern = /g" ./babel/numbers.py
sed -i "s/not format:/not pattern:/g" ./babel/numbers.py
sed -i "s/:param format:/:param pattern:/g" ./babel/numbers.py
sed -i "s/ format=None/ pattern=None/g" ./babel/numbers.py

sed -i "s/(format %/(pattern %/g" ./babel/messages/frontend.py
sed -i "s/ format = / pattern = /g" ./babel/messages/frontend.py
sed -i "s/ format % / pattern % /g" ./babel/messages/frontend.py

sed -i "s/, (format, /, (pattern, /g" ./babel/messages/checkers.py
sed -i "s/, format, /, pattern, /g" ./babel/messages/checkers.py
sed -i "s/:param format:/:param pattern:/g" ./babel/messages/checkers.py
sed -i "s/\x60format\x60/\x60pattern\x60/g" ./babel/messages/checkers.py

sed -i "s/>>> format = />>> pattern = /g" ./babel/dates.py
sed -i "s/>>> format\./>>> pattern\./g" ./babel/dates.py
sed -i "s/= format\./= pattern\./g" ./babel/dates.py
sed -i "s/ format = / pattern = /g" ./babel/dates.py
sed -i "s/\[format\]/\[pattern\]/g" ./babel/dates.py
sed -i "s/(format, /(pattern, /g" ./babel/dates.py
sed -i "s/(format)/(pattern)/g" ./babel/dates.py
sed -i "s/if format not in/if pattern not in/g" ./babel/dates.py
sed -i "s/if format in (/if pattern in (/g" ./babel/dates.py
sed -i "s/(format='/(pattern='/g" ./babel/dates.py
sed -i "s/, format,/, pattern,/g" ./babel/dates.py
sed -i "s/if format == /if pattern == /g" ./babel/dates.py
sed -i "s/, format='/, pattern='/g" ./babel/dates.py
sed -i "s/:param format:/:param pattern:/g" ./babel/dates.py
sed -i "s/ = format(/ = pattern(/g" ./babel/dates.py

@kdeldycke kdeldycke changed the title Replace 'format' variable by pattern. Do not override built-in Python function Mar 29, 2017
@akx akx added this to the Babel 3 milestone Apr 6, 2017
@akx
Copy link
Member

akx commented Apr 6, 2017

Marked milestone as Babel 3: This is a semver-major change since people may be (and probably are) currently calling functions with a named format kwarg.

@kdeldycke
Copy link
Contributor Author

@akx: makes sense! I'll be happy to revisit it on the future once the time has come.

@verhovsky
Copy link

verhovsky commented Jul 28, 2020

There's nothing wrong with a function keyword arg with the same name as a Python builtin if that function doesn't use the builtin. The Python source code does this https://docs.python.org/3/library/http.server.html#http.server.BaseHTTPRequestHandler.log_message https://github.com/python/cpython/blob/5e0ce46aeb13f31e4dbe6a2891f583e770e0a808/Lib/http/server.py#L561

@kdeldycke
Copy link
Contributor Author

This PR is severely outdated and as @verhovsky pointed out 3 years ago, even if it's a bad pattern, redefining Python builtins works.

And with Babel adopting ruff, if there is a real issue, it will be reported back or auto-fixed by it.

I propose to close this PR for good to clean the backlog.

@kdeldycke kdeldycke closed this Jun 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants