Python 2 compatibility fix in versionability detection. In
python2, Mapping.keys() returns a list instead of a set!pull/1/head
parent
a05dbc42d5
commit
15e75cb4de
|
@ -1,6 +1,7 @@
|
||||||
import copy
|
import copy
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
|
|
||||||
|
import six
|
||||||
from six.moves.collections_abc import Mapping
|
from six.moves.collections_abc import Mapping
|
||||||
|
|
||||||
import stix2.base
|
import stix2.base
|
||||||
|
@ -86,9 +87,18 @@ def _is_versionable(data):
|
||||||
|
|
||||||
# Then, determine versionability.
|
# Then, determine versionability.
|
||||||
|
|
||||||
|
if six.PY2:
|
||||||
|
# dumb python2 compatibility: map.keys() returns a list, not a set!
|
||||||
|
# six.viewkeys() compatibility function uses dict.viewkeys() on
|
||||||
|
# python2, which is not a Mapping mixin method, so that doesn't
|
||||||
|
# work either (for our stix2 objects).
|
||||||
|
keys = set(data)
|
||||||
|
else:
|
||||||
|
keys = data.keys()
|
||||||
|
|
||||||
# This should be sufficient for STIX objects; maybe we get lucky with
|
# This should be sufficient for STIX objects; maybe we get lucky with
|
||||||
# dicts here but probably not.
|
# dicts here but probably not.
|
||||||
if data.keys() >= _VERSIONING_PROPERTIES:
|
if keys >= _VERSIONING_PROPERTIES:
|
||||||
is_versionable = True
|
is_versionable = True
|
||||||
|
|
||||||
# Tougher to handle dicts. We need to consider STIX version, map to a
|
# Tougher to handle dicts. We need to consider STIX version, map to a
|
||||||
|
|
Loading…
Reference in New Issue