I recently moved to docker. My application is working right now. I'm running python manage.py test in my project. But i got tons of errors 'TypeError: isinstance() arg 2 must be a type or tuple of types'.
Same setup works under linux machine. And right now I am using Windows 10 one. Main docker image is ubuntu14.04, using python version 3.5.2, here is my pip freeze:
amqp==2.5.0
atomicwrites==1.3.0
attrs==19.1.0
Babel==2.7.0
backcall==0.1.0
billiard==3.5.0.2
celery==4.1.0
decorator==4.4.0
dictdiffer==0.5.0.post1
dicttoxml==1.6.6
Django==2.0.2
django-common-helpers==0.9.2
django-cron==0.5.0
django-model-utils==3.0.0
django-params==0.3
django-pipeline==1.6.8
django-pytest==0.2.0
django-ranged-response==0.2.0
django-redis==4.8.0
django-simple-captcha==0.5.9
django-widget-tweaks==1.4.1
djangorestframework==3.7.7
et-xmlfile==1.0.1
factory-boy==2.8.1
Faker==0.7.7
fakeredis==0.8.2
flower==0.9.2
importlib-metadata==0.17
ipdb==0.12
ipython==7.5.0
ipython-genutils==0.2.0
jdcal==1.4.1
jedi==0.13.3
Jinja2==2.10.1
JPype1==0.6.1
kombu==4.1.0
lxml==3.6.0
MarkupSafe==1.1.1
more-itertools==7.0.0
openpyxl==2.4.1
packaging==19.0
parso==0.4.0
pathlib2==2.3.3
pexpect==4.7.0
pickleshare==0.7.5
Pillow==2.7.0
pluggy==0.12.0
prompt-toolkit==2.0.9
psycopg2==2.7.5
ptyprocess==0.6.0
py==1.8.0
Pygments==2.4.2
pyparsing==2.4.0
pytest==4.6.2
pytest-django==3.5.0
python-dateutil==2.8.0
pytz==2016.3
redis==2.10.6
reportlab==3.3.0
six==1.12.0
sqlparse==0.1.0
tornado==5.1.1
traitlets==4.3.2
vine==1.3.0
wcwidth==0.1.7
xlwt==1.1.2
zipp==0.5.1
self = <django.db.models.fields.DateTimeField: created_at>, value = datetime.datetime(2019, 6, 5, 16, 23, 2, 463090)
def to_python(self, value):
if value is None:
return value
> if isinstance(value, datetime.datetime):
E TypeError: isinstance() arg 2 must be a type or tuple of types
/usr/local/lib/python3.5/dist-packages/django/db/models/fields/__init__.py:1353: TypeError
and here is full trace
Traceback (most recent call last):
File "/code/app/app/test_api.py", line 19, in setUp
self.user= UserFactory(role=User.ROLE_ADMIN, is_superuser=True)
File "/usr/local/lib/python3.5/dist-packages/factory/base.py", line 69, in __call__
return cls.create(**kwargs)
File "/usr/local/lib/python3.5/dist-packages/factory/base.py", line 622, in create
attrs = cls.attributes(create=True, extra=kwargs)
File "/usr/local/lib/python3.5/dist-packages/factory/base.py", line 453, in attributes
force_sequence=force_sequence,
File "/usr/local/lib/python3.5/dist-packages/factory/containers.py", line 324, in build
return stub.__fill__()
File "/usr/local/lib/python3.5/dist-packages/factory/containers.py", line 83, in __fill__
res[attr] = getattr(self, attr)
File "/usr/local/lib/python3.5/dist-packages/factory/containers.py", line 108, in __getattr__
val = val.evaluate(self, self.__containers)
File "/usr/local/lib/python3.5/dist-packages/factory/containers.py", line 227, in evaluate
containers=containers,
File "/usr/local/lib/python3.5/dist-packages/factory/declarations.py", line 324, in evaluate
return self.generate(sequence, obj, create, defaults)
File "/usr/local/lib/python3.5/dist-packages/factory/declarations.py", line 412, in generate
return subfactory.simple_generate(create, **params)
File "/usr/local/lib/python3.5/dist-packages/factory/base.py", line 709, in simple_generate
return cls.generate(strategy, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/factory/base.py", line 676, in generate
return action(**kwargs)
File "/usr/local/lib/python3.5/dist-packages/factory/base.py", line 623, in create
return cls._generate(True, attrs)
File "/usr/local/lib/python3.5/dist-packages/factory/base.py", line 548, in _generate
obj = cls._prepare(create, **attrs)
File "/usr/local/lib/python3.5/dist-packages/factory/base.py", line 523, in _prepare
return cls._create(model_class, *args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/factory/django.py", line 181, in _create
return manager.create(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 417, in create
obj.save(force_insert=True, using=self.db)
File "/code/clinica/audit_track/models.py", line 32, in save
super(UpdatedAtMixin, self).save(*args, **kwargs)
File "/code/clinica/audit_track/models.py", line 98, in save
super(CreatedByMixin, self).save(*args, **kwargs)
File "/code/clinica/audit_track/models.py", line 116, in save
super(UpdatedByMixin, self).save(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py", line 729, in save
force_update=force_update, update_fields=update_fields)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py", line 759, in save_base
updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py", line 842, in _save_table
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py", line 880, in _do_insert
using=using, raw=raw)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 1125, in _insert
return query.get_compiler(using=using).execute_sql(return_id)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/sql/compiler.py", line 1280, in execute_sql
for sql, params in self.as_sql():
File "/usr/local/lib/python3.5/dist-packages/django/db/models/sql/compiler.py", line 1233, in as_sql
for obj in self.query.objs
File "/usr/local/lib/python3.5/dist-packages/django/db/models/sql/compiler.py", line 1233, in <listcomp>
for obj in self.query.objs
File "/usr/local/lib/python3.5/dist-packages/django/db/models/sql/compiler.py", line 1232, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "/usr/local/lib/python3.5/dist-packages/django/db/models/sql/compiler.py", line 1172, in prepare_value
value = field.get_db_prep_save(value, connection=self.connection)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/fields/__init__.py", line 767, in get_db_prep_save
return self.get_db_prep_value(value, connection=connection, prepared=False)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/fields/__init__.py", line 1431, in get_db_prep_value
value = self.get_prep_value(value)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/fields/__init__.py", line 1410, in get_prep_value
value = super().get_prep_value(value)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/fields/__init__.py", line 1271, in get_prep_value
return self.to_python(value)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/fields/__init__.py", line 1353, in to_python
if isinstance(value, datetime.datetime):
TypeError: isinstance() arg 2 must be a type or tuple of types
In my situation. I've got test where datetime is mocked manually. In case test fails, mocking doesn't close correctly. My advice, don't limit scroll buffer of your terminal when running tests and investigate failing tests from the beginning.
for me the solution depended on how I imported it
from datetime import datetime, date
print(isinstance( datetime.fromtimestamp(0), date ))
#returns True
When imported as done above datetime.date
would not be recognized here.
import datetime
print(isinstance( datetime.datetime.fromtimestamp(0), datetime.date ))
#returns True
When imported as done above date
would not be recognized here.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.