
    'jg                        d dl Z d dlZd dlZd dlmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ ddhZh dZ G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          ZdS )!    N)AnyDictListOptionalSequenceSetUnion)show_unknown_key_warning)
JsonObjectJsonValidator)Linkdangerprimary>   userschannelsconversationsc            
          e Zd ZdZh dZ ej        e           Zd Ze	de
e         fd            Ze	 ddeeeeef         d f         dede
d          fd	            Z	 	 	 ddede
e         de
e         de
e         fdZd
S )
TextObjectz:The interface for text objects (types: plain_text, mrkdwn)>   texttypeemojic                 :    t          j        dt                     d S )Nz?subtype is deprecated since slackclient 2.6.0, use type instead)warningswarnDeprecationWarningselfs    i/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/slack_sdk/models/blocks/basic_components.py_subtype_warningzTextObject._subtype_warning   s&    M	
 	
 	
 	
 	
    returnc                     | j         S N)r   r   s    r   subtypezTextObject.subtype   s
    yr    mrkdwnr   default_typec                    |sd S t          |t                    rD|t          j        k    rt                              |          S t
                              |          S t          |t                    rQt          j        |          }|                    d          }|t          j        k    rt          di |S t          di |S t          |t                    r|S | j
                            dt          |           d           d S )Nr   zUnknown type (z$) detected when parsing a TextObject )
isinstancestrPlainTextObjectr   from_strMarkdownTextObjectdictcopypopr   loggerwarning)clsr   r&   dts        r   parsezTextObject.parse   s     	4c"" 	333&//555)224888d## 		$AfAO(((&+++++)..A...j)) 	KJ`T

```aaa4r    Nr   r$   r   c                 d    |r|                                   || _        |r|n|| _        || _        dS )z4Super class for new text "objects" used in Block kitN)r   r   r   r   )r   r   r   r$   r   kwargss         r   __init__zTextObject.__init__8   s@      	$!!###	 -DDg	


r    )r%   )NNN)__name__
__module____qualname____doc__
attributeslogging	getLoggerr1   r   propertyr   r*   r$   classmethodr	   r   r   r6   boolr9   r(   r    r   r   r      s&       DD***JWx((F
 
 
 #    X  % Cc3h56  
,		   [8 #!% $  sm #	
 ~     r    r   c                        e Zd ZdZdZedee         f fd            Zdddede	e
         f fd	Zededd fd
            Zededeeef         fd            Z xZS )r+   zplain_text typed text object
plain_textr!   c                 R    t                      j                            dh          S )Nr   superr>   unionr   	__class__s    r   r>   zPlainTextObject.attributesN   s     ww!''	222r    N)r   r   r   c                f    t                                          || j                   || _        dS )a  A plain text object, meaning markdown characters will not be parsed as
        formatting information.
        https://docs.slack.dev/reference/block-kit/composition-objects/text-object

        Args:
            text (required): The text for the block. This field accepts any of the standard text formatting markup
                when type is mrkdwn.
            emoji: Indicates whether emojis in a text field should be escaped into the colon emoji format.
                This field is only usable when type is plain_text.
        r   r   N)rH   r9   r   r   )r   r   r   rK   s      r   r9   zPlainTextObject.__init__R   s/     	d333


r    c                 $    t          | d          S )NT)r   r   )r+   r   s    r   r,   zPlainTextObject.from_str`   s    D5555r    c                 Z    t                               |                                           S )zNTransforms a string into the required object shape to act as a PlainTextObject)r+   r,   to_dictrO   s    r   direct_from_stringz"PlainTextObject.direct_from_stringd   s$     ''--55777r    )r:   r;   r<   r=   r   rA   r   r*   r>   r   rC   r9   staticmethodr,   r   r   rR   __classcell__rK   s   @r   r+   r+   I   s       &&D3CH 3 3 3 3 3 X3 >B    HTN       6s 60 6 6 6 \6 8 8c3h 8 8 8 \8 8 8 8 8r    r+   c            
           e Zd ZdZdZedee         f fd            Zdddede	e
         f fd	Zededd fd
            Zededeeef         fd            Zeddededd fd            Zeddededeeef         fd            Z xZS )r-   zmrkdwn typed text objectr%   r!   c                 R    t                      j                            dh          S )NverbatimrG   rJ   s    r   r>   zMarkdownTextObject.attributeso   s     ww!''555r    N)rX   r   rX   c                f    t                                          || j                   || _        dS )a  A Markdown text object, meaning markdown characters will be parsed as
        formatting information.
        https://docs.slack.dev/reference/block-kit/composition-objects/text-object

        Args:
            text (required): The text for the block. This field accepts any of the standard text formatting markup
                when type is mrkdwn.
            verbatim: When set to false (as is default) URLs will be auto-converted into links,
                conversation names will be link-ified, and certain mentions will be automatically parsed.
                Using a value of true will skip any preprocessing of this nature,
                although you can still include manual parsing strings. This field is only usable when type is mrkdwn.
        rM   N)rH   r9   r   rX   )r   r   rX   rK   s      r   r9   zMarkdownTextObject.__init__s   s/     	d333 r    c                 "    t          |           S )QTransforms a string into the required object shape to act as a MarkdownTextObjectrO   r-   rO   s    r   r,   zMarkdownTextObject.from_str   s     "t,,,,r    c                 Z    t                               |                                           S )r[   )r-   r,   rQ   rO   s    r   rR   z%MarkdownTextObject.direct_from_string   s$     "**40088:::r     linktitlec                 8    |rd| }t          |  |           S )x
        Transform a Link object directly into the required object shape
        to act as a MarkdownTextObject
        z: rO   r\   r_   r`   s     r   	from_linkzMarkdownTextObject.from_link   s3      	! LLE!$'7'7'78888r    c                 \    t                               | |                                          S )rb   )r-   rd   rQ   rc   s     r   direct_from_linkz#MarkdownTextObject.direct_from_link   s&     "++D%88@@BBBr    )r^   )r:   r;   r<   r=   r   rA   r   r*   r>   r   rC   r9   rS   r,   r   r   rR   r   rd   rf   rT   rU   s   @r   r-   r-   j   s       ""D6CH 6 6 6 6 6 X6 AE ! ! ! !x~ ! ! ! ! ! !  -s -3 - - - \- ; ;c3h ; ; ; \; 9 9 9S 92F 9 9 9 \9 C Ct CC Cc3h C C C \C C C C Cr    r-   c                        e Zd ZdZdZedee         fd            Zdef fdZ	e
dedd fd            Ze
dedeeef         fd            Z ed	          d
             Z xZS )RawTextObjectzraw_text typed text objectraw_textr!   c                 
    ddhS )Nr   r   r(   r   s    r   r>   zRawTextObject.attributes   s    r    r   c                X    t                                          || j                   dS )a&  A raw text object used in table block cells.
        https://docs.slack.dev/reference/block-kit/composition-objects/text-object/
        https://docs.slack.dev/reference/block-kit/blocks/table-block

        Args:
            text (required): The text content for the table block cell.
        rM   N)rH   r9   r   )r   r   rK   s     r   r9   zRawTextObject.__init__   s*     	d33333r    c                 "    t          |           S )z(Transforms a string into a RawTextObjectrO   )rh   rO   s    r   r,   zRawTextObject.from_str   s     $''''r    c                 Z    t                               |                                           S )zLTransforms a string into the required object shape to act as a RawTextObject)rh   r,   rQ   rO   s    r   rR   z RawTextObject.direct_from_string   s$     %%d++33555r    z-text attribute must have at least 1 characterc                 2    t          | j                  dk    S )N   )lenr   r   s    r   _validate_text_min_lengthz'RawTextObject._validate_text_min_length   s    49~~""r    )r:   r;   r<   r=   r   rA   r   r*   r>   r9   rS   r,   r   r   rR   r   rq   rT   rU   s   @r   rh   rh      s       $$D CH       X 4 4 4 4 4 4 4 (s ( ( ( ( \( 6 6c3h 6 6 6 \6 ]BCC# # DC# # # # #r    rh   c                   f   e Zd ZU dZ e            Zee         ed<    e	j
        e           ZdZdZddddddedee         d	eeeeeef         ef                  d
eeeeeef         ef                  dee         deeef         fdZ ede d          defd            Z ede d          defd            Z ede d          defd            Zedeeeeeef         d f                           deed                   fd            Zddedeeef         fdZedefd            ZdS )OptionzOption object used in dialogs, legacy message actions (interactivity in attachments),
    and blocks. JSON must be retrieved with an explicit option_type - the Slack API has
    different required formats in different situations
    r>   K      N)labelr   descriptionurlvaluerv   r   rw   rx   othersc                ~   |r3t                               |t          j                  | _        d| _        nd| _        || _        | j        r| j        j        nd| _        | j        | _        || _        t          |t                    r'|| _        t                              |          | _        nyt          |t                    r-|d         | _        t                               |          | _        n7t          |t                     r|j        | _        || _        nd| _        d| _        || _        t!          | |           dS )a3  
        An object that represents a single selectable item in a block element (
        SelectElement, OverflowMenuElement) or dialog element
        (StaticDialogSelectElement)

        Blocks:
        https://docs.slack.dev/reference/block-kit/composition-objects/option-object

        Dialogs:
        https://docs.slack.dev/legacy/legacy-dialogs/#select_elements

        Legacy interactive attachments:
        https://docs.slack.dev/legacy/legacy-messaging/legacy-interactive-message-field-guide/#option_fields

        Args:
            label: A short, user-facing string to label this option to users.
                Cannot exceed 75 characters.
            value: A short string that identifies this particular option to your
                application. It will be part of the payload when this option is selected
                . Cannot exceed 150 characters.
            description: A user-facing string that provides more details about
                this option. Only supported in legacy message actions, not in blocks or
                dialogs.
        )r   r&   Nr   )r   r6   r+   r   _text_labelr   rv   ry   r)   r*   rw   r,   _block_descriptionr.   rx   r
   )r   ry   rv   r   rw   rx   rz   s          r   r9   zOption.__init__   s:   D  
	  0:/?/?,1 0@ 0 0DJ *.DKKDJDK 7;j#J4:??d	$(K

 k3'' 	+*D&5&>&>{&K&KD##T** 	+*62D&0&6&6{&C&CD##Z00 	+*/D&1D###D&*D# #& v.....r    label attribute cannot exceed  charactersr!   c                 N    | j         d u pt          | j                   | j        k    S r#   )r}   rp   label_max_lengthr   s    r   _validate_label_lengthzOption._validate_label_length  &    {d"Oc$+&6&6$:O&OOr    text attribute cannot exceed c                 t    | j         d u p/| j         j        d u p!t          | j         j                  | j        k    S r#   )r|   r   rp   r   r   s    r   _validate_text_lengthzOption._validate_text_length  s7    zT!mTZ_%<mDJO@T@TX\Xm@mmr    value attribute cannot exceed c                 <    t          | j                  | j        k    S r#   )rp   ry   value_max_lengthr   s    r   _validate_value_lengthzOption._validate_value_length   s    4:$"777r    optionsc                 @   |d S g }|D ]}t          |t                    r4t          j        |          }|                    t	          di |           Kt          |t                    r|                    |           v| j                            d| d           |S )Nz,Unknown option object detected and skipped ()r(   )r)   r.   r/   appendrs   r1   r2   )r3   r   option_objectsor4   s        r   	parse_allzOption.parse_all$  s    ?4') 	X 	XA!T"" XIaLL%%fkkqkk2222Av&& X%%a((((
""#VRS#V#V#VWWWWr    blockoption_typec                    |                                   |dk    r| j        | j        dS |dk    s|dk    r"| j        | j        d}| j        
| j        |d<   |S | j        pt
                              | j                  }|                                | j        d}| j        r| j                                        |d<   | j	        r
| j	        |d<   |S )	z
        Different parent classes must call this with a valid value from OptionTypes -
        either "dialog", "action", or "block", so that JSON is returned in the
        correct shape.
        dialog)rv   ry   action
attachment)r   ry   Nrw   rx   )
validate_jsonrv   ry   rw   r|   r+   r,   rQ   r~   rx   )r   r   jsonr   s       r   rQ   zOption.to_dict3  s     	(""!Z$*===H$$|(C(C -1J#L#LD+&*&6]#K#zQ_-E-Edj-Q-QD D & H&*&=&E&E&G&G]#x '"hUKr    value_and_labelc                 $    t          | |           S )z>Creates a simple Option instance with the same value and label)ry   rv   )rs   )r   s    r   from_single_valuezOption.from_single_valueO  s     O?CCCCr    r   ) r:   r;   r<   r=   setr>   r   r*   __annotations__r?   r@   r1   r   r   r   r	   r   r   r   r9   r   rC   r   r   r   rB   r   r   r   rQ   rS   r   r(   r    r   rs   rs      s         
 355JC   Wx((F  $AEHL!H/ H/ H/ H/ }	H/
 uS$sCx.*<=>H/ eCc3h$CDEH/ c]H/ sCx.H/ H/ H/ H/T ]Q4DQQQRRP P P P SRP ]P3CPPPQQnt n n n RQn ]Q4DQQQRR8 8 8 8 SR8 %S#X8P2Q)R S X`aefnaoXp    [ 3 T#s(^    8 D3 D D D \D D Dr    rs   c            	          e Zd ZU dZ e            Zee         ed<   dZ	dZ
 ej        e           Zdddeeeeeef         ef                  deeeeef         ef                  d	eeef         fd
Z ede	 d          d             Z ede
 d          d             Zedeeeeeef         d f                           deed                   fd            Zddedeeef         fdZdS )OptionGroupz
    JSON must be retrieved with an explicit option_type - the Slack API has
    different required formats in different situations
    r>   rt   d   N)rv   rv   r   rz   c                    t                               |t          j                  | _        | j        r| j        j        nd| _        t                              |          | _	        t          | |           dS )ay  
        Create a group of Option objects - pass in a label (that will be part of the
        UI) and a list of Option objects.

        Blocks:
        https://docs.slack.dev/reference/block-kit/composition-objects/option-group-object

        Dialogs:
        https://docs.slack.dev/legacy/legacy-dialogs/#select_elements

        Legacy interactive attachments:
        https://docs.slack.dev/legacy/legacy-messaging/legacy-interactive-message-field-guide/#option_groups

        Args:
            label: Text to display at the top of this group of options.
            options: A list of no more than 100 Option objects.
        r&   N)r   r6   r+   r   r}   r   rv   rs   r   r   r
   )r   rv   r   rz   s       r   r9   zOptionGroup.__init__`  se    2 -7,<,<UQ`Qe,<,f,f8<$MDK$4$4
''00 v.....r    r   r   c                 N    | j         d u pt          | j                   | j        k    S r#   )rv   rp   r   r   s    r   r   z"OptionGroup._validate_label_length~  s$    zT!MS__8M%MMr    z options attribute cannot exceed z	 elementsc                 N    | j         d u pt          | j                   | j        k    S r#   )r   rp   options_max_lengthr   s    r   _validate_options_lengthz$OptionGroup._validate_options_length  s&    |t#Ss4<'8'8D<S'SSr    option_groupsr!   c                 @   |d S g }|D ]}t          |t                    r4t          j        |          }|                    t	          di |           Kt          |t                    r|                    |           v| j                            d| d           |S )Nz2Unknown option group object detected and skipped (r   r(   )r)   r.   r/   r   r   r1   r2   )r3   r   option_group_objectsr   r4   s        r   r   zOptionGroup.parse_all  s      4! 	^ 	^A!T"" ^IaLL$++K,<,<!,<,<====A{++ ^$++A....
""#\XY#\#\#\]]]]##r    r   r   c                     |                                   fd| j        D             }dk    r
| j        |dS dk    r
| j        |dS | j                                        }||dS )Nc                 :    g | ]}|                               S r(   )rQ   ).0r   r   s     r   
<listcomp>z'OptionGroup.to_dict.<locals>.<listcomp>  s%    EEE1		+..EEEr    r   )rv   r   r   )r   r   )r   r   rv   r}   rQ   )r   r   dict_options
dict_labels    `  r   rQ   zOptionGroup.to_dict  s    EEEEEEE(""'   H$$
'  
 *.)<)<)>)>J#'  r    r   )r:   r;   r<   r=   r   r>   r   r*   r   r   r   r?   r@   r1   r   r	   r   r   r   r   rs   r9   r   r   r   rB   r   r   rQ   r(   r    r   r   r   U  s         
 355JC   Wx((F
 CG/ / / c4S>:=>?/ %S#X 678	/
 sCx./ / / /< ]Q4DQQQRRN N SRN ]S6HSSSTTT T UTT $$XeDcNM4Q.R%ST$	$}%	&$ $ $ [$  3 T#s(^      r    r   c                   h   e Zd ZU  e            Zee         ed<   dZdZ	dZ
dZeded eeef         f         fd            Zddd	d
deeeeef         ef         deeeeef         ef         deeeeef         ef         deeeeef         ef         dee         f
dZ ede d          defd            Z ede	 d          defd            Z ede
 d          defd            Z ede d          defd            Z ed          defd            Zddedeeef         fdZd	S ) ConfirmObjectr>   r   i,     confirmc                 ~    |r:t          |t                    r|S t          |t                    rt          di |S d S d S Nr(   )r)   r   r.   )r3   r   s     r   r6   zConfirmObject.parse  sS     	'=11 GT** $//w/// ttr    YesNoN)r   denystyler`   r   r   r   c                T   t                               |t          j                  | _        t                               |t
          j                  | _        t                               |t          j                  | _        t                               |t          j                  | _        || _	        | j        r| j        j
        nd| _        | j        r| j        j
        nd| _
        | j        r| j        j
        nd| _        | j        r| j        j
        nd| _        | j	        | _        dS )a?  
        An object that defines a dialog that provides a confirmation step to any
        interactive element. This dialog will ask the user to confirm their action by
        offering a confirm and deny button.
        https://docs.slack.dev/reference/block-kit/composition-objects/confirmation-dialog-object/
        r   N)r   r6   r+   r   _titler-   r|   _confirm_deny_styler   r`   r   r   r   )r   r`   r   r   r   r   s         r   r9   zConfirmObject.__init__  s     !&&u?;O&PP%%d9K9P%QQ
"((?S(TT%%d9M%NN
 *.>T[%%$
'+z;DJOOt	-1]Dt}))'+z;DJOOt	[


r    ztitle attribute cannot exceed r   r!   c                 X    | j         d u p!t          | j         j                  | j        k    S r#   )r   rp   r   title_max_lengthr   s    r   title_lengthzConfirmObject.title_length  s)    {d"Tc$+*:&;&;t?T&TTr    r   c                 X    | j         d u p!t          | j         j                  | j        k    S r#   r|   rp   r   text_max_lengthr   s    r   text_lengthzConfirmObject.text_length  (    zT!QS%9%9T=Q%QQr    z confirm attribute cannot exceed c                 X    | j         d u p!t          | j         j                  | j        k    S r#   )r   rp   r   confirm_max_lengthr   s    r   confirm_lengthzConfirmObject.confirm_length  s)    }$ZDM,>(?(?4CZ(ZZr    zdeny attribute cannot exceed c                 X    | j         d u p!t          | j         j                  | j        k    S r#   )r   rp   r   deny_max_lengthr   s    r   deny_lengthzConfirmObject.deny_length  r   r    z6style for confirm must be either "primary" or "danger"c                 &    | j         d u p| j         dv S )N)r   r   )r   r   s    r   _validate_confirm_stylez%ConfirmObject._validate_confirm_style  s    {d"Jdk5J&JJr    r   r   c                 j   |dk    ry| j         r| j         j        dk    r| j         j        nd| j        r| j        j        dk    r| j        j        ndd}| j        r| j        j        |d<   | j        r| j        j        |d<   |S |                                  i }| j        r| j                                        |d<   | j        r| j                                        |d<   | j         r| j                                         |d	<   | j        r| j                                        |d
<   | j        r
| j        |d<   |S )Nr   r   Okayr   Cancel)ok_textdismiss_textr`   r   r   r   r   )r   r   r   r   r|   r   rQ   r   )r   r   r   s      r   rQ   zConfirmObject.to_dict  sO   ("" 26j4=CUY^C^C^4=--dj37: g$*/UYBYBY
_g1 1D { 1 $ 0Wz /#zVK    D{ 6 $ 3 3 5 5Wz 4#z1133V} :"&-"7"7"9"9Yz 4#z1133V{ , $WKr    r   )r:   r;   r<   r   r>   r   r*   r   r   r   r   r   rB   r	   r   r   r6   r+   r   r   r9   r   rC   r   r   r   r   r   rQ   r(   r    r   r   r     s        355JC   OO	E/4S>"AB 	 	 	 [	  @E<@#! ! ! S$sCx./9:! Cc3h34	!
 sDcNO;<! Cc3h89! }! ! ! !8 ]Q4DQQQRRUd U U U SRU ]O?OOOPPRT R R R QPR ]U6HUUUVV[ [ [ [ WV[ ]O?OOOPPRT R R R QPR ]KLLK K K K MLK 3 T#s(^      r    r   c                       e Zd ZdhZeded eeef         f         fd            Z	ddde
ee                  fdZdeeef         fdZdS )	DispatchActionConfigtrigger_actions_onconfigc                 ~    |r:t          |t                    r|S t          |t                    rt          di |S d S d S r   )r)   r   r.   )r3   r   s     r   r6   zDispatchActionConfig.parse  sT     	&"677 FD)) +55f555 ttr    N)r   c                    |pg | _         dS )z
        Determines when a plain-text input element will return a block_actions interaction payload.
        https://docs.slack.dev/reference/block-kit/composition-objects/dispatch-action-configuration-object
        N)_trigger_actions_on)r   r   s     r   r9   zDispatchActionConfig.__init__  s     $6#;   r    r!   c                 T    |                                   i }| j        r
| j        |d<   |S )Nr   )r   r   r   r   s     r   rQ   zDispatchActionConfig.to_dict(  s8    # 	B)-)AD%&r    )r:   r;   r<   r>   rB   r	   r   r*   r   r6   r   r   r9   rQ   r(   r    r   r   r     s        &'J	5!7c3h!GH 	 	 	 [	 37	< 	< 	< %T#Y/	< 	< 	< 	<c3h      r    r   c                   b   e Zd ZU  e            Zee         ed<   dZdZ	e
ded eeef         f         fd            Zdddeeeeef         ef         d	ee         d
edeeef         fdZ ede d          defd            Z ede	 d          defd            Zdeeef         fdZdS )FeedbackButtonObjectr>   rt   i  feedback_buttonc                 ~    |r:t          |t                    r|S t          |t                    rt          di |S d S d S r   )r)   r   r.   )r3   r   s     r   r6   zFeedbackButtonObject.parse6  sU     	/+?@@ &&OT22 +>>o>>> ttr    N)accessibility_labelr   r   ry   rz   c                    t                               |t           j                  | _        || _        || _        t          | |           dS )aj  
        A feedback button element object for either positive or negative feedback.
        https://docs.slack.dev/reference/block-kit/block-elements/feedback-buttons-element#button-object-fields

        Args:
            text (required): An object containing some text. Maximum length for this field is 75 characters.
            accessibility_label: A label for longer descriptive text about a button element. This label will be read out by
                screen readers instead of the button `text` object.
            value (required): The button value. Maximum length for this field is 2000 characters.
        r   N)r+   r6   r   r|   _accessibility_label_valuer
   )r   r   r   ry   rz   s        r   r9   zFeedbackButtonObject.__init__B  sG    $ ,;+@+@TcTh+@+i+i
3F!%* v.....r    r   r   r!   c                 X    | j         d u p!t          | j         j                  | j        k    S r#   r   r   s    r   r   z FeedbackButtonObject.text_lengthY  r   r    r   c                 N    | j         d u pt          | j                   | j        k    S r#   )r   rp   r   r   s    r   value_lengthz!FeedbackButtonObject.value_length]  r   r    c                     |                                   i }| j        r| j                                        |d<   | j        r
| j        |d<   | j        r
| j        |d<   |S )Nr   r   ry   )r   r|   rQ   r   r   r   s     r   rQ   zFeedbackButtonObject.to_dicta  sn    ,.: 	0:--//DL$ 	D*.*CD&'; 	( KDMr    )r:   r;   r<   r   r>   r   r*   r   r   r   rB   r	   r   r   r6   r+   r   r9   r   rC   r   r   rQ   r(   r    r   r   r   0  s        355JC   O	E*@$sCx.*P$Q 	 	 	 [	 .2	/ / / Cc3h89/ &c]	/
 / sCx./ / / /. ]O?OOOPPRT R R R QPR ]Q4DQQQRRPd P P P SRP	c3h 	 	 	 	 	 	r    r   c            	       n    e Zd ZdhZdddedeeeeef                           fdZdeee	f         fdZ
dS )	WorkflowTriggertriggerN)customizable_input_parametersrx   r   c                "    || _         || _        d S r#   )_url_customizable_input_parameters)r   rx   r   s      r   r9   zWorkflowTrigger.__init__p  s    	.K+++r    r!   c                     |                                   d| j        i}| j        |                    d| j        i           |S )Nrx   r   )r   r   r   updater   s     r   rQ   zWorkflowTrigger.to_dictt  sI    ty!.:KK8$:]^___r    )r:   r;   r<   r>   r*   r   r   r   r9   r   rQ   r(   r    r   r   r   m  s        Jdh L L Ls L8DQUVY[^V^Q_L`Ca L L L Lc3h      r    r   c                   L    e Zd ZdhZdeeef         fdZdee	e
f         fdZdS )Workflowr   c                    || _         d S r#   )_trigger)r   r   s     r   r9   zWorkflow.__init__  s    
  r    r!   c                     |                                   i }t          | j        t                    r| j                                        |d<   n
| j        |d<   |S )Nr   )r   r)   r   r   rQ   r   s     r   rQ   zWorkflow.to_dict  sV    dm_55 	,"m3355DOO"mDOr    N)r:   r;   r<   r>   r	   r   r.   r9   r   r*   r   rQ   r(   r    r   r   r   |  sf        J  ,-       c3h      r    r   c                   b    e Zd ZddhZddddee         dee         fdZdeeef         fdZ	dS )	SlackFileidrx   N)r   rx   c                "    || _         || _        dS )aF  An object containing Slack file information to be used in an image block or image element.
        https://docs.slack.dev/reference/block-kit/composition-objects/slack-file-object

        Args:
            id: Slack ID of the file.
            url: This URL can be the url_private or the permalink of the Slack file.
        N)_idr   )r   r   rx   s      r   r9   zSlackFile.__init__  s     			r    r!   c                 v    |                                   i }| j        
| j        |d<   | j        
| j        |d<   |S )Nr   rx   )r   r   r   r   s     r   rQ   zSlackFile.to_dict  sD    8DJ9 )DKr    )
r:   r;   r<   r>   r   r*   r9   r   r   rQ   r(   r    r   r   r     s        J
 !!	   SM c]	    c3h      r    r   ) r/   r?   r   typingr   r   r   r   r   r   r	   slack_sdk.modelsr
   slack_sdk.models.basic_objectsr   r   slack_sdk.models.messagesr   ButtonStylesDynamicSelectElementTypesr   r+   r-   rh   rs   r   r   r   r   r   r   r   r(   r    r   <module>r     s      B B B B B B B B B B B B B B B B B B 5 5 5 5 5 5 D D D D D D D D * * * * * *)$BBB 8 8 8 8 8 8 8 8v8 8 8 8 8j 8 8 8B3C 3C 3C 3C 3C 3C 3C 3Cl# # # # #J # # #DPD PD PD PD PDZ PD PD PDfT T T T T* T T Tn_ _ _ _ _J _ _ _D    :   D: : : : :: : : :z    j       z   (    
     r    