diff --git a/.travis.yml b/.travis.yml
index 018aefe..81141d5 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,4 @@
-sudo: false
+os: linux
 language: python
 cache: pip
 dist: xenial
diff --git a/stix2/core.py b/stix2/core.py
index b03e3d7..dd7aac1 100644
--- a/stix2/core.py
+++ b/stix2/core.py
@@ -8,7 +8,7 @@ import re
 import stix2
 
 from .base import _Observable, _STIXBase
-from .exceptions import ParseError
+from .exceptions import DuplicateRegistrationError, ParseError
 from .markings import _MarkingsMixin
 from .utils import SCO21_EXT_REGEX, TYPE_REGEX, _get_dict
 
@@ -217,6 +217,8 @@ def _register_object(new_type, version=None):
         v = 'v' + stix2.DEFAULT_VERSION.replace('.', '')
 
     OBJ_MAP = STIX2_OBJ_MAPS[v]['objects']
+    if new_type._type in OBJ_MAP.keys():
+        raise DuplicateRegistrationError("STIX Object", new_type._type)
     OBJ_MAP[new_type._type] = new_type
 
 
@@ -236,6 +238,8 @@ def _register_marking(new_marking, version=None):
         v = 'v' + stix2.DEFAULT_VERSION.replace('.', '')
 
     OBJ_MAP_MARKING = STIX2_OBJ_MAPS[v]['markings']
+    if new_marking._type in OBJ_MAP_MARKING.keys():
+        raise DuplicateRegistrationError("STIX Marking", new_marking._type)
     OBJ_MAP_MARKING[new_marking._type] = new_marking
 
 
@@ -255,6 +259,8 @@ def _register_observable(new_observable, version=None):
         v = 'v' + stix2.DEFAULT_VERSION.replace('.', '')
 
     OBJ_MAP_OBSERVABLE = STIX2_OBJ_MAPS[v]['observables']
+    if new_observable._type in OBJ_MAP_OBSERVABLE.keys():
+        raise DuplicateRegistrationError("Cyber Observable", new_observable._type)
     OBJ_MAP_OBSERVABLE[new_observable._type] = new_observable
 
 
@@ -319,6 +325,8 @@ def _register_observable_extension(
     EXT_MAP = STIX2_OBJ_MAPS[v]['observable-extensions']
 
     try:
+        if ext_type in EXT_MAP[observable_type].keys():
+            raise DuplicateRegistrationError("Observable Extension", ext_type)
         EXT_MAP[observable_type][ext_type] = new_extension
     except KeyError:
         if observable_type not in OBJ_MAP_OBSERVABLE:
diff --git a/stix2/exceptions.py b/stix2/exceptions.py
index d2ec3fc..edcc352 100644
--- a/stix2/exceptions.py
+++ b/stix2/exceptions.py
@@ -233,3 +233,16 @@ class STIXDeprecationWarning(DeprecationWarning):
     Represents usage of a deprecated component of a STIX specification.
     """
     pass
+
+
+class DuplicateRegistrationError(STIXError):
+    """A STIX object with the same type as an existing object is being registered"""
+
+    def __init__(self, obj_type, reg_obj_type):
+        super(DuplicateRegistrationError, self).__init__()
+        self.obj_type = obj_type
+        self.reg_obj_type = reg_obj_type
+
+    def __str__(self):
+        msg = "A(n) {0} with type '{1}' already exists and cannot be registered again"
+        return msg.format(self.obj_type, self.reg_obj_type)
diff --git a/tox.ini b/tox.ini
index d34aac1..aa0472a 100644
--- a/tox.ini
+++ b/tox.ini
@@ -8,11 +8,11 @@ deps =
   pytest
   pytest-cov
   coverage
-  taxii2-client
+  taxii2-client<1.0.0
   fuzzywuzzy
   haversine
   python-Levenshtein
-  medallion
+  medallion<2.0.0
 commands =
   python -m pytest --cov=stix2 stix2/test/ --cov-report term-missing -W ignore::stix2.exceptions.STIXDeprecationWarning
 

Registering new custom Object and Observable does not check for duplicates
When registering a new custom object or observable, the `_register_object` and `_register_observable` functions do not check to see if the type of the object/observable being passed in already exists in `OBJ_MAP`, which could lead to an existing type being overwritten
diff --git a/stix2/test/v20/test_core.py b/stix2/test/v20/test_core.py
index d2efa22..080c6f6 100644
--- a/stix2/test/v20/test_core.py
+++ b/stix2/test/v20/test_core.py
@@ -3,8 +3,6 @@ import pytest
 import stix2
 from stix2 import core, exceptions
 
-from .constants import IDENTITY_ID
-
 BUNDLE = {
     "type": "bundle",
     "spec_version": "2.0",
@@ -68,109 +66,9 @@ def test_parse_observable_with_no_version():
     assert v in str(obs_obj.__class__)
 
 
-def test_register_object_with_version():
-    bundle = core.dict_to_stix2(BUNDLE, version='2.0')
-    core._register_object(bundle.objects[0].__class__, version='2.0')
-    v = 'v20'
-
-    assert bundle.objects[0].type in core.STIX2_OBJ_MAPS[v]['objects']
-    # spec_version is not in STIX 2.0, and is required in 2.1, so this
-    # suffices as a test for a STIX 2.0 object.
-    assert "spec_version" not in bundle.objects[0]
-
-
 def test_register_marking_with_version():
     core._register_marking(stix2.v20.TLP_WHITE.__class__, version='2.0')
     v = 'v20'
 
     assert stix2.v20.TLP_WHITE.definition._type in core.STIX2_OBJ_MAPS[v]['markings']
     assert v in str(stix2.v20.TLP_WHITE.__class__)
-
-
-@pytest.mark.xfail(reason="The default version is no longer 2.0", condition=stix2.DEFAULT_VERSION != "2.0")
-def test_register_marking_with_no_version():
-    # Uses default version (2.0 in this case)
-    core._register_marking(stix2.v20.TLP_WHITE.__class__)
-    v = 'v20'
-
-    assert stix2.v20.TLP_WHITE.definition._type in core.STIX2_OBJ_MAPS[v]['markings']
-    assert v in str(stix2.v20.TLP_WHITE.__class__)
-
-
-def test_register_observable_with_version():
-    observed_data = stix2.v20.ObservedData(
-        id="observed-data--b67d30ff-02ac-498a-92f9-32f845f448cf",
-        created_by_ref=IDENTITY_ID,
-        created="2016-04-06T19:58:16.000Z",
-        modified="2016-04-06T19:58:16.000Z",
-        first_observed="2015-12-21T19:00:00Z",
-        last_observed="2015-12-21T19:00:00Z",
-        number_observed=50,
-        objects={
-            "0": {
-                "name": "foo.exe",
-                "type": "file",
-                "extensions": {
-                    "ntfs-ext": {
-                        "alternate_data_streams": [
-                            {
-                                "name": "second.stream",
-                                "size": 25536,
-                            },
-                        ],
-                    },
-                },
-            },
-            "1": {
-                "type": "directory",
-                "path": "/usr/home",
-                "contains_refs": ["0"],
-            },
-        },
-    )
-    core._register_observable(observed_data.objects['0'].__class__, version='2.0')
-    v = 'v20'
-
-    assert observed_data.objects['0'].type in core.STIX2_OBJ_MAPS[v]['observables']
-    assert v in str(observed_data.objects['0'].__class__)
-
-
-def test_register_observable_extension_with_version():
-    observed_data = stix2.v20.ObservedData(
-        id="observed-data--b67d30ff-02ac-498a-92f9-32f845f448cf",
-        created_by_ref=IDENTITY_ID,
-        created="2016-04-06T19:58:16.000Z",
-        modified="2016-04-06T19:58:16.000Z",
-        first_observed="2015-12-21T19:00:00Z",
-        last_observed="2015-12-21T19:00:00Z",
-        number_observed=50,
-        objects={
-            "0": {
-                "name": "foo.exe",
-                "type": "file",
-                "extensions": {
-                    "ntfs-ext": {
-                        "alternate_data_streams": [
-                            {
-                                "name": "second.stream",
-                                "size": 25536,
-                            },
-                        ],
-                    },
-                },
-            },
-            "1": {
-                "type": "directory",
-                "path": "/usr/home",
-                "contains_refs": ["0"],
-            },
-        },
-    )
-    core._register_observable_extension(observed_data.objects['0'], observed_data.objects['0'].extensions['ntfs-ext'].__class__, version='2.0')
-    v = 'v20'
-
-    assert observed_data.objects['0'].type in core.STIX2_OBJ_MAPS[v]['observables']
-    assert v in str(observed_data.objects['0'].__class__)
-
-    assert observed_data.objects['0'].extensions['ntfs-ext']._type in core.STIX2_OBJ_MAPS[v]['observable-extensions']['file']
-    assert v in str(observed_data.objects['0'].extensions['ntfs-ext'].__class__)
diff --git a/stix2/test/v20/test_custom.py b/stix2/test/v20/test_custom.py
index b986777..346f06b 100644
--- a/stix2/test/v20/test_custom.py
+++ b/stix2/test/v20/test_custom.py
@@ -1,9 +1,10 @@
 import pytest
 
 import stix2
+from stix2 import core
 import stix2.v20
 
-from ...exceptions import InvalidValueError
+from ...exceptions import DuplicateRegistrationError, InvalidValueError
 from .constants import FAKE_TIME, IDENTITY_ID, MARKING_DEFINITION_ID
 
 IDENTITY_CUSTOM_PROP = stix2.v20.Identity(
@@ -449,7 +450,7 @@ def test_custom_observable_raises_exception():
 
 def test_custom_observable_object_no_init_1():
     @stix2.v20.CustomObservable(
-        'x-new-observable', [
+        'x-new-observable-1', [
             ('property1', stix2.properties.StringProperty()),
         ],
     )
@@ -1011,3 +1012,123 @@ def test_custom_object_nested_dictionary(data):
     )
 
     assert data == str(example)
+
+
+@stix2.v20.CustomObject(
+    'x-new-type-2', [
+        ('property1', stix2.properties.StringProperty()),
+        ('property2', stix2.properties.IntegerProperty()),
+    ],
+)
+class NewType2(object):
+    pass
+
+
+def test_register_custom_object_with_version():
+    custom_obj_1 = {
+        "type": "x-new-type-2",
+        "id": "x-new-type-2--00000000-0000-4000-8000-000000000007",
+    }
+
+    cust_obj_1 = core.dict_to_stix2(custom_obj_1, version='2.0')
+    v = 'v20'
+
+    assert cust_obj_1.type in core.STIX2_OBJ_MAPS[v]['objects']
+    # spec_version is not in STIX 2.0, and is required in 2.1, so this
+    # suffices as a test for a STIX 2.0 object.
+    assert "spec_version" not in cust_obj_1
+
+
+def test_register_duplicate_object_with_version():
+    with pytest.raises(DuplicateRegistrationError) as excinfo:
+        @stix2.v20.CustomObject(
+            'x-new-type-2', [
+                ('property1', stix2.properties.StringProperty()),
+                ('property2', stix2.properties.IntegerProperty()),
+            ],
+        )
+        class NewType2(object):
+            pass
+    assert "cannot be registered again" in str(excinfo.value)
+
+
+@stix2.v20.CustomObservable(
+    'x-new-observable-2', [
+        ('property1', stix2.properties.StringProperty()),
+    ],
+)
+class NewObservable2(object):
+    pass
+
+
+def test_register_observable_with_version():
+    custom_obs = NewObservable2(property1="Test Observable")
+    v = 'v20'
+
+    assert custom_obs.type in core.STIX2_OBJ_MAPS[v]['observables']
+
+
+def test_register_duplicate_observable_with_version():
+    with pytest.raises(DuplicateRegistrationError) as excinfo:
+        @stix2.v20.CustomObservable(
+            'x-new-observable-2', [
+                ('property1', stix2.properties.StringProperty()),
+            ],
+        )
+        class NewObservable2(object):
+            pass
+    assert "cannot be registered again" in str(excinfo.value)
+
+
+def test_register_marking_with_version():
+    @stix2.v20.CustomMarking(
+        'x-new-obj-2', [
+            ('property1', stix2.properties.StringProperty(required=True)),
+        ],
+    )
+    class NewObj2():
+        pass
+    v = 'v20'
+
+    no = NewObj2(property1='something')
+    assert no._type in core.STIX2_OBJ_MAPS[v]['markings']
+
+
+def test_register_observable_extension_with_version():
+    @stix2.v20.CustomExtension(
+        stix2.v20.UserAccount, 'some-extension-2', [
+            ('keys', stix2.properties.StringProperty(required=True)),
+        ],
+    )
+    class SomeCustomExtension2:
+        pass
+
+    v = 'v20'
+    example = SomeCustomExtension2(keys='test123')
+
+    assert example._type in core.STIX2_OBJ_MAPS[v]['observable-extensions']['user-account']
+
+
+def test_register_duplicate_observable_extension():
+    with pytest.raises(DuplicateRegistrationError) as excinfo:
+        @stix2.v20.CustomExtension(
+            stix2.v20.UserAccount, 'some-extension-2', [
+                ('property1', stix2.properties.StringProperty(required=True)),
+                ('property2', stix2.properties.IntegerProperty()),
+            ],
+        )
+        class NewExtension2():
+            pass
+    assert "cannot be registered again" in str(excinfo.value)
+
+
+def test_register_duplicate_marking():
+    with pytest.raises(DuplicateRegistrationError) as excinfo:
+        @stix2.v20.CustomMarking(
+            'x-new-obj-2', [
+                ('property1', stix2.properties.StringProperty(required=True)),
+            ],
+        )
+        class NewObj2():
+            pass
+    assert "cannot be registered again" in str(excinfo.value)
diff --git a/stix2/test/v20/test_datastore_filesystem.py b/stix2/test/v20/test_datastore_filesystem.py
index 317f927..25207dc 100644
--- a/stix2/test/v20/test_datastore_filesystem.py
+++ b/stix2/test/v20/test_datastore_filesystem.py
@@ -635,7 +635,7 @@ def test_filesystem_object_with_custom_property_in_bundle(fs_store):
 
 def test_filesystem_custom_object(fs_store):
     @stix2.v20.CustomObject(
-        'x-new-obj', [
+        'x-new-obj-2', [
             ('property1', stix2.properties.StringProperty(required=True)),
         ],
     )
@@ -650,7 +650,7 @@ def test_filesystem_custom_object(fs_store):
     assert newobj_r["property1"] == 'something'
 
     # remove dir
-    shutil.rmtree(os.path.join(FS_PATH, "x-new-obj"), True)
+    shutil.rmtree(os.path.join(FS_PATH, "x-new-obj-2"), True)
 
 
 def test_relationships(rel_fs_store):
diff --git a/stix2/test/v20/test_datastore_memory.py b/stix2/test/v20/test_datastore_memory.py
index 7852746..28d8e52 100644
--- a/stix2/test/v20/test_datastore_memory.py
+++ b/stix2/test/v20/test_datastore_memory.py
@@ -329,7 +329,7 @@ def test_memory_store_object_with_custom_property_in_bundle(mem_store):
 
 def test_memory_store_custom_object(mem_store):
     @CustomObject(
-        'x-new-obj', [
+        'x-new-obj-3', [
             ('property1', properties.StringProperty(required=True)),
         ],
     )
diff --git a/stix2/test/v20/test_properties.py b/stix2/test/v20/test_properties.py
index f71d829..1d1474a 100644
--- a/stix2/test/v20/test_properties.py
+++ b/stix2/test/v20/test_properties.py
@@ -392,7 +392,7 @@ def test_dictionary_property_invalid(d):
 
 def test_property_list_of_dictionary():
     @stix2.v20.CustomObject(
-        'x-new-obj', [
+        'x-new-obj-4', [
             ('property1', ListProperty(DictionaryProperty(spec_version="2.0"), required=True)),
         ],
     )
diff --git a/stix2/test/v21/test_core.py b/stix2/test/v21/test_core.py
index 2018395..78e492a 100644
--- a/stix2/test/v21/test_core.py
+++ b/stix2/test/v21/test_core.py
@@ -3,8 +3,6 @@ import pytest
 import stix2
 from stix2 import core, exceptions
 
-from .constants import IDENTITY_ID, OBSERVED_DATA_ID
-
 BUNDLE = {
     "type": "bundle",
     "id": "bundle--00000000-0000-4000-8000-000000000007",
@@ -73,15 +71,6 @@ def test_parse_observable_with_no_version():
     assert v in str(obs_obj.__class__)
 
 
-def test_register_object_with_version():
-    bundle = core.dict_to_stix2(BUNDLE, version='2.1')
-    core._register_object(bundle.objects[0].__class__)
-    v = 'v21'
-
-    assert bundle.objects[0].type in core.STIX2_OBJ_MAPS[v]['objects']
-    assert bundle.objects[0].spec_version == "2.1"
-
-
 def test_register_marking_with_version():
     core._register_marking(stix2.v21.TLP_WHITE.__class__, version='2.1')
     v = 'v21'
@@ -98,82 +87,3 @@ def test_register_marking_with_no_version():
 
     assert stix2.v21.TLP_WHITE.definition._type in core.STIX2_OBJ_MAPS[v]['markings']
     assert v in str(stix2.v21.TLP_WHITE.__class__)
-
-
-def test_register_observable_with_default_version():
-    observed_data = stix2.v21.ObservedData(
-        id=OBSERVED_DATA_ID,
-        created_by_ref=IDENTITY_ID,
-        created="2016-04-06T19:58:16.000Z",
-        modified="2016-04-06T19:58:16.000Z",
-        first_observed="2015-12-21T19:00:00Z",
-        last_observed="2015-12-21T19:00:00Z",
-        number_observed=50,
-        objects={
-            "0": {
-                "name": "foo.exe",
-                "type": "file",
-                "extensions": {
-                    "ntfs-ext": {
-                        "alternate_data_streams": [
-                            {
-                                "name": "second.stream",
-                                "size": 25536,
-                            },
-                        ],
-                    },
-                },
-            },
-            "1": {
-                "type": "directory",
-                "path": "/usr/home",
-                "contains_refs": ["file--420bc087-8b53-5ae9-8210-20d27d5e96c8"],
-            },
-        },
-    )
-    core._register_observable(observed_data.objects['0'].__class__)
-    v = 'v21'
-
-    assert observed_data.objects['0'].type in core.STIX2_OBJ_MAPS[v]['observables']
-    assert v in str(observed_data.objects['0'].__class__)
-
-
-def test_register_observable_extension_with_default_version():
-    observed_data = stix2.v21.ObservedData(
-        id=OBSERVED_DATA_ID,
-        created_by_ref=IDENTITY_ID,
-        created="2016-04-06T19:58:16.000Z",
-        modified="2016-04-06T19:58:16.000Z",
-        first_observed="2015-12-21T19:00:00Z",
-        last_observed="2015-12-21T19:00:00Z",
-        number_observed=50,
-        objects={
-            "0": {
-                "name": "foo.exe",
-                "type": "file",
-                "extensions": {
-                    "ntfs-ext": {
-                        "alternate_data_streams": [
-                            {
-                                "name": "second.stream",
-                                "size": 25536,
-                            },
-                        ],
-                    },
-                },
-            },
-            "1": {
-                "type": "directory",
-                "path": "/usr/home",
-                "contains_refs": ["file--420bc087-8b53-5ae9-8210-20d27d5e96c8"],
-            },
-        },
-    )
-    core._register_observable_extension(observed_data.objects['0'], observed_data.objects['0'].extensions['ntfs-ext'].__class__)
-    v = 'v21'
-
-    assert observed_data.objects['0'].type in core.STIX2_OBJ_MAPS[v]['observables']
-    assert v in str(observed_data.objects['0'].__class__)
-
-    assert observed_data.objects['0'].extensions['ntfs-ext']._type in core.STIX2_OBJ_MAPS[v]['observable-extensions']['file']
-    assert v in str(observed_data.objects['0'].extensions['ntfs-ext'].__class__)
diff --git a/stix2/test/v21/test_custom.py b/stix2/test/v21/test_custom.py
index 1e6f629..4522463 100644
--- a/stix2/test/v21/test_custom.py
+++ b/stix2/test/v21/test_custom.py
@@ -6,7 +6,7 @@ import stix2
 import stix2.base
 import stix2.v21
 
-from ...exceptions import InvalidValueError
+from ...exceptions import DuplicateRegistrationError, InvalidValueError
 from .constants import FAKE_TIME, IDENTITY_ID, MARKING_DEFINITION_ID
 
 IDENTITY_CUSTOM_PROP = stix2.v21.Identity(
@@ -455,7 +455,7 @@ def test_custom_observable_raises_exception():
 
 def test_custom_observable_object_no_init_1():
     @stix2.v21.CustomObservable(
-        'x-new-observable', [
+        'x-new-observable-2', [
             ('property1', stix2.properties.StringProperty()),
         ],
     )
@@ -1065,3 +1065,110 @@ def test_custom_object_nested_dictionary(data):
     )
 
     assert data == str(example)
+
+
+@stix2.v21.CustomObject(
+    'x-new-type-2', [
+        ('property1', stix2.properties.StringProperty()),
+        ('property2', stix2.properties.IntegerProperty()),
+    ],
+)
+class NewType3(object):
+    pass
+
+
+def test_register_custom_object_with_version():
+    custom_obj_1 = {
+        "type": "x-new-type-2",
+        "id": "x-new-type-2--00000000-0000-4000-8000-000000000007",
+        "spec_version": "2.1",
+    }
+
+    cust_obj_1 = stix2.core.dict_to_stix2(custom_obj_1, version='2.1')
+    v = 'v21'
+
+    assert cust_obj_1.type in stix2.core.STIX2_OBJ_MAPS[v]['objects']
+    assert cust_obj_1.spec_version == "2.1"
+
+
+def test_register_duplicate_object_with_version():
+    with pytest.raises(DuplicateRegistrationError) as excinfo:
+        @stix2.v21.CustomObject(
+            'x-new-type-2', [
+                ('property1', stix2.properties.StringProperty()),
+                ('property2', stix2.properties.IntegerProperty()),
+            ],
+        )
+        class NewType2(object):
+            pass
+    assert "cannot be registered again" in str(excinfo.value)
+
+
+@stix2.v21.CustomObservable(
+    'x-new-observable-3', [
+        ('property1', stix2.properties.StringProperty()),
+    ],
+)
+class NewObservable3(object):
+    pass
+
+
+def test_register_observable():
+    custom_obs = NewObservable3(property1="Test Observable")
+    v = 'v21'
+
+    assert custom_obs.type in stix2.core.STIX2_OBJ_MAPS[v]['observables']
+
+
+def test_register_duplicate_observable():
+    with pytest.raises(DuplicateRegistrationError) as excinfo:
+        @stix2.v21.CustomObservable(
+            'x-new-observable-2', [
+                ('property1', stix2.properties.StringProperty()),
+            ],
+        )
+        class NewObservable2(object):
+            pass
+    assert "cannot be registered again" in str(excinfo.value)
+
+
+def test_register_observable_custom_extension():
+    @stix2.v21.CustomExtension(
+        stix2.v21.DomainName, 'x-new-2-ext', [
+            ('property1', stix2.properties.StringProperty(required=True)),
+            ('property2', stix2.properties.IntegerProperty()),
+        ],
+    )
+    class NewExtension2():
+        pass
+
+    example = NewExtension2(property1="Hi there")
+    v = 'v21'
+
+    assert 'domain-name' in stix2.core.STIX2_OBJ_MAPS[v]['observables']
+    assert example._type in stix2.core.STIX2_OBJ_MAPS[v]['observable-extensions']['domain-name']
+
+
+def test_register_duplicate_observable_extension():
+    with pytest.raises(DuplicateRegistrationError) as excinfo:
+        @stix2.v21.CustomExtension(
+            stix2.v21.DomainName, 'x-new-2-ext', [
+                ('property1', stix2.properties.StringProperty(required=True)),
+                ('property2', stix2.properties.IntegerProperty()),
+            ],
+        )
+        class NewExtension2():
+            pass
+    assert "cannot be registered again" in str(excinfo.value)
+
+
+def test_register_duplicate_marking():
+    with pytest.raises(DuplicateRegistrationError) as excinfo:
+        @stix2.v21.CustomMarking(
+            'x-new-obj', [
+                ('property1', stix2.properties.StringProperty(required=True)),
+            ],
+        )
+        class NewObj2():
+            pass
+    assert "cannot be registered again" in str(excinfo.value)
diff --git a/stix2/test/v21/test_datastore_filesystem.py b/stix2/test/v21/test_datastore_filesystem.py
index 3eb8aaa..123fd7a 100644
--- a/stix2/test/v21/test_datastore_filesystem.py
+++ b/stix2/test/v21/test_datastore_filesystem.py
@@ -656,7 +656,7 @@ def test_filesystem_object_with_custom_property_in_bundle(fs_store):
 
 def test_filesystem_custom_object(fs_store):
     @stix2.v21.CustomObject(
-        'x-new-obj', [
+        'x-new-obj-2', [
             ('property1', stix2.properties.StringProperty(required=True)),
         ],
     )
@@ -671,7 +671,7 @@ def test_filesystem_custom_object(fs_store):
     assert newobj_r["property1"] == 'something'
 
     # remove dir
-    shutil.rmtree(os.path.join(FS_PATH, "x-new-obj"), True)
+    shutil.rmtree(os.path.join(FS_PATH, "x-new-obj-2"), True)
 
 
 def test_relationships(rel_fs_store):
diff --git a/stix2/test/v21/test_datastore_memory.py b/stix2/test/v21/test_datastore_memory.py
index e07943c..60f577e 100644
--- a/stix2/test/v21/test_datastore_memory.py
+++ b/stix2/test/v21/test_datastore_memory.py
@@ -344,7 +344,7 @@ def test_memory_store_object_with_custom_property_in_bundle(mem_store):
 
 def test_memory_store_custom_object(mem_store):
     @CustomObject(
-        'x-new-obj', [
+        'x-new-obj-3', [
             ('property1', properties.StringProperty(required=True)),
         ],
     )
diff --git a/stix2/test/v21/test_properties.py b/stix2/test/v21/test_properties.py
index 50bce17..31dd941 100644
--- a/stix2/test/v21/test_properties.py
+++ b/stix2/test/v21/test_properties.py
@@ -404,7 +404,7 @@ def test_dictionary_property_invalid(d):
 
 def test_property_list_of_dictionary():
     @stix2.v21.CustomObject(
-        'x-new-obj', [
+        'x-new-obj-4', [
             ('property1', ListProperty(DictionaryProperty(spec_version='2.1'), required=True)),
         ],
     )

pip install -e .
parse_log_pytest
requirements.txt
pytest pytest-cov coverage taxii2-client fuzzywuzzy haversine python-Levenshtein medallion
apt-get update apt-get install -y gcc
3.7
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alabaster==0.7.13
antlr4-python3-runtime==4.9.3
attrs==24.2.0
Babel==2.14.0
backcall==0.2.0
beautifulsoup4==4.13.3
bleach==6.0.0
bump2version==1.0.1
bumpversion==0.6.0
cachetools==5.5.2
certifi @ file:///croot/certifi_1671487769961/work/certifi
cfgv==3.3.1
chardet==5.2.0
charset-normalizer==3.4.1
click==8.1.8
colorama==0.4.6
coverage==7.2.7
decorator==5.1.1
defusedxml==0.7.1
distlib==0.3.9
docutils==0.17.1
entrypoints==0.4
exceptiongroup==1.2.2
fastjsonschema==2.21.1
filelock==3.12.2
Flask==2.2.5
Flask-HTTPAuth==4.8.0
fuzzywuzzy==0.18.0
haversine==2.9.0
identify==2.5.24
idna==3.10
imagesize==1.4.1
importlib-metadata==6.7.0
importlib-resources==5.12.0
iniconfig==2.0.0
ipython==7.34.0
itsdangerous==2.1.2
jedi==0.19.2
Jinja2==3.1.6
jsonschema==4.17.3
jupyter_client==7.4.9
jupyter_core==4.12.0
jupyterlab-pygments==0.2.2
Levenshtein==0.23.0
MarkupSafe==2.1.5
matplotlib-inline==0.1.6
medallion==3.0.0
mistune==3.0.2
nbclient==0.7.4
nbconvert==7.6.0
nbformat==5.8.0
nbsphinx==0.4.3
nest-asyncio==1.6.0
nodeenv==1.9.1
packaging==24.0
pandocfilters==1.5.1
parso==0.8.4
pexpect==4.9.0
pickleshare==0.7.5
pkgutil_resolve_name==1.3.10
platformdirs==4.0.0
pluggy==1.2.0
pre-commit==2.21.0
prompt_toolkit==3.0.48
ptyprocess==0.7.0
Pygments==2.17.2
pyproject-api==1.5.3
pyrsistent==0.19.3
pytest==7.4.4
pytest-cov==4.1.0
python-dateutil==2.9.0.post0
python-Levenshtein==0.23.0
pytz==2025.2
PyYAML==6.0.1
pyzmq==26.2.1
rapidfuzz==3.4.0
requests==2.31.0
simplejson==3.20.1
six==1.17.0
snowballstemmer==2.2.0
soupsieve==2.4.1
Sphinx==1.8.6
sphinx-prompt==1.5.0
sphinxcontrib-serializinghtml==1.1.5
sphinxcontrib-websupport==1.2.4
-e git+https://github.com/oasis-open/cti-python-stix2.git@e8035863b8d7300a2cdba4c0737c49cfadb18bda#egg=stix2
stix2-patterns==2.0.0
taxii2-client==2.3.0
tinycss2==1.2.1
tomli==2.0.1
tornado==6.2
tox==4.8.0
traitlets==5.9.0
typing_extensions==4.7.1
urllib3==2.0.7
virtualenv==20.26.6
wcwidth==0.2.13
webencodings==0.5.1
Werkzeug==2.2.3
zipp==3.15.0

name: cti-python-stix2
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=22.3.1=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alabaster==0.7.13
      - antlr4-python3-runtime==4.9.3
      - attrs==24.2.0
      - babel==2.14.0
      - backcall==0.2.0
      - beautifulsoup4==4.13.3
      - bleach==6.0.0
      - bump2version==1.0.1
      - bumpversion==0.6.0
      - cachetools==5.5.2
      - cfgv==3.3.1
      - chardet==5.2.0
      - charset-normalizer==3.4.1
      - click==8.1.8
      - colorama==0.4.6
      - coverage==7.2.7
      - decorator==5.1.1
      - defusedxml==0.7.1
      - distlib==0.3.9
      - docutils==0.17.1
      - entrypoints==0.4
      - exceptiongroup==1.2.2
      - fastjsonschema==2.21.1
      - filelock==3.12.2
      - flask==2.2.5
      - flask-httpauth==4.8.0
      - fuzzywuzzy==0.18.0
      - haversine==2.9.0
      - identify==2.5.24
      - idna==3.10
      - imagesize==1.4.1
      - importlib-metadata==6.7.0
      - importlib-resources==5.12.0
      - iniconfig==2.0.0
      - ipython==7.34.0
      - itsdangerous==2.1.2
      - jedi==0.19.2
      - jinja2==3.1.6
      - jsonschema==4.17.3
      - jupyter-client==7.4.9
      - jupyter-core==4.12.0
      - jupyterlab-pygments==0.2.2
      - levenshtein==0.23.0
      - markupsafe==2.1.5
      - matplotlib-inline==0.1.6
      - medallion==3.0.0
      - mistune==3.0.2
      - nbclient==0.7.4
      - nbconvert==7.6.0
      - nbformat==5.8.0
      - nbsphinx==0.4.3
      - nest-asyncio==1.6.0
      - nodeenv==1.9.1
      - packaging==24.0
      - pandocfilters==1.5.1
      - parso==0.8.4
      - pexpect==4.9.0
      - pickleshare==0.7.5
      - pkgutil-resolve-name==1.3.10
      - platformdirs==4.0.0
      - pluggy==1.2.0
      - pre-commit==2.21.0
      - prompt-toolkit==3.0.48
      - ptyprocess==0.7.0
      - pygments==2.17.2
      - pyproject-api==1.5.3
      - pyrsistent==0.19.3
      - pytest==7.4.4
      - pytest-cov==4.1.0
      - python-dateutil==2.9.0.post0
      - python-levenshtein==0.23.0
      - pytz==2025.2
      - pyyaml==6.0.1
      - pyzmq==26.2.1
      - rapidfuzz==3.4.0
      - requests==2.31.0
      - simplejson==3.20.1
      - six==1.17.0
      - snowballstemmer==2.2.0
      - soupsieve==2.4.1
      - sphinx==1.8.6
      - sphinx-prompt==1.5.0
      - sphinxcontrib-serializinghtml==1.1.5
      - sphinxcontrib-websupport==1.2.4
      - stix2-patterns==2.0.0
      - taxii2-client==2.3.0
      - tinycss2==1.2.1
      - tomli==2.0.1
      - tornado==6.2
      - tox==4.8.0
      - traitlets==5.9.0
      - typing-extensions==4.7.1
      - urllib3==2.0.7
      - virtualenv==20.26.6
      - wcwidth==0.2.13
      - webencodings==0.5.1
      - werkzeug==2.2.3
      - zipp==3.15.0
prefix: /opt/conda/envs/cti-python-stix2

stix2/test/v20/test_core.py::test_dict_to_stix2_bundle_with_version stix2/test/v20/test_core.py::test_parse_observable_with_version stix2/test/v20/test_core.py::test_parse_observable_with_no_version stix2/test/v20/test_core.py::test_register_marking_with_version stix2/test/v20/test_custom.py::test_identity_custom_property stix2/test/v20/test_custom.py::test_identity_custom_property_invalid stix2/test/v20/test_custom.py::test_identity_custom_property_allowed stix2/test/v20/test_custom.py::test_parse_identity_custom_property[{\n stix2/test/v20/test_custom.py::test_custom_property_object_in_bundled_object stix2/test/v20/test_custom.py::test_custom_properties_object_in_bundled_object stix2/test/v20/test_custom.py::test_custom_property_dict_in_bundled_object stix2/test/v20/test_custom.py::test_custom_properties_dict_in_bundled_object stix2/test/v20/test_custom.py::test_custom_property_in_observed_data stix2/test/v20/test_custom.py::test_custom_property_object_in_observable_extension stix2/test/v20/test_custom.py::test_custom_property_dict_in_observable_extension stix2/test/v20/test_custom.py::test_identity_custom_property_revoke stix2/test/v20/test_custom.py::test_identity_custom_property_edit_markings stix2/test/v20/test_custom.py::test_custom_marking_no_init_1 stix2/test/v20/test_custom.py::test_custom_marking_no_init_2 stix2/test/v20/test_custom.py::test_custom_object_raises_exception stix2/test/v20/test_custom.py::test_custom_object_type stix2/test/v20/test_custom.py::test_custom_object_no_init_1 stix2/test/v20/test_custom.py::test_custom_object_no_init_2 stix2/test/v20/test_custom.py::test_custom_object_invalid_type_name stix2/test/v20/test_custom.py::test_parse_custom_object_type stix2/test/v20/test_custom.py::test_parse_unregistered_custom_object_type stix2/test/v20/test_custom.py::test_parse_unregistered_custom_object_type_w_allow_custom stix2/test/v20/test_custom.py::test_custom_observable_object_1 stix2/test/v20/test_custom.py::test_custom_observable_object_2 stix2/test/v20/test_custom.py::test_custom_observable_object_3 stix2/test/v20/test_custom.py::test_custom_observable_raises_exception stix2/test/v20/test_custom.py::test_custom_observable_object_no_init_1 stix2/test/v20/test_custom.py::test_custom_observable_object_no_init_2 stix2/test/v20/test_custom.py::test_custom_observable_object_invalid_type_name stix2/test/v20/test_custom.py::test_custom_observable_object_invalid_ref_property stix2/test/v20/test_custom.py::test_custom_observable_object_invalid_refs_property stix2/test/v20/test_custom.py::test_custom_observable_object_invalid_refs_list_property stix2/test/v20/test_custom.py::test_custom_observable_object_invalid_valid_refs stix2/test/v20/test_custom.py::test_custom_no_properties_raises_exception stix2/test/v20/test_custom.py::test_custom_wrong_properties_arg_raises_exception stix2/test/v20/test_custom.py::test_parse_custom_observable_object stix2/test/v20/test_custom.py::test_parse_unregistered_custom_observable_object stix2/test/v20/test_custom.py::test_parse_unregistered_custom_observable_object_with_no_type stix2/test/v20/test_custom.py::test_parse_observed_data_with_custom_observable stix2/test/v20/test_custom.py::test_parse_invalid_custom_observable_object stix2/test/v20/test_custom.py::test_observable_custom_property stix2/test/v20/test_custom.py::test_observable_custom_property_invalid stix2/test/v20/test_custom.py::test_observable_custom_property_allowed stix2/test/v20/test_custom.py::test_observed_data_with_custom_observable_object stix2/test/v20/test_custom.py::test_custom_extension_raises_exception stix2/test/v20/test_custom.py::test_custom_extension stix2/test/v20/test_custom.py::test_custom_extension_wrong_observable_type stix2/test/v20/test_custom.py::test_custom_extension_with_list_and_dict_properties_observable_type[{\n stix2/test/v20/test_custom.py::test_custom_extension_invalid_observable stix2/test/v20/test_custom.py::test_custom_extension_invalid_type_name stix2/test/v20/test_custom.py::test_custom_extension_no_properties stix2/test/v20/test_custom.py::test_custom_extension_empty_properties stix2/test/v20/test_custom.py::test_custom_extension_dict_properties stix2/test/v20/test_custom.py::test_custom_extension_no_init_1 stix2/test/v20/test_custom.py::test_custom_extension_no_init_2 stix2/test/v20/test_custom.py::test_parse_observable_with_custom_extension stix2/test/v20/test_custom.py::test_custom_and_spec_extension_mix stix2/test/v20/test_custom.py::test_parse_observable_with_unregistered_custom_extension[{\n stix2/test/v20/test_custom.py::test_register_custom_object stix2/test/v20/test_custom.py::test_extension_property_location stix2/test/v20/test_custom.py::test_custom_object_nested_dictionary[{\n stix2/test/v20/test_custom.py::test_register_custom_object_with_version stix2/test/v20/test_custom.py::test_register_duplicate_object_with_version stix2/test/v20/test_custom.py::test_register_observable_with_version stix2/test/v20/test_custom.py::test_register_duplicate_observable_with_version stix2/test/v20/test_custom.py::test_register_marking_with_version stix2/test/v20/test_custom.py::test_register_observable_extension_with_version stix2/test/v20/test_custom.py::test_register_duplicate_observable_extension stix2/test/v20/test_custom.py::test_register_duplicate_marking stix2/test/v20/test_datastore_filesystem.py::test_filesystem_source_nonexistent_folder stix2/test/v20/test_datastore_filesystem.py::test_filesystem_sink_nonexistent_folder stix2/test/v20/test_datastore_filesystem.py::test_filesystem_source_bad_json_file stix2/test/v20/test_datastore_filesystem.py::test_filesystem_source_bad_stix_file stix2/test/v20/test_datastore_filesystem.py::test_filesystem_source_get_object stix2/test/v20/test_datastore_filesystem.py::test_filesystem_source_get_nonexistent_object stix2/test/v20/test_datastore_filesystem.py::test_filesystem_source_all_versions stix2/test/v20/test_datastore_filesystem.py::test_filesystem_source_query_single stix2/test/v20/test_datastore_filesystem.py::test_filesystem_source_query_multiple stix2/test/v20/test_datastore_filesystem.py::test_filesystem_source_backward_compatible stix2/test/v20/test_datastore_filesystem.py::test_filesystem_sink_add_python_stix_object stix2/test/v20/test_datastore_filesystem.py::test_filesystem_sink_add_stix_object_dict stix2/test/v20/test_datastore_filesystem.py::test_filesystem_sink_add_stix_bundle_dict stix2/test/v20/test_datastore_filesystem.py::test_filesystem_sink_add_json_stix_object stix2/test/v20/test_datastore_filesystem.py::test_filesystem_sink_json_stix_bundle stix2/test/v20/test_datastore_filesystem.py::test_filesystem_sink_add_objects_list stix2/test/v20/test_datastore_filesystem.py::test_filesystem_attempt_stix_file_overwrite stix2/test/v20/test_datastore_filesystem.py::test_filesystem_sink_marking stix2/test/v20/test_datastore_filesystem.py::test_filesystem_store_get_stored_as_bundle stix2/test/v20/test_datastore_filesystem.py::test_filesystem_store_get_stored_as_object stix2/test/v20/test_datastore_filesystem.py::test_filesystem_store_all_versions stix2/test/v20/test_datastore_filesystem.py::test_filesystem_store_query stix2/test/v20/test_datastore_filesystem.py::test_filesystem_store_query_single_filter stix2/test/v20/test_datastore_filesystem.py::test_filesystem_store_empty_query stix2/test/v20/test_datastore_filesystem.py::test_filesystem_store_query_multiple_filters stix2/test/v20/test_datastore_filesystem.py::test_filesystem_store_query_dont_include_type_folder stix2/test/v20/test_datastore_filesystem.py::test_filesystem_store_add stix2/test/v20/test_datastore_filesystem.py::test_filesystem_store_add_as_bundle stix2/test/v20/test_datastore_filesystem.py::test_filesystem_add_bundle_object stix2/test/v20/test_datastore_filesystem.py::test_filesystem_store_add_invalid_object stix2/test/v20/test_datastore_filesystem.py::test_filesystem_store_add_marking stix2/test/v20/test_datastore_filesystem.py::test_filesystem_object_with_custom_property stix2/test/v20/test_datastore_filesystem.py::test_filesystem_object_with_custom_property_in_bundle stix2/test/v20/test_datastore_filesystem.py::test_filesystem_custom_object stix2/test/v20/test_datastore_filesystem.py::test_relationships stix2/test/v20/test_datastore_filesystem.py::test_relationships_by_type stix2/test/v20/test_datastore_filesystem.py::test_relationships_by_source stix2/test/v20/test_datastore_filesystem.py::test_relationships_by_target stix2/test/v20/test_datastore_filesystem.py::test_relationships_by_target_and_type stix2/test/v20/test_datastore_filesystem.py::test_relationships_by_target_and_source stix2/test/v20/test_datastore_filesystem.py::test_related_to stix2/test/v20/test_datastore_filesystem.py::test_related_to_by_source stix2/test/v20/test_datastore_filesystem.py::test_related_to_by_target stix2/test/v20/test_datastore_filesystem.py::test_auth_set_white1 stix2/test/v20/test_datastore_filesystem.py::test_auth_set_white2 stix2/test/v20/test_datastore_filesystem.py::test_auth_set_white3 stix2/test/v20/test_datastore_filesystem.py::test_auth_set_black1 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types1 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types2 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types3 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types4 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types5 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types6 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types7 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types8 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types_ids1 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types_ids2 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types_ids3 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types_ids4 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types_ids5 stix2/test/v20/test_datastore_filesystem.py::test_optimize_types_ids6 stix2/test/v20/test_datastore_filesystem.py::test_search_auth_set_white1 stix2/test/v20/test_datastore_filesystem.py::test_search_auth_set_white2 stix2/test/v20/test_datastore_filesystem.py::test_search_auth_set_white3 stix2/test/v20/test_datastore_filesystem.py::test_search_auth_set_black1 stix2/test/v20/test_datastore_filesystem.py::test_search_auth_set_white_empty stix2/test/v20/test_datastore_filesystem.py::test_search_auth_set_black_empty stix2/test/v20/test_datastore_filesystem.py::test_timestamp2filename_naive stix2/test/v20/test_datastore_filesystem.py::test_timestamp2filename_tz stix2/test/v20/test_datastore_memory.py::test_memory_source_get stix2/test/v20/test_datastore_memory.py::test_memory_source_get_nonexistant_object stix2/test/v20/test_datastore_memory.py::test_memory_store_all_versions stix2/test/v20/test_datastore_memory.py::test_memory_store_query stix2/test/v20/test_datastore_memory.py::test_memory_store_query_single_filter stix2/test/v20/test_datastore_memory.py::test_memory_store_query_empty_query stix2/test/v20/test_datastore_memory.py::test_memory_store_query_multiple_filters stix2/test/v20/test_datastore_memory.py::test_memory_store_save_load_file stix2/test/v20/test_datastore_memory.py::test_memory_store_save_load_file_no_name_provided stix2/test/v20/test_datastore_memory.py::test_memory_store_add_invalid_object stix2/test/v20/test_datastore_memory.py::test_memory_store_object_with_custom_property stix2/test/v20/test_datastore_memory.py::test_memory_store_object_creator_of_present stix2/test/v20/test_datastore_memory.py::test_memory_store_object_creator_of_missing stix2/test/v20/test_datastore_memory.py::test_memory_store_object_with_custom_property_in_bundle stix2/test/v20/test_datastore_memory.py::test_memory_store_custom_object stix2/test/v20/test_datastore_memory.py::test_relationships stix2/test/v20/test_datastore_memory.py::test_relationships_by_type stix2/test/v20/test_datastore_memory.py::test_relationships_by_source stix2/test/v20/test_datastore_memory.py::test_relationships_by_target stix2/test/v20/test_datastore_memory.py::test_relationships_by_target_and_type stix2/test/v20/test_datastore_memory.py::test_relationships_by_target_and_source stix2/test/v20/test_datastore_memory.py::test_related_to stix2/test/v20/test_datastore_memory.py::test_related_to_by_source stix2/test/v20/test_datastore_memory.py::test_related_to_by_target stix2/test/v20/test_datastore_memory.py::test_object_family_internal_components stix2/test/v20/test_datastore_memory.py::test_unversioned_objects stix2/test/v20/test_properties.py::test_property stix2/test/v20/test_properties.py::test_basic_clean stix2/test/v20/test_properties.py::test_property_default stix2/test/v20/test_properties.py::test_fixed_property stix2/test/v20/test_properties.py::test_list_property stix2/test/v20/test_properties.py::test_string_property stix2/test/v20/test_properties.py::test_type_property stix2/test/v20/test_properties.py::test_id_property_valid[my-type--232c9d3f-49fc-4440-bb01-607f638778e7] stix2/test/v20/test_properties.py::test_id_property_valid[my-type--00000000-0000-4000-8000-000000000000] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[attack-pattern--0c7b5b88-8ff7-4a4d-aa9d-feb398cd0061] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[campaign--8e2e2d2b-17d4-4cbf-938f-98ee46b3cd3f] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[course-of-action--8e2e2d2b-17d4-4cbf-938f-98ee46b3cd3f] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[identity--311b2d2d-f010-4473-83ec-1edf84858f4c] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[indicator--a740531e-63ff-4e49-a9e1-a0a3eed0e3e7] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[intrusion-set--4e78f46f-a023-4e5f-bc24-71b3ca22ec29] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[malware--9c4638ec-f1de-4ddb-abf4-1b760417654e] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc90] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[observed-data--b67d30ff-02ac-498a-92f9-32f845f448cf] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[relationship--df7c87eb-75d2-4948-af81-9d49d246f301] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[report--84e4d88f-44ea-4bcd-bbf3-b2c1c320bcb3] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[sighting--bfbc19db-ec35-4e45-beed-f8bde2a772fb] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[threat-actor--8e2e2d2b-17d4-4cbf-938f-98ee46b3cd3f] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[tool--8e2e2d2b-17d4-4cbf-938f-98ee46b3cd3f] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[vulnerability--0c7b5b88-8ff7-4a4d-aa9d-feb398cd0061] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc91] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[marking-definition--443eb5c3-a76c-4a0a-8caa-e93998e7bc09] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[marking-definition--57fcd772-9c1d-41b0-8d1f-3d47713415d9] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[marking-definition--462bf1a6-03d2-419c-b74e-eee2238b2de4] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[marking-definition--68520ae2-fefe-43a9-84ee-2c2a934d2c7d] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[marking-definition--2802dfb1-1019-40a8-8848-68d0ec0e417f] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[relationship--06520621-5352-4e6a-b976-e8fa3d437ffd] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[relationship--181c9c09-43e6-45dd-9374-3bec192f05ef] stix2/test/v20/test_properties.py::test_id_property_valid_for_type[relationship--a0cbb21c-8daf-4a7f-96aa-7155a4ef8f70] stix2/test/v20/test_properties.py::test_id_property_wrong_type stix2/test/v20/test_properties.py::test_id_property_not_a_valid_hex_uuid[my-type--foo] stix2/test/v20/test_properties.py::test_id_property_not_a_valid_hex_uuid[my-type--00000000-0000-0000-0000-000000000000] stix2/test/v20/test_properties.py::test_id_property_not_a_valid_hex_uuid[my-type--e7ef02b0-0e20-11f0-9ccc-bbfd4dc5ba6a] stix2/test/v20/test_properties.py::test_id_property_not_a_valid_hex_uuid[my-type--04738bdf-b25a-3829-a801-b21a1d25095b] stix2/test/v20/test_properties.py::test_id_property_not_a_valid_hex_uuid[my-type--aad03681-8b63-5304-89e0-8ca8f49461b5] stix2/test/v20/test_properties.py::test_id_property_default stix2/test/v20/test_properties.py::test_integer_property_valid[2] stix2/test/v20/test_properties.py::test_integer_property_valid[-1] stix2/test/v20/test_properties.py::test_integer_property_valid[3.14] stix2/test/v20/test_properties.py::test_integer_property_valid[False] stix2/test/v20/test_properties.py::test_integer_property_invalid_min_with_constraints[-1] stix2/test/v20/test_properties.py::test_integer_property_invalid_min_with_constraints[-100] stix2/test/v20/test_properties.py::test_integer_property_invalid_min_with_constraints[-30] stix2/test/v20/test_properties.py::test_integer_property_invalid_max_with_constraints[181] stix2/test/v20/test_properties.py::test_integer_property_invalid_max_with_constraints[200] stix2/test/v20/test_properties.py::test_integer_property_invalid_max_with_constraints[300] stix2/test/v20/test_properties.py::test_integer_property_invalid[something] stix2/test/v20/test_properties.py::test_integer_property_invalid[value1] stix2/test/v20/test_properties.py::test_float_property_valid[2] stix2/test/v20/test_properties.py::test_float_property_valid[-1] stix2/test/v20/test_properties.py::test_float_property_valid[3.14] stix2/test/v20/test_properties.py::test_float_property_valid[False] stix2/test/v20/test_properties.py::test_float_property_invalid[something] stix2/test/v20/test_properties.py::test_float_property_invalid[value1] stix2/test/v20/test_properties.py::test_boolean_property_valid[True0] stix2/test/v20/test_properties.py::test_boolean_property_valid[False0] stix2/test/v20/test_properties.py::test_boolean_property_valid[True1] stix2/test/v20/test_properties.py::test_boolean_property_valid[False1] stix2/test/v20/test_properties.py::test_boolean_property_valid[true] stix2/test/v20/test_properties.py::test_boolean_property_valid[false] stix2/test/v20/test_properties.py::test_boolean_property_valid[TRUE] stix2/test/v20/test_properties.py::test_boolean_property_valid[FALSE] stix2/test/v20/test_properties.py::test_boolean_property_valid[T] stix2/test/v20/test_properties.py::test_boolean_property_valid[F] stix2/test/v20/test_properties.py::test_boolean_property_valid[t] stix2/test/v20/test_properties.py::test_boolean_property_valid[f] stix2/test/v20/test_properties.py::test_boolean_property_valid[1] stix2/test/v20/test_properties.py::test_boolean_property_valid[0] stix2/test/v20/test_properties.py::test_boolean_property_invalid[abc] stix2/test/v20/test_properties.py::test_boolean_property_invalid[value1] stix2/test/v20/test_properties.py::test_boolean_property_invalid[value2] stix2/test/v20/test_properties.py::test_boolean_property_invalid[2] stix2/test/v20/test_properties.py::test_boolean_property_invalid[-1] stix2/test/v20/test_properties.py::test_reference_property stix2/test/v20/test_properties.py::test_reference_property_specific_type stix2/test/v20/test_properties.py::test_timestamp_property_valid[2017-01-01T12:34:56Z] stix2/test/v20/test_properties.py::test_timestamp_property_valid[2017-01-01 stix2/test/v20/test_properties.py::test_timestamp_property_valid[Jan stix2/test/v20/test_properties.py::test_timestamp_property_invalid stix2/test/v20/test_properties.py::test_binary_property stix2/test/v20/test_properties.py::test_hex_property stix2/test/v20/test_properties.py::test_dictionary_property_valid[d0] stix2/test/v20/test_properties.py::test_dictionary_property_valid[d1] stix2/test/v20/test_properties.py::test_dictionary_property_invalid_key[d0] stix2/test/v20/test_properties.py::test_dictionary_property_invalid_key[d1] stix2/test/v20/test_properties.py::test_dictionary_property_invalid_key[d2] stix2/test/v20/test_properties.py::test_dictionary_property_invalid[d0] stix2/test/v20/test_properties.py::test_property_list_of_dictionary stix2/test/v20/test_properties.py::test_hashes_property_valid[value0] stix2/test/v20/test_properties.py::test_hashes_property_valid[value1] stix2/test/v20/test_properties.py::test_hashes_property_invalid[value0] stix2/test/v20/test_properties.py::test_hashes_property_invalid[value1] stix2/test/v20/test_properties.py::test_embedded_property stix2/test/v20/test_properties.py::test_enum_property_valid[value0] stix2/test/v20/test_properties.py::test_enum_property_valid[value1] stix2/test/v20/test_properties.py::test_enum_property_valid[b] stix2/test/v20/test_properties.py::test_enum_property_invalid stix2/test/v20/test_properties.py::test_extension_property_valid stix2/test/v20/test_properties.py::test_extension_property_invalid1 stix2/test/v20/test_properties.py::test_extension_property_invalid2 stix2/test/v20/test_properties.py::test_extension_property_invalid_type stix2/test/v20/test_properties.py::test_extension_at_least_one_property_constraint stix2/test/v20/test_properties.py::test_marking_property_error stix2/test/v20/test_properties.py::test_stix_property_not_compliant_spec stix2/test/v21/test_core.py::test_dict_to_stix2_bundle_with_version stix2/test/v21/test_core.py::test_parse_observable_with_version stix2/test/v21/test_core.py::test_register_marking_with_version stix2/test/v21/test_custom.py::test_identity_custom_property stix2/test/v21/test_custom.py::test_identity_custom_property_invalid stix2/test/v21/test_custom.py::test_identity_custom_property_allowed stix2/test/v21/test_custom.py::test_parse_identity_custom_property[{\n stix2/test/v21/test_custom.py::test_custom_property_object_in_bundled_object stix2/test/v21/test_custom.py::test_custom_properties_object_in_bundled_object stix2/test/v21/test_custom.py::test_custom_property_dict_in_bundled_object stix2/test/v21/test_custom.py::test_custom_properties_dict_in_bundled_object stix2/test/v21/test_custom.py::test_custom_property_in_observed_data stix2/test/v21/test_custom.py::test_custom_property_object_in_observable_extension stix2/test/v21/test_custom.py::test_custom_property_dict_in_observable_extension stix2/test/v21/test_custom.py::test_identity_custom_property_revoke stix2/test/v21/test_custom.py::test_identity_custom_property_edit_markings stix2/test/v21/test_custom.py::test_custom_marking_no_init_1 stix2/test/v21/test_custom.py::test_custom_marking_no_init_2 stix2/test/v21/test_custom.py::test_custom_object_raises_exception stix2/test/v21/test_custom.py::test_custom_object_type stix2/test/v21/test_custom.py::test_custom_object_no_init_1 stix2/test/v21/test_custom.py::test_custom_object_no_init_2 stix2/test/v21/test_custom.py::test_custom_object_invalid_type_name stix2/test/v21/test_custom.py::test_parse_custom_object_type stix2/test/v21/test_custom.py::test_parse_unregistered_custom_object_type stix2/test/v21/test_custom.py::test_parse_unregistered_custom_object_type_w_allow_custom stix2/test/v21/test_custom.py::test_custom_observable_object_1 stix2/test/v21/test_custom.py::test_custom_observable_object_2 stix2/test/v21/test_custom.py::test_custom_observable_object_3 stix2/test/v21/test_custom.py::test_custom_observable_raises_exception stix2/test/v21/test_custom.py::test_custom_observable_object_no_init_1 stix2/test/v21/test_custom.py::test_custom_observable_object_no_init_2 stix2/test/v21/test_custom.py::test_custom_observable_object_invalid_type_name stix2/test/v21/test_custom.py::test_custom_observable_object_invalid_ref_property stix2/test/v21/test_custom.py::test_custom_observable_object_invalid_refs_property stix2/test/v21/test_custom.py::test_custom_observable_object_invalid_refs_list_property stix2/test/v21/test_custom.py::test_custom_no_properties_raises_exception stix2/test/v21/test_custom.py::test_custom_wrong_properties_arg_raises_exception stix2/test/v21/test_custom.py::test_parse_custom_observable_object stix2/test/v21/test_custom.py::test_parse_unregistered_custom_observable_object stix2/test/v21/test_custom.py::test_parse_unregistered_custom_observable_object_with_no_type stix2/test/v21/test_custom.py::test_parse_observed_data_with_custom_observable stix2/test/v21/test_custom.py::test_parse_invalid_custom_observable_object stix2/test/v21/test_custom.py::test_observable_custom_property stix2/test/v21/test_custom.py::test_observable_custom_property_invalid stix2/test/v21/test_custom.py::test_observable_custom_property_allowed stix2/test/v21/test_custom.py::test_observed_data_with_custom_observable_object stix2/test/v21/test_custom.py::test_custom_observable_object_det_id_1 stix2/test/v21/test_custom.py::test_custom_observable_object_det_id_2 stix2/test/v21/test_custom.py::test_custom_observable_object_no_id_contrib_props stix2/test/v21/test_custom.py::test_custom_extension_raises_exception stix2/test/v21/test_custom.py::test_custom_extension stix2/test/v21/test_custom.py::test_custom_extension_wrong_observable_type stix2/test/v21/test_custom.py::test_custom_extension_with_list_and_dict_properties_observable_type[{\n stix2/test/v21/test_custom.py::test_custom_extension_invalid_observable stix2/test/v21/test_custom.py::test_custom_extension_invalid_type_name stix2/test/v21/test_custom.py::test_custom_extension_no_properties stix2/test/v21/test_custom.py::test_custom_extension_empty_properties stix2/test/v21/test_custom.py::test_custom_extension_dict_properties stix2/test/v21/test_custom.py::test_custom_extension_no_init_1 stix2/test/v21/test_custom.py::test_custom_extension_no_init_2 stix2/test/v21/test_custom.py::test_parse_observable_with_custom_extension stix2/test/v21/test_custom.py::test_custom_and_spec_extension_mix stix2/test/v21/test_custom.py::test_parse_observable_with_unregistered_custom_extension[{\n stix2/test/v21/test_custom.py::test_register_custom_object stix2/test/v21/test_custom.py::test_extension_property_location stix2/test/v21/test_custom.py::test_custom_object_nested_dictionary[{\n stix2/test/v21/test_custom.py::test_register_custom_object_with_version stix2/test/v21/test_custom.py::test_register_duplicate_object_with_version stix2/test/v21/test_custom.py::test_register_observable stix2/test/v21/test_custom.py::test_register_duplicate_observable stix2/test/v21/test_custom.py::test_register_observable_custom_extension stix2/test/v21/test_custom.py::test_register_duplicate_observable_extension stix2/test/v21/test_custom.py::test_register_duplicate_marking stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_nonexistent_folder stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_nonexistent_folder stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_bad_json_file stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_bad_stix_file stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_get_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_get_nonexistent_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_all_versions stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_query_single stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_query_multiple stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_backward_compatible stix2/test/v21/test_datastore_filesystem.py::test_filesystem_source_sco stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_add_python_stix_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_add_stix_object_dict stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_add_stix_bundle_dict stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_add_json_stix_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_json_stix_bundle stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_add_objects_list stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_marking stix2/test/v21/test_datastore_filesystem.py::test_filesystem_sink_sco stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_get_stored_as_bundle stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_get_stored_as_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_all_versions stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_query stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_query_single_filter stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_empty_query stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_query_multiple_filters stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_query_dont_include_type_folder stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_add stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_add_as_bundle stix2/test/v21/test_datastore_filesystem.py::test_filesystem_add_bundle_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_add_invalid_object stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_add_marking stix2/test/v21/test_datastore_filesystem.py::test_filesystem_store_add_sco stix2/test/v21/test_datastore_filesystem.py::test_filesystem_object_with_custom_property stix2/test/v21/test_datastore_filesystem.py::test_filesystem_object_with_custom_property_in_bundle stix2/test/v21/test_datastore_filesystem.py::test_filesystem_custom_object stix2/test/v21/test_datastore_filesystem.py::test_relationships stix2/test/v21/test_datastore_filesystem.py::test_relationships_by_type stix2/test/v21/test_datastore_filesystem.py::test_relationships_by_source stix2/test/v21/test_datastore_filesystem.py::test_relationships_by_target stix2/test/v21/test_datastore_filesystem.py::test_relationships_by_target_and_type stix2/test/v21/test_datastore_filesystem.py::test_relationships_by_target_and_source stix2/test/v21/test_datastore_filesystem.py::test_related_to stix2/test/v21/test_datastore_filesystem.py::test_related_to_by_source stix2/test/v21/test_datastore_filesystem.py::test_related_to_by_target stix2/test/v21/test_datastore_filesystem.py::test_auth_set_white1 stix2/test/v21/test_datastore_filesystem.py::test_auth_set_white2 stix2/test/v21/test_datastore_filesystem.py::test_auth_set_white3 stix2/test/v21/test_datastore_filesystem.py::test_auth_set_black1 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types1 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types2 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types3 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types4 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types5 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types6 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types7 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types8 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types_ids1 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types_ids2 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types_ids3 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types_ids4 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types_ids5 stix2/test/v21/test_datastore_filesystem.py::test_optimize_types_ids6 stix2/test/v21/test_datastore_filesystem.py::test_search_auth_set_white1 stix2/test/v21/test_datastore_filesystem.py::test_search_auth_set_white2 stix2/test/v21/test_datastore_filesystem.py::test_search_auth_set_white3 stix2/test/v21/test_datastore_filesystem.py::test_search_auth_set_black1 stix2/test/v21/test_datastore_filesystem.py::test_search_auth_set_white_empty stix2/test/v21/test_datastore_filesystem.py::test_search_auth_set_black_empty stix2/test/v21/test_datastore_filesystem.py::test_timestamp2filename_naive stix2/test/v21/test_datastore_filesystem.py::test_timestamp2filename_tz stix2/test/v21/test_datastore_memory.py::test_memory_source_get stix2/test/v21/test_datastore_memory.py::test_memory_source_get_nonexistant_object stix2/test/v21/test_datastore_memory.py::test_memory_store_all_versions stix2/test/v21/test_datastore_memory.py::test_memory_store_query stix2/test/v21/test_datastore_memory.py::test_memory_store_query_single_filter stix2/test/v21/test_datastore_memory.py::test_memory_store_query_empty_query stix2/test/v21/test_datastore_memory.py::test_memory_store_query_multiple_filters stix2/test/v21/test_datastore_memory.py::test_memory_store_save_load_file stix2/test/v21/test_datastore_memory.py::test_memory_store_save_load_file_no_name_provided stix2/test/v21/test_datastore_memory.py::test_memory_store_add_invalid_object stix2/test/v21/test_datastore_memory.py::test_memory_store_object_with_custom_property stix2/test/v21/test_datastore_memory.py::test_memory_store_object_creator_of_present stix2/test/v21/test_datastore_memory.py::test_memory_store_object_creator_of_missing stix2/test/v21/test_datastore_memory.py::test_memory_store_object_with_custom_property_in_bundle stix2/test/v21/test_datastore_memory.py::test_memory_store_custom_object stix2/test/v21/test_datastore_memory.py::test_relationships stix2/test/v21/test_datastore_memory.py::test_relationships_by_type stix2/test/v21/test_datastore_memory.py::test_relationships_by_source stix2/test/v21/test_datastore_memory.py::test_relationships_by_target stix2/test/v21/test_datastore_memory.py::test_relationships_by_target_and_type stix2/test/v21/test_datastore_memory.py::test_relationships_by_target_and_source stix2/test/v21/test_datastore_memory.py::test_related_to stix2/test/v21/test_datastore_memory.py::test_related_to_by_source stix2/test/v21/test_datastore_memory.py::test_related_to_by_target stix2/test/v21/test_datastore_memory.py::test_object_family_internal_components stix2/test/v21/test_datastore_memory.py::test_unversioned_objects stix2/test/v21/test_properties.py::test_property stix2/test/v21/test_properties.py::test_basic_clean stix2/test/v21/test_properties.py::test_property_default stix2/test/v21/test_properties.py::test_fixed_property stix2/test/v21/test_properties.py::test_list_property stix2/test/v21/test_properties.py::test_dictionary_property stix2/test/v21/test_properties.py::test_string_property stix2/test/v21/test_properties.py::test_type_property stix2/test/v21/test_properties.py::test_id_property_valid[my-type--232c9d3f-49fc-4440-bb01-607f638778e7] stix2/test/v21/test_properties.py::test_id_property_valid[my-type--00000000-0000-4000-8000-000000000000] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[attack-pattern--0c7b5b88-8ff7-4a4d-aa9d-feb398cd0061] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[campaign--8e2e2d2b-17d4-4cbf-938f-98ee46b3cd3f] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[course-of-action--8e2e2d2b-17d4-4cbf-938f-98ee46b3cd3f] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[identity--311b2d2d-f010-4473-83ec-1edf84858f4c] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[indicator--a740531e-63ff-4e49-a9e1-a0a3eed0e3e7] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[intrusion-set--4e78f46f-a023-4e5f-bc24-71b3ca22ec29] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[malware--9c4638ec-f1de-4ddb-abf4-1b760417654e] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc90] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[observed-data--b67d30ff-02ac-498a-92f9-32f845f448cf] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[relationship--df7c87eb-75d2-4948-af81-9d49d246f301] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[report--84e4d88f-44ea-4bcd-bbf3-b2c1c320bcb3] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[sighting--bfbc19db-ec35-4e45-beed-f8bde2a772fb] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[threat-actor--8e2e2d2b-17d4-4cbf-938f-98ee46b3cd3f] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[tool--8e2e2d2b-17d4-4cbf-938f-98ee46b3cd3f] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[vulnerability--0c7b5b88-8ff7-4a4d-aa9d-feb398cd0061] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[marking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc91] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[marking-definition--443eb5c3-a76c-4a0a-8caa-e93998e7bc09] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[marking-definition--57fcd772-9c1d-41b0-8d1f-3d47713415d9] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[marking-definition--462bf1a6-03d2-419c-b74e-eee2238b2de4] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[marking-definition--68520ae2-fefe-43a9-84ee-2c2a934d2c7d] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[marking-definition--2802dfb1-1019-40a8-8848-68d0ec0e417f] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[relationship--06520621-5352-4e6a-b976-e8fa3d437ffd] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[relationship--181c9c09-43e6-45dd-9374-3bec192f05ef] stix2/test/v21/test_properties.py::test_id_property_valid_for_type[relationship--a0cbb21c-8daf-4a7f-96aa-7155a4ef8f70] stix2/test/v21/test_properties.py::test_id_property_wrong_type stix2/test/v21/test_properties.py::test_id_property_not_a_valid_hex_uuid[my-type--foo] stix2/test/v21/test_properties.py::test_id_property_not_a_valid_hex_uuid[my-type--00000000-0000-0000-0000-000000000000] stix2/test/v21/test_properties.py::test_id_property_default stix2/test/v21/test_properties.py::test_integer_property_valid[2] stix2/test/v21/test_properties.py::test_integer_property_valid[-1] stix2/test/v21/test_properties.py::test_integer_property_valid[3.14] stix2/test/v21/test_properties.py::test_integer_property_valid[False] stix2/test/v21/test_properties.py::test_integer_property_invalid_min_with_constraints[-1] stix2/test/v21/test_properties.py::test_integer_property_invalid_min_with_constraints[-100] stix2/test/v21/test_properties.py::test_integer_property_invalid_min_with_constraints[-300] stix2/test/v21/test_properties.py::test_integer_property_invalid_max_with_constraints[181] stix2/test/v21/test_properties.py::test_integer_property_invalid_max_with_constraints[200] stix2/test/v21/test_properties.py::test_integer_property_invalid_max_with_constraints[300] stix2/test/v21/test_properties.py::test_integer_property_invalid[something] stix2/test/v21/test_properties.py::test_integer_property_invalid[value1] stix2/test/v21/test_properties.py::test_float_property_valid[2] stix2/test/v21/test_properties.py::test_float_property_valid[-1] stix2/test/v21/test_properties.py::test_float_property_valid[3.14] stix2/test/v21/test_properties.py::test_float_property_valid[False] stix2/test/v21/test_properties.py::test_float_property_invalid[something] stix2/test/v21/test_properties.py::test_float_property_invalid[value1] stix2/test/v21/test_properties.py::test_boolean_property_valid[True0] stix2/test/v21/test_properties.py::test_boolean_property_valid[False0] stix2/test/v21/test_properties.py::test_boolean_property_valid[True1] stix2/test/v21/test_properties.py::test_boolean_property_valid[False1] stix2/test/v21/test_properties.py::test_boolean_property_valid[true] stix2/test/v21/test_properties.py::test_boolean_property_valid[false] stix2/test/v21/test_properties.py::test_boolean_property_valid[TRUE] stix2/test/v21/test_properties.py::test_boolean_property_valid[FALSE] stix2/test/v21/test_properties.py::test_boolean_property_valid[T] stix2/test/v21/test_properties.py::test_boolean_property_valid[F] stix2/test/v21/test_properties.py::test_boolean_property_valid[t] stix2/test/v21/test_properties.py::test_boolean_property_valid[f] stix2/test/v21/test_properties.py::test_boolean_property_valid[1] stix2/test/v21/test_properties.py::test_boolean_property_valid[0] stix2/test/v21/test_properties.py::test_boolean_property_invalid[abc] stix2/test/v21/test_properties.py::test_boolean_property_invalid[value1] stix2/test/v21/test_properties.py::test_boolean_property_invalid[value2] stix2/test/v21/test_properties.py::test_boolean_property_invalid[2] stix2/test/v21/test_properties.py::test_boolean_property_invalid[-1] stix2/test/v21/test_properties.py::test_reference_property stix2/test/v21/test_properties.py::test_reference_property_specific_type stix2/test/v21/test_properties.py::test_timestamp_property_valid[2017-01-01T12:34:56Z] stix2/test/v21/test_properties.py::test_timestamp_property_valid[2017-01-01 stix2/test/v21/test_properties.py::test_timestamp_property_valid[Jan stix2/test/v21/test_properties.py::test_timestamp_property_invalid stix2/test/v21/test_properties.py::test_binary_property stix2/test/v21/test_properties.py::test_hex_property stix2/test/v21/test_properties.py::test_dictionary_property_valid[d0] stix2/test/v21/test_properties.py::test_dictionary_property_valid[d1] stix2/test/v21/test_properties.py::test_dictionary_no_longer_raises[d0] stix2/test/v21/test_properties.py::test_dictionary_property_invalid_key[d0] stix2/test/v21/test_properties.py::test_dictionary_property_invalid_key[d1] stix2/test/v21/test_properties.py::test_dictionary_property_invalid[d0] stix2/test/v21/test_properties.py::test_property_list_of_dictionary stix2/test/v21/test_properties.py::test_hashes_property_valid[value0] stix2/test/v21/test_properties.py::test_hashes_property_valid[value1] stix2/test/v21/test_properties.py::test_hashes_property_valid[value2] stix2/test/v21/test_properties.py::test_hashes_property_invalid[value0] stix2/test/v21/test_properties.py::test_hashes_property_invalid[value1] stix2/test/v21/test_properties.py::test_hashes_property_invalid[value2] stix2/test/v21/test_properties.py::test_embedded_property stix2/test/v21/test_properties.py::test_enum_property_valid[value0] stix2/test/v21/test_properties.py::test_enum_property_valid[value1] stix2/test/v21/test_properties.py::test_enum_property_valid[b] stix2/test/v21/test_properties.py::test_enum_property_clean stix2/test/v21/test_properties.py::test_enum_property_invalid stix2/test/v21/test_properties.py::test_extension_property_valid stix2/test/v21/test_properties.py::test_extension_property_invalid1 stix2/test/v21/test_properties.py::test_extension_property_invalid2 stix2/test/v21/test_properties.py::test_extension_property_invalid_type stix2/test/v21/test_properties.py::test_extension_at_least_one_property_constraint stix2/test/v21/test_properties.py::test_marking_property_error
stix2/core.py .travis.yml tox.ini stix2/exceptions.py
stix2/core.py .travis.yml tox.ini stix2/exceptions.py