Skip to main content
Glama

literateMCP

test_entity_integration.cpython-313-pytest-8.3.4.pyc14.6 kB
� 6mg�/���SSKrSSKJs Jr SSKrSSKrSSKrSSK r SSK r SSK J r SSK J r Jr SSKJrJrJr SSKJrJrJrJrJrJrJrJrJrJr "SS5r"SS \R>5r \!S :Xa\RD"5 gg) �N)�Path)�datetime� timedelta)�Dict�List�Any) �LiteratureIdentifier�SQLiteConnection�link_paper_to_entity�track_reading_progress� search_papers_by_entity_patterns�track_entity_evolution�identify_research_gaps�load_memory_entities�validate_entity_links�sync_entity_linksc�H�\rSrSrSr\S\4Sj5r\S\4Sj5rSr g)�TestData�z&Test data for entity integration tests�returnc��[[R"SS95n[R"U5nUR S5 /SQnUR SU5 /SQnUR SU5 SSS5 U$!,(df  U$=f) z1Create a temporary test database with sample dataz.db��suffixak -- Create tables CREATE TABLE reading_list ( literature_id TEXT PRIMARY KEY, title TEXT NOT NULL, source TEXT DEFAULT 'custom', status TEXT CHECK(status IN ('unread', 'reading', 'completed', 'archived')), importance INTEGER CHECK(importance BETWEEN 1 AND 5), notes TEXT, added_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, last_accessed TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE literature_entity_links ( literature_id TEXT, entity_name TEXT, relation_type TEXT, context TEXT, notes TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (literature_id, entity_name), FOREIGN KEY (literature_id) REFERENCES reading_list(literature_id) ); -- Add indices CREATE INDEX idx_entity_name ON literature_entity_links(entity_name); CREATE INDEX idx_context ON literature_entity_links(context); CREATE INDEX idx_relation_type ON literature_entity_links(relation_type); ))�arxiv:2312.0001zAttention is All You Need�arxiv� completed�)�arxiv:2312.0002zBERT: Pre-trainingrr�)�arxiv:2312.0003zGPT: Generative Pre-Trainingr�readingr)� custom:paper1zCustom Paper 1�custom�unread�z� INSERT INTO reading_list (literature_id, title, source, status, importance) VALUES (?, ?, ?, ?, ?) ))r� transformer� introduces�methods)r� attentionr'r()rr&�extendsr()r�bertr'r()r r&r*� background)r �gptr'r(z� INSERT INTO literature_entity_links (literature_id, entity_name, relation_type, context) VALUES (?, ?, ?, ?) N)r�tempfile�mktemp�sqlite3�connect� executescript� executemany)�db_path�conn�papers� entity_linkss �f/Users/yuzongmin/Documents/Obsidian Vault/0_Desktop/.uv/sqlite-paper-server/test_entity_integration.py�create_test_db�TestData.create_test_dbs����x���e�4�5�� �_�_�W� %�� � � � � �>�F� � � ��� � �L� � � ��� �m&�v��w&� %�v��s �>A<�< B c�&�[[R"SS95nSSSS.SSSS.SS S S.SS S S.SS S S./n[US5nUH+nUR [ R "U5S-5 M- S S S 5 U$!,(df  U$=f)z=Create a temporary memory graph JSONL file with test entitiesz.jsonlr�entityr&� Architecture)�type�name� entityTyper)� Mechanismr+�Modelr-�invalid_entityN�w� )rr.r/�open�write�json�dumps)� graph_path�entities�fr<s r8�create_test_memory_graph�!TestData.create_test_memory_graph\s����(�/�/��:�;� ��}�N� S��{�+� N��v�W� E��u�G� D��'7�t� L�  ���*�c� "�a�"������ � �6�*�T�1�2�#�#��� #� "���s �2B� B�N) �__name__� __module__� __qualname__�__firstlineno__�__doc__� staticmethodrr9rM�__static_attributes__rO�r8rrs:��0��?�D�?��?�B��d���rWrc�t�\rSrSrSr\S5rSrSr\S5r Sr Sr S r S r S rS rS rSrSrg)�TestEntityIntegration�oz1Test suite for entity-memory integration featuresc��[R5Ul[R5Ul[ UR5[ RS'g)z%Set up test database and memory graph�LITERATURE_DB_PATHN)rr9r4rM�memory_graph_path�str�os�environ��clss r8� setUpClass� TestEntityIntegration.setUpClassrs?���-�-�/�� � (� A� A� C���,/�s�{�{�+;�� � �'�(rWc�8�[UR5Ulg)zSet up test caseN)r r4r5��selfs r8�setUp�TestEntityIntegration.setUp{s��$�T�\�\�2�� rWc�8�URR5 g)zClean up after testN)r5�closerfs r8�tearDown�TestEntityIntegration.tearDowns�� � � ���rWc��[R"UR5 [R"UR5 g)zClean up test filesN)r_�unlinkr4r]ras r8� tearDownClass�#TestEntityIntegration.tearDownClass�s&�� � � �#�+�+�� � � �#�'�'�(rWc�L�[SSSSS5nURUSS5 URnUR5nUR SSS/5 UR 5nUR U5 URUS S5 S S S 5 g !,(df  g =f) z'Test basic entity linking functionalityr"r&� discusses� introductionz"Discusses transformer architecture�status�successz SELECT * FROM literature_entity_links WHERE literature_id = ? AND entity_name = ? � relation_typeN)r � assertEqualr5�cursor�execute�fetchone�assertIsNotNone)rg�resultr5ry�links r8�test_entity_linking�)TestEntityIntegration.test_entity_linking�s���&� � � � � 0�  �� �����)�9�5��Y�Y�$��[�[�]�F� �N�N��"�=�1� 3� �?�?�$�D� � � �� &� � � �T�/�2�K� @��Y�Y�s �AB� B#c �d�[SSSSS/SSS.S S S./S 9nURUS S 5 URUSS5 URnUR5nUR SSS/5 UR 5SnURUS5 SSS5 g!,(df  g=f)z2Test tracking reading progress with entity linkingr"r(rz Key point 1z Key point 2r&rs)r?rwr)� evaluates)� key_pointsrKrurv�entities_linked�z� SELECT COUNT(*) as count FROM literature_entity_links WHERE literature_id = ? AND context = ? �countN)r rxr5ryrzr{)rgr}r5ryr�s r8�#test_reading_progress_with_entities�9TestEntityIntegration.test_reading_progress_with_entities�s���'� � � �%�}�5�&��E�$�{�C��  �� �����)�9�5� ���� 1�2�A�6��Y�Y�$��[�[�]�F� �N�N��"�9�-� /� �O�O�%�g�.�E� � � �U�A� &��Y�Y�s �A B!�! B/c���SSS.SSS./n[USS9nURUS S 5 URS U5 UR[5 [SS S./5 S S S 5 g !,(df  g =f)z(Test searching papers by entity patternsr&r')r<rwr)r()r<�context�all)� match_mode� total_matchesr�match_distribution� invalid_typeN)r � assertGreater�assertIn� assertRaises� ValueError)rg�patternsr}s r8�test_entity_pattern_search�0TestEntityIntegration.test_entity_pattern_search�s~��%�|� D�"�y� 9� �� 2�(�u�M�� ���6�/�2�A�6� � � �*�F�3�� � �z� *� ,�(�>�J�.� �+� *� *�s �A*�* A8c�N�URnUR5n/SQnUHupEURSXE/5 M SSS5 [SSSS9nUR [ US5S 5 UR S U5 UR S U5 g!,(df  N\=f) z(Test tracking entity evolution over time))z 2020-01-01r)z 2021-01-01r)z 2022-01-01r z� UPDATE reading_list SET added_date = ? WHERE literature_id = ? Nr&z 2020-2022T)� time_window�include_details�timeliner%� transitions�evolution_stats)r5ryrzrrx�lenr�)rgr5ry�dates�date�paper_idr}s r8�test_entity_evolution�+TestEntityIntegration.test_entity_evolution�s����Y�Y�$��[�[�]�F��E� #(������ ��%� '�#(�� (� �#� � �� ����V�J�/�0�!�4� � � �m�V�,� � � �'��0�1�Y�s �3B� B$c��[SSSS9nURSU5 URSU5 URSU5 URSU5 g ) zTest identifying research gapsr%�T)�min_importance� min_papers�include_suggestions�isolated_entities�weak_connections� section_gaps�research_suggestionsN)rr�)rgr}s r8�test_research_gaps�(TestEntityIntegration.test_research_gaps�sR��'��� $� �� � � �)�6�2� � � �(�&�1� � � �n�f�-� � � �,�f�5rWc�*�[UR5nURUSS5 URUSS5 [ UR5nURUSS5 [ URSSS9nURUSS 5 g ) z&Test memory graph integration featuresrurv� entity_countr�total_linked_entitiesFT)� auto_remove�dry_runr�N)rr]rxr�rr)rgrK� validation� sync_results r8�test_memory_graph_integration�3TestEntityIntegration.test_memory_graph_integration�s���(��(>�(>�?�� ����(�+�Y�7� ���8�N�3�Q�7�+�4�+A�+A�B� � ���:�&=�>��B�(� � "� "��� � � ����X�.� �:rWc���UR[5 [SSS5 SSS5 UR[5 [SSS9 SSS5 UR[5 [ /5 SSS5 UR[5 [ SS 9 SSS5 g!,(df  N�=f!,(df  Np=f!,(df  NX=f!,(df  g=f) zTest various edge casesr"�nonexistent_entityrsNr&�invalid)r��)r�)r�r�r rr rrfs r8�test_edge_cases�%TestEntityIntegration.test_edge_cases s���� � �z� *� ��$�� �+�� � �z� *� "�=�i� H�+�� � �z� *� ,�R� 0�+�� � �z� *� "�!� 4�+� *�!+� *��+� *��+� *��+� *�s/�B%� B6�) C� C�% B3�6 C� C� C&c � �URnUR5n[S5HKnSU3nURSUSU3US-S-/5 /SQnUSS HnURS XFS S /5 M MM SSS5 [R "5n[ S S0S S0/5n[R "5U- n URU R5S5 URUSS5 g!,(df  N�=f)z%Test performance with larger datasets�dz test:paperz� INSERT INTO reading_list (literature_id, title, importance) VALUES (?, ?, ?) z Test Paper rr�)r&r)r+r-Nr�z� INSERT INTO literature_entity_links (literature_id, entity_name, relation_type, context) VALUES (?, ?, ?, ?) rsr(r<r&r)g�?r�r) r5ry�rangerzr�nowr � assertLess� total_secondsr�) rgr5ry�ir�rKr<� start_timer}�durations r8�test_performance�&TestEntityIntegration.test_performance"s ���Y�Y�$��[�[�]�F��3�Z��'��s�+����� ��+�a�S� 1�1�q�5�1�9�=�?� G��&�r��l�F��N�N�$�#�K��C� E�+� � �*�\�\�^� �1� �}� %� �{� #�3 � ���<�<�>�J�.�� ����.�.�0�#�6� ���6�/�2�A�6�;�Y�s �A+C4�4 D)r5N)rPrQrRrSrT� classmethodrcrhrlrprr�r�r�r�r�r�r�rVrOrWr8rYrYos^��;��<��<�3���)��)� A�2'�6�$1�: 6�;�&5�, 7rWrY�__main__)#�builtins� @py_builtins�_pytest.assertion.rewrite� assertion�rewrite� @pytest_ar�unittestr0rHr.r_�pathlibrrr�typingrrr�sqlite_paper_fastmcp_serverr r r r r rrrrrr�TestCaserYrP�mainrOrWr8�<module>r�sm������ �� ��(�"�"� � � �V�V�pS7�H�-�-�S7�j �z�� �M�M�O�rW

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/zongmin-yu/sqlite-literature-management-fastmcp-mcp-server'

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