
    <i                     n    S SK Jr  SSKJr  SSKJr  SSKJrJrJ	r	J
r
  SSKJr  S rS rS	 rSS jrS rg
)    )OrderedDict   )	_cls_init)EnumProperty)_register_extension_register_marking_register_object_register_observable)class_for_typec                 V     [        U 5      $ ! [         a  n[        S5      UeS nAff = f)Nzmproperties must be dict-like, e.g. a list containing tuples.  For example, [('property1', IntegerProperty())])r   	TypeError
ValueError)
propertieses     F/home/james-whalen/.local/lib/python3.13/site-packages/stix2/custom.py_get_properties_dictr      s9    :&& 1
 		s   
 
(#(c                    ^ ^^^^ [        U5      m " UU UUU4S jST T5      nT R                  Ul        [        UTS9  U$ )Nc                   2   > \ rS rSr Yr YrU UU4S jrSrg)-_custom_object_builder.<locals>._CustomObject   c                    > TR                   " U 40 UD6  [        TX5        [        U SS 5      nU(       aI  TS:w  aB  SU R                  ;  a  0 U R                  S'   [	        UTS5      " 5       U R                  S   U'   g g g Nwith_extension2.0
extensions__init__r   getattr_innerr   selfkwargsext
base_classclsversions      r   r   6_custom_object_builder.<locals>._CustomObject.__init__   y    //c4($ 0$7Cw%'t{{202DKK-1?Wl1[1]L)#. (s     N__name__
__module____qualname____firstlineno___type_propertiesr   __static_attributes__)r$   r%   	prop_dicttyper&   s   r   _CustomObjectr      s    	^ 	^r)   r5   r&   )r   r,   r	   )r%   r4   r   r&   r$   r5   r3   s   `` `` @r   _custom_object_builderr7      sA    $Z0I^ ^Z ^ !\\M]G4r)   c                 |   ^ ^^^ [        U5      m " UU UU4S jST T5      nT R                  Ul        [        XSS9  U$ )Nc                   0   > \ rS rSr Yr YrU U4S jrSrg)/_custom_marking_builder.<locals>._CustomMarking1   c                 D   > TR                   " U 40 UD6  [        TX5        g Nr   r   r!   r"   r$   r%   s     r   r   8_custom_marking_builder.<locals>._CustomMarking.__init__6        //c4(r)   r*   Nr+   )r$   r%   r3   r4   s   r   _CustomMarkingr:   1   s    	) 	)r)   rB   r6   )r   r,   r   )r%   r4   r   r&   r$   rB   r3   s   ``  ` @r   _custom_marking_builderrC   .   s<    $Z0I) )j ) "llNn6r)   Nc                    ^ ^^^^^ Tc  / m[        U5      m " UU UUUU4S jST T5      nT R                  Ul        [        UTS9  U$ )Nc                   F   > \ rS rSr Yr Yr YS:w  a   YrU UU4S jrSrg)5_custom_observable_builder.<locals>._CustomObservableF   r   c                    > TR                   " U 40 UD6  [        TX5        [        U SS 5      nU(       aI  TS:w  aB  SU R                  ;  a  0 U R                  S'   [	        UTS5      " 5       U R                  S   U'   g g g r   r   r    s      r   r   >_custom_observable_builder.<locals>._CustomObservable.__init__M   r(   r)   r*   N)	r,   r-   r.   r/   r0   r1   _id_contributing_propertiesr   r2   )r$   r%   id_contrib_propsr3   r4   r&   s   r   _CustomObservablerF   F   s'    e*:'	^ 	^r)   rL   r6   )r   r,   r
   )r%   r4   r   r&   r$   rK   rL   r3   s   `` ``` @r   _custom_observable_builderrM   @   sO    $Z0I^ ^C ^  "%*G<r)   c                   ^ ^^^^^	 [        U5      nS m	[        T SS 5      mT(       a,  [        / SQSTS9nSU0mTS:X  a  Um	OTR                  U5        OUm " UU UUU	U4S jST T5      nT R                  Ul        [        XcS9  U$ )	Nextension_type)znew-sdoznew-scoznew-srozproperty-extensiontoplevel-property-extensionF)requiredfixedrP   c                   D   > \ rS rSr Yr Yr YS:X  a   YrU U4S jrSrg)3_custom_extension_builder.<locals>._CustomExtension   rP   c                 D   > TR                   " U 40 UD6  [        TX5        g r=   r>   r?   s     r   r   <_custom_extension_builder.<locals>._CustomExtension.__init__   rA   r)   r*   N)	r,   r-   r.   r/   r0   r1   _toplevel_propertiesr   r2   )r$   r%   rO   nested_propertiestoplevel_propertiesr4   s   r   _CustomExtensionrT      s&    '::#6 	) 	)r)   r[   r6   )r   r   r   updater,   r   )
r%   r4   r   r&   r$   extension_type_propr[   rO   rY   rZ   s
   ``  `  @@@r   _custom_extension_builderr^   \   s    %j1J
 S"2D9N
 +  
 1
 ::",$$Z0 '	) 	)3
 	) !$(:r)   r=   )collectionsr   baser   r   r   registrationr   r   r	   r
   registryr   r   r7   rC   rM   r^   r*   r)   r   <module>rc      s6    #  $  %.$81r)   