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

bpo-38870: refactor delimiting with context managers #17612

Merged
merged 6 commits into from
Dec 23, 2019

Conversation

isidentical
Copy link
Member

@isidentical isidentical commented Dec 15, 2019

Copy link
Member

@vstinner vstinner left a comment

Choose a reason for hiding this comment

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

Apart open questions to related to https://bugs.python.org/issue39069, this PR looks good to me.

@isidentical: Are you interested to measure the overhead of functools/enum imports/code? See https://bugs.python.org/issue39069#msg358498

@isidentical
Copy link
Member Author

isidentical commented Dec 16, 2019 via email

@isidentical
Copy link
Member Author

Oh, looks like @pablogsal already assigned.

@vstinner
Copy link
Member

Yes but currently I can only reply through mail because bpo logins with google doesnt work.

Oh, I didn't know: I reported this issue at python/bugs.python.org#41

Copy link
Member

@vstinner vstinner left a comment

Choose a reason for hiding this comment

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

I would prefer to only not delimit() if the delimiter is always written, like in a function call or item[index].

Lib/ast.py Outdated
self.fill(def_str)
self.traverse(node.args)
self.write(")")
with self.delimit("()"):
Copy link
Member

Choose a reason for hiding this comment

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

Wait. I'm not sure about this one. Are you going to omit parenthesis here sometimes?

The change is correct, but direct write() calls are maybe better.

Lib/ast.py Outdated
lambda: self.write(", "), write_item, zip(node.keys, node.values)
)
self.write("}")
with self.delimit("{}"):
Copy link
Member

Choose a reason for hiding this comment

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

Same here, I'm not convince thta delimit() makes the code more readable.

Lib/ast.py Outdated
else:
self.interleave(lambda: self.write(", "), self.traverse, node.elts)
self.write(")")
with self.delimit("()"):
Copy link
Member

Choose a reason for hiding this comment

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

Is delim() useful here?

Lib/ast.py Outdated
comma = True
self.traverse(e)
self.write(")")
with self.delimit("()"):
Copy link
Member

Choose a reason for hiding this comment

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

Same question here.

Lib/ast.py Outdated
self.write("[")
self.traverse(node.slice)
self.write("]")
with self.delimit("[]"):
Copy link
Member

Choose a reason for hiding this comment

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

and here

Co-Authored-By: Victor Stinner <vstinner@python.org>
@isidentical
Copy link
Member Author

@vstinner a general answer, I used delim in everywhere we are using brackets for the sake of consistency. If it looks better without them, I can just revert back in few places.

Copy link
Member

@vstinner vstinner left a comment

Choose a reason for hiding this comment

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

@pablogsal: Do you prefer to only use delim() when parenthesis can be optional, or are you fine with replacing all write(x) ... write(y) with "with delim(xy): ..."?

@pablogsal
Copy link
Member

pablogsal commented Dec 23, 2019

or are you fine with replacing all write(x) ... write(y) with "with delim(xy): ..."?

I am fine with replacing all write(x) ... write(y) with with delim(xy) if that is what you prefer. I am of the same opinion that is not clear to me that it produces clearer code in all cases.

Copy link
Member

@pablogsal pablogsal left a comment

Choose a reason for hiding this comment

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

Almost there! I left some comments (will maybe leave more on a second pass).

@bedevere-bot
Copy link

A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated.

Once you have made the requested changes, please leave a comment on this pull request containing the phrase I have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

@isidentical
Copy link
Member Author

I have made the requested changes; please review again

@bedevere-bot
Copy link

Thanks for making the requested changes!

@pablogsal: please review the changes made to this pull request.

Copy link
Member

@pablogsal pablogsal left a comment

Choose a reason for hiding this comment

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

LGTM

@pablogsal
Copy link
Member

pablogsal commented Dec 23, 2019

I am going to land this one to unblock the rest of the work. @vstinner, we can move the discussion about the readability of the code that you mention to the issue or another PR 😉

@pablogsal pablogsal merged commit 4b3b122 into python:master Dec 23, 2019
@pablogsal
Copy link
Member

Thanks for the PR @isidentical! 🎉

@bedevere-bot
Copy link

⚠️⚠️⚠️ Buildbot failure ⚠️⚠️⚠️

Hi! The buildbot AMD64 FreeBSD Shared 3.x has failed when building commit 4b3b122.

What do you need to do:

  1. Don't panic.
  2. Check the buildbot page in the devguide if you don't know what the buildbots are or how they work.
  3. Go to the page of the buildbot that failed (https://buildbot.python.org/all/#builders/152/builds/86) and take a look at the build logs.
  4. Check if the failure is related to this commit (4b3b122) or if it is a false positive.
  5. If the failure is related to this commit, please, reflect that on the issue and make a new Pull Request with a fix.

You can take a look at the buildbot page here:

https://buildbot.python.org/all/#builders/152/builds/86

Summary of the results of the build (if available):

== Tests result: ENV CHANGED ==

399 tests OK.

10 slowest tests:

  • test_tokenize: 8 min 44 sec
  • test_unparse: 6 min 9 sec
  • test_lib2to3: 6 min 7 sec
  • test_concurrent_futures: 5 min 18 sec
  • test_multiprocessing_spawn: 5 min 3 sec
  • test_multiprocessing_forkserver: 4 min 4 sec
  • test_asyncio: 3 min 40 sec
  • test_capi: 3 min 38 sec
  • test_multiprocessing_fork: 3 min 37 sec
  • test_subprocess: 3 min 18 sec

1 test altered the execution environment:
test_multiprocessing_spawn

20 tests skipped:
test_dbm_gnu test_devpoll test_epoll test_gdb test_idle test_ioctl
test_msilib test_ossaudiodev test_spwd test_startfile test_tcl
test_tix test_tk test_ttk_guionly test_ttk_textonly test_turtle
test_winconsoleio test_winreg test_winsound test_zipfile64

Total duration: 30 min 40 sec

Click to see traceback logs
remote: Enumerating objects: 4, done.        
remote: Counting objects:  25% (1/4)        
remote: Counting objects:  50% (2/4)        
remote: Counting objects:  75% (3/4)        
remote: Counting objects: 100% (4/4)        
remote: Counting objects: 100% (4/4), done.        
remote: Compressing objects:  50% (1/2)        
remote: Compressing objects: 100% (2/2)        
remote: Compressing objects: 100% (2/2), done.        
remote: Total 4 (delta 2), reused 3 (delta 2), pack-reused 0        
From https://github.com/python/cpython
 * branch                  master     -> FETCH_HEAD
Reset branch 'master'

test_tix skipped -- No module named '_tkinter'
test_spwd skipped -- No module named 'spwd'
test_epoll skipped -- test works only on Linux 2.6
test_tk skipped -- No module named '_tkinter'
test_tcl skipped -- No module named '_tkinter'
test_dbm_gnu skipped -- No module named '_gdbm'
test_winconsoleio skipped -- test only relevant on win32
test_idle skipped -- No module named '_tkinter'
/usr/home/buildbot/python/3.x.koobs-freebsd-564d/build/Lib/multiprocessing/resource_tracker.py:216: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown
  warnings.warn('resource_tracker: There appear to be %d '
/usr/home/buildbot/python/3.x.koobs-freebsd-564d/build/Lib/multiprocessing/resource_tracker.py:229: UserWarning: resource_tracker: '/psm_7545d92b': [Errno 2] No such file or directory: '/psm_7545d92b'
  warnings.warn('resource_tracker: %r: %s' % (name, e))
test_ttk_textonly skipped -- No module named '_tkinter'
test_devpoll skipped -- test works only on Solaris OS family
test_turtle skipped -- No module named '_tkinter'
test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run
test_startfile skipped -- object <module 'os' from '/usr/home/buildbot/python/3.x.koobs-freebsd-564d/build/Lib/os.py'> has no attribute 'startfile'
test_winsound skipped -- No module named 'winsound'
test_ttk_guionly skipped -- No module named '_tkinter'
stty: stdin isn't a terminal
test_msilib skipped -- No module named '_msi'
test_ioctl skipped -- Unable to open /dev/tty
test_gdb skipped -- Couldn't find gdb on the path
test_flock (__main__.FNTLEINTRTest) ... ok
test_lockf (__main__.FNTLEINTRTest) ... ok
test_read (__main__.OSEINTRTest) ... ok
test_wait (__main__.OSEINTRTest) ... ok
test_wait3 (__main__.OSEINTRTest) ... ok
test_wait4 (__main__.OSEINTRTest) ... ok
test_waitpid (__main__.OSEINTRTest) ... ok
test_write (__main__.OSEINTRTest) ... ok
test_devpoll (__main__.SelectEINTRTest) ... skipped 'need select.devpoll'
test_epoll (__main__.SelectEINTRTest) ... skipped 'need select.epoll'
test_kqueue (__main__.SelectEINTRTest) ... ok
test_poll (__main__.SelectEINTRTest) ... ok
test_select (__main__.SelectEINTRTest) ... ok
test_sigtimedwait (__main__.SignalEINTRTest) ... ok
test_sigwaitinfo (__main__.SignalEINTRTest) ... ok
test_accept (__main__.SocketEINTRTest) ... ok
test_open (__main__.SocketEINTRTest) ... ok
test_os_open (__main__.SocketEINTRTest) ... ok
test_recv (__main__.SocketEINTRTest) ... ok
test_recvmsg (__main__.SocketEINTRTest) ... ok
test_send (__main__.SocketEINTRTest) ... ok
test_sendall (__main__.SocketEINTRTest) ... ok
test_sendmsg (__main__.SocketEINTRTest) ... ok
test_sleep (__main__.TimeEINTRTest) ... ok

----------------------------------------------------------------------
Ran 24 tests in 14.677s

OK (skipped=2)
test_ossaudiodev skipped -- [Errno 2] No such file or directory: '/dev/dsp'
/usr/home/buildbot/python/3.x.koobs-freebsd-564d/build/Lib/multiprocessing/resource_tracker.py:216: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown
  warnings.warn('resource_tracker: There appear to be %d '
/usr/home/buildbot/python/3.x.koobs-freebsd-564d/build/Lib/multiprocessing/resource_tracker.py:229: UserWarning: resource_tracker: '/psm_8861a3e3': [Errno 2] No such file or directory: '/psm_8861a3e3'
  warnings.warn('resource_tracker: %r: %s' % (name, e))
test_winreg skipped -- No module named 'winreg'
/usr/home/buildbot/python/3.x.koobs-freebsd-564d/build/Lib/multiprocessing/resource_tracker.py:216: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown
  warnings.warn('resource_tracker: There appear to be %d '
/usr/home/buildbot/python/3.x.koobs-freebsd-564d/build/Lib/multiprocessing/resource_tracker.py:229: UserWarning: resource_tracker: '/psm_873141db': [Errno 2] No such file or directory: '/psm_873141db'
  warnings.warn('resource_tracker: %r: %s' % (name, e))
test__all__ (test.test_multiprocessing_spawn.MiscTestCase) ... ok
test_answer_challenge_auth_failure (test.test_multiprocessing_spawn.OtherTest) ... ok
test_deliver_challenge_auth_failure (test.test_multiprocessing_spawn.OtherTest) ... ok
test_closefd (test.test_multiprocessing_spawn.TestCloseFds) ... ok
test_flags (test.test_multiprocessing_spawn.TestFlags) ... ok
test_lock (test.test_multiprocessing_spawn.TestForkAwareThreadLock) ... ok
test_ignore (test.test_multiprocessing_spawn.TestIgnoreEINTR) ... ok
test_ignore_listener (test.test_multiprocessing_spawn.TestIgnoreEINTR) ... ok
test_manager_initializer (test.test_multiprocessing_spawn.TestInitializers) ... ok
test_pool_initializer (test.test_multiprocessing_spawn.TestInitializers) ... ok
test_invalid_family (test.test_multiprocessing_spawn.TestInvalidFamily) ... ok
test_invalid_family_win32 (test.test_multiprocessing_spawn.TestInvalidFamily) ... skipped 'skipped on non-Windows platforms'
test_invalid_handles (test.test_multiprocessing_spawn.TestInvalidHandle) ... ok
test_noforkbomb (test.test_multiprocessing_spawn.TestNoForkBomb) ... ok
test_release_unused_processes (test.test_multiprocessing_spawn.TestPoolNotLeakOnFailure) ... ok
test_resource_tracker (test.test_multiprocessing_spawn.TestResourceTracker) ... ok
test_resource_tracker_reused (test.test_multiprocessing_spawn.TestResourceTracker) ... ok
test_resource_tracker_sigint (test.test_multiprocessing_spawn.TestResourceTracker) ... ok
test_resource_tracker_sigkill (test.test_multiprocessing_spawn.TestResourceTracker) ... ok
test_resource_tracker_sigterm (test.test_multiprocessing_spawn.TestResourceTracker) ... ok
test_empty (test.test_multiprocessing_spawn.TestSimpleQueue) ... ok
test_context (test.test_multiprocessing_spawn.TestStartMethod) ... ok
test_get_all (test.test_multiprocessing_spawn.TestStartMethod) ... ok
test_preload_resources (test.test_multiprocessing_spawn.TestStartMethod) ... skipped "test only relevant for 'forkserver' method"
test_set_get (test.test_multiprocessing_spawn.TestStartMethod) ... ok
test_flushing (test.test_multiprocessing_spawn.TestStdinBadfiledescriptor) ... ok
test_pool_in_process (test.test_multiprocessing_spawn.TestStdinBadfiledescriptor) ... ok
test_queue_in_process (test.test_multiprocessing_spawn.TestStdinBadfiledescriptor) ... ok
test_array (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_barrier (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_bounded_semaphore (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_condition (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_dict (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_event (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_joinable_queue (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_list (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_lock (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_namespace (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_pool (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_queue (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_rlock (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_semaphore (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_value (test.test_multiprocessing_spawn.TestSyncManagerTypes) ... ok
test_timeout (test.test_multiprocessing_spawn.TestTimeouts) ... ok
test_neg_timeout (test.test_multiprocessing_spawn.TestWait) ... ok
test_wait (test.test_multiprocessing_spawn.TestWait) ... ok
test_wait_integer (test.test_multiprocessing_spawn.TestWait) ... ok
test_wait_slow (test.test_multiprocessing_spawn.TestWait) ... ok
test_wait_socket (test.test_multiprocessing_spawn.TestWait) ... ok
test_wait_socket_slow (test.test_multiprocessing_spawn.TestWait) ... ok
test_wait_timeout (test.test_multiprocessing_spawn.TestWait) ... ok
test_abort (test.test_multiprocessing_spawn.WithManagerTestBarrier) ... ok
test_abort_and_reset (test.test_multiprocessing_spawn.WithManagerTestBarrier) ... ok
test_action (test.test_multiprocessing_spawn.WithManagerTestBarrier) ... ok
test_barrier (test.test_multiprocessing_spawn.WithManagerTestBarrier) ... ok
test_barrier_10 (test.test_multiprocessing_spawn.WithManagerTestBarrier) ... ok
test_default_timeout (test.test_multiprocessing_spawn.WithManagerTestBarrier) ... ok
test_reset (test.test_multiprocessing_spawn.WithManagerTestBarrier) ... ok
test_single_thread (test.test_multiprocessing_spawn.WithManagerTestBarrier) ... ok
test_thousand (test.test_multiprocessing_spawn.WithManagerTestBarrier) ... skipped 'test not appropriate for manager'
test_timeout (test.test_multiprocessing_spawn.WithManagerTestBarrier) ... ok
test_wait_return (test.test_multiprocessing_spawn.WithManagerTestBarrier) ... ok
test_notify (test.test_multiprocessing_spawn.WithManagerTestCondition) ... ok
test_notify_all (test.test_multiprocessing_spawn.WithManagerTestCondition) ... ok
test_notify_n (test.test_multiprocessing_spawn.WithManagerTestCondition) ... ok
test_timeout (test.test_multiprocessing_spawn.WithManagerTestCondition) ... ok
test_wait_result (test.test_multiprocessing_spawn.WithManagerTestCondition) ... ok
test_waitfor (test.test_multiprocessing_spawn.WithManagerTestCondition) ... ok
test_waitfor_timeout (test.test_multiprocessing_spawn.WithManagerTestCondition) ... ok
test_dict (test.test_multiprocessing_spawn.WithManagerTestContainers) ... ok
test_dict_iter (test.test_multiprocessing_spawn.WithManagerTestContainers) ... ok
test_dict_proxy_nested (test.test_multiprocessing_spawn.WithManagerTestContainers) ... ok
test_list (test.test_multiprocessing_spawn.WithManagerTestContainers) ... ok
test_list_iter (test.test_multiprocessing_spawn.WithManagerTestContainers) ... ok
test_list_proxy_in_list (test.test_multiprocessing_spawn.WithManagerTestContainers) ... ok
test_namespace (test.test_multiprocessing_spawn.WithManagerTestContainers) ... ok
test_event (test.test_multiprocessing_spawn.WithManagerTestEvent) ... ok
test_lock (test.test_multiprocessing_spawn.WithManagerTestLock) ... ok
test_lock_context (test.test_multiprocessing_spawn.WithManagerTestLock) ... ok
test_rlock (test.test_multiprocessing_spawn.WithManagerTestLock) ... ok
test_rapid_restart (test.test_multiprocessing_spawn.WithManagerTestManagerRestart) ... ok
test_mymanager (test.test_multiprocessing_spawn.WithManagerTestMyManager) ... ok
test_mymanager_context (test.test_multiprocessing_spawn.WithManagerTestMyManager) ... ok
test_mymanager_context_prestarted (test.test_multiprocessing_spawn.WithManagerTestMyManager) ... ok
test_apply (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_async (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_async_timeout (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_context (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_empty_iterable (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_enter (test.test_multiprocessing_spawn.WithManagerTestPool) ... skipped 'test not applicable to manager'
test_imap (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_imap_handle_iterable_exception (test.test_multiprocessing_spawn.WithManagerTestPool) ... skipped 'test not appropriate for manager'
test_imap_unordered (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_imap_unordered_handle_iterable_exception (test.test_multiprocessing_spawn.WithManagerTestPool) ... skipped 'test not appropriate for manager'
test_make_pool (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_map (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_map_async (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_map_async_callbacks (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_map_chunksize (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_map_handle_iterable_exception (test.test_multiprocessing_spawn.WithManagerTestPool) ... skipped 'test not appropriate for manager'
test_map_no_failfast (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_map_unplicklable (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_release_task_refs (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_resource_warning (test.test_multiprocessing_spawn.WithManagerTestPool) ... skipped 'test not applicable to manager'
test_starmap (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_starmap_async (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_terminate (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_traceback (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_wrapped_exception (test.test_multiprocessing_spawn.WithManagerTestPool) ... ok
test_closed_queue_put_get_exceptions (test.test_multiprocessing_spawn.WithManagerTestQueue) ... ok
test_fork (test.test_multiprocessing_spawn.WithManagerTestQueue) ... ok
test_get (test.test_multiprocessing_spawn.WithManagerTestQueue) ... ok
test_no_import_lock_contention (test.test_multiprocessing_spawn.WithManagerTestQueue) ... ok
test_put (test.test_multiprocessing_spawn.WithManagerTestQueue) ... ok
test_qsize (test.test_multiprocessing_spawn.WithManagerTestQueue) ... ok
test_queue_feeder_donot_stop_onexc (test.test_multiprocessing_spawn.WithManagerTestQueue) ... skipped 'test not appropriate for manager'
test_queue_feeder_on_queue_feeder_error (test.test_multiprocessing_spawn.WithManagerTestQueue) ... skipped 'test not appropriate for manager'
test_task_done (test.test_multiprocessing_spawn.WithManagerTestQueue) ... ok
test_timeout (test.test_multiprocessing_spawn.WithManagerTestQueue) ... ok
test_remote (test.test_multiprocessing_spawn.WithManagerTestRemoteManager) ... ok
test_bounded_semaphore (test.test_multiprocessing_spawn.WithManagerTestSemaphore) ... ok
test_semaphore (test.test_multiprocessing_spawn.WithManagerTestSemaphore) ... ok
test_timeout (test.test_multiprocessing_spawn.WithManagerTestSemaphore) ... skipped 'test not appropriate for manager'
test_array (test.test_multiprocessing_spawn.WithProcessesTestArray) ... ok
test_array_from_size (test.test_multiprocessing_spawn.WithProcessesTestArray) ... ok
test_getobj_getlock_obj (test.test_multiprocessing_spawn.WithProcessesTestArray) ... ok
test_rawarray (test.test_multiprocessing_spawn.WithProcessesTestArray) ... ok
test_abort (test.test_multiprocessing_spawn.WithProcessesTestBarrier) ... ok
test_abort_and_reset (test.test_multiprocessing_spawn.WithProcessesTestBarrier) ... ok
test_action (test.test_multiprocessing_spawn.WithProcessesTestBarrier) ... ok
test_barrier (test.test_multiprocessing_spawn.WithProcessesTestBarrier) ... ok
test_barrier_10 (test.test_multiprocessing_spawn.WithProcessesTestBarrier) ... ok
test_default_timeout (test.test_multiprocessing_spawn.WithProcessesTestBarrier) ... ok
test_reset (test.test_multiprocessing_spawn.WithProcessesTestBarrier) ... ok
test_single_thread (test.test_multiprocessing_spawn.WithProcessesTestBarrier) ... ok
test_thousand (test.test_multiprocessing_spawn.WithProcessesTestBarrier) ... ok
test_timeout (test.test_multiprocessing_spawn.WithProcessesTestBarrier) ... ok
test_wait_return (test.test_multiprocessing_spawn.WithProcessesTestBarrier) ... ok
test_notify (test.test_multiprocessing_spawn.WithProcessesTestCondition) ... ok
test_notify_all (test.test_multiprocessing_spawn.WithProcessesTestCondition) ... ok
test_notify_n (test.test_multiprocessing_spawn.WithProcessesTestCondition) ... ok
test_timeout (test.test_multiprocessing_spawn.WithProcessesTestCondition) ... ok
test_wait_result (test.test_multiprocessing_spawn.WithProcessesTestCondition) ... ok
test_waitfor (test.test_multiprocessing_spawn.WithProcessesTestCondition) ... ok
test_waitfor_timeout (test.test_multiprocessing_spawn.WithProcessesTestCondition) ... ok
test_connection (test.test_multiprocessing_spawn.WithProcessesTestConnection) ... ok
test_context (test.test_multiprocessing_spawn.WithProcessesTestConnection) ... ok
test_duplex_false (test.test_multiprocessing_spawn.WithProcessesTestConnection) ... ok
test_fd_transfer (test.test_multiprocessing_spawn.WithProcessesTestConnection) ... ok
test_large_fd_transfer (test.test_multiprocessing_spawn.WithProcessesTestConnection) ... ok
test_missing_fd_transfer (test.test_multiprocessing_spawn.WithProcessesTestConnection) ... ok
test_sendbytes (test.test_multiprocessing_spawn.WithProcessesTestConnection) ... ok
test_spawn_close (test.test_multiprocessing_spawn.WithProcessesTestConnection) ... ok
test_event (test.test_multiprocessing_spawn.WithProcessesTestEvent) ... ok
test_finalize (test.test_multiprocessing_spawn.WithProcessesTestFinalize) ... ok
test_thread_safety (test.test_multiprocessing_spawn.WithProcessesTestFinalize) ... ok
test_free_from_gc (test.test_multiprocessing_spawn.WithProcessesTestHeap) ... ok
test_heap (test.test_multiprocessing_spawn.WithProcessesTestHeap) ... ok
test_context (test.test_multiprocessing_spawn.WithProcessesTestListener) ... ok
test_multiple_bind (test.test_multiprocessing_spawn.WithProcessesTestListener) ... ok
test_issue14725 (test.test_multiprocessing_spawn.WithProcessesTestListenerClient) ... ok
test_issue16955 (test.test_multiprocessing_spawn.WithProcessesTestListenerClient) ... ok
test_listener_client (test.test_multiprocessing_spawn.WithProcessesTestListenerClient) ... ok
test_lock (test.test_multiprocessing_spawn.WithProcessesTestLock) ... ok
test_lock_context (test.test_multiprocessing_spawn.WithProcessesTestLock) ... ok
test_rlock (test.test_multiprocessing_spawn.WithProcessesTestLock) ... ok
test_enable_logging (test.test_multiprocessing_spawn.WithProcessesTestLogging) ... ok
test_level (test.test_multiprocessing_spawn.WithProcessesTestLogging) ... ok
test_rapid_restart (test.test_multiprocessing_spawn.WithProcessesTestManagerRestart) ... ok
test_access (test.test_multiprocessing_spawn.WithProcessesTestPicklingConnections) ... ok
test_pickling (test.test_multiprocessing_spawn.WithProcessesTestPicklingConnections) ... ok
test_boundaries (test.test_multiprocessing_spawn.WithProcessesTestPoll) ... ok
test_dont_merge (test.test_multiprocessing_spawn.WithProcessesTestPoll) ... ok
test_empty_string (test.test_multiprocessing_spawn.WithProcessesTestPoll) ... ok
test_strings (test.test_multiprocessing_spawn.WithProcessesTestPoll) ... ok
test_poll_eintr (test.test_multiprocessing_spawn.WithProcessesTestPollEintr) ... ok
test_apply (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_async (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_async_timeout (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_context (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_empty_iterable (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_enter (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_imap (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_imap_handle_iterable_exception (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_imap_unordered (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_imap_unordered_handle_iterable_exception (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_make_pool (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_map (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_map_async (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_map_async_callbacks (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_map_chunksize (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_map_handle_iterable_exception (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_map_no_failfast (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_map_unplicklable (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_release_task_refs (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_resource_warning (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_starmap (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_starmap_async (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_terminate (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_traceback (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_wrapped_exception (test.test_multiprocessing_spawn.WithProcessesTestPool) ... ok
test_async_error_callback (test.test_multiprocessing_spawn.WithProcessesTestPoolWorkerErrors) ... ok
test_unpickleable_result (test.test_multiprocessing_spawn.WithProcessesTestPoolWorkerErrors) ... ok
test_pool_worker_lifetime (test.test_multiprocessing_spawn.WithProcessesTestPoolWorkerLifetime) ... ok
test_pool_worker_lifetime_early_close (test.test_multiprocessing_spawn.WithProcessesTestPoolWorkerLifetime) ... ok
test_active_children (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_child_fd_inflation (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_close (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_cpu_count (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_current (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_daemon_argument (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_error_on_stdio_flush_1 (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_error_on_stdio_flush_2 (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_forkserver_sigint (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... skipped 'test not appropriate for spawn'
test_forkserver_sigkill (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... skipped 'test not appropriate for spawn'
test_kill (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_lose_target_ref (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_many_processes (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_parent_process (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_parent_process_attributes (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_process (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_process_mainthread_native_id (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_recursion (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_sentinel (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_terminate (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_wait_for_threads (test.test_multiprocessing_spawn.WithProcessesTestProcess) ... ok
test_closed_queue_put_get_exceptions (test.test_multiprocessing_spawn.WithProcessesTestQueue) ... ok
test_fork (test.test_multiprocessing_spawn.WithProcessesTestQueue) ... ok
test_get (test.test_multiprocessing_spawn.WithProcessesTestQueue) ... ok
test_no_import_lock_contention (test.test_multiprocessing_spawn.WithProcessesTestQueue) ... ok
test_put (test.test_multiprocessing_spawn.WithProcessesTestQueue) ... ok
test_qsize (test.test_multiprocessing_spawn.WithProcessesTestQueue) ... ok
test_queue_feeder_donot_stop_onexc (test.test_multiprocessing_spawn.WithProcessesTestQueue) ... ok
test_queue_feeder_on_queue_feeder_error (test.test_multiprocessing_spawn.WithProcessesTestQueue) ... ok
test_task_done (test.test_multiprocessing_spawn.WithProcessesTestQueue) ... ok
test_timeout (test.test_multiprocessing_spawn.WithProcessesTestQueue) ... ok
test_bounded_semaphore (test.test_multiprocessing_spawn.WithProcessesTestSemaphore) ... ok
test_semaphore (test.test_multiprocessing_spawn.WithProcessesTestSemaphore) ... ok
test_timeout (test.test_multiprocessing_spawn.WithProcessesTestSemaphore) ... ok
test_copy (test.test_multiprocessing_spawn.WithProcessesTestSharedCTypes) ... ok
test_sharedctypes (test.test_multiprocessing_spawn.WithProcessesTestSharedCTypes) ... ok
test_synchronize (test.test_multiprocessing_spawn.WithProcessesTestSharedCTypes) ... ok
test_shared_memory_ShareableList_basics (test.test_multiprocessing_spawn.WithProcessesTestSharedMemory) ... ok
test_shared_memory_ShareableList_pickling (test.test_multiprocessing_spawn.WithProcessesTestSharedMemory) ... ok
test_shared_memory_SharedMemoryManager_basics (test.test_multiprocessing_spawn.WithProcessesTestSharedMemory) ... ok
test_shared_memory_SharedMemoryManager_reuses_resource_tracker (test.test_multiprocessing_spawn.WithProcessesTestSharedMemory) ... ok
test_shared_memory_SharedMemoryServer_ignores_sigint (test.test_multiprocessing_spawn.WithProcessesTestSharedMemory) ... ok
test_shared_memory_across_processes (test.test_multiprocessing_spawn.WithProcessesTestSharedMemory) ... ok
test_shared_memory_basics (test.test_multiprocessing_spawn.WithProcessesTestSharedMemory) ... ok
test_shared_memory_cleaned_after_process_termination (test.test_multiprocessing_spawn.WithProcessesTestSharedMemory) ... ok
test_stderr_flush (test.test_multiprocessing_spawn.WithProcessesTestSubclassingProcess) ... ok
test_subclassing (test.test_multiprocessing_spawn.WithProcessesTestSubclassingProcess) ... ok
test_sys_exit (test.test_multiprocessing_spawn.WithProcessesTestSubclassingProcess) ... ok
test_getobj_getlock (test.test_multiprocessing_spawn.WithProcessesTestValue) ... ok
test_rawvalue (test.test_multiprocessing_spawn.WithProcessesTestValue) ... ok
test_value (test.test_multiprocessing_spawn.WithProcessesTestValue) ... ok
test_abort (test.test_multiprocessing_spawn.WithThreadsTestBarrier) ... ok
test_abort_and_reset (test.test_multiprocessing_spawn.WithThreadsTestBarrier) ... ok
test_action (test.test_multiprocessing_spawn.WithThreadsTestBarrier) ... ok
test_barrier (test.test_multiprocessing_spawn.WithThreadsTestBarrier) ... ok
test_barrier_10 (test.test_multiprocessing_spawn.WithThreadsTestBarrier) ... ok
test_default_timeout (test.test_multiprocessing_spawn.WithThreadsTestBarrier) ... ok
test_reset (test.test_multiprocessing_spawn.WithThreadsTestBarrier) ... ok
test_single_thread (test.test_multiprocessing_spawn.WithThreadsTestBarrier) ... ok
test_thousand (test.test_multiprocessing_spawn.WithThreadsTestBarrier) ... ok
test_timeout (test.test_multiprocessing_spawn.WithThreadsTestBarrier) ... ok
test_wait_return (test.test_multiprocessing_spawn.WithThreadsTestBarrier) ... ok
test_notify (test.test_multiprocessing_spawn.WithThreadsTestCondition) ... ok
test_notify_all (test.test_multiprocessing_spawn.WithThreadsTestCondition) ... ok
test_notify_n (test.test_multiprocessing_spawn.WithThreadsTestCondition) ... ok
test_timeout (test.test_multiprocessing_spawn.WithThreadsTestCondition) ... ok
test_wait_result (test.test_multiprocessing_spawn.WithThreadsTestCondition) ... ok
test_waitfor (test.test_multiprocessing_spawn.WithThreadsTestCondition) ... ok
test_waitfor_timeout (test.test_multiprocessing_spawn.WithThreadsTestCondition) ... ok
test_connection (test.test_multiprocessing_spawn.WithThreadsTestConnection) ... ok
test_context (test.test_multiprocessing_spawn.WithThreadsTestConnection) ... ok
test_duplex_false (test.test_multiprocessing_spawn.WithThreadsTestConnection) ... ok
test_fd_transfer (test.test_multiprocessing_spawn.WithThreadsTestConnection) ... skipped 'only makes sense with processes'
test_large_fd_transfer (test.test_multiprocessing_spawn.WithThreadsTestConnection) ... skipped 'only makes sense with processes'
test_missing_fd_transfer (test.test_multiprocessing_spawn.WithThreadsTestConnection) ... skipped 'only makes sense with processes'
test_sendbytes (test.test_multiprocessing_spawn.WithThreadsTestConnection) ... skipped 'test not appropriate for threads'
test_spawn_close (test.test_multiprocessing_spawn.WithThreadsTestConnection) ... ok
test_event (test.test_multiprocessing_spawn.WithThreadsTestEvent) ... ok
test_issue14725 (test.test_multiprocessing_spawn.WithThreadsTestListenerClient) ... ok
test_issue16955 (test.test_multiprocessing_spawn.WithThreadsTestListenerClient) ... ok
test_listener_client (test.test_multiprocessing_spawn.WithThreadsTestListenerClient) ... ok
test_lock (test.test_multiprocessing_spawn.WithThreadsTestLock) ... ok
test_lock_context (test.test_multiprocessing_spawn.WithThreadsTestLock) ... ok
test_rlock (test.test_multiprocessing_spawn.WithThreadsTestLock) ... ok
test_rapid_restart (test.test_multiprocessing_spawn.WithThreadsTestManagerRestart) ... ok
test_boundaries (test.test_multiprocessing_spawn.WithThreadsTestPoll) ... ok
test_dont_merge (test.test_multiprocessing_spawn.WithThreadsTestPoll) ... ok
test_empty_string (test.test_multiprocessing_spawn.WithThreadsTestPoll) ... ok
test_strings (test.test_multiprocessing_spawn.WithThreadsTestPoll) ... ok
test_apply (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_async (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_async_timeout (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_context (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_empty_iterable (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_enter (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_imap (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_imap_handle_iterable_exception (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_imap_unordered (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_imap_unordered_handle_iterable_exception (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_make_pool (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_map (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_map_async (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_map_async_callbacks (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_map_chunksize (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_map_handle_iterable_exception (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_map_no_failfast (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_map_unplicklable (test.test_multiprocessing_spawn.WithThreadsTestPool) ... skipped 'test not appropriate for threads'
test_release_task_refs (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_resource_warning (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_starmap (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_starmap_async (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_terminate (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_traceback (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_wrapped_exception (test.test_multiprocessing_spawn.WithThreadsTestPool) ... ok
test_active_children (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... ok
test_child_fd_inflation (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_close (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_cpu_count (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... ok
test_current (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_daemon_argument (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_error_on_stdio_flush_1 (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... ok
test_error_on_stdio_flush_2 (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... ok
test_forkserver_sigint (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_forkserver_sigkill (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_kill (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_lose_target_ref (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... ok
test_many_processes (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_parent_process (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_parent_process_attributes (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_process (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... ok
test_process_mainthread_native_id (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_recursion (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... ok
test_sentinel (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_terminate (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_wait_for_threads (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... skipped 'test not appropriate for threads'
test_closed_queue_put_get_exceptions (test.test_multiprocessing_spawn.WithThreadsTestQueue) ... ok
test_fork (test.test_multiprocessing_spawn.WithThreadsTestQueue) ... ok
test_get (test.test_multiprocessing_spawn.WithThreadsTestQueue) ... ok
test_no_import_lock_contention (test.test_multiprocessing_spawn.WithThreadsTestQueue) ... ok
test_put (test.test_multiprocessing_spawn.WithThreadsTestQueue) ... ok
test_qsize (test.test_multiprocessing_spawn.WithThreadsTestQueue) ... ok
test_queue_feeder_donot_stop_onexc (test.test_multiprocessing_spawn.WithThreadsTestQueue) ... skipped 'test not appropriate for threads'
test_queue_feeder_on_queue_feeder_error (test.test_multiprocessing_spawn.WithThreadsTestQueue) ... skipped 'test not appropriate for threads'
test_task_done (test.test_multiprocessing_spawn.WithThreadsTestQueue) ... ok
test_timeout (test.test_multiprocessing_spawn.WithThreadsTestQueue) ... ok
test_bounded_semaphore (test.test_multiprocessing_spawn.WithThreadsTestSemaphore) ... ok
test_semaphore (test.test_multiprocessing_spawn.WithThreadsTestSemaphore) ... ok
test_timeout (test.test_multiprocessing_spawn.WithThreadsTestSemaphore) ... skipped 'test not appropriate for threads'
test_import (test.test_multiprocessing_spawn._TestImportStar) ... ok

----------------------------------------------------------------------

Ran 354 tests in 303.086s

OK (skipped=35)
Warning -- files was modified by test_multiprocessing_spawn
  Before: []
  After:  ['python.core']

@isidentical
Copy link
Member Author

I guess this is not related with my PR, does it?

@pablogsal
Copy link
Member

I guess this is not related with my PR, does it?

Is not, is a core dump on FreeBSD. This is going to be fun....

@vstinner
Copy link
Member

vstinner commented Jan 6, 2020

Thanks @isidentical and @pablogsal: the commit 4b3b122 is nice! I will to implement smarter parenthesis.

@isidentical: ping me if you want a review on a "smarter parenthesis" PR, once you will have it written down (I didn't check if it's already the case).

@vstinner
Copy link
Member

vstinner commented Jan 6, 2020

@pablogsal: "Is not, is a core dump on FreeBSD. This is going to be fun...."

Did you open an issue to track this crash?

@pablogsal
Copy link
Member

Did you open an issue to track this crash?

Nop...I started vacation that day and I never did 😞

@isidentical
Copy link
Member Author

ping me if you want a review on a "smarter parenthesis" PR, once you will have it written down (I didn't check if it's already the case).

Yes I rebased it a top of this PR (and just fixed some conflicts due to other PR of mine), @vstinner. You can review

@vstinner
Copy link
Member

vstinner commented Jan 6, 2020

Oh, it's the PR #17377, ok.

shihai1991 pushed a commit to shihai1991/cpython that referenced this pull request Jan 31, 2020
…ythonGH-17612)

Co-Authored-By: Victor Stinner <vstinner@python.org>
Co-authored-by: Pablo Galindo <pablogsal@gmail.com>
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.

5 participants