rushdb 2.3.0__tar.gz → 2.6.0__tar.gz

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.
Files changed (40) hide show
  1. {rushdb-2.3.0 → rushdb-2.6.0}/PKG-INFO +3 -2
  2. {rushdb-2.3.0 → rushdb-2.6.0}/README.md +2 -1
  3. {rushdb-2.3.0 → rushdb-2.6.0}/pyproject.toml +1 -1
  4. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/api/ai.py +12 -12
  5. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/api/records.py +5 -1
  6. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/api/relationship_patterns.py +3 -3
  7. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/models/api_response.py +1 -1
  8. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/models/property.py +3 -2
  9. {rushdb-2.3.0 → rushdb-2.6.0}/uv.lock +49 -49
  10. {rushdb-2.3.0 → rushdb-2.6.0}/.env.example +0 -0
  11. {rushdb-2.3.0 → rushdb-2.6.0}/.github/workflows/ci.yml +0 -0
  12. {rushdb-2.3.0 → rushdb-2.6.0}/.gitignore +0 -0
  13. {rushdb-2.3.0 → rushdb-2.6.0}/CODE_OF_CONDUCT.md +0 -0
  14. {rushdb-2.3.0 → rushdb-2.6.0}/CONTRIBUTING.md +0 -0
  15. {rushdb-2.3.0 → rushdb-2.6.0}/LICENSE +0 -0
  16. {rushdb-2.3.0 → rushdb-2.6.0}/rushdb-logo.svg +0 -0
  17. {rushdb-2.3.0 → rushdb-2.6.0}/src/__init__.py +0 -0
  18. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/__init__.py +0 -0
  19. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/api/__init__.py +0 -0
  20. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/api/base.py +0 -0
  21. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/api/labels.py +0 -0
  22. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/api/properties.py +0 -0
  23. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/api/query.py +0 -0
  24. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/api/relationships.py +0 -0
  25. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/api/transactions.py +0 -0
  26. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/client.py +0 -0
  27. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/common.py +0 -0
  28. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/models/__init__.py +0 -0
  29. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/models/record.py +0 -0
  30. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/models/relationship.py +0 -0
  31. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/models/result.py +0 -0
  32. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/models/search_query.py +0 -0
  33. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/models/transaction.py +0 -0
  34. {rushdb-2.3.0 → rushdb-2.6.0}/src/rushdb/utils/token_prefix.py +0 -0
  35. {rushdb-2.3.0 → rushdb-2.6.0}/tests/__init__.py +0 -0
  36. {rushdb-2.3.0 → rushdb-2.6.0}/tests/test_base_setup.py +0 -0
  37. {rushdb-2.3.0 → rushdb-2.6.0}/tests/test_create_import.py +0 -0
  38. {rushdb-2.3.0 → rushdb-2.6.0}/tests/test_relationship_patterns.py +0 -0
  39. {rushdb-2.3.0 → rushdb-2.6.0}/tests/test_search_query.py +0 -0
  40. {rushdb-2.3.0 → rushdb-2.6.0}/tests/test_search_result.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rushdb
3
- Version: 2.3.0
3
+ Version: 2.6.0
4
4
  Summary: RushDB Python SDK — memory layer for AI agents and modern apps
5
5
  Project-URL: Homepage, https://github.com/rush-db/rushdb-python
6
6
  Project-URL: Repository, https://github.com/rush-db/rushdb-python
@@ -161,7 +161,8 @@ csv_data = "name,email,age\nJohn,john@example.com,30\nJane,jane@example.com,25"
161
161
  db.records.import_csv(
162
162
  label='USER',
163
163
  data=csv_data,
164
- options={'returnResult': True, 'suggestTypes': True},
164
+ # skipEmptyValues: treat empty cells ("" / []) as unset instead of storing them (0/False are kept)
165
+ options={'returnResult': True, 'suggestTypes': True, 'skipEmptyValues': True},
165
166
  parse_config={'header': True, 'skipEmptyLines': True, 'dynamicTyping': True},
166
167
  )
167
168
  ```
@@ -136,7 +136,8 @@ csv_data = "name,email,age\nJohn,john@example.com,30\nJane,jane@example.com,25"
136
136
  db.records.import_csv(
137
137
  label='USER',
138
138
  data=csv_data,
139
- options={'returnResult': True, 'suggestTypes': True},
139
+ # skipEmptyValues: treat empty cells ("" / []) as unset instead of storing them (0/False are kept)
140
+ options={'returnResult': True, 'suggestTypes': True, 'skipEmptyValues': True},
140
141
  parse_config={'header': True, 'skipEmptyLines': True, 'dynamicTyping': True},
141
142
  )
142
143
  ```
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "rushdb"
3
- version = "2.3.0"
3
+ version = "2.6.0"
4
4
  description = "RushDB Python SDK — memory layer for AI agents and modern apps"
5
5
  authors = [
6
6
  {name = "RushDB Team", email = "hi@rushdb.com"}
@@ -1,6 +1,6 @@
1
1
  """AI API for RushDB Python SDK.
2
2
 
3
- Provides methods for graph ontology exploration, semantic vector search,
3
+ Provides methods for graph schema exploration, semantic vector search,
4
4
  and embedding index management.
5
5
  """
6
6
 
@@ -123,7 +123,7 @@ class AIAPI(BaseAPI):
123
123
  Example::
124
124
 
125
125
  >>> db = RushDB(api_key="...")
126
- >>> ontology = db.ai.get_ontology()
126
+ >>> schema = db.ai.get_schema()
127
127
  >>> results = db.ai.search({"query": "fast cars", "propertyName": "description"})
128
128
  >>> db.ai.indexes.create({"propertyName": "description", "label": "Book"})
129
129
  """
@@ -132,12 +132,12 @@ class AIAPI(BaseAPI):
132
132
  super().__init__(client)
133
133
  self.indexes = _AIIndexesNamespace(client)
134
134
 
135
- def get_ontology(
135
+ def get_schema(
136
136
  self,
137
137
  params: Optional[Dict[str, Any]] = None,
138
138
  transaction: Optional[Union[Transaction, str]] = None,
139
139
  ) -> ApiResponse:
140
- """Return the full graph ontology as structured JSON.
140
+ """Return the full graph schema as structured JSON.
141
141
 
142
142
  Each item contains the label name, record count, properties with value
143
143
  ranges/samples, and cross-label relationships with direction.
@@ -149,13 +149,13 @@ class AIAPI(BaseAPI):
149
149
 
150
150
  Args:
151
151
  params: Optional filter. Pass ``{"labels": ["Label1"]}`` to scope
152
- the ontology to specific labels only. Pass ``{"force": True}``
153
- to bypass the 1-hour ontology cache and trigger a full
152
+ the schema to specific labels only. Pass ``{"force": True}``
153
+ to bypass the 1-hour schema cache and trigger a full
154
154
  recalculation.
155
155
  transaction: Optional transaction context.
156
156
 
157
157
  Returns:
158
- ApiResponse: Response whose ``data`` is a list of ontology items.
158
+ ApiResponse: Response whose ``data`` is a list of schema items.
159
159
  """
160
160
  headers: Dict[str, str] = {}
161
161
  if transaction is not None:
@@ -165,7 +165,7 @@ class AIAPI(BaseAPI):
165
165
  headers["x-transaction-id"] = tx_id
166
166
 
167
167
  response = self.client._make_request(
168
- "POST", "/ai/ontology", params or {}, headers=headers or None
168
+ "POST", "/ai/schema", params or {}, headers=headers or None
169
169
  )
170
170
  return ApiResponse(
171
171
  data=response.get("data"),
@@ -173,12 +173,12 @@ class AIAPI(BaseAPI):
173
173
  total=response.get("total"),
174
174
  )
175
175
 
176
- def get_ontology_markdown(
176
+ def get_schema_markdown(
177
177
  self,
178
178
  params: Optional[Dict[str, Any]] = None,
179
179
  transaction: Optional[Union[Transaction, str]] = None,
180
180
  ) -> ApiResponse:
181
- """Return the full graph ontology as compact Markdown tables.
181
+ """Return the full graph schema as compact Markdown tables.
182
182
 
183
183
  Token-efficient representation intended for direct LLM consumption.
184
184
  Includes labels with counts, properties with types and value
@@ -191,7 +191,7 @@ class AIAPI(BaseAPI):
191
191
  Args:
192
192
  params: Optional filter. Pass ``{"labels": ["Label1"]}`` to scope
193
193
  the output to specific labels only. Pass ``{"force": True}``
194
- to bypass the 1-hour ontology cache and trigger a full
194
+ to bypass the 1-hour schema cache and trigger a full
195
195
  recalculation.
196
196
  transaction: Optional transaction context.
197
197
 
@@ -206,7 +206,7 @@ class AIAPI(BaseAPI):
206
206
  headers["x-transaction-id"] = tx_id
207
207
 
208
208
  response = self.client._make_request(
209
- "POST", "/ai/ontology/md", params or {}, headers=headers or None
209
+ "POST", "/ai/schema/md", params or {}, headers=headers or None
210
210
  )
211
211
  return ApiResponse(
212
212
  data=response.get("data"),
@@ -172,6 +172,8 @@ class RecordsAPI(BaseAPI):
172
172
  Available options:
173
173
  - returnResult (bool): Whether to return the created record data. Defaults to True.
174
174
  - suggestTypes (bool): Whether to automatically suggest data types. Defaults to True.
175
+ - skipEmptyValues (bool): Treat empty strings ("") and empty arrays ([]) as unset —
176
+ no property is created. 0 and False are kept. Defaults to False.
175
177
  vectors (Optional[List[Dict[str, Any]]]): Optional pre-computed embedding vectors
176
178
  to write alongside the record. Each entry must contain at least
177
179
  ``propertyName`` and ``vector``; ``similarityFunction`` is required when
@@ -231,7 +233,9 @@ class RecordsAPI(BaseAPI):
231
233
  record. Nested objects/arrays are not supported here — raises
232
234
  ``ValueError`` if any item contains a nested object or list.
233
235
  options: Optional write options forwarded as-is to the server
234
- (e.g. ``suggestTypes``, ``mergeBy``, ``mergeStrategy``, etc.).
236
+ (e.g. ``suggestTypes``, ``skipEmptyValues``, ``mergeBy``,
237
+ ``mergeStrategy``, etc.). ``skipEmptyValues`` treats empty strings
238
+ and empty arrays as unset (``0``/``False`` are kept); defaults to False.
235
239
  vectors: Optional per-row inline vectors for external embedding indexes.
236
240
  ``vectors[i]`` is applied to ``data[i]``. Each element is a list of
237
241
  vector entry dicts: ``[{"propertyName": str, "vector": List[float],
@@ -10,7 +10,7 @@ if TYPE_CHECKING:
10
10
 
11
11
 
12
12
  class RelationshipPatternsAPI(BaseAPI):
13
- """Review and manage relationship patterns inferred from project ontology.
13
+ """Review and manage relationship patterns inferred from project schema.
14
14
 
15
15
  Accessed via ``db.relationships.patterns``.
16
16
  """
@@ -27,12 +27,12 @@ class RelationshipPatternsAPI(BaseAPI):
27
27
  )
28
28
 
29
29
  def list(self) -> ApiResponse:
30
- """List inferred patterns, ontology relationships, and analysis status."""
30
+ """List inferred patterns, schema relationships, and analysis status."""
31
31
  response = self.client._make_request("GET", "/relationships/patterns")
32
32
  return self._wrap(response)
33
33
 
34
34
  def analyze(self) -> ApiResponse:
35
- """Queue ontology analysis to generate relationship pattern suggestions."""
35
+ """Queue schema analysis to generate relationship pattern suggestions."""
36
36
  response = self.client._make_request(
37
37
  "POST", "/relationships/patterns/analyze", {}
38
38
  )
@@ -19,7 +19,7 @@ class ApiResponse(Generic[T]):
19
19
  total: Optional total count (e.g. for list endpoints).
20
20
 
21
21
  Example:
22
- >>> response = db.ai.get_ontology_markdown()
22
+ >>> response = db.ai.get_schema_markdown()
23
23
  >>> schema_md = response.data # str
24
24
  >>> response = db.ai.indexes.find()
25
25
  >>> indexes = response.data # list[dict]
@@ -21,8 +21,9 @@ BooleanValue = bool
21
21
  NumberValue = Union[float, int]
22
22
  StringValue = str
23
23
 
24
- # Property types
25
- PropertyType = Literal["boolean", "datetime", "null", "number", "string"]
24
+ # Property types. A None/null value means the field is unset; `None` is still accepted as an
25
+ # input value in `PropertyWithValue.value` below.
26
+ PropertyType = Literal["boolean", "datetime", "number", "string"]
26
27
 
27
28
 
28
29
  class Property(TypedDict):
@@ -1,5 +1,5 @@
1
1
  version = 1
2
- revision = 2
2
+ revision = 3
3
3
  requires-python = ">=3.8"
4
4
  resolution-markers = [
5
5
  "python_full_version >= '3.10'",
@@ -15,13 +15,13 @@ resolution-markers = [
15
15
  "python_full_version < '3.9'",
16
16
  ]
17
17
  dependencies = [
18
- { name = "click", version = "8.1.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
19
- { name = "mypy-extensions", marker = "python_full_version < '3.9'" },
20
- { name = "packaging", marker = "python_full_version < '3.9'" },
21
- { name = "pathspec", marker = "python_full_version < '3.9'" },
22
- { name = "platformdirs", version = "4.3.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
23
- { name = "tomli", marker = "python_full_version < '3.9'" },
24
- { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
18
+ { name = "click", version = "8.1.8", source = { registry = "https://pypi.org/simple" } },
19
+ { name = "mypy-extensions" },
20
+ { name = "packaging" },
21
+ { name = "pathspec" },
22
+ { name = "platformdirs", version = "4.3.6", source = { registry = "https://pypi.org/simple" } },
23
+ { name = "tomli" },
24
+ { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" } },
25
25
  ]
26
26
  sdist = { url = "https://files.pythonhosted.org/packages/04/b0/46fb0d4e00372f4a86a6f8efa3cb193c9f64863615e39010b1477e010578/black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f", size = 644810, upload-time = "2024-08-02T17:43:18.405Z" }
27
27
  wheels = [
@@ -57,14 +57,14 @@ resolution-markers = [
57
57
  "python_full_version == '3.9.*'",
58
58
  ]
59
59
  dependencies = [
60
- { name = "click", version = "8.1.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" },
60
+ { name = "click", version = "8.1.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
61
61
  { name = "click", version = "8.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
62
- { name = "mypy-extensions", marker = "python_full_version >= '3.9'" },
63
- { name = "packaging", marker = "python_full_version >= '3.9'" },
64
- { name = "pathspec", marker = "python_full_version >= '3.9'" },
65
- { name = "platformdirs", version = "4.3.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
66
- { name = "tomli", marker = "python_full_version >= '3.9' and python_full_version < '3.11'" },
67
- { name = "typing-extensions", version = "4.14.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.11'" },
62
+ { name = "mypy-extensions" },
63
+ { name = "packaging" },
64
+ { name = "pathspec" },
65
+ { name = "platformdirs", version = "4.3.8", source = { registry = "https://pypi.org/simple" } },
66
+ { name = "tomli", marker = "python_full_version < '3.11'" },
67
+ { name = "typing-extensions", version = "4.14.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
68
68
  ]
69
69
  sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449, upload-time = "2025-01-29T04:15:40.373Z" }
70
70
  wheels = [
@@ -196,7 +196,7 @@ resolution-markers = [
196
196
  "python_full_version < '3.9'",
197
197
  ]
198
198
  dependencies = [
199
- { name = "colorama", marker = "python_full_version < '3.10' and sys_platform == 'win32'" },
199
+ { name = "colorama", marker = "sys_platform == 'win32'" },
200
200
  ]
201
201
  sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload-time = "2024-12-21T18:38:44.339Z" }
202
202
  wheels = [
@@ -211,7 +211,7 @@ resolution-markers = [
211
211
  "python_full_version >= '3.10'",
212
212
  ]
213
213
  dependencies = [
214
- { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" },
214
+ { name = "colorama", marker = "sys_platform == 'win32'" },
215
215
  ]
216
216
  sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" }
217
217
  wheels = [
@@ -311,7 +311,7 @@ wheels = [
311
311
 
312
312
  [package.optional-dependencies]
313
313
  toml = [
314
- { name = "tomli", marker = "python_full_version < '3.9'" },
314
+ { name = "tomli" },
315
315
  ]
316
316
 
317
317
  [[package]]
@@ -394,7 +394,7 @@ wheels = [
394
394
 
395
395
  [package.optional-dependencies]
396
396
  toml = [
397
- { name = "tomli", marker = "python_full_version >= '3.9' and python_full_version <= '3.11'" },
397
+ { name = "tomli", marker = "python_full_version <= '3.11'" },
398
398
  ]
399
399
 
400
400
  [[package]]
@@ -402,8 +402,8 @@ name = "exceptiongroup"
402
402
  version = "1.3.0"
403
403
  source = { registry = "https://pypi.org/simple" }
404
404
  dependencies = [
405
- { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
406
- { name = "typing-extensions", version = "4.14.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.13'" },
405
+ { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9' or python_full_version >= '3.11'" },
406
+ { name = "typing-extensions", version = "4.14.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9' and python_full_version < '3.11'" },
407
407
  ]
408
408
  sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" }
409
409
  wheels = [
@@ -461,9 +461,9 @@ resolution-markers = [
461
461
  "python_full_version < '3.9'",
462
462
  ]
463
463
  dependencies = [
464
- { name = "mypy-extensions", marker = "python_full_version < '3.9'" },
465
- { name = "tomli", marker = "python_full_version < '3.9'" },
466
- { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
464
+ { name = "mypy-extensions" },
465
+ { name = "tomli" },
466
+ { name = "typing-extensions", version = "4.13.2", source = { registry = "https://pypi.org/simple" } },
467
467
  ]
468
468
  sdist = { url = "https://files.pythonhosted.org/packages/b9/eb/2c92d8ea1e684440f54fa49ac5d9a5f19967b7b472a281f419e69a8d228e/mypy-1.14.1.tar.gz", hash = "sha256:7ec88144fe9b510e8475ec2f5f251992690fcf89ccb4500b214b4226abcd32d6", size = 3216051, upload-time = "2024-12-30T16:39:07.335Z" }
469
469
  wheels = [
@@ -515,10 +515,10 @@ resolution-markers = [
515
515
  "python_full_version == '3.9.*'",
516
516
  ]
517
517
  dependencies = [
518
- { name = "mypy-extensions", marker = "python_full_version >= '3.9'" },
519
- { name = "pathspec", marker = "python_full_version >= '3.9'" },
520
- { name = "tomli", marker = "python_full_version >= '3.9' and python_full_version < '3.11'" },
521
- { name = "typing-extensions", version = "4.14.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
518
+ { name = "mypy-extensions" },
519
+ { name = "pathspec" },
520
+ { name = "tomli", marker = "python_full_version < '3.11'" },
521
+ { name = "typing-extensions", version = "4.14.0", source = { registry = "https://pypi.org/simple" } },
522
522
  ]
523
523
  sdist = { url = "https://files.pythonhosted.org/packages/81/69/92c7fa98112e4d9eb075a239caa4ef4649ad7d441545ccffbd5e34607cbb/mypy-1.16.1.tar.gz", hash = "sha256:6bd00a0a2094841c5e47e7374bb42b83d64c527a502e3334e1173a0c24437bab", size = 3324747, upload-time = "2025-06-16T16:51:35.145Z" }
524
524
  wheels = [
@@ -649,12 +649,12 @@ resolution-markers = [
649
649
  "python_full_version < '3.9'",
650
650
  ]
651
651
  dependencies = [
652
- { name = "colorama", marker = "python_full_version < '3.9' and sys_platform == 'win32'" },
653
- { name = "exceptiongroup", marker = "python_full_version < '3.9'" },
654
- { name = "iniconfig", marker = "python_full_version < '3.9'" },
655
- { name = "packaging", marker = "python_full_version < '3.9'" },
656
- { name = "pluggy", version = "1.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
657
- { name = "tomli", marker = "python_full_version < '3.9'" },
652
+ { name = "colorama", marker = "sys_platform == 'win32'" },
653
+ { name = "exceptiongroup" },
654
+ { name = "iniconfig" },
655
+ { name = "packaging" },
656
+ { name = "pluggy", version = "1.5.0", source = { registry = "https://pypi.org/simple" } },
657
+ { name = "tomli" },
658
658
  ]
659
659
  sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" }
660
660
  wheels = [
@@ -670,13 +670,13 @@ resolution-markers = [
670
670
  "python_full_version == '3.9.*'",
671
671
  ]
672
672
  dependencies = [
673
- { name = "colorama", marker = "python_full_version >= '3.9' and sys_platform == 'win32'" },
674
- { name = "exceptiongroup", marker = "python_full_version >= '3.9' and python_full_version < '3.11'" },
675
- { name = "iniconfig", marker = "python_full_version >= '3.9'" },
676
- { name = "packaging", marker = "python_full_version >= '3.9'" },
677
- { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
678
- { name = "pygments", marker = "python_full_version >= '3.9'" },
679
- { name = "tomli", marker = "python_full_version >= '3.9' and python_full_version < '3.11'" },
673
+ { name = "colorama", marker = "sys_platform == 'win32'" },
674
+ { name = "exceptiongroup", marker = "python_full_version < '3.11'" },
675
+ { name = "iniconfig" },
676
+ { name = "packaging" },
677
+ { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" } },
678
+ { name = "pygments" },
679
+ { name = "tomli", marker = "python_full_version < '3.11'" },
680
680
  ]
681
681
  sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" }
682
682
  wheels = [
@@ -691,8 +691,8 @@ resolution-markers = [
691
691
  "python_full_version < '3.9'",
692
692
  ]
693
693
  dependencies = [
694
- { name = "coverage", version = "7.6.1", source = { registry = "https://pypi.org/simple" }, extra = ["toml"], marker = "python_full_version < '3.9'" },
695
- { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
694
+ { name = "coverage", version = "7.6.1", source = { registry = "https://pypi.org/simple" }, extra = ["toml"] },
695
+ { name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" } },
696
696
  ]
697
697
  sdist = { url = "https://files.pythonhosted.org/packages/74/67/00efc8d11b630c56f15f4ad9c7f9223f1e5ec275aaae3fa9118c6a223ad2/pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857", size = 63042, upload-time = "2024-03-24T20:16:34.856Z" }
698
698
  wheels = [
@@ -708,9 +708,9 @@ resolution-markers = [
708
708
  "python_full_version == '3.9.*'",
709
709
  ]
710
710
  dependencies = [
711
- { name = "coverage", version = "7.9.1", source = { registry = "https://pypi.org/simple" }, extra = ["toml"], marker = "python_full_version >= '3.9'" },
712
- { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
713
- { name = "pytest", version = "8.4.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
711
+ { name = "coverage", version = "7.9.1", source = { registry = "https://pypi.org/simple" }, extra = ["toml"] },
712
+ { name = "pluggy", version = "1.6.0", source = { registry = "https://pypi.org/simple" } },
713
+ { name = "pytest", version = "8.4.1", source = { registry = "https://pypi.org/simple" } },
714
714
  ]
715
715
  sdist = { url = "https://files.pythonhosted.org/packages/18/99/668cade231f434aaa59bbfbf49469068d2ddd945000621d3d165d2e7dd7b/pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2", size = 69432, upload-time = "2025-06-12T10:47:47.684Z" }
716
716
  wheels = [
@@ -785,7 +785,7 @@ wheels = [
785
785
 
786
786
  [[package]]
787
787
  name = "rushdb"
788
- version = "2.3.0"
788
+ version = "2.6.0"
789
789
  source = { editable = "." }
790
790
  dependencies = [
791
791
  { name = "python-dotenv", version = "1.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
@@ -930,7 +930,7 @@ resolution-markers = [
930
930
  "python_full_version < '3.9'",
931
931
  ]
932
932
  dependencies = [
933
- { name = "urllib3", version = "2.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
933
+ { name = "urllib3", version = "2.2.3", source = { registry = "https://pypi.org/simple" } },
934
934
  ]
935
935
  sdist = { url = "https://files.pythonhosted.org/packages/fa/3c/4f2a430c01a22abd49a583b6b944173e39e7d01b688190a5618bd59a2e22/types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95", size = 18065, upload-time = "2024-10-16T02:46:10.818Z" }
936
936
  wheels = [
@@ -946,7 +946,7 @@ resolution-markers = [
946
946
  "python_full_version == '3.9.*'",
947
947
  ]
948
948
  dependencies = [
949
- { name = "urllib3", version = "2.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
949
+ { name = "urllib3", version = "2.5.0", source = { registry = "https://pypi.org/simple" } },
950
950
  ]
951
951
  sdist = { url = "https://files.pythonhosted.org/packages/6d/7f/73b3a04a53b0fd2a911d4ec517940ecd6600630b559e4505cc7b68beb5a0/types_requests-2.32.4.20250611.tar.gz", hash = "sha256:741c8777ed6425830bf51e54d6abe245f79b4dcb9019f1622b773463946bf826", size = 23118, upload-time = "2025-06-11T03:11:41.272Z" }
952
952
  wheels = [
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes