graphiti-core 0.18.9__py3-none-any.whl → 0.19.0rc2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of graphiti-core might be problematic. Click here for more details.

@@ -32,8 +32,8 @@ from graphiti_core.models.edges.edge_db_queries import (
32
32
  get_entity_edge_save_bulk_query,
33
33
  )
34
34
  from graphiti_core.models.nodes.node_db_queries import (
35
- EPISODIC_NODE_SAVE_BULK,
36
35
  get_entity_node_save_bulk_query,
36
+ get_episode_node_save_bulk_query,
37
37
  )
38
38
  from graphiti_core.nodes import EntityNode, EpisodeType, EpisodicNode, create_entity_node_embeddings
39
39
  from graphiti_core.utils.maintenance.edge_operations import (
@@ -116,6 +116,7 @@ async def add_nodes_and_edges_bulk_tx(
116
116
  episodes = [dict(episode) for episode in episodic_nodes]
117
117
  for episode in episodes:
118
118
  episode['source'] = str(episode['source'].value)
119
+ episode['group_label'] = 'Episodic_' + episode['group_id'].replace('-', '')
119
120
  nodes: list[dict[str, Any]] = []
120
121
  for node in entity_nodes:
121
122
  if node.name_embedding is None:
@@ -130,7 +131,9 @@ async def add_nodes_and_edges_bulk_tx(
130
131
  }
131
132
 
132
133
  entity_data.update(node.attributes or {})
133
- entity_data['labels'] = list(set(node.labels + ['Entity']))
134
+ entity_data['labels'] = list(
135
+ set(node.labels + ['Entity', 'Entity_' + node.group_id.replace('-', '')])
136
+ )
134
137
  nodes.append(entity_data)
135
138
 
136
139
  edges: list[dict[str, Any]] = []
@@ -155,7 +158,7 @@ async def add_nodes_and_edges_bulk_tx(
155
158
  edge_data.update(edge.attributes or {})
156
159
  edges.append(edge_data)
157
160
 
158
- await tx.run(EPISODIC_NODE_SAVE_BULK, episodes=episodes)
161
+ await tx.run(get_episode_node_save_bulk_query(driver.provider), episodes=episodes)
159
162
  entity_node_save_bulk = get_entity_node_save_bulk_query(driver.provider, nodes)
160
163
  await tx.run(entity_node_save_bulk, nodes=nodes)
161
164
  await tx.run(
@@ -21,7 +21,7 @@ from time import time
21
21
  from pydantic import BaseModel
22
22
  from typing_extensions import LiteralString
23
23
 
24
- from graphiti_core.driver.driver import GraphDriver
24
+ from graphiti_core.driver.driver import GraphDriver, GraphProvider
25
25
  from graphiti_core.edges import (
26
26
  CommunityEdge,
27
27
  EntityEdge,
@@ -504,23 +504,46 @@ async def resolve_extracted_edge(
504
504
  async def filter_existing_duplicate_of_edges(
505
505
  driver: GraphDriver, duplicates_node_tuples: list[tuple[EntityNode, EntityNode]]
506
506
  ) -> list[tuple[EntityNode, EntityNode]]:
507
- query: LiteralString = """
508
- UNWIND $duplicate_node_uuids AS duplicate_tuple
509
- MATCH (n:Entity {uuid: duplicate_tuple[0]})-[r:RELATES_TO {name: 'IS_DUPLICATE_OF'}]->(m:Entity {uuid: duplicate_tuple[1]})
510
- RETURN DISTINCT
511
- n.uuid AS source_uuid,
512
- m.uuid AS target_uuid
513
- """
507
+ if not duplicates_node_tuples:
508
+ return []
514
509
 
515
510
  duplicate_nodes_map = {
516
511
  (source.uuid, target.uuid): (source, target) for source, target in duplicates_node_tuples
517
512
  }
518
513
 
519
- records, _, _ = await driver.execute_query(
520
- query,
521
- duplicate_node_uuids=list(duplicate_nodes_map.keys()),
522
- routing_='r',
523
- )
514
+ if driver.provider == GraphProvider.NEPTUNE:
515
+ query: LiteralString = """
516
+ UNWIND $duplicate_node_uuids AS duplicate_tuple
517
+ MATCH (n:Entity {uuid: duplicate_tuple.source})-[r:RELATES_TO {name: 'IS_DUPLICATE_OF'}]->(m:Entity {uuid: duplicate_tuple.target})
518
+ RETURN DISTINCT
519
+ n.uuid AS source_uuid,
520
+ m.uuid AS target_uuid
521
+ """
522
+
523
+ duplicate_nodes = [
524
+ {'source': source.uuid, 'target': target.uuid}
525
+ for source, target in duplicates_node_tuples
526
+ ]
527
+
528
+ records, _, _ = await driver.execute_query(
529
+ query,
530
+ duplicate_node_uuids=duplicate_nodes,
531
+ routing_='r',
532
+ )
533
+ else:
534
+ query: LiteralString = """
535
+ UNWIND $duplicate_node_uuids AS duplicate_tuple
536
+ MATCH (n:Entity {uuid: duplicate_tuple[0]})-[r:RELATES_TO {name: 'IS_DUPLICATE_OF'}]->(m:Entity {uuid: duplicate_tuple[1]})
537
+ RETURN DISTINCT
538
+ n.uuid AS source_uuid,
539
+ m.uuid AS target_uuid
540
+ """
541
+
542
+ records, _, _ = await driver.execute_query(
543
+ query,
544
+ duplicate_node_uuids=list(duplicate_nodes_map.keys()),
545
+ routing_='r',
546
+ )
524
547
 
525
548
  # Remove duplicates that already have the IS_DUPLICATE_OF edge
526
549
  for record in records:
@@ -19,10 +19,13 @@ from datetime import datetime
19
19
 
20
20
  from typing_extensions import LiteralString
21
21
 
22
- from graphiti_core.driver.driver import GraphDriver
22
+ from graphiti_core.driver.driver import GraphDriver, GraphProvider
23
23
  from graphiti_core.graph_queries import get_fulltext_indices, get_range_indices
24
24
  from graphiti_core.helpers import semaphore_gather
25
- from graphiti_core.models.nodes.node_db_queries import EPISODIC_NODE_RETURN
25
+ from graphiti_core.models.nodes.node_db_queries import (
26
+ EPISODIC_NODE_RETURN,
27
+ EPISODIC_NODE_RETURN_NEPTUNE,
28
+ )
26
29
  from graphiti_core.nodes import EpisodeType, EpisodicNode, get_episodic_node_from_record
27
30
 
28
31
  EPISODE_WINDOW_LEN = 3
@@ -31,6 +34,8 @@ logger = logging.getLogger(__name__)
31
34
 
32
35
 
33
36
  async def build_indices_and_constraints(driver: GraphDriver, delete_existing: bool = False):
37
+ if driver.provider == GraphProvider.NEPTUNE:
38
+ return # Neptune does not need indexes built
34
39
  if delete_existing:
35
40
  records, _, _ = await driver.execute_query(
36
41
  """
@@ -71,7 +76,7 @@ async def clear_data(driver: GraphDriver, group_ids: list[str] | None = None):
71
76
 
72
77
  async def delete_group_ids(tx):
73
78
  await tx.run(
74
- 'MATCH (n:Entity|Episodic|Community) WHERE n.group_id IN $group_ids DETACH DELETE n',
79
+ 'MATCH (n) WHERE (n:Entity OR n:Episodic OR n:Community) AND n.group_id IN $group_ids DETACH DELETE n',
75
80
  group_ids=group_ids,
76
81
  )
77
82
 
@@ -109,15 +114,19 @@ async def retrieve_episodes(
109
114
 
110
115
  query: LiteralString = (
111
116
  """
112
- MATCH (e:Episodic)
113
- WHERE e.valid_at <= $reference_time
114
- """
117
+ MATCH (e:Episodic)
118
+ WHERE e.valid_at <= $reference_time
119
+ """
115
120
  + group_id_filter
116
121
  + source_filter
117
122
  + """
118
123
  RETURN
119
124
  """
120
- + EPISODIC_NODE_RETURN
125
+ + (
126
+ EPISODIC_NODE_RETURN_NEPTUNE
127
+ if driver.provider == GraphProvider.NEPTUNE
128
+ else EPISODIC_NODE_RETURN
129
+ )
121
130
  + """
122
131
  ORDER BY e.valid_at DESC
123
132
  LIMIT $num_episodes
@@ -133,3 +142,46 @@ async def retrieve_episodes(
133
142
 
134
143
  episodes = [get_episodic_node_from_record(record) for record in result]
135
144
  return list(reversed(episodes)) # Return in chronological order
145
+
146
+
147
+ async def build_dynamic_indexes(driver: GraphDriver, group_id: str):
148
+ # Make sure indices exist for this group_id in Neo4j
149
+ if driver.provider == GraphProvider.NEO4J:
150
+ await semaphore_gather(
151
+ driver.execute_query(
152
+ """CREATE FULLTEXT INDEX $episode_content IF NOT EXISTS
153
+ FOR (e:"""
154
+ + 'Episodic_'
155
+ + group_id.replace('-', '')
156
+ + """) ON EACH [e.content, e.source, e.source_description, e.group_id]""",
157
+ episode_content='episode_content_' + group_id.replace('-', ''),
158
+ ),
159
+ driver.execute_query(
160
+ """CREATE FULLTEXT INDEX $node_name_and_summary IF NOT EXISTS FOR (n:"""
161
+ + 'Entity_'
162
+ + group_id.replace('-', '')
163
+ + """) ON EACH [n.name, n.summary, n.group_id]""",
164
+ node_name_and_summary='node_name_and_summary_' + group_id.replace('-', ''),
165
+ ),
166
+ driver.execute_query(
167
+ """CREATE FULLTEXT INDEX $community_name IF NOT EXISTS
168
+ FOR (n:"""
169
+ + 'Community_'
170
+ + group_id.replace('-', '')
171
+ + """) ON EACH [n.name, n.group_id]""",
172
+ community_name='Community_' + group_id.replace('-', ''),
173
+ ),
174
+ driver.execute_query(
175
+ """CREATE VECTOR INDEX $group_entity_vector IF NOT EXISTS
176
+ FOR (n:"""
177
+ + 'Entity_'
178
+ + group_id.replace('-', '')
179
+ + """)
180
+ ON n.embedding
181
+ OPTIONS { indexConfig: {
182
+ `vector.dimensions`: 1024,
183
+ `vector.similarity_function`: 'cosine'
184
+ }}""",
185
+ group_entity_vector='group_entity_vector_' + group_id.replace('-', ''),
186
+ ),
187
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: graphiti-core
3
- Version: 0.18.9
3
+ Version: 0.19.0rc2
4
4
  Summary: A temporal graph building library
5
5
  Project-URL: Homepage, https://help.getzep.com/graphiti/graphiti/overview
6
6
  Project-URL: Repository, https://github.com/getzep/graphiti
@@ -30,7 +30,7 @@ Requires-Dist: langchain-anthropic>=0.2.4; extra == 'dev'
30
30
  Requires-Dist: langchain-openai>=0.2.6; extra == 'dev'
31
31
  Requires-Dist: langgraph>=0.2.15; extra == 'dev'
32
32
  Requires-Dist: langsmith>=0.1.108; extra == 'dev'
33
- Requires-Dist: pyright>=1.1.380; extra == 'dev'
33
+ Requires-Dist: pyright>=1.1.404; extra == 'dev'
34
34
  Requires-Dist: pytest-asyncio>=0.24.0; extra == 'dev'
35
35
  Requires-Dist: pytest-xdist>=3.6.1; extra == 'dev'
36
36
  Requires-Dist: pytest>=8.3.3; extra == 'dev'
@@ -44,6 +44,10 @@ Provides-Extra: google-genai
44
44
  Requires-Dist: google-genai>=1.8.0; extra == 'google-genai'
45
45
  Provides-Extra: groq
46
46
  Requires-Dist: groq>=0.2.0; extra == 'groq'
47
+ Provides-Extra: neptune
48
+ Requires-Dist: boto3>=1.39.16; extra == 'neptune'
49
+ Requires-Dist: langchain-aws>=0.2.29; extra == 'neptune'
50
+ Requires-Dist: opensearch-py>=3.0.0; extra == 'neptune'
47
51
  Provides-Extra: sentence-transformers
48
52
  Requires-Dist: sentence-transformers>=3.2.1; extra == 'sentence-transformers'
49
53
  Provides-Extra: voyageai
@@ -157,7 +161,7 @@ Graphiti is specifically designed to address the challenges of dynamic and frequ
157
161
  Requirements:
158
162
 
159
163
  - Python 3.10 or higher
160
- - Neo4j 5.26 / FalkorDB 1.1.2 or higher (serves as the embeddings storage backend)
164
+ - Neo4j 5.26 / FalkorDB 1.1.2 / Amazon Neptune Database Cluster or Neptune Analytics Graph + Amazon OpenSearch Serverless collection (serves as the full text search backend)
161
165
  - OpenAI API key (Graphiti defaults to OpenAI for LLM inference and embedding)
162
166
 
163
167
  > [!IMPORTANT]
@@ -200,6 +204,17 @@ pip install graphiti-core[falkordb]
200
204
  uv add graphiti-core[falkordb]
201
205
  ```
202
206
 
207
+ ### Installing with Amazon Neptune Support
208
+
209
+ If you plan to use Amazon Neptune as your graph database backend, install with the Amazon Neptune extra:
210
+
211
+ ```bash
212
+ pip install graphiti-core[neptune]
213
+
214
+ # or with uv
215
+ uv add graphiti-core[neptune]
216
+ ```
217
+
203
218
  ### You can also install optional LLM providers as extras:
204
219
 
205
220
  ```bash
@@ -217,6 +232,9 @@ pip install graphiti-core[anthropic,groq,google-genai]
217
232
 
218
233
  # Install with FalkorDB and LLM providers
219
234
  pip install graphiti-core[falkordb,anthropic,google-genai]
235
+
236
+ # Install with Amazon Neptune
237
+ pip install graphiti-core[neptune]
220
238
  ```
221
239
 
222
240
  ## Default to Low Concurrency; LLM Provider 429 Rate Limit Errors
@@ -236,7 +254,7 @@ If your LLM provider allows higher throughput, you can increase `SEMAPHORE_LIMIT
236
254
 
237
255
  For a complete working example, see the [Quickstart Example](./examples/quickstart/README.md) in the examples directory. The quickstart demonstrates:
238
256
 
239
- 1. Connecting to a Neo4j or FalkorDB database
257
+ 1. Connecting to a Neo4j, Amazon Neptune, or FalkorDB database
240
258
  2. Initializing Graphiti indices and constraints
241
259
  3. Adding episodes to the graph (both text and structured JSON)
242
260
  4. Searching for relationships (edges) using hybrid search
@@ -319,6 +337,26 @@ driver = FalkorDriver(
319
337
  graphiti = Graphiti(graph_driver=driver)
320
338
  ```
321
339
 
340
+ #### Amazon Neptune
341
+
342
+ ```python
343
+ from graphiti_core import Graphiti
344
+ from graphiti_core.driver.neptune_driver import NeptuneDriver
345
+
346
+ # Create a FalkorDB driver with custom database name
347
+ driver = NeptuneDriver(
348
+ host=<NEPTUNE ENDPOINT>,
349
+ aoss_host=<Amazon OpenSearch Serverless Host>,
350
+ port=<PORT> # Optional, defaults to 8182,
351
+ aoss_port=<PORT> # Optional, defaults to 443
352
+ )
353
+
354
+ driver = NeptuneDriver(host=neptune_uri, aoss_host=aoss_host, port=neptune_port)
355
+
356
+ # Pass the driver to Graphiti
357
+ graphiti = Graphiti(graph_driver=driver)
358
+ ```
359
+
322
360
 
323
361
  ### Performance Configuration
324
362
 
@@ -495,7 +533,7 @@ Ensure Ollama is running (`ollama serve`) and that you have pulled the models yo
495
533
 
496
534
  - [Guides and API documentation](https://help.getzep.com/graphiti).
497
535
  - [Quick Start](https://help.getzep.com/graphiti/graphiti/quick-start)
498
- - [Building an agent with LangChain's LangGraph and Graphiti](https://help.getzep.com/graphiti/graphiti/lang-graph-agent)
536
+ - [Building an agent with LangChain's LangGraph and Graphiti](https://help.getzep.com/graphiti/integrations/lang-graph-agent)
499
537
 
500
538
  ## Telemetry
501
539
 
@@ -510,7 +548,7 @@ When you initialize a Graphiti instance, we collect:
510
548
  - **Graphiti version**: The version you're using
511
549
  - **Configuration choices**:
512
550
  - LLM provider type (OpenAI, Azure, Anthropic, etc.)
513
- - Database backend (Neo4j, FalkorDB)
551
+ - Database backend (Neo4j, FalkorDB, Amazon Neptune Database or Neptune Analytics)
514
552
  - Embedder provider (OpenAI, Azure, Voyage, etc.)
515
553
 
516
554
  ### What We Don't Collect
@@ -1,11 +1,11 @@
1
1
  graphiti_core/__init__.py,sha256=e5SWFkRiaUwfprYIeIgVIh7JDedNiloZvd3roU-0aDY,55
2
- graphiti_core/edges.py,sha256=NWBOXRka7r_JMmtUF_6xUCMKyVDlEzRSOdGlz_aYucU,15260
2
+ graphiti_core/edges.py,sha256=Wt2R5x5HjtrgDcqb6XdczHy0RXcY6VW7LtezKKboHRg,16358
3
3
  graphiti_core/errors.py,sha256=cH_v9TPgEPeQE6GFOHIg5TvejpUCBddGarMY2Whxbwc,2707
4
4
  graphiti_core/graph_queries.py,sha256=gXQvspJHpM5LRJ5HBJgr0Zw-AhHkqweCoq06wfyZ_bc,5407
5
- graphiti_core/graphiti.py,sha256=R6VrGfPcvgPhaZZsfxb_EXM6bSYLWW5iALggfwkU2oA,40834
5
+ graphiti_core/graphiti.py,sha256=mrJMurj01cgwCemISTCs0W-sNtNQShnWtP9TF1_lzTc,40924
6
6
  graphiti_core/graphiti_types.py,sha256=C_p2XwScQlCzo7ets097TrSLs9ATxPZQ4WCsxDS7QHc,1066
7
7
  graphiti_core/helpers.py,sha256=oKcOQE_bvsdhBpPr1Ia2tylBq1svj3X1oBMSR7qdo00,5331
8
- graphiti_core/nodes.py,sha256=aGCAoKWYPEr0wiC6UoxpIs7GxA4MXxugHCZtdfV3iwk,19128
8
+ graphiti_core/nodes.py,sha256=3kc3qUFlhTBW7qYnxKIypUrlJExbu5GGhYSzCpFeK84,22156
9
9
  graphiti_core/py.typed,sha256=vlmmzQOt7bmeQl9L3XJP4W6Ry0iiELepnOrinKz5KQg,79
10
10
  graphiti_core/cross_encoder/__init__.py,sha256=hry59vz21x-AtGZ0MJ7ugw0HTwJkXiddpp_Yqnwsen0,723
11
11
  graphiti_core/cross_encoder/bge_reranker_client.py,sha256=y3TfFxZh0Yvj6HUShmfUm6MC7OPXwWUlv1Qe5HF3S3I,1797
@@ -13,9 +13,10 @@ graphiti_core/cross_encoder/client.py,sha256=KLsbfWKOEaAV3adFe3XZlAeb-gje9_sVKCV
13
13
  graphiti_core/cross_encoder/gemini_reranker_client.py,sha256=hmITG5YIib52nrKvINwRi4xTfAO1U4jCCaEVIwImHw0,6208
14
14
  graphiti_core/cross_encoder/openai_reranker_client.py,sha256=WHMl6Q6gEslR2EzjwpFSZt2Kh6bnu8alkLvzmi0MDtg,4674
15
15
  graphiti_core/driver/__init__.py,sha256=kCWimqQU19airu5gKwCmZtZuXkDfaQfKSUhMDoL-rTA,626
16
- graphiti_core/driver/driver.py,sha256=XFJzkyZKiqhwwW6G9enB2ouWxNB53PU58nhSCW_LOIc,2331
16
+ graphiti_core/driver/driver.py,sha256=uUdBXxQlNhNA8yVUxKJAbWplAQ-KsyVsQ9uDf1ga3jI,2355
17
17
  graphiti_core/driver/falkordb_driver.py,sha256=YLNuPvPBM7Pgr3Pv9gDuTVDGeDgHvEg8xD58uDYNweM,6766
18
18
  graphiti_core/driver/neo4j_driver.py,sha256=LxYPJc8vUUBplVKLW9n2mofNzndFV4S2yHdAiT5gUJI,2323
19
+ graphiti_core/driver/neptune_driver.py,sha256=BSQ2ytOJQ7ajTUo-3AjwSOFSKc5l3fZVTacgZuxuk2k,11257
19
20
  graphiti_core/embedder/__init__.py,sha256=EL564ZuE-DZjcuKNUK_exMn_XHXm2LdO9fzdXePVKL4,179
20
21
  graphiti_core/embedder/azure_openai.py,sha256=OyomPwC1fIsddI-3n6g00kQFdQznZorBhHwkQKCLUok,2384
21
22
  graphiti_core/embedder/client.py,sha256=qEpSHceL_Gc4QQPJWIOnuNLemNuR_TYA4r28t2Vldbg,1115
@@ -26,19 +27,21 @@ graphiti_core/llm_client/__init__.py,sha256=QgBWUiCeBp6YiA_xqyrDvJ9jIyy1hngH8g7F
26
27
  graphiti_core/llm_client/anthropic_client.py,sha256=xTFcrgMDK77BwnChBhYj51Jaa2mRNI850oJv2pKZI0A,12892
27
28
  graphiti_core/llm_client/azure_openai_client.py,sha256=ekERggAekbb7enes1RJqdRChf_mjaZTFXsnMbxO7azQ,2497
28
29
  graphiti_core/llm_client/client.py,sha256=cUwwCZEhP9jJAI04AhHxsFPecggajSgCRCM3frrYJqA,6473
29
- graphiti_core/llm_client/config.py,sha256=90IgSBxZE_3nWdaEONVLUznI8lytPA7ZyexQz-_c55U,2560
30
+ graphiti_core/llm_client/config.py,sha256=pivp29CDIbDPqgw5NF9Ok2AwcqTV5z5_Q1bgNs1CDGs,2560
30
31
  graphiti_core/llm_client/errors.py,sha256=pn6brRiLW60DAUIXJYKBT6MInrS4ueuH1hNLbn_JbQo,1243
31
32
  graphiti_core/llm_client/gemini_client.py,sha256=m0-6SFUs8qqoR5rGTrASAcMtTbJKfZqO4-MaDr4CYCQ,17719
32
33
  graphiti_core/llm_client/groq_client.py,sha256=bYLE_cg1QEhugsJOXh4b1vPbxagKeMWqk48240GCzMs,2922
33
- graphiti_core/llm_client/openai_base_client.py,sha256=DXMl58nJYmVOKtemTMKFkdSU4kNFYdFG0RUFj8-xjE4,8104
34
- graphiti_core/llm_client/openai_client.py,sha256=_Ga6GnnnlFgs4t6odlvBbjeHdUrrnLrkMYTVuYawNfs,3273
34
+ graphiti_core/llm_client/openai_base_client.py,sha256=c_K9hMaSfBQuiG4Kq_4Zy04eh4_SrNtNQ0aMc2tmAoY,8482
35
+ graphiti_core/llm_client/openai_client.py,sha256=AuaCFQFMJEGzBkFVouccq3XentmWRIKW0RLRBCUMm7Y,3763
35
36
  graphiti_core/llm_client/openai_generic_client.py,sha256=WElMnPqdb1CxzYH4p2-m_9rVMr5M93-eXnc3yVxBgFg,7001
36
37
  graphiti_core/llm_client/utils.py,sha256=zKpxXEbKa369m4W7RDEf-m56kH46V1Mx3RowcWZEWWs,1000
38
+ graphiti_core/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ graphiti_core/migrations/neo4j_node_group_labels.py,sha256=faE7zl5kRSJsKEZudgqpS6HQBzJP8E-wqvb2wqBVFCU,1894
37
40
  graphiti_core/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
41
  graphiti_core/models/edges/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- graphiti_core/models/edges/edge_db_queries.py,sha256=OBFqT9m6JDmGwpqe5TkcaCT2KxUGdW8h4yIsoacB5Mw,4661
42
+ graphiti_core/models/edges/edge_db_queries.py,sha256=Poh5E6DcsU3tMsDLYQZ-pVw0kDorQZ-BXoxIiQiyP3Y,7168
40
43
  graphiti_core/models/nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- graphiti_core/models/nodes/node_db_queries.py,sha256=XIaBTBR0UPw765cCcyu0oM1Q5Yv2gSud972xKpIibzA,4386
44
+ graphiti_core/models/nodes/node_db_queries.py,sha256=4XB0oXYOemH3tIiA_mfyxsHtR7PvQ57Ivkt82muz6qs,9393
42
45
  graphiti_core/prompts/__init__.py,sha256=EA-x9xUki9l8wnu2l8ek_oNf75-do5tq5hVq7Zbv8Kw,101
43
46
  graphiti_core/prompts/dedupe_edges.py,sha256=WRXQi7JQZdIfKDICWyU7Wbs5WyD_KBblLBSeKdbLyuk,5914
44
47
  graphiti_core/prompts/dedupe_nodes.py,sha256=eYDk0axHEKLjZS2tKlT4Zy1fW9EJkn6EnrJLSN0fvAY,8235
@@ -52,26 +55,26 @@ graphiti_core/prompts/models.py,sha256=NgxdbPHJpBEcpbXovKyScgpBc73Q-GIW-CBDlBtDj
52
55
  graphiti_core/prompts/prompt_helpers.py,sha256=gMDDNqBpxcnTO9psJQm7QU7M6OQgRumFq4oGYiycrfM,795
53
56
  graphiti_core/prompts/summarize_nodes.py,sha256=tn6LPEv_nNFLjKuT_FB_st7TAIYOEUOg9QR5YG7PpMA,4437
54
57
  graphiti_core/search/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- graphiti_core/search/search.py,sha256=TnBtwqL0dWADBZqQT_ymlJm2qA2Llj-0SwS8vS6nH-0,17464
58
+ graphiti_core/search/search.py,sha256=iCF_NhFFzhDBx9-yty6j4BCwFUokl-1XsOi6LgDpnUU,18306
56
59
  graphiti_core/search/search_config.py,sha256=v_rUHsu1yo5OuPfEm21lSuXexQs-o8qYwSSemW2QWhU,4165
57
60
  graphiti_core/search/search_config_recipes.py,sha256=4GquRphHhJlpXQhAZOySYnCzBWYoTwxlJj44eTOavZQ,7443
58
61
  graphiti_core/search/search_filters.py,sha256=BkkVpweN5U_ld5n2GyQrljwGw4QwbFphE7FT0jpTys8,7772
59
62
  graphiti_core/search/search_helpers.py,sha256=wj3ARlCNnZixNNntgCdAqzGoE4de4lW3r4rSG-3WyGw,2877
60
- graphiti_core/search/search_utils.py,sha256=D6J93x0ol4Kd_zVo-dX0MRG0BZjLvG-mCdi-vjjDTfE,32104
63
+ graphiti_core/search/search_utils.py,sha256=XyGmwQ4pHbyQmng3gcLdsBUMTIZ4ItcBYq_slfKcIUo,55116
61
64
  graphiti_core/telemetry/__init__.py,sha256=5kALLDlU9bb2v19CdN7qVANsJWyfnL9E60J6FFgzm3o,226
62
65
  graphiti_core/telemetry/telemetry.py,sha256=47LrzOVBCcZxsYPsnSxWFiztHoxYKKxPwyRX0hnbDGc,3230
63
66
  graphiti_core/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
- graphiti_core/utils/bulk_utils.py,sha256=xIn2UMwEw1MOcpaV0QLY59fyacTH0J7kvQtuF2rJfgk,15168
67
+ graphiti_core/utils/bulk_utils.py,sha256=SMl_mdCd-h4BYkRFIh12kDANqFuTlkDxOOH86TJzTBY,15353
65
68
  graphiti_core/utils/datetime_utils.py,sha256=Ti-2tnrDFRzBsbfblzsHybsM3jaDLP4-VT2t0VhpIzU,1357
66
69
  graphiti_core/utils/maintenance/__init__.py,sha256=vW4H1KyapTl-OOz578uZABYcpND4wPx3Vt6aAPaXh78,301
67
70
  graphiti_core/utils/maintenance/community_operations.py,sha256=gHqsRtX19LVH88B70GNTGnnq5Ic5kcm0Gu24wKP3-yQ,10492
68
- graphiti_core/utils/maintenance/edge_operations.py,sha256=RHMUquo-BSkwvtWZBMZHzNZ-WtgCOuwz6cGLxD8Q46g,18773
69
- graphiti_core/utils/maintenance/graph_data_operations.py,sha256=joNZxL_OIFdXHBGkwtB57ar7nGmbq4Z8ItgqFWL45kw,4530
71
+ graphiti_core/utils/maintenance/edge_operations.py,sha256=WOeuei29X5bcKP28WtCWTJGBea9TaBLYfZ3xKXbMhcU,19618
72
+ graphiti_core/utils/maintenance/graph_data_operations.py,sha256=NdKkyja1w0liulWOHsbeL8Mv_wRaWflzWzZTn67Os0I,6857
70
73
  graphiti_core/utils/maintenance/node_operations.py,sha256=r9ilkA01eq1z-nF8P_s1EXG6A6j15qmnfIqetnzqF50,13644
71
74
  graphiti_core/utils/maintenance/temporal_operations.py,sha256=IIaVtShpVkOYe6haxz3a1x3v54-MzaEXG8VsxFUNeoY,3582
72
75
  graphiti_core/utils/maintenance/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
76
  graphiti_core/utils/ontology_utils/entity_types_utils.py,sha256=4eVgxLWY6Q8k9cRJ5pW59IYF--U4nXZsZIGOVb_yHfQ,1285
74
- graphiti_core-0.18.9.dist-info/METADATA,sha256=3cBkzYWMDv2X3jy74bmi4-Yj0LpfVUBjPOI2BnvYLdg,24613
75
- graphiti_core-0.18.9.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
76
- graphiti_core-0.18.9.dist-info/licenses/LICENSE,sha256=KCUwCyDXuVEgmDWkozHyniRyWjnWUWjkuDHfU6o3JlA,11325
77
- graphiti_core-0.18.9.dist-info/RECORD,,
77
+ graphiti_core-0.19.0rc2.dist-info/METADATA,sha256=wavggzA3Aa2aWpfmOGNXkD-E0HTYeweg1qk6kQ55tFk,25811
78
+ graphiti_core-0.19.0rc2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
79
+ graphiti_core-0.19.0rc2.dist-info/licenses/LICENSE,sha256=KCUwCyDXuVEgmDWkozHyniRyWjnWUWjkuDHfU6o3JlA,11325
80
+ graphiti_core-0.19.0rc2.dist-info/RECORD,,