beaver-db 0.16.0__tar.gz → 0.16.1__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.

Potentially problematic release.


This version of beaver-db might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beaver-db
3
- Version: 0.16.0
3
+ Version: 0.16.1
4
4
  Summary: Fast, embedded, and multi-modal DB based on SQLite for AI-powered applications.
5
5
  Requires-Python: >=3.13
6
6
  Description-Content-Type: text/markdown
@@ -40,38 +40,40 @@ class ListManager[T]:
40
40
  Retrieves an item or slice from the list (e.g., `my_list[0]`, `my_list[1:3]`).
41
41
  """
42
42
  if isinstance(key, slice):
43
- start, stop, step = key.indices(len(self))
44
- if step != 1:
45
- raise ValueError("Slicing with a step is not supported.")
46
-
47
- limit = stop - start
48
- if limit <= 0:
49
- return []
50
-
51
- cursor = self._conn.cursor()
52
- cursor.execute(
53
- "SELECT item_value FROM beaver_lists WHERE list_name = ? ORDER BY item_order ASC LIMIT ? OFFSET ?",
54
- (self._name, limit, start),
55
- )
56
- results = [self._deserialize(row["item_value"]) for row in cursor.fetchall()]
57
- cursor.close()
58
- return results
43
+ with self._conn:
44
+ start, stop, step = key.indices(len(self))
45
+ if step != 1:
46
+ raise ValueError("Slicing with a step is not supported.")
47
+
48
+ limit = stop - start
49
+ if limit <= 0:
50
+ return []
51
+
52
+ cursor = self._conn.cursor()
53
+ cursor.execute(
54
+ "SELECT item_value FROM beaver_lists WHERE list_name = ? ORDER BY item_order ASC LIMIT ? OFFSET ?",
55
+ (self._name, limit, start),
56
+ )
57
+ results = [self._deserialize(row["item_value"]) for row in cursor.fetchall()]
58
+ cursor.close()
59
+ return results
59
60
 
60
61
  elif isinstance(key, int):
61
- list_len = len(self)
62
- if key < -list_len or key >= list_len:
63
- raise IndexError("List index out of range.")
64
-
65
- offset = key if key >= 0 else list_len + key
66
-
67
- cursor = self._conn.cursor()
68
- cursor.execute(
69
- "SELECT item_value FROM beaver_lists WHERE list_name = ? ORDER BY item_order ASC LIMIT 1 OFFSET ?",
70
- (self._name, offset),
71
- )
72
- result = cursor.fetchone()
73
- cursor.close()
74
- return self._deserialize(result["item_value"])
62
+ with self._conn:
63
+ list_len = len(self)
64
+ if key < -list_len or key >= list_len:
65
+ raise IndexError("List index out of range.")
66
+
67
+ offset = key if key >= 0 else list_len + key
68
+
69
+ cursor = self._conn.cursor()
70
+ cursor.execute(
71
+ "SELECT item_value FROM beaver_lists WHERE list_name = ? ORDER BY item_order ASC LIMIT 1 OFFSET ?",
72
+ (self._name, offset),
73
+ )
74
+ result = cursor.fetchone()
75
+ cursor.close()
76
+ return self._deserialize(result["item_value"])
75
77
 
76
78
  else:
77
79
  raise TypeError("List indices must be integers or slices.")
@@ -81,13 +83,13 @@ class ListManager[T]:
81
83
  if not isinstance(key, int):
82
84
  raise TypeError("List indices must be integers.")
83
85
 
84
- list_len = len(self)
85
- if key < -list_len or key >= list_len:
86
- raise IndexError("List index out of range.")
86
+ with self._conn:
87
+ list_len = len(self)
88
+ if key < -list_len or key >= list_len:
89
+ raise IndexError("List index out of range.")
87
90
 
88
- offset = key if key >= 0 else list_len + key
91
+ offset = key if key >= 0 else list_len + key
89
92
 
90
- with self._conn:
91
93
  cursor = self._conn.cursor()
92
94
  # Find the rowid of the item to update
93
95
  cursor.execute(
@@ -110,13 +112,13 @@ class ListManager[T]:
110
112
  if not isinstance(key, int):
111
113
  raise TypeError("List indices must be integers.")
112
114
 
113
- list_len = len(self)
114
- if key < -list_len or key >= list_len:
115
- raise IndexError("List index out of range.")
115
+ with self._conn:
116
+ list_len = len(self)
117
+ if key < -list_len or key >= list_len:
118
+ raise IndexError("List index out of range.")
116
119
 
117
- offset = key if key >= 0 else list_len + key
120
+ offset = key if key >= 0 else list_len + key
118
121
 
119
- with self._conn:
120
122
  cursor = self._conn.cursor()
121
123
  # Find the rowid of the item to delete
122
124
  cursor.execute(
@@ -206,20 +208,20 @@ class ListManager[T]:
206
208
 
207
209
  def insert(self, index: int, value: T):
208
210
  """Inserts an item at a specific index."""
209
- list_len = len(self)
210
- if index <= 0:
211
- self.prepend(value)
212
- return
213
- if index >= list_len:
214
- self.push(value)
215
- return
216
-
217
- # Midpoint insertion for O(1) inserts
218
- order_before = self._get_order_at_index(index - 1)
219
- order_after = self._get_order_at_index(index)
220
- new_order = order_before + (order_after - order_before) / 2.0
221
-
222
211
  with self._conn:
212
+ list_len = len(self)
213
+ if index <= 0:
214
+ self.prepend(value)
215
+ return
216
+ if index >= list_len:
217
+ self.push(value)
218
+ return
219
+
220
+ # Midpoint insertion for O(1) inserts
221
+ order_before = self._get_order_at_index(index - 1)
222
+ order_after = self._get_order_at_index(index)
223
+ new_order = order_before + (order_after - order_before) / 2.0
224
+
223
225
  self._conn.execute(
224
226
  "INSERT INTO beaver_lists (list_name, item_order, item_value) VALUES (?, ?, ?)",
225
227
  (self._name, new_order, self._serialize(value)),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beaver-db
3
- Version: 0.16.0
3
+ Version: 0.16.1
4
4
  Summary: Fast, embedded, and multi-modal DB based on SQLite for AI-powered applications.
5
5
  Requires-Python: >=3.13
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "beaver-db"
3
- version = "0.16.0"
3
+ version = "0.16.1"
4
4
  description = "Fast, embedded, and multi-modal DB based on SQLite for AI-powered applications."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
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