Shouldn't we decide if we want to support pypy first? By putting it on CI that's an implicit agreement to support pypy potentially at the cost of certain features.
There's also the consideration that python2 is going away in django 2.0, so if pypy3 isn't up to date wrt python3, we'd have to drop pypy. On Thursday, 3 December 2015 03:52:24 UTC+11, Marc Tamlyn wrote: > > If we can get it running on the CI reasonably easily I see no reason why > not. > > On 2 December 2015 at 16:46, Tim Graham <[email protected] <javascript:>> > wrote: > >> Once in a while, we get a ticket about failures when running the Django >> test suite on PyPy. Sometimes they are bugs in PyPy, other times we use >> something that's not available or behaves differently in PyPy. Is it worth >> adding PyPy to our continuous integration so we can proactively address >> these issues? >> >> (We can't test with pypy3 since that's based on Python 3.2 which we've >> dropped support for in Django 1.9.) >> >> Recent tickets: >> https://code.djangoproject.com/ticket/24779 >> https://code.djangoproject.com/ticket/25844 >> >> Current failures with pypy 2.4.0 and Django 1.9: >> >> ====================================================================== >> ERROR: test_serialize_datetime (migrations.test_writer.WriterTests) >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/home/tim/code/django/tests/migrations/test_writer.py", line 248, >> in test_serialize_datetime >> self.assertSerializedEqual(datetime.datetime.utcnow) >> File "/home/tim/code/django/tests/migrations/test_writer.py", line 179, >> in assertSerializedEqual >> self.assertEqual(self.serialize_round_trip(value), value) >> File "/home/tim/code/django/tests/migrations/test_writer.py", line 175, >> in serialize_round_trip >> string, imports = MigrationWriter.serialize(value) >> File "/home/tim/code/django/django/db/migrations/writer.py", line 540, >> in serialize >> "topics/migrations/#migration-serializing" % (value, >> get_docs_version()) >> ValueError: Cannot serialize: <bound method type.utcnow of <class >> 'datetime.datetime'>> >> There are some values Django cannot serialize into migration files. >> For more, see >> https://docs.djangoproject.com/en/dev/topics/migrations/#migration-serializing >> >> ====================================================================== >> ERROR: test_simple_migration (migrations.test_writer.WriterTests) >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/home/tim/code/django/tests/migrations/test_writer.py", line 459, >> in test_simple_migration >> output = writer.as_string() >> File "/home/tim/code/django/django/db/migrations/writer.py", line 167, >> in as_string >> operation_string, operation_imports = >> OperationWriter(operation).serialize() >> File "/home/tim/code/django/django/db/migrations/writer.py", line 124, >> in serialize >> _write(arg_name, arg_value) >> File "/home/tim/code/django/django/db/migrations/writer.py", line 76, >> in _write >> arg_string, arg_imports = MigrationWriter.serialize(item) >> File "/home/tim/code/django/django/db/migrations/writer.py", line 357, >> in serialize >> item_string, item_imports = cls.serialize(item) >> File "/home/tim/code/django/django/db/migrations/writer.py", line 433, >> in serialize >> return cls.serialize_deconstructed(path, args, kwargs) >> File "/home/tim/code/django/django/db/migrations/writer.py", line 318, >> in serialize_deconstructed >> arg_string, arg_imports = cls.serialize(arg) >> File "/home/tim/code/django/django/db/migrations/writer.py", line 540, >> in serialize >> "topics/migrations/#migration-serializing" % (value, >> get_docs_version()) >> ValueError: Cannot serialize: <bound method type.utcnow of <class >> 'datetime.datetime'>> >> There are some values Django cannot serialize into migration files. >> For more, see >> https://docs.djangoproject.com/en/dev/topics/migrations/#migration-serializing >> >> ====================================================================== >> ERROR: test_band_data_setters >> (gis_tests.gdal_tests.test_raster.GDALBandTests) >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/home/tim/code/django/tests/gis_tests/gdal_tests/test_raster.py", >> line 357, in test_band_data_setters >> bandmem.data(packed_block, (1, 1), (2, 2)) >> File "/home/tim/code/django/django/contrib/gis/gdal/raster/band.py", >> line 133, in data >> data_array = ctypes_array.from_buffer_copy(data) >> AttributeError: type object 'c_ubyte_Array_4' has no attribute >> 'from_buffer_copy' >> >> ====================================================================== >> FAIL: test_prefetch_related_queryset >> (model_forms.tests.OtherModelFormTests) >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/home/tim/code/django/tests/model_forms/tests.py", line 2308, in >> test_prefetch_related_queryset >> (red_item.pk, 'red'), >> File "/home/tim/code/django/django/test/testcases.py", line 93, in >> __exit__ >> query['sql'] for query in self.captured_queries >> AssertionError: 2 queries executed, 4 expected >> Captured queries were: >> SELECT "model_forms_colourfulitem"."id", >> "model_forms_colourfulitem"."name" FROM "model_forms_colourfulitem" >> SELECT ("model_forms_colourfulitem_colours"."colourfulitem_id") AS >> "_prefetch_related_val_colourfulitem_id", "model_forms_colour"."id", >> "model_forms_colour"."name" FROM "model_forms_colour" INNER JOIN >> "model_forms_colourfulitem_colours" ON ("model_forms_colour"."id" = >> "model_forms_colourfulitem_colours"."colour_id") WHERE >> "model_forms_colourfulitem_colours"."colourfulitem_id" IN (1, 2) >> >> ====================================================================== >> FAIL: test_load_backend_invalid_name (backends.test_utils.TestLoadBackend) >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/home/tim/code/django/tests/backends/test_utils.py", line 16, in >> test_load_backend_invalid_name >> load_backend('foo') >> File "/opt/pypy-2.4.0/lib-python/2.7/contextlib.py", line 35, in >> __exit__ >> self.gen.throw(type, value, traceback) >> File "/home/tim/code/django/django/test/testcases.py", line 612, in >> _assert_raises_message_cm >> self.assertIn(expected_message, str(cm.exception)) >> AssertionError: "'foo' isn't an available database backend.\nTry using >> 'django.db.backends.XXX', where XXX is one of:\n 'mysql', 'oracle', >> 'postgresql', 'sqlite3'\nError was: No module named foo.base" not found in >> "'foo' isn't an available database backend.\nTry using >> 'django.db.backends.XXX', where XXX is one of:\n 'mysql', 'oracle', >> 'postgresql', 'sqlite3'\nError was: No module named foo" >> >> ====================================================================== >> FAIL: test_graph_iterative (migrations.test_graph.GraphTests) >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/home/tim/code/django/tests/migrations/test_graph.py", line 203, >> in test_graph_iterative >> self.assertEqual(len(w), 1) >> AssertionError: 0 != 1 >> >> ====================================================================== >> FAIL: test_serialize_datetime_safe (migrations.test_writer.WriterTests) >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/home/tim/code/django/tests/migrations/test_writer.py", line 271, >> in test_serialize_datetime_safe >> ("datetime.date(2014, 3, 31)", {'import datetime'}) >> File "/home/tim/code/django/tests/migrations/test_writer.py", line 182, >> in assertSerializedResultEqual >> self.assertEqual(MigrationWriter.serialize(value), target) >> AssertionError: Tuples differ: (u'datetime.datetime.date(2014... != >> (u'datetime.date(2014, 3, 31)'... >> >> First differing element 0: >> datetime.datetime.date(2014, 3, 31) >> datetime.date(2014, 3, 31) >> >> - (u'datetime.datetime.date(2014, 3, 31)', set([u'import datetime'])) >> ? --------- >> >> + (u'datetime.date(2014, 3, 31)', set([u'import datetime'])) >> >> ====================================================================== >> FAIL: test_band_data (gis_tests.gdal_tests.test_raster.GDALBandTests) >> ---------------------------------------------------------------------- >> Traceback (most recent call last): >> File "/home/tim/code/django/tests/gis_tests/gdal_tests/test_raster.py", >> line 309, in test_band_data >> self.assertEqual(self.band.max, 255) >> AssertionError: 9.0 != 255 >> >> ---------------------------------------------------------------------- >> Ran 10408 tests in 564.183s >> >> FAILED (failures=5, errors=3, skipped=894, expected failures=7) >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django developers (Contributions to Django itself)" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at http://groups.google.com/group/django-developers. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-developers/8d525073-8011-49cc-9965-a0ef4ccf438f%40googlegroups.com >> >> <https://groups.google.com/d/msgid/django-developers/8d525073-8011-49cc-9965-a0ef4ccf438f%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-developers. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/c759e7bc-21fc-4990-88fb-1165ad85578c%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
