Re: [Python-Dev] Is static typing still optional?

2018-01-29 Thread Ethan Furman

On 01/28/2018 07:45 AM, Eric V. Smith wrote:

On 1/6/2018 5:13 PM, Eric V. Smith wrote:

On 12/10/2017 5:00 PM, Raymond Hettinger wrote:



2) Change the default value for "hash" from "None" to "False".  This might take 
a little effort because there is
currently an oddity where setting hash=False causes it to be hashable.  I'm 
pretty sure this wasn't intended ;-)


I haven't looked at this yet.


I think the hashing logic explained in 
https://bugs.python.org/issue32513#msg310830 is correct. It uses hash=None as 
the
default, so that frozen=True objects are hashable


In a class, `__hash__ = None` means the instances are not hashable... but in a dataclass decorator, `hash=None` means 
they are?


--
~Ethan~

___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Is static typing still optional?

2018-01-29 Thread Eric V. Smith

On 1/29/2018 3:42 AM, Ethan Furman wrote:

On 01/28/2018 07:45 AM, Eric V. Smith wrote:

On 1/6/2018 5:13 PM, Eric V. Smith wrote:

On 12/10/2017 5:00 PM, Raymond Hettinger wrote:


2) Change the default value for "hash" from "None" to "False".  This 
might take a little effort because there is
currently an oddity where setting hash=False causes it to be 
hashable.  I'm pretty sure this wasn't intended ;-)


I haven't looked at this yet.


I think the hashing logic explained in 
https://bugs.python.org/issue32513#msg310830 is correct. It uses 
hash=None as the

default, so that frozen=True objects are hashable


In a class, `__hash__ = None` means the instances are not hashable... 
but in a dataclass decorator, `hash=None` means they are?


It means "don't add a __hash__ attribute, and rely on the base class 
value". But maybe it should mean "is not hashable". But in that case, 
how would we specify the "don't add __hash__" case?


Note that "repr=False" means "don't add a __repr__", not "is not 
repr-able". And "init=False" means "don't add a __init__", not "is not 
init-able".


Eric.

___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Is static typing still optional?

2018-01-29 Thread Raymond Hettinger


> On Jan 28, 2018, at 11:52 PM, Eric V. Smith  wrote:
> 
> I think it would be a bad design to have to opt-in to hashability if using 
> frozen=True. 

I respect that you see it that way, but it doesn't make sense to me. You can 
have either one without the other.  It seems to me that it is clearer and more 
explicit to just say what you want rather than having implicit logic guess at 
what you meant.  Otherwise, when something goes wrong, it is difficult to debug.

The tooltips for the dataclass decorator are essentially of checklist of 
features that can be turned on or off.  That list of features is mostly 
easy-to-use except for hash=None which has three possible values, only one of 
which is self-evident.

We haven't had much in the way of user testing, so it is a significant data 
point that one of your first users (me) found was confounded by this API.  I 
recommend putting various correct and incorrect examples in front of other 
users (preferably experienced Python programmers) and asking them to predict 
what the code does based on the source code.


Raymond





___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Is static typing still optional?

2018-01-29 Thread Ethan Furman

On 01/29/2018 12:57 AM, Eric V. Smith wrote:

On 1/29/2018 3:42 AM, Ethan Furman wrote:

On 01/28/2018 07:45 AM, Eric V. Smith wrote:



I think the hashing logic explained in 
https://bugs.python.org/issue32513#msg310830 is correct. It uses hash=None as 
the
default, so that frozen=True objects are hashable


In a class, `__hash__ = None` means the instances are not hashable... but in a 
dataclass decorator, `hash=None` means
they are?


It means "don't add a __hash__ attribute, and rely on the base class value". But maybe it 
should mean "is not hashable".
But in that case, how would we specify the "don't add __hash__" case?


I thought `hash=False` means don't add a __hash__ method..


Note that "repr=False" means "don't add a __repr__", not "is not repr-able". And 
"init=False" means "don't add a
__init__", not "is not init-able".


Yeah, like that.

I get that the default for all (or at least most) of the boring stuff should be "just do it", but I don't think None is 
the proper place-holder for that.  Why not make an `_default = object()` sentinel and use that for the default?  At 
least for __hash__.  Then we have:


hash=False  ->  don't add one

hash=None  -> add `__hash__ = None`  (is not hashable)

hash=True  -> add one (the default...

Okay, after writing that down, why don't we have the default value for anything automatically added be True?  With True 
meaning the dataclass should have a custom whatever, and if the programmer did not provide one the decorator will -- it 
can even be a self-check: if the parameters in the decorator are at odds with the actual class contents (hash=None, but 
the class has a __hash__ method) then an exception could be raised.


--
~Ethan~
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Sad buildbots

2018-01-29 Thread Victor Stinner
Hi,

test_ftplib just failed on my PR, whereas my change couldn't explain
the failure.

I created https://bugs.python.org/issue32706:
"test_check_hostname() of test_ftplib started to fail randomly"

Temporary workaround: restart the failed Travis CI job.

Victor

2018-01-29 0:23 GMT+01:00 Ned Deily :
> On Jan 28, 2018, at 18:00, Victor Stinner  wrote:
>> It seems like the feature freeze is close: while I usually get 2
>> emails/day at maximum on buildbot-status, I got 14 emails during the
>> weekend:
>> https://mail.python.org/mm3/archives/list/buildbot-sta...@python.org/
>> (are all buildbots red? :-p)
>>
>> I will not have the bandwidth to analyze all buildbot failures. Can
>> someone help to investigate all these funny new regressions?
>> http://buildbot.python.org/all/#/builders
>>
>> I would feel safer to cut a release if most buildbots are green again.
>
> Never fear, we're *not* going to do a release in such a state.  That's one of 
> the reasons we have release managers.  :-)
>
> Not surprisingly, there has been a *lot* of activity over the last few days 
> as core-developers work on getting features finished prior to the 3.7 feature 
> code freeze coming up at the end of Monday AoE.  Some of the intermediate 
> checkins cause some breakages across the board, unfortunately, that have 
> subsequently been addressed.  Most of the 3.x stable buildbots are currently 
> green with some builds still going on.  But, yeah, please all keep an eye of 
> them especially those of you merging code.  Just because the CI tests passed 
> doesn't mean there won't be problems on other platforms and configurations.
>
> Thanks for everyone's help so far!  We're getting close.
>
> --
>   Ned Deily
>   n...@python.org -- []
>
> ___
> Python-Dev mailing list
> Python-Dev@python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: 
> https://mail.python.org/mailman/options/python-dev/victor.stinner%40gmail.com
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Is static typing still optional?

2018-01-29 Thread Eric V. Smith

On 1/29/2018 4:01 AM, Raymond Hettinger wrote:




On Jan 28, 2018, at 11:52 PM, Eric V. Smith  wrote:

I think it would be a bad design to have to opt-in to hashability if using 
frozen=True.


I respect that you see it that way, but it doesn't make sense to me. You can 
have either one without the other.  It seems to me that it is clearer and more 
explicit to just say what you want rather than having implicit logic guess at 
what you meant.  Otherwise, when something goes wrong, it is difficult to debug.


I certainly respect your insights.


The tooltips for the dataclass decorator are essentially of checklist of 
features that can be turned on or off.  That list of features is mostly 
easy-to-use except for hash=None which has three possible values, only one of 
which is self-evident.


Which is the one that's self-evident? I would think hash=False, correct?

The problem is that for repr=, eq=, compare=, you're saying "do or don't 
add this/these methods, or if true, don't even add it if it's already 
defined".  The same is true for hash=True/False, with the complication 
of the implicit __hash__ that's added by __eq__.


In addition to "do or don't add __hash__", there needs to be a way of 
setting __hash__=None.


The processing of hash=None is trying to guess what sort of __hash__ you 
want: not set it and just inherit it, generate it based on fields, or 
set it to None. And if it guesses wrong, based on the fairly simple 
hash=None rules, you can control it with other values of hash=. Maybe 
that's the problem.


I'm open to ways to express these options. Again, I think losing "do the 
right thing most of the time without explicitly setting hash=" would be 
a shame, but not the end of the world.


And changing it to "hashable=" isn't quite as simple as it seems, since 
there's more than one definition of hashable: identity-based or field-based.



We haven't had much in the way of user testing, so it is a significant data 
point that one of your first users (me) found was confounded by this API.  I 
recommend putting various correct and incorrect examples in front of other 
users (preferably experienced Python programmers) and asking them to predict 
what the code does based on the source code.


I agree it's sub-optimal, but it's a complex issue. What would the 
interface look like that allowed a programmer to know if an object was 
hashable based on object identity versus field values?


Eric.
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Making "-j0" the default setting for the test suite?

2018-01-29 Thread Guido van Rossum
I was going to argue, but it's not worth it. What you propose is fine.

On Sun, Jan 28, 2018 at 10:03 PM, Nick Coghlan  wrote:

> On 29 January 2018 at 14:43, Guido van Rossum  wrote:
> > So why can't you just run "make test" if that's faster?
>
> I can (and do), but I also run it the other way if I need to pass
> additional options. I'll then notice that I forgot -j0, ctrl-C out,
> then run it again with -j0.
>
> That's a minor irritation for me, but for folks that don't already
> know about the -j0 option, they're more likely to just go "CPython's
> test suite is annoyingly slow".
>
> To provide a bit more detail on what I'd suggest we do:
>
> * "-j1" would explicitly turn off multiprocessing
> * "-j0" and "-jN" (N >= 2) would explicitly request multiprocessing
> and error out if there's a conflicting flag
> * not setting the flag would be equivalent to "-j0" by default, but
> "-j1" if a conflicting flag was set
>
> The testing options that already explicitly conflict with the
> multiprocessing option are:
>
> * -T (tracing)
> * -l (leak hunting)
>
> "-j1" would likely also be a better default when the verbosity flags
> are set (since the output is incredibly hard to read if you have
> multiple verbose tests running in parallel).
>
> Cheers,
> Nick.
>
> --
> Nick Coghlan   |   ncogh...@gmail.com   |   Brisbane, Australia
>



-- 
--Guido van Rossum (python.org/~guido)
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Making "-j0" the default setting for the test suite?

2018-01-29 Thread Victor Stinner
> * "-j1" would explicitly turn off multiprocessing

Running tests "sequentially" but run them in one subprocess per test
file is interesting for tests isolation. Runing tests one by one
reduces the risk of triggering a race condition (test only failing
when the system load is high).

-jN was always documented as "use multiprocessing".

Maybe we need a new option to explicitly disable multiprocessing instead?

   vstinner@apu$ ./python -m test
   Run tests sequentially

vs

   vstinner@apu$ ./python -m test -j1
   Run tests in parallel using 1 child processes

By the way, Python 2.7 behaves differently and it's annoying:

   vstinner@apu$ ./python -m test -j0
   Run tests sequentially

I'm in favor of modifying Python 2.7 to detect the number of cores for
-j0, as Python 3.6 does, and run tests in parallel. Python 3.6:

   vstinner@apu$ ./python -m test -j0
   Run tests in parallel using 10 child processes

About the default: run tests in parallel or -j1 are the two most
reliable options. While -j0 is faster, sometimes it triggers race
conditions. I'm not sure that it's safe to change that, at least maybe
don't do that in stable branches but only master?

Note: Obviously, I'm strongly in favor of fixing all race conditions.
I'm doing that for years. We are better today, but we are still not
race-condition-free yet.

Victor
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Is static typing still optional?

2018-01-29 Thread Guido van Rossum
I don't think we're going to reach full agreement here, so I'm going to put
my weight behind Eric's rules.

I think the benefit of the complicated rules is that they almost always do
what you want, so you almost never have to think about it. If it doesn't do
what you want, setting hash=False or hash=True is much quicker than trying
to understand the rules. But the rules *are* deterministic and reasonable.

-- 
--Guido van Rossum (python.org/~guido)
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


[Python-Dev] cls for metaclass?

2018-01-29 Thread Pim Schellart
Dear Python developers,

PEP 8 says:

"Always use self for the first argument to instance methods.

Always use cls for the first argument to class methods.”

But what about metaclasses?
PEP 3115 seems to suggest `cls`, and so do many Python books, however tools 
such as flake8 don’t seem to like it.
Is there a consensus opinion, and should PEP 8 be updated?

Kind regards,

Pim Schellart
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] cls for metaclass?

2018-01-29 Thread Guido van Rossum
I think it should be `cls` and flake8 etc. should be fixed.

On Mon, Jan 29, 2018 at 11:34 AM, Pim Schellart 
wrote:

> Dear Python developers,
>
> PEP 8 says:
>
> "Always use self for the first argument to instance methods.
>
> Always use cls for the first argument to class methods.”
>
> But what about metaclasses?
> PEP 3115 seems to suggest `cls`, and so do many Python books, however
> tools such as flake8 don’t seem to like it.
> Is there a consensus opinion, and should PEP 8 be updated?
>
> Kind regards,
>
> Pim Schellart
> ___
> Python-Dev mailing list
> Python-Dev@python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: https://mail.python.org/mailman/options/python-dev/guido%
> 40python.org
>



-- 
--Guido van Rossum (python.org/~guido)
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] cls for metaclass?

2018-01-29 Thread Jon Parise
Coincidentally, I changed this in flake8's pep8-naming plugin about a month
ago[1], although the change has not yet made it into a release.

[1]: https://github.com/PyCQA/pep8-naming/pull/47

On Mon, Jan 29, 2018 at 11:53 AM, Guido van Rossum  wrote:

> I think it should be `cls` and flake8 etc. should be fixed.
>
> On Mon, Jan 29, 2018 at 11:34 AM, Pim Schellart  > wrote:
>
>> Dear Python developers,
>>
>> PEP 8 says:
>>
>> "Always use self for the first argument to instance methods.
>>
>> Always use cls for the first argument to class methods.”
>>
>> But what about metaclasses?
>> PEP 3115 seems to suggest `cls`, and so do many Python books, however
>> tools such as flake8 don’t seem to like it.
>> Is there a consensus opinion, and should PEP 8 be updated?
>>
>> Kind regards,
>>
>> Pim Schellart
>> ___
>> Python-Dev mailing list
>> Python-Dev@python.org
>> https://mail.python.org/mailman/listinfo/python-dev
>> Unsubscribe: https://mail.python.org/mailman/options/python-dev/guido%40p
>> ython.org
>>
>
>
>
> --
> --Guido van Rossum (python.org/~guido)
>
> ___
> Python-Dev mailing list
> Python-Dev@python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: https://mail.python.org/mailman/options/python-dev/
> jon%40indelible.org
>
>
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Is static typing still optional?

2018-01-29 Thread Greg Ewing

Raymond Hettinger wrote:


That list of features is mostly
easy-to-use except for hash=None which has three possible values, only one of
which is self-evident.


Maybe the value of the hash option should be an enum with
three explicitly-named values.

Or maybe there could be a separate "unhashable" boolean
flag for the third option.

--
Greg
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


[Python-Dev] Friendly reminder: be kind to one another

2018-01-29 Thread Brett Cannon
Over the last 3 days I have had two situations come up where I was asked
for my opinion in regards to possible CoC violations. I just wanted to take
this opportunity to remind everyone that open source does not work if we
are not open, considerate, and respectful to one another (which also
happens to be the PSF CoC that we are all expected to follow when working
on Python). When we stop being kind to each other is when open source falls
apart because it drives people away, and for a project that is driven by
volunteers like Python that will be what ends this project (not to say
people should be rude to corporate open source projects, but they can
simply choose to switch to a core dump approach of open source).

I gave a talk at PyCascades this past week on setting expectations for open
source participation: https://youtu.be/HiWfqMbJ3_8?t=7m24s . I had at least
one person who was upset about no one getting to their pull request quickly
come up to me afterwards and apologize for ever feeling that way after
watching my talk, so do please watch it if you have ever felt angry at an
open source maintainer or contributor to help keep things in perspective.

I also wanted to say that I think core developers should work extra hard to
be kind as we help set the tone for this project which can leak into the
broader community. People with commit privileges are not beyond rebuke and
so people should never feel they are not justified speaking up when they
feel a core developer has been rude to them.

Anyway, the key point is to remember is that people are what make this
project and community work, so please make sure that you do what you can to
keep people wanting to participate.
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Friendly reminder: be kind to one another

2018-01-29 Thread Glenn Linderman

On 1/29/2018 6:16 PM, Brett Cannon wrote:
Over the last 3 days I have had two situations come up where I was 
asked for my opinion in regards to possible CoC violations. I just 
wanted to take this opportunity to remind everyone that open source 
does not work if we are not open, considerate, and respectful to one 
another (which also happens to be the PSF CoC that we are all expected 
to follow when working on Python). When we stop being kind to each 
other is when open source falls apart because it drives people away, 
and for a project that is driven by volunteers like Python that will 
be what ends this project (not to say people should be rude to 
corporate open source projects, but they can simply choose to switch 
to a core dump approach of open source).


I gave a talk at PyCascades this past week on setting expectations for 
open source participation: https://youtu.be/HiWfqMbJ3_8?t=7m24s . I 
had at least one person who was upset about no one getting to their 
pull request quickly come up to me afterwards and apologize for ever 
feeling that way after watching my talk, so do please watch it if you 
have ever felt angry at an open source maintainer or contributor to 
help keep things in perspective.


I also wanted to say that I think core developers should work extra 
hard to be kind as we help set the tone for this project which can 
leak into the broader community. People with commit privileges are not 
beyond rebuke and so people should never feel they are not justified 
speaking up when they feel a core developer has been rude to them.


Anyway, the key point is to remember is that people are what make this 
project and community work, so please make sure that you do what you 
can to keep people wanting to participate.


Thanks Brett, I'll have to watch that. But even before I do, let me 
comment that being kind is not something you will have to regret later.
___
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Making "-j0" the default setting for the test suite?

2018-01-29 Thread Terry Reedy

On 1/28/2018 11:30 PM, Nick Coghlan wrote:

On my current system, "make test" runs in around 3 minutes, while
"./python -m test" runs in around 16 minutes. And that's with "make
test" actually running more tests (since it enables several of the
"-u" options).


Did you test with current 3.7.0a+, soon to be 3.7.0b1, repository?  For 
me, recent changes, since 3.7.0a4, have greatly reduced the benefit of 
j0 = j14 on my system.  For 3.6.4 (installed), the times are around 
13:30 and 2:20, which is about the same ratio as you report.  The times 
for 3.7.0a4 (installed) are about the same parallel and would have been 
for serial if not for a crash.  For 3.7.0a4+ recompiled today (debug), 
the times are around 24:00 and 11:10.  Debug slows down by nearly half.


The extra slowdown by a factor of more than 2 for parallel is because 
parallel tests are now blocked (on windows).  Before, a new test was 
starting in one of the 14 processes whenever the test in a process was 
finished. All 12 cpu were kept busy until less than 12 tests remain. 
Now, 14 new tests are started when the previous 14 finish.  Therefore, 
cpus wait while the slowest test in a batch of 14 finishes.


Beginning of old log:
Run tests in parallel using 14 child processes
0:00:00 [  1/413] test__opcode passed
0:00:00 [  2/413] test__locale passed
0:00:00 [  3/413] test__osx_support passed
0:00:00 [  4/413] test_abc passed
0:00:01 [  5/413] test_abstract_numbers passed
0:00:01 [  6/413] test_aifc passed
0:00:02 [  7/413] test_array passed
0:00:02 [  8/413] test_asdl_parser skipped
test_asdl_parser skipped -- test irrelevant for an installed Python
0:00:03 [  9/413] test_argparse passed
0:00:04 [ 10/413] test_ast passed
0:00:04 [ 11/413] test_asyncgen passed
0:00:05 [ 12/413] test_unittest passed
0:00:06 [ 13/413] test_asynchat passed
0:00:06 [ 14/413] test_atexit passed
0:00:06 [ 15/413] test_audioop passed
0:00:06 [ 16/413] test_augassign passed
0:00:07 [ 17/413] test_asyncore passed
0:00:07 [ 18/413] test_baseexception passed
0:00:07 [ 19/413] test_base64 passed
0:00:07 [ 20/413] test_bigaddrspace passed
0:00:07 [ 21/413] test_bigmem passed
0:00:07 [ 22/413] test_binascii passed
0:00:07 [ 23/413] test_binop passed
0:00:07 [ 24/413] test_binhex passed
0:00:08 [ 25/413] test_bool passed
0:00:08 [ 26/413] test_bisect passed
0:00:10 [ 27/413] test_doctest passed
0:00:10 [ 28/413] test_types passed
0:00:10 [ 29/413] test___future__ passed
0:00:10 [ 30/413] test_dict passed
0:00:10 [ 31/413] test_exceptions passed
0:00:10 [ 32/413] test_support passed
0:00:10 [ 33/413] test_builtin passed
0:00:10 [ 34/413] test_opcodes passed
0:00:10 [ 35/413] test_grammar passed
0:00:10 [ 36/413] test_doctest2 passed
0:00:10 [ 37/413] test___all__ passed
0:00:10 [ 38/413] test_cmath passed
0:00:11 [ 39/413] test_cmd passed
0:00:15 [ 40/413] test_cmd_line passed
0:00:15 [ 41/413] test_buffer passed
0:00:15 [ 42/413] test_code passed
0:00:16 [ 43/413] test_code_module passed
0:00:16 [ 44/413] test_codeccallbacks passed
0:00:16 [ 45/413] test_charmapcodec passed
0:00:16 [ 46/413] test_class passed
0:00:16 [ 47/413] test_capi passed
0:00:16 [ 48/413] test_call passed
0:00:16 [ 49/413] test_bytes passed
0:00:16 [ 50/413] test_cgitb passed
0:00:16 [ 51/413] test_calendar passed
0:00:16 [ 52/413] test_c_locale_coercion passed
0:00:16 [ 53/413] test_bz2 passed
0:00:16 [ 54/413] test_cgi passed
0:00:17 [ 55/413] test_codecencodings_cn passed
0:00:17 [ 56/413] test_codecencodings_iso2022 passed
0:00:17 [ 57/413] test_codeop passed
0:00:17 [ 58/413] test_codecencodings_tw passed
0:00:17 [ 59/413] test_codecencodings_hk passed
0:00:17 [ 60/413] test_codecmaps_kr passed
0:00:17 [ 61/413] test_codecmaps_tw passed
0:00:17 [ 62/413] test_codecmaps_cn passed
0:00:17 [ 63/413] test_codecencodings_kr passed
0:00:17 [ 64/413] test_codecmaps_jp passed
0:00:17 [ 65/413] test_codecmaps_hk passed
0:00:17 [ 66/413] test_codecencodings_jp passed
0:00:19 [ 67/413] test_bufio passed
0:00:19 [ 68/413] test_collections passed
0:00:19 [ 69/413] test_contextlib_async passed
0:00:19 [ 70/413] test_copy passed
0:00:19 [ 71/413] test_copyreg passed
0:00:19 [ 72/413] test_coroutines passed
0:00:19 [ 73/413] test_codecs passed
0:00:20 [ 74/413] test_crashers passed
0:00:20 [ 75/413] test_crypt skipped
test_crypt skipped -- No module named '_crypt'
0:00:20 [ 76/413] test_cprofile passed
0:00:20 [ 77/413] test_curses skipped (resource denied)
test_curses skipped -- Use of the 'curses' resource not enabled
0:00:20 [ 78/413] test_csv passed
0:00:20 [ 79/413] test_dataclasses passed
0:00:21 [ 80/413] test_cmd_line_script passed
0:00:21 [ 81/413] test_dbm passed
0:00:21 [ 82/413] test_dbm_gnu skipped
test_dbm_gnu skipped -- No module named '_gdbm'
0:00:21 [ 83/413] test_ctypes passed
0:00:22 [ 84/413] test_dbm_ndbm skipped
test_dbm_ndbm skipped -- No module named '_dbm'
0:00:22 [ 85/413] test_decorators passed
0:00:22 [ 86/413] test_datetime passed
0:00:22 [ 87/413] test_defaultdict passed
0:00:23 [ 88/413