Skip to content
This repository was archived by the owner on May 6, 2026. It is now read-only.
This repository was archived by the owner on May 6, 2026. It is now read-only.

DateTimeProperty returns "AttributeError: 'int' object has no attribute 'tzinfo'" in projection query #261

Description

@neurino

Hello,

as in subject:

Environment details

OS type and version:

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"

Python version and virtual environment information: python --version

$python --version
Python 3.7.5
  1. google-cloud- version: pip show google-<service> or pip freeze
$ pip show google-cloud-ndb
Name: google-cloud-ndb
Version: 0.2.0
[...]

Code example

import datetime
from google.cloud import ndb
class MyEvent(ndb.Model):
datetime = ndb.DateTimeProperty(required=True)
with ndb.Client().context():
MyEvent(datetime=datetime.datetime.now()).put()
for event in MyEvent.query(projection=[MyEvent.datetime]):
print(event.datetime)

Stack trace

---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
~/apps/bca-ops-py3/run.py in <module>
8 MyEvent(datetime=datetime.datetime.now()).put()
9 for event in MyEvent.query(projection=[MyEvent.datetime]):
---> 10 print(event.datetime)
~/apps/env37/lib/python3.7/site-packages/google/cloud/ndb/model.py in __get__(self, entity, unused_cls)
1907 # rather than an instance.
1908 return self
-> 1909 return self._get_value(entity)
1910 1911 def __set__(self, entity, value):
~/apps/env37/lib/python3.7/site-packages/google/cloud/ndb/model.py in _get_value(self, entity)
1865 )
1866 -> 1867 return self._get_user_value(entity)
1868 1869 def _delete_value(self, entity):
~/apps/env37/lib/python3.7/site-packages/google/cloud/ndb/model.py in _get_user_value(self, entity)
1516 value converted from the base type.
1517 """
-> 1518 return self._apply_to_values(entity, self._opt_call_from_base_type)
1519 1520 def _get_base_value(self, entity):
~/apps/env37/lib/python3.7/site-packages/google/cloud/ndb/model.py in _apply_to_values(self, entity, function)
1835 else:
1836 if value is not None:
-> 1837 new_value = function(value)
1838 if new_value is not None and new_value is not value:
1839 self._store_value(entity, new_value)
~/apps/env37/lib/python3.7/site-packages/google/cloud/ndb/model.py in _opt_call_from_base_type(self, value)
1573 """
1574 if isinstance(value, _BaseValue):
-> 1575 value = self._call_from_base_type(value.b_val)
1576 return value
1577 ~/apps/env37/lib/python3.7/site-packages/google/cloud/ndb/model.py in _call_from_base_type(self, value)
1627 methods = self._find_methods("_from_base_type", reverse=True)
1628 call = self._apply_list(methods)
-> 1629 return call(value)
1630 1631 def _call_to_base_type(self, value):
~/apps/env37/lib/python3.7/site-packages/google/cloud/ndb/model.py in call(value)
1799 def call(value):
1800 for method in methods:
-> 1801 new_value = method(self, value)
1802 if new_value is not None:
1803 value = new_value
~/apps/env37/lib/python3.7/site-packages/google/cloud/ndb/model.py in _from_base_type(self, value)
3581 return value.astimezone(self._tzinfo)
3582 -> 3583 elif value.tzinfo is not None:
3584 return value.replace(tzinfo=None)
3585 AttributeError: 'int' object has no attribute 'tzinfo'

Thanks!

Metadata

Metadata

Assignees

Labels

🚨This issue needs some love.priority: p1Important issue which blocks shipping the next release. Will be fixed prior to next release.status: investigatingThe issue is under investigation, which is determined to be non-trivial.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions