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-36540: PEP 570 -- Implementation #12701

Merged
merged 19 commits into from
Apr 29, 2019
Merged

bpo-36540: PEP 570 -- Implementation #12701

merged 19 commits into from
Apr 29, 2019

Conversation

pablogsal
Copy link
Member

@pablogsal pablogsal commented Apr 6, 2019

implementation of PEP 570 -- Python Positional-Only Parameters:

⚠️ This Pull Request contains only the implementation of PEP570, the documentation will be done in a different PR.

https://www.python.org/dev/peps/pep-0570/

https://bugs.python.org/issue36540

CC: @mariocj89

@pablogsal pablogsal changed the title [WIP] Implement PEP570 bpo-36540: Implement PEP570 Apr 6, 2019
@pablogsal pablogsal changed the title bpo-36540: Implement PEP570 bpo-36540: Implement PEP570 [WIP] Apr 6, 2019
@pablogsal pablogsal marked this pull request as ready for review April 6, 2019 01:07
@pablogsal pablogsal changed the title bpo-36540: Implement PEP570 [WIP] bpo-36540: Implement PEP 570 [WIP] Apr 6, 2019
@willingc willingc self-requested a review April 6, 2019 02:13
@pablogsal pablogsal force-pushed the PEP570 branch 4 times, most recently from ea3de2e to 08f02c6 Compare April 6, 2019 22:11
@pablogsal pablogsal self-assigned this Apr 6, 2019
Copy link
Member

@pganssle pganssle left a comment

Choose a reason for hiding this comment

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

Some comments here from a very cursory pass over this.

Is the documentation for this intended to be part of a separate PR? Either way, feel free to ping me for a review when it's available.

Lib/test/test_functools.py Outdated Show resolved Hide resolved
Python/Python-ast.c Show resolved Hide resolved
Python/Python-ast.c Show resolved Hide resolved
Python/ast.c Outdated Show resolved Hide resolved
Python/marshal.c Show resolved Hide resolved
@pablogsal pablogsal force-pushed the PEP570 branch 4 times, most recently from 19b27b3 to 7e77d2f Compare April 13, 2019 00:58
@pablogsal pablogsal changed the title bpo-36540: Implement PEP 570 [WIP] bpo-36540: Implement PEP 570 Apr 13, 2019
@pablogsal pablogsal changed the title bpo-36540: Implement PEP 570 bpo-36540: PEP 570 -- Implementation Apr 13, 2019
@pablogsal
Copy link
Member Author

pablogsal commented Apr 24, 2019

I'm not crazy about raising. Maybe just pretend the '/' isn't there?

We already raise if you pass keyword only or an annotation for that API:

https://github.com/python/cpython/blob/master/Lib/inspect.py#L1092

@vstinner
Copy link
Member

We already raise if you pass keyword only for that API

That was my proposal. IMHO it's the safest option for "legacy" functions of the inspect module, to ensure that we don't introduce any subtle backward-incompatible change.

I modified the warnings module to add a new "source" parameter at the end. It took me 3 years to fix regressions on corner cases... The latest one was be7c460 See https://bugs.python.org/issue26568 and https://bugs.python.org/issue35178

I tried to have the backward-compatibility in mind when I modified the warnings module, but there are always subtle issues...

IMHO getargs(), getargspec(), getfullargspec() should be deprecated in favor of signature() which is future-proof. But Nick Coghlan undeprecated these functions in 2017 https://bugs.python.org/issue20438 whereas these were deprecated since 2015. I didn't understand the subtle issues.

Again, that's why I suggest to open an issue afterwards to discuss the subtle inspect API :-)

@gvanrossum
Copy link
Member

Oh, then disregard what I said.

@pablogsal
Copy link
Member Author

As a side comment, Cython is already adding support for this PEP 🎉 :

cython/cython#2927

@vstinner
Copy link
Member

@pablogsal: Please merge your PR.

Serhiy Storchaka complained about backward incompatible changes on the inspect module:
https://bugs.python.org/issue36540#msg340246

But I made the same complain and you fixed it. IHMO the change is now good enough to be merged.

Serhiy said nothing for 2 weeks. alpha4 release is today. I would prefer to get this implementation merged as soon as possible: as Lukasz if I understand correctly.

@serhiy-storchaka
Copy link
Member

My main complain was about the inspect module. I have no time to make a review of other parts, but I do not expect serious problems here. Feel free to commit. We can fix minor issues after merging if there are any.

Lib/inspect.py Outdated Show resolved Hide resolved
@@ -1185,7 +1193,7 @@ def getfullargspec(func):
defaults = None

return FullArgSpec(args, varargs, varkw, defaults,
Copy link
Member

Choose a reason for hiding this comment

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

This is breaking change. getfullargspec() was added to avoid breaking old getargspec(). You need to add a new function (getfullerargspec()?) and deprecate getfullargspec().

Copy link
Member Author

Choose a reason for hiding this comment

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

I suspect that there may be a longer discussion for these cases so I opened https://bugs.python.org/issue36751 to track it and decide there.

@@ -1216,7 +1224,8 @@ def _formatannotation(annotation):
return _formatannotation

def formatargspec(args, varargs=None, varkw=None, defaults=None,
kwonlyargs=(), kwonlydefaults={}, annotations={},
posonlyargs=(), kwonlyargs=(), kwonlydefaults={},
Copy link
Member

Choose a reason for hiding this comment

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

Since all these parameters are positional-or-keyword, inserting a new parameter in the middle is breaking change. You can add it only to the end. Or add a new function.

Copy link
Member Author

Choose a reason for hiding this comment

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

I suspect that there may be a longer discussion for these cases so I opened https://bugs.python.org/issue36751 to track it and decide there.

Lib/inspect.py Outdated Show resolved Hide resolved
Lib/test/test_parser.py Show resolved Hide resolved
Lib/test/test_type_comments.py Outdated Show resolved Hide resolved
Objects/codeobject.c Outdated Show resolved Hide resolved
Objects/codeobject.c Outdated Show resolved Hide resolved
Objects/codeobject.c Outdated Show resolved Hide resolved
Python/ast.c Show resolved Hide resolved
@vstinner
Copy link
Member

@serhiy-storchaka:

My main complain was about the inspect module. I have no time to make a review of other parts, but I do not expect serious problems here. Feel free to commit. We can fix minor issues after merging if there are any.

Did you see that the PR has been modified to no longer touch the existing API, except of signature(), but raise an exception of the "legacy functions" are called on a function which has positional-only arguments? #12701 (comment)

@pablogsal pablogsal merged commit 8c77b8c into python:master Apr 29, 2019
@pablogsal pablogsal deleted the PEP570 branch April 29, 2019 12:37
@bedevere-bot
Copy link

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

Hi! The buildbot x86 Windows7 3.x has failed when building commit 8c77b8c.

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/58/builds/2292) and take a look at the build logs.
  4. Check if the failure is related to this commit (8c77b8c) 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/58/builds/2292

Click to see traceback logs
From https://github.com/python/cpython
 * branch            master     -> FETCH_HEAD
Reset branch 'master'

The term 'Invoke-WebRequest' is not recognized as the name of a cmdlet, functio
n, script file, or operable program. Check the spelling of the name, or if a pa
th was included, verify that the path is correct and try again.
At line:1 char:18
+ Invoke-WebRequest <<<<  https://aka.ms/nugetclidl -OutFile 'D:\cygwin\home\db
3l\buildarea\3.x.bolen-windows7\build\Tools\buildbot\..\..\PCbuild\..\externals
\nuget.exe'
    + CategoryInfo          : ObjectNotFound: (Invoke-WebRequest:String) [], C 
   ommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 
'py' is not recognized as an internal or external command,
operable program or batch file.
'"D:\cygwin\home\db3l\buildarea\3.x.bolen-windows7\build\Tools\buildbot\..\..\PCbuild\..\externals\nuget.exe"' is not recognized as an internal or external command,
operable program or batch file.
The term 'Invoke-WebRequest' is not recognized as the name of a cmdlet, functio
n, script file, or operable program. Check the spelling of the name, or if a pa
th was included, verify that the path is correct and try again.
At line:1 char:18
+ Invoke-WebRequest <<<<  https://aka.ms/nugetclidl -OutFile 'D:\cygwin\home\db
3l\buildarea\3.x.bolen-windows7\build\Tools\buildbot\..\..\PCbuild\..\externals
\nuget.exe'
    + CategoryInfo          : ObjectNotFound: (Invoke-WebRequest:String) [], C 
   ommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 
'py' is not recognized as an internal or external command,
operable program or batch file.
'"D:\cygwin\home\db3l\buildarea\3.x.bolen-windows7\build\Tools\buildbot\..\..\PCbuild\..\externals\nuget.exe"' is not recognized as an internal or external command,
operable program or batch file.
Could Not Find D:\cygwin\home\db3l\buildarea\3.x.bolen-windows7\build\Lib\*.pyc
The system cannot find the file specified.
Could Not Find D:\cygwin\home\db3l\buildarea\3.x.bolen-windows7\build\PCbuild\python*.zip
The term 'Invoke-WebRequest' is not recognized as the name of a cmdlet, functio
n, script file, or operable program. Check the spelling of the name, or if a pa
th was included, verify that the path is correct and try again.
At line:1 char:18
+ Invoke-WebRequest <<<<  https://aka.ms/nugetclidl -OutFile 'D:\cygwin\home\db
3l\buildarea\3.x.bolen-windows7\build\PCbuild\\..\externals\nuget.exe'
    + CategoryInfo          : ObjectNotFound: (Invoke-WebRequest:String) [], C 
   ommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 
'py' is not recognized as an internal or external command,
operable program or batch file.
'"D:\cygwin\home\db3l\buildarea\3.x.bolen-windows7\build\PCbuild\\..\externals\nuget.exe"' is not recognized as an internal or external command,
operable program or batch file.

test_poll skipped -- select.poll not defined
test_readline skipped -- No module named 'readline'
test_epoll skipped -- test works only on Linux 2.6
stty: standard input: Inappropriate ioctl for device
test_spwd skipped -- No module named 'spwd'
test_syslog skipped -- No module named 'syslog'
test_dbm_ndbm skipped -- No module named '_dbm'
test_grp skipped -- No module named 'grp'
test_pty skipped -- No module named 'termios'
test_multiprocessing_fork skipped -- fork is not available on Windows
test_dbm_gnu skipped -- No module named '_gdbm'
test_fcntl skipped -- No module named 'fcntl'
test_wait4 skipped -- object <module 'os' from 'D:\\cygwin\\home\\db3l\\buildarea\\3.x.bolen-windows7\\build\\lib\\os.py'> has no attribute 'fork'
test_ossaudiodev skipped -- No module named 'ossaudiodev'
test_pwd skipped -- No module named 'pwd'
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) ... skipped 'requires SIGUSR1'
test_ignore_listener (test.test_multiprocessing_spawn.TestIgnoreEINTR) ... skipped 'requires SIGUSR1'
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) ... skipped 'skipped on Windows'
test_invalid_family_win32 (test.test_multiprocessing_spawn.TestInvalidFamily) ... ok
test_invalid_handles (test.test_multiprocessing_spawn.TestInvalidHandle) ... skipped 'skipped on Windows'
test_noforkbomb (test.test_multiprocessing_spawn.TestNoForkBomb) ... ok
test_release_unused_processes (test.test_multiprocessing_spawn.TestPoolNotLeakOnFailure) ... ok
test_semaphore_tracker (test.test_multiprocessing_spawn.TestSemaphoreTracker) ... skipped "test semantics don't make sense on Windows"
test_semaphore_tracker_reused (test.test_multiprocessing_spawn.TestSemaphoreTracker) ... skipped "test semantics don't make sense on Windows"
test_semaphore_tracker_sigint (test.test_multiprocessing_spawn.TestSemaphoreTracker) ... skipped "test semantics don't make sense on Windows"
test_semaphore_tracker_sigkill (test.test_multiprocessing_spawn.TestSemaphoreTracker) ... skipped "test semantics don't make sense on Windows"
test_semaphore_tracker_sigterm (test.test_multiprocessing_spawn.TestSemaphoreTracker) ... skipped "test semantics don't make sense on Windows"
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) ... skipped "test semantics don't make sense on Windows"
test_missing_fd_transfer (test.test_multiprocessing_spawn.WithProcessesTestConnection) ... skipped "doesn't make sense on Windows"
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) ... skipped 'requires SIGUSR1'
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) ... ok
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_process (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_across_processes (test.test_multiprocessing_spawn.WithProcessesTestSharedMemory) ... ok
test_shared_memory_basics (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 "test semantics don't make sense on Windows"
test_missing_fd_transfer (test.test_multiprocessing_spawn.WithThreadsTestConnection) ... skipped "doesn't make sense on Windows"
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
Warning -- Dangling processes: {<SpawnProcess name='QueueManager-309' pid=1272 parent=2392 stopped exitcode=-SIGTERM>}
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) ... ok
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_process (test.test_multiprocessing_spawn.WithThreadsTestProcess) ... ok
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
Warning -- Dangling processes: {<SpawnProcess name='QueueManager-309' pid=1272 parent=2392 stopped exitcode=-SIGTERM>}

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

Ran 345 tests in 1236.973s

OK (skipped=41)
test_threadsignals skipped -- Can't test signal on win32
test_xxtestfuzz skipped -- No module named '_xxtestfuzz'
test_resource skipped -- No module named 'resource'
test_openpty skipped -- os.openpty() not available.
test_multiprocessing_forkserver skipped -- forkserver is not available on Windows
test_curses skipped -- No module named '_curses'
test_fork1 skipped -- object <module 'os' from 'D:\\cygwin\\home\\db3l\\buildarea\\3.x.bolen-windows7\\build\\lib\\os.py'> has no attribute 'fork'
test_kqueue skipped -- test works only on BSD
test_crypt skipped -- No module named '_crypt'
test_pipes skipped -- pipes module only works on posix
test_posix skipped -- No module named 'posix'
test_gdb skipped -- Couldn't find gdb on the path
test_devpoll skipped -- test works only on Solaris OS family
test_ioctl skipped -- No module named 'fcntl'
test_wait3 skipped -- os.fork not defined
test_zipfile64 skipped -- test requires loads of disk-space bytes and a long time to run
minkernel\crts\ucrt\src\appcrt\lowio\write.cpp(49) : Assertion failed: (_osfile(fh) & FOPEN)
minkernel\crts\ucrt\src\appcrt\lowio\close.cpp(49) : Assertion failed: (_osfile(fh) & FOPEN)
minkernel\crts\ucrt\src\appcrt\lowio\close.cpp(49) : Assertion failed: (_osfile(fh) & FOPEN)
D:\cygwin\home\db3l\buildarea\3.x.bolen-windows7\build\lib\test\support\__init__.py:1056: RuntimeWarning: tests may fail, unable to create temporary directory 'D:\\cygwin\\home\\db3l\\buildarea\\3.x.bolen-windows7\\build\\build\\test_python_3696': [WinError 183] Cannot create a file when that file already exists: 'D:\\cygwin\\home\\db3l\\buildarea\\3.x.bolen-windows7\\build\\build\\test_python_3696'
  with temp_dir(path=name, quiet=quiet) as temp_path:
minkernel\crts\ucrt\src\appcrt\lowio\write.cpp(49) : Assertion failed: (_osfile(fh) & FOPEN)
D:\cygwin\home\db3l\buildarea\3.x.bolen-windows7\build\lib\test\support\__init__.py:1056: RuntimeWarning: tests may fail, unable to create temporary directory 'D:\\cygwin\\home\\db3l\\buildarea\\3.x.bolen-windows7\\build\\build\\test_python_3696': [WinError 183] Cannot create a file when that file already exists: 'D:\\cygwin\\home\\db3l\\buildarea\\3.x.bolen-windows7\\build\\build\\test_python_3696'
  with temp_dir(path=name, quiet=quiet) as temp_path:
test_nis skipped -- No module named 'nis'

The term 'Invoke-WebRequest' is not recognized as the name of a cmdlet, functio
n, script file, or operable program. Check the spelling of the name, or if a pa
th was included, verify that the path is correct and try again.
At line:1 char:18
+ Invoke-WebRequest <<<<  https://aka.ms/nugetclidl -OutFile 'D:\cygwin\home\db
3l\buildarea\3.x.bolen-windows7\build\Tools\buildbot\..\..\PCbuild\..\externals
\nuget.exe'
    + CategoryInfo          : ObjectNotFound: (Invoke-WebRequest:String) [], C 
   ommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 
'py' is not recognized as an internal or external command,
operable program or batch file.
'"D:\cygwin\home\db3l\buildarea\3.x.bolen-windows7\build\Tools\buildbot\..\..\PCbuild\..\externals\nuget.exe"' is not recognized as an internal or external command,
operable program or batch file.
The term 'Invoke-WebRequest' is not recognized as the name of a cmdlet, functio
n, script file, or operable program. Check the spelling of the name, or if a pa
th was included, verify that the path is correct and try again.
At line:1 char:18
+ Invoke-WebRequest <<<<  https://aka.ms/nugetclidl -OutFile 'D:\cygwin\home\db
3l\buildarea\3.x.bolen-windows7\build\Tools\buildbot\..\..\PCbuild\..\externals
\nuget.exe'
    + CategoryInfo          : ObjectNotFound: (Invoke-WebRequest:String) [], C 
   ommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 
'py' is not recognized as an internal or external command,
operable program or batch file.
'"D:\cygwin\home\db3l\buildarea\3.x.bolen-windows7\build\Tools\buildbot\..\..\PCbuild\..\externals\nuget.exe"' is not recognized as an internal or external command,
operable program or batch file.
Could Not Find D:\cygwin\home\db3l\buildarea\3.x.bolen-windows7\build\PCbuild\python*.zip

@pablogsal
Copy link
Member Author

Hi! The buildbot x86 Windows7 3.x has failed when building commit 8c77b8c.

False positive. It is some problem in the multiprocessing module.

@@ -102,7 +103,7 @@ PyAPI_DATA(PyTypeObject) PyCode_Type;

/* Public interface */
PyAPI_FUNC(PyCodeObject *) PyCode_New(
int, int, int, int, int, PyObject *, PyObject *,
int, int, int, int, int, int, PyObject *, PyObject *,
Copy link

Choose a reason for hiding this comment

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

Adding a required argument to the code type constructor will breaking every library that creates types.CodeType instances. Are you sure this is a good idea?

Copy link

Choose a reason for hiding this comment

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

Copy link
Member

Choose a reason for hiding this comment

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

You missed the end of the story:

commit 4a2edc34a405150d0b23ecfdcb401e7cf59f4650
Author: Pablo Galindo <Pablogsal@gmail.com>
Date:   Mon Jul 1 11:35:05 2019 +0100

    bpo-37221: Add PyCode_NewWithPosOnlyArgs to be used internally and set PyCode_New as a compatibility wrapper (GH-13959)
    
    Add PyCode_NewEx to be used internally and set PyCode_New as a compatibility wrapper

Copy link
Member Author

@pablogsal pablogsal Feb 18, 2020

Choose a reason for hiding this comment

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

Also, types.CodeType's constructor is considered private. We now even have this warning in the docs (https://docs.python.org/3.8/library/types.html#standard-interpreter-types):

If you instantiate any of these types, note that signatures may vary between Python versions.

Additionally, you have now available types.CodeType.replace in case you can to create a copy with some fields changed.

Copy link

Choose a reason for hiding this comment

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

Thank you for the explanation!
I hope in future we'll have a more stable API for dynamic function generation.

Copy link

@ManifoldFR ManifoldFR Oct 1, 2020

Choose a reason for hiding this comment

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

This breaks pickle.loads for functions constructed as

def constant_fn(val: float) -> Callable:
    def func(_):
        return val
    
    return func
fun = constant_fn(1.)

and pickled using cloudpickle under Python 3.7; these can't be loaded back up under Python 3.8.
Should this be addressed downstream in cloudpickle ?

Copy link
Member Author

@pablogsal pablogsal Oct 1, 2020

Choose a reason for hiding this comment

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

Should this be addressed downstream in cloudpickle ?

Yes, they need to update whatever code they are using to create code objects as code objects in Python3.8 require an extra field. Please, check these sections in the docs:

https://docs.python.org/3/library/types.html#standard-interpreter-types

If you instantiate any of these types, note that signatures may vary between Python versions.

Also, check this new C-API function:

https://docs.python.org/3/c-api/code.html#c.PyCode_NewWithPosOnlyArgs

and this new convenience function:

https://docs.python.org/3/library/types.html#types.CodeType.replace

Choose a reason for hiding this comment

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

Alright, I'll file an issue there. Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants