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

build: use list for mutable retval rather than tuple #41372

Merged
merged 2 commits into from
Jan 5, 2022

Conversation

Trott
Copy link
Member

@Trott Trott commented Jan 1, 2022

This is a really small semantic Python nit. Pinging @nodejs/python in case I'm just wrong in my understanding or something.

We define retval as a tuple and then replace the tuple by "appending" items with += but that actually creates a new tuple every time. Because it is intended to be mutable, use a list instead, then return a tuple from the function, as it should be immutable outside the function.

We define `retval` as a tuple and then replace the tuple by "appending"
items with `+=` but that actually creates a new tuple every time.
Because it is intended to be mutable, use a list instead, then return a
tuple from the function, as it should be immutable outside the function.
@nodejs-github-bot nodejs-github-bot added build Issues and PRs related to build files or the CI. needs-ci PRs that need a full CI run. labels Jan 1, 2022
@Trott Trott added request-ci Add this label to start a Jenkins CI on a PR. and removed build Issues and PRs related to build files or the CI. needs-ci PRs that need a full CI run. labels Jan 1, 2022
configure.py Outdated Show resolved Hide resolved
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jan 1, 2022
@nodejs-github-bot

This comment has been minimized.

Co-authored-by: Mestery <mestery@pm.me>
@nodejs-github-bot
Copy link
Collaborator

@Mesteery Mesteery added the python PRs and issues that require attention from people who are familiar with Python. label Jan 1, 2022
Copy link
Contributor

@cclauss cclauss left a comment

Choose a reason for hiding this comment

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

Approve. Under heavy use, the proposed syntax is a nice performance boost...
% py -3.10 # 100k cycles on an M1 Mac...

Python 3.10.1 (main, Dec  6 2021, 22:18:13) [Clang 13.0.0 (clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from timeit import timeit
>>> print(timeit("abc += ['d']", "abc = list('abc')", number=100_000))
0.011850042035803199
>>> print(timeit("abc.append('d')", "abc = list('abc')", number=100_000))
0.010260708979330957
>>> print(timeit("abc += ('d', )", "abc = tuple('abc')", number=100_000))
20.874202583101578

@Trott Trott added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Jan 1, 2022
configure.py Show resolved Hide resolved
@Trott Trott added the commit-queue Add this label to land a pull request using GitHub Actions. label Jan 5, 2022
@nodejs-github-bot nodejs-github-bot added commit-queue-failed An error occurred while landing this pull request using GitHub Actions. and removed commit-queue Add this label to land a pull request using GitHub Actions. labels Jan 5, 2022
@nodejs-github-bot
Copy link
Collaborator

Commit Queue failed
- Loading data for nodejs/node/pull/41372
✔  Done loading data for nodejs/node/pull/41372
----------------------------------- PR info ------------------------------------
Title      build: use list for mutable retval rather than tuple (#41372)
Author     Rich Trott  (@Trott)
Branch     Trott:python-nit -> nodejs:master
Labels     python, author ready
Commits    2
 - build: use list for mutable retval rather than tuple
 - Update configure.py
Committers 2
 - Rich Trott 
 - GitHub 
PR-URL: https://github.com/nodejs/node/pull/41372
Reviewed-By: Christian Clauss 
Reviewed-By: Tobias Nießen 
------------------------------ Generated metadata ------------------------------
PR-URL: https://github.com/nodejs/node/pull/41372
Reviewed-By: Christian Clauss 
Reviewed-By: Tobias Nießen 
--------------------------------------------------------------------------------
   ℹ  This PR was created on Sat, 01 Jan 2022 17:10:54 GMT
   ✔  Approvals: 2
   ✔  - Christian Clauss (@cclauss): https://github.com/nodejs/node/pull/41372#pullrequestreview-842349446
   ✔  - Tobias Nießen (@tniessen) (TSC): https://github.com/nodejs/node/pull/41372#pullrequestreview-842435129
   ✔  Last GitHub CI successful
   ℹ  Last Full PR CI on 2022-01-01T17:24:05Z: https://ci.nodejs.org/job/node-test-pull-request/41718/
- Querying data for job/node-test-pull-request/41718/
   ✔  Last Jenkins CI successful
--------------------------------------------------------------------------------
   ✔  No git cherry-pick in progress
   ✔  No git am in progress
   ✔  No git rebase in progress
--------------------------------------------------------------------------------
- Bringing origin/master up to date...
From https://github.com/nodejs/node
 * branch                  master     -> FETCH_HEAD
✔  origin/master is now up-to-date
- Downloading patch for 41372
From https://github.com/nodejs/node
 * branch                  refs/pull/41372/merge -> FETCH_HEAD
✔  Fetched commits as 513e9fd0b611..277dc43511ca
--------------------------------------------------------------------------------
[master 30b065eb28] build: use list for mutable retval rather than tuple
 Author: Rich Trott 
 Date: Sat Jan 1 09:05:03 2022 -0800
 1 file changed, 3 insertions(+), 3 deletions(-)
[master 2f121192c8] Update configure.py
 Author: Rich Trott 
 Date: Sat Jan 1 09:23:34 2022 -0800
 1 file changed, 1 insertion(+), 1 deletion(-)
   ✔  Patches applied
There are 2 commits in the PR. Attempting autorebase.
Rebasing (2/4)

Executing: git node land --amend --yes
--------------------------------- New Message ----------------------------------
build: use list for mutable retval rather than tuple

We define retval as a tuple and then replace the tuple by "appending"
items with += but that actually creates a new tuple every time.
Because it is intended to be mutable, use a list instead, then return a
tuple from the function, as it should be immutable outside the function.

PR-URL: #41372
Reviewed-By: Christian Clauss cclauss@me.com
Reviewed-By: Tobias Nießen tniessen@tnie.de

[detached HEAD 1fd4e0a6a4] build: use list for mutable retval rather than tuple
Author: Rich Trott rtrott@gmail.com
Date: Sat Jan 1 09:05:03 2022 -0800
1 file changed, 3 insertions(+), 3 deletions(-)
Rebasing (3/4)
Rebasing (4/4)

Executing: git node land --amend --yes
--------------------------------- New Message ----------------------------------
Update configure.py

Co-authored-by: Mestery mestery@pm.me

PR-URL: #41372
Reviewed-By: Christian Clauss cclauss@me.com
Reviewed-By: Tobias Nießen tniessen@tnie.de

[detached HEAD c7dc8f9f76] Update configure.py
Author: Rich Trott rtrott@gmail.com
Date: Sat Jan 1 09:23:34 2022 -0800
1 file changed, 1 insertion(+), 1 deletion(-)

Successfully rebased and updated refs/heads/master.

ℹ Use --fixupAll option, squash the PR manually or land the PR from the command line.

https://github.com/nodejs/node/actions/runs/1656698573

@Trott Trott added commit-queue Add this label to land a pull request using GitHub Actions. commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. and removed commit-queue-failed An error occurred while landing this pull request using GitHub Actions. labels Jan 5, 2022
@nodejs-github-bot nodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Jan 5, 2022
@nodejs-github-bot nodejs-github-bot merged commit bd92726 into nodejs:master Jan 5, 2022
@nodejs-github-bot
Copy link
Collaborator

Landed in bd92726

targos pushed a commit that referenced this pull request Jan 14, 2022
We define `retval` as a tuple and then replace the tuple by "appending"
items with `+=` but that actually creates a new tuple every time.
Because it is intended to be mutable, use a list instead, then return a
tuple from the function, as it should be immutable outside the function.

PR-URL: #41372
Reviewed-By: Christian Clauss <cclauss@me.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
danielleadams pushed a commit that referenced this pull request Jan 31, 2022
We define `retval` as a tuple and then replace the tuple by "appending"
items with `+=` but that actually creates a new tuple every time.
Because it is intended to be mutable, use a list instead, then return a
tuple from the function, as it should be immutable outside the function.

PR-URL: #41372
Reviewed-By: Christian Clauss <cclauss@me.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Linkgoron pushed a commit to Linkgoron/node that referenced this pull request Jan 31, 2022
We define `retval` as a tuple and then replace the tuple by "appending"
items with `+=` but that actually creates a new tuple every time.
Because it is intended to be mutable, use a list instead, then return a
tuple from the function, as it should be immutable outside the function.

PR-URL: nodejs#41372
Reviewed-By: Christian Clauss <cclauss@me.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
danielleadams pushed a commit that referenced this pull request Feb 1, 2022
We define `retval` as a tuple and then replace the tuple by "appending"
items with `+=` but that actually creates a new tuple every time.
Because it is intended to be mutable, use a list instead, then return a
tuple from the function, as it should be immutable outside the function.

PR-URL: #41372
Reviewed-By: Christian Clauss <cclauss@me.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
@danielleadams danielleadams mentioned this pull request Feb 1, 2022
@Trott Trott deleted the python-nit branch September 25, 2022 17:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. python PRs and issues that require attention from people who are familiar with Python.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants