[openstack-dev] [oslo] question about oslo_utils and oslo_versonedobjects

Jay Pipes jaypipes at gmail.com
Tue Mar 7 16:57:51 UTC 2017


On 03/07/2017 01:34 AM, zengchen wrote:
> Hi, guys:
>      I find a non-coincidence definition in Oslo,
>
>      oslo_utils.timeutils.utcnow is defined like this:
>          def utcnow(with_timezone=False):
>
>     oslo_versonedobjects.fields.DateTimeField is defined like this
> classDateTimeField(AutoTypedField): def__init__(self, tzinfo_aware=True,
> **kwargs):
>
>     a = utcnow()
>     class ABC(VersionedObject):
>         fields = {
>             created_at = fields.DateTimeField()
>         }
>     b = ABC(), and fill it by db record.
>
>     If I compare a and b.created_at,  it will raise an exception like this:
>        'TypeError: can't compare offset-naive and offset-aware datetimes'
>     because a's value is like this:
>         datetime.datetime(2017, 3, 7, 2, 34, 50, 859002)
>     b.created_at 's value is like this:
>          datetime.datetime(2017, 3, 7, 2, 35, 27,
> 400786,*tzinfo=<iso8601.Utc>*)
>
>    Can these two kinds of time's definition be coincident? For example:
>        def utcnow(with_timezone=*False*):
>
>        class DateTimeField(AutoTypedField):
>             def __init__(self, tzinfo_aware=*False*, **kwargs):

Hi Zeng,

Yes, you will want to use utcnow(with_timezone=True) and the default 
ovo.fields.DateTimeField definition *or* use utcnow() and a 
ovo.fields.DateTimeField(tzinfo_aware=False) definition.

Best,
-jay



More information about the OpenStack-dev mailing list