Skip to main content
Glama
abi_analyzer.cpython-311.pyc7.05 kB
� �F�g5 ����ddlmZmZmZmZddlZddlmZddlm Z ddl m Z Gd�de ��Z eGd�d ����Z eGd �d ����ZGd �d ��ZdS)�)�Dict�List�Optional�UnionN)� dataclass)�Enum)�Pathc��eZdZdZdZdZdZdS)� FunctionType�view�pure� nonpayable�payableN)�__name__� __module__� __qualname__�VIEW�PURE� NONPAYABLE�PAYABLE���8/Users/arjun/repos/sparkmango/mcp_server/abi_analyzer.pyr r s"������ �D� �D��J��G�G�Grr c�J�eZdZUeed<eed<dZeeded<dS)�FunctionParameter�name�typeN� components)rrr�str�__annotations__rrrrrrrr s?������� �I�I�I� �I�I�I�6:�J���1�2�3�:�:�:�:�:rrc�^�eZdZUeed<eeed<eeed<eed<dZe ed<dS)�FunctionDefinitionr�inputs�outputs�state_mutabilityF�is_constructorN) rrrrr rrr r&�boolrrrr"r"s[������� �I�I�I� �"� #�#�#�#� �#� $�$�$�$�"�"�"�"� �N�D� � � � � rr"c��eZdZdeeeffd�Zdefd�Zdee fd�Z deefd�Z deefd�Z de efd�Zd edefd �Zd S) � ABIAnalyzer� abi_inputc�(�t|ttf��rZt|d��5}t j|��}|�d|��|_ddd��dS#1swxYwYdS|�d|��|_dS)zNInitialize the ABI analyzer with either a path to an ABI file or a dictionary.�r�abiN)� isinstancerr �open�json�load�getr-)�selfr*�f�datas r�__init__zABIAnalyzer.__init__s��� �i�#�t�� -� -� 7��i��%�%� 1���y��|�|���8�8�E�4�0�0��� 1� 1� 1� 1� 1� 1� 1� 1� 1� 1� 1� 1���� 1� 1� 1� 1� 1� 1�!�}�}�U�I�6�6�D�H�H�Hs�0A*�*A.�1A.�returnc��|j|���|���|���|���d�}|S)z7Analyze the ABI and return a structured representation.)r-� functions�events�state_variables� constructor)r-�_get_functions� _get_events�_get_state_variables�_get_constructor)r3�analysiss r�analyzezABIAnalyzer.analyze%sX���8��,�,�.�.��&�&�(�(�#�8�8�:�:��0�0�2�2�  � ���rc �V��g}�jD]�}|ddkr�t|d�fd�|�dg��D���fd�|�dg��D��t|�dd ����� ��}|�|����|S) z#Extract all functions from the ABI.r�functionrc�:��g|]}��|����Sr��_parse_parameter��.0�pr3s �r� <listcomp>z.ABIAnalyzer._get_functions.<locals>.<listcomp>7s'���U�U�U��D�1�1�!�4�4�U�U�Urr#c�:��g|]}��|����SrrFrHs �rrKz.ABIAnalyzer._get_functions.<locals>.<listcomp>8s'���W�W�W�!�T�2�2�1�5�5�W�W�Wrr$�stateMutabilityr)rr#r$r%)r-r"r2r �append)r3r9�item�funcs` rr=zABIAnalyzer._get_functions0s����� ��H� '� '�D��F�|�z�)�)�)��f��U�U�U�U�d�h�h�x�QS�>T�>T�U�U�U�W�W�W�W�t�x�x� �SU�?V�?V�W�W�W�%1�$�(�(�;L�l�2[�2[�%\�%\� ���� � � ��&�&�&���rc�$�d�|jD��S)z Extract all events from the ABI.c�*�g|]}|ddk�|��S)r�eventr)rIrOs rrKz+ABIAnalyzer._get_events.<locals>.<listcomp>@s&��E�E�E��T�&�\�W�-D�-D��-D�-D�-Dr�r-)r3s rr>zABIAnalyzer._get_events>s��E�E���E�E�E�Erc�D�g}|jD]�}|ddkr�|�d��dkrnt|�dg����dkrG|�|d|�d��r|dddnd d �����|S) z,Extract state variables from view functions.rrDrMr r#rrr$�unknown)rr)r-r2�lenrN)r3� state_varsrOs rr?z ABIAnalyzer._get_state_variablesBs���� ��H� � �D��V� � �*�*����*�+�+�v�5�5��D�H�H�X�r�*�*�+�+�q�0�0��!�!� ��L�:>�(�(�9�:M�:M�\�D��O�A�.�v�6�6�S\�#�#������rc�:�|jD]}|ddkr|cS�dS)z%Extract the constructor from the ABI.rr<NrT)r3rOs rr@zABIAnalyzer._get_constructorOs5���H� � �D��F�|�}�,�,�� � � �-��tr�paramc���d}d|vr�fd�|dD��}t|�dd��|d|���S)zParse a parameter definition.Nrc�:��g|]}��|����SrrF)rI�cr3s �rrKz0ABIAnalyzer._parse_parameter.<locals>.<listcomp>Zs'���P�P�P�q�$�/�/��2�2�P�P�Prr�r)rrr)rr2)r3rZrs` rrGzABIAnalyzer._parse_parameterVsc���� � �5� � �P�P�P�P�E�,�<O�P�P�P�J� ����6�2�&�&��v��!� � � � rN)rrrrrrr6rBrr"r=r>r?rr@rrGrrrr)r)s�������7�%��T� �"2�7�7�7�7� �� � � � � ��%7� 8� � � � �F�T�$�Z�F�F�F�F� �d�4�j� � � � ��(�4�.�����  �d�  �/@�  �  �  �  �  �  rr))�typingrrrrr0� dataclassesr�enumr�pathlibr r rr"r)rrr�<module>rcs6��.�.�.�.�.�.�.�.�.�.�.�.� � � � �!�!�!�!�!�!������������������4����  �;�;�;�;�;�;�;� ��;�  �!�!�!�!�!�!�!� ��!�E �E �E �E �E �E �E �E �E �E r

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ArjunBhuptani/sparkmango'

If you have feedback or need assistance with the MCP directory API, please join our Discord server