GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||
GeezerVison is showing github.com — gh-103134: Update multiprocessing.managers.ListProxy and multiprocessing.managers.DictProxy by invisibleroads · Pull Request #103133 · python/cpython Conversation
|
|
Most changes to Python require a NEWS entry. Please add it using the blurb_it web app or the blurb command-line tool. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Are there any tests for BaseList Proxy or derivatives that are not automatically expanded by expanding this list? And which should be manually augmented?
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
| '__mul__', '__reversed__', '__rmul__', '__setitem__', | ||
| 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', | ||
| 'append', 'clear', 'count', 'extend', 'index', 'insert', 'pop', 'remove', | ||
| 'reverse', 'sort', '__imul__' |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Given the definition of method __iadd__ in the definition of ListProxy below, it would seem that it should be in the list above. On the other hand, adding xs += [2] to your example works as is. Maybe '_imul' does not need to be listed. Does it hurt to list 'iadd'?
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
It looks like ListProxy.__iadd__ uses BaseListProxy.extend and ListProxy.__imul__ calls BaseListProxy.__imul__. I'm not sure of the reasoning behind why ListProxy defines __iadd__ and __imul__ separately instead of including them directly in BaseListProxy. Testing xs += [2] and xs *= 2 works when tested manually.
I'm afraid of replacing BaseListProxy with ListProxy for fear of breaking something. Looking at git blame, it looks like this part of the code was last changed 15 years ago? @benjaminp would it be safe to replace BaseListProxy with ListProxy and just include __iadd__ and __imul__?
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
As mentioned on issue, DictProxy and maybe others need updating. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
```
from multiprocessing import Manager
with Manager() as manager:
xs = manager.list()
xs.clear
xs.copy
d = manager.dict()
d | {} # __or__
{} | d # __ror__
reversed(d) # __reversed__
d.fromkeys
```
suggested by @terryjreedy
tested manually in Python 3.10.8
python#103134
…Hrn91.rst Co-authored-by: Terry Jan Reedy <[email protected]>
Added a few more bits to DictProxy to support the cases you mentioned, including After your comments, I'm tempted to replace |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
As an update, I did try removing RESULTSACTUAL after replacing EXPECTED and ACTUAL with current commits for this pull request -- works with this pull request The pull request passes the above manual test. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
We could write a test that uses a process to modify a manager.list or manager.list, then check that the list or dict has actually been modified. I found the multiprocessing tests here will try to add tests over the weekend |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
This pull request is ready for review. Thanks to @arhadthedev for accepting this issue, @terryjreedy for the suggestions and @sunmy2019 for the very important hints. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
This minor enhancement backports recently added list and dictionary functionality into multiprocessing.managers.ListProxy and multiprocessing.managers.DictProxy so that scripts that use multiprocessing.Manager can use the same list and dictionary functionality. Would it be possible for someone to review these proposed enhancements? @kumaraditya303 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Please test the type and the value of results.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
It's been almost a year, but I finally got around to making the changes requested by @serhiy-storchaka. Would it be possible for someone to review these changes? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Check that the dictionary returned by dict_proxy.from_keys is a dict as defined in dict.from_keys as requested by @encukou
|
Thanks to @encukou for taking the time to review this during the PyCon 2024 sprints!! |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.