Remove excessive nested lists from CusomObservable decorator.
Remove iterable chaining from CustomObject decorator. If all values are guaranteed lists now, it no longer makes sense to use it. Simpler and clearer to use plain old list concatenation.pull/1/head
parent
b9eba77008
commit
93d2524d45
|
@ -873,16 +873,20 @@ def CustomObservable(type='x-custom-observable', properties=None, id_contrib_pro
|
|||
"""
|
||||
def wrapper(cls):
|
||||
_properties = list(
|
||||
itertools.chain.from_iterable([
|
||||
[('type', TypeProperty(type, spec_version='2.1'))],
|
||||
[('spec_version', StringProperty(fixed='2.1'))],
|
||||
[('id', IDProperty(type, spec_version='2.1'))],
|
||||
itertools.chain(
|
||||
[
|
||||
('type', TypeProperty(type, spec_version='2.1')),
|
||||
('spec_version', StringProperty(fixed='2.1')),
|
||||
('id', IDProperty(type, spec_version='2.1'))
|
||||
],
|
||||
properties,
|
||||
[('object_marking_refs', ListProperty(ReferenceProperty(valid_types='marking-definition', spec_version='2.1')))],
|
||||
[('granular_markings', ListProperty(GranularMarking))],
|
||||
[('defanged', BooleanProperty(default=lambda: False))],
|
||||
[('extensions', ExtensionsProperty(spec_version='2.1'))],
|
||||
]),
|
||||
[
|
||||
('object_marking_refs', ListProperty(ReferenceProperty(valid_types='marking-definition', spec_version='2.1'))),
|
||||
('granular_markings', ListProperty(GranularMarking)),
|
||||
('defanged', BooleanProperty(default=lambda: False)),
|
||||
('extensions', ExtensionsProperty(spec_version='2.1')),
|
||||
],
|
||||
),
|
||||
)
|
||||
if extension_name:
|
||||
@CustomExtension(type=extension_name, properties=properties)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
"""STIX 2.1 Domain Objects."""
|
||||
|
||||
from collections import OrderedDict
|
||||
import itertools
|
||||
from urllib.parse import quote_plus
|
||||
import warnings
|
||||
|
||||
|
@ -834,30 +833,29 @@ def CustomObject(type='x-custom-type', properties=None, extension_name=None, is_
|
|||
"""
|
||||
def wrapper(cls):
|
||||
extension_properties = [x for x in properties if not x[0].startswith('x_')]
|
||||
_properties = list(
|
||||
itertools.chain.from_iterable([
|
||||
[
|
||||
('type', TypeProperty(type, spec_version='2.1')),
|
||||
('spec_version', StringProperty(fixed='2.1')),
|
||||
('id', IDProperty(type, spec_version='2.1')),
|
||||
('created_by_ref', ReferenceProperty(valid_types='identity', spec_version='2.1')),
|
||||
('created', TimestampProperty(default=lambda: NOW, precision='millisecond', precision_constraint='min')),
|
||||
('modified', TimestampProperty(default=lambda: NOW, precision='millisecond', precision_constraint='min')),
|
||||
],
|
||||
extension_properties,
|
||||
[
|
||||
('revoked', BooleanProperty(default=lambda: False)),
|
||||
('labels', ListProperty(StringProperty)),
|
||||
('confidence', IntegerProperty()),
|
||||
('lang', StringProperty()),
|
||||
('external_references', ListProperty(ExternalReference)),
|
||||
('object_marking_refs', ListProperty(ReferenceProperty(valid_types='marking-definition', spec_version='2.1'))),
|
||||
('granular_markings', ListProperty(GranularMarking)),
|
||||
('extensions', ExtensionsProperty(spec_version='2.1')),
|
||||
],
|
||||
sorted([x for x in properties if x[0].startswith('x_')], key=lambda x: x[0]),
|
||||
]),
|
||||
_properties = (
|
||||
[
|
||||
('type', TypeProperty(type, spec_version='2.1')),
|
||||
('spec_version', StringProperty(fixed='2.1')),
|
||||
('id', IDProperty(type, spec_version='2.1')),
|
||||
('created_by_ref', ReferenceProperty(valid_types='identity', spec_version='2.1')),
|
||||
('created', TimestampProperty(default=lambda: NOW, precision='millisecond', precision_constraint='min')),
|
||||
('modified', TimestampProperty(default=lambda: NOW, precision='millisecond', precision_constraint='min')),
|
||||
]
|
||||
+ extension_properties
|
||||
+ [
|
||||
('revoked', BooleanProperty(default=lambda: False)),
|
||||
('labels', ListProperty(StringProperty)),
|
||||
('confidence', IntegerProperty()),
|
||||
('lang', StringProperty()),
|
||||
('external_references', ListProperty(ExternalReference)),
|
||||
('object_marking_refs', ListProperty(ReferenceProperty(valid_types='marking-definition', spec_version='2.1'))),
|
||||
('granular_markings', ListProperty(GranularMarking)),
|
||||
('extensions', ExtensionsProperty(spec_version='2.1')),
|
||||
]
|
||||
+ sorted((x for x in properties if x[0].startswith('x_')), key=lambda x: x[0])
|
||||
)
|
||||
|
||||
if extension_name:
|
||||
@CustomExtension(type=extension_name, properties=extension_properties)
|
||||
class NameExtension:
|
||||
|
|
Loading…
Reference in New Issue