compair-core 0.3.4__tar.gz → 0.3.5__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 compair-core might be problematic. Click here for more details.
- {compair_core-0.3.4/compair_core.egg-info → compair_core-0.3.5}/PKG-INFO +1 -1
- {compair_core-0.3.4 → compair_core-0.3.5}/compair/models.py +35 -35
- compair_core-0.3.5/compair/utils.py +42 -0
- {compair_core-0.3.4 → compair_core-0.3.5/compair_core.egg-info}/PKG-INFO +1 -1
- {compair_core-0.3.4 → compair_core-0.3.5}/pyproject.toml +1 -1
- compair_core-0.3.4/compair/utils.py +0 -61
- {compair_core-0.3.4 → compair_core-0.3.5}/LICENSE +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/README.md +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair/__init__.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair/celery_app.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair/default_groups.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair/embeddings.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair/feedback.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair/logger.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair/main.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair/schema.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair/tasks.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair_core.egg-info/SOURCES.txt +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair_core.egg-info/dependency_links.txt +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair_core.egg-info/requires.txt +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair_core.egg-info/top_level.txt +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair_email/__init__.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair_email/email.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair_email/email_core.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair_email/templates.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/compair_email/templates_core.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/__init__.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/app.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/deps.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/local_model/__init__.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/local_model/app.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/providers/__init__.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/providers/console_mailer.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/providers/contracts.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/providers/local_storage.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/providers/noop_analytics.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/providers/noop_billing.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/providers/noop_ocr.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/routers/__init__.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/routers/capabilities.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/server/settings.py +0 -0
- {compair_core-0.3.4 → compair_core-0.3.5}/setup.cfg +0 -0
|
@@ -38,7 +38,7 @@ class BaseObject(Base):
|
|
|
38
38
|
|
|
39
39
|
class User(Base):
|
|
40
40
|
__tablename__ = "user"
|
|
41
|
-
|
|
41
|
+
|
|
42
42
|
|
|
43
43
|
user_id: Mapped[str] = mapped_column(String(36), primary_key=True, init=False, default=lambda: str(uuid4()))
|
|
44
44
|
username: Mapped[str] = mapped_column(String(128))
|
|
@@ -108,17 +108,17 @@ class User(Base):
|
|
|
108
108
|
|
|
109
109
|
class Session(Base):
|
|
110
110
|
__tablename__ = "session"
|
|
111
|
-
|
|
111
|
+
|
|
112
112
|
|
|
113
113
|
id: Mapped[str] = mapped_column(String(128), primary_key=True, init=True)
|
|
114
|
-
user_id: Mapped[str] = mapped_column(ForeignKey("
|
|
114
|
+
user_id: Mapped[str] = mapped_column(ForeignKey("user.user_id", ondelete="CASCADE"), index=True)
|
|
115
115
|
datetime_created: Mapped[datetime]
|
|
116
116
|
datetime_valid_until: Mapped[datetime]
|
|
117
117
|
|
|
118
118
|
|
|
119
119
|
class Group(BaseObject):
|
|
120
120
|
__tablename__ = "group"
|
|
121
|
-
|
|
121
|
+
|
|
122
122
|
|
|
123
123
|
group_id: Mapped[str] = mapped_column(String(36), primary_key=True, init=False, default=lambda: str(uuid4()))
|
|
124
124
|
name: Mapped[str] = mapped_column(String(256))
|
|
@@ -150,10 +150,10 @@ class Group(BaseObject):
|
|
|
150
150
|
|
|
151
151
|
class Administrator(Base):
|
|
152
152
|
__tablename__ = "administrator"
|
|
153
|
-
|
|
153
|
+
|
|
154
154
|
|
|
155
155
|
admin_id: Mapped[str] = mapped_column(String(36), primary_key=True, init=False, default=lambda: str(uuid4()))
|
|
156
|
-
user_id: Mapped[str] = mapped_column(ForeignKey("
|
|
156
|
+
user_id: Mapped[str] = mapped_column(ForeignKey("user.user_id", ondelete="CASCADE"), index=True)
|
|
157
157
|
|
|
158
158
|
user = relationship("User")
|
|
159
159
|
groups = relationship("Group", secondary="admin_to_group", back_populates="admins")
|
|
@@ -161,11 +161,11 @@ class Administrator(Base):
|
|
|
161
161
|
|
|
162
162
|
class JoinRequest(Base):
|
|
163
163
|
__tablename__ = "join_request"
|
|
164
|
-
|
|
164
|
+
|
|
165
165
|
|
|
166
166
|
request_id: Mapped[int] = mapped_column(Identity(), primary_key=True, autoincrement=True, init=False)
|
|
167
|
-
user_id: Mapped[str] = mapped_column(ForeignKey("
|
|
168
|
-
group_id: Mapped[str] = mapped_column(ForeignKey("
|
|
167
|
+
user_id: Mapped[str] = mapped_column(ForeignKey("user.user_id", ondelete="CASCADE"))
|
|
168
|
+
group_id: Mapped[str] = mapped_column(ForeignKey("group.group_id", ondelete="CASCADE"))
|
|
169
169
|
datetime_requested: Mapped[datetime] = mapped_column(default=datetime.now(timezone.utc), init=False)
|
|
170
170
|
|
|
171
171
|
user = relationship("User")
|
|
@@ -174,11 +174,11 @@ class JoinRequest(Base):
|
|
|
174
174
|
|
|
175
175
|
class GroupInvitation(Base):
|
|
176
176
|
__tablename__ = "group_invitation"
|
|
177
|
-
|
|
177
|
+
|
|
178
178
|
|
|
179
179
|
invitation_id: Mapped[int] = mapped_column(Integer, Identity(), primary_key=True, autoincrement=True, init=False)
|
|
180
|
-
group_id: Mapped[str] = mapped_column(ForeignKey("
|
|
181
|
-
inviter_id: Mapped[str] = mapped_column(ForeignKey("
|
|
180
|
+
group_id: Mapped[str] = mapped_column(ForeignKey("group.group_id", ondelete="CASCADE"))
|
|
181
|
+
inviter_id: Mapped[str] = mapped_column(ForeignKey("user.user_id", ondelete="CASCADE"))
|
|
182
182
|
token: Mapped[str] = mapped_column(String(64), unique=True, nullable=False)
|
|
183
183
|
email: Mapped[str | None] = mapped_column(String(256), nullable=True)
|
|
184
184
|
datetime_expiration: Mapped[datetime]
|
|
@@ -191,10 +191,10 @@ class GroupInvitation(Base):
|
|
|
191
191
|
|
|
192
192
|
class Document(BaseObject):
|
|
193
193
|
__tablename__ = "document"
|
|
194
|
-
|
|
194
|
+
|
|
195
195
|
|
|
196
196
|
document_id: Mapped[str] = mapped_column(String(36), primary_key=True, init=False, default=lambda: str(uuid4()))
|
|
197
|
-
user_id: Mapped[str] = mapped_column(ForeignKey("
|
|
197
|
+
user_id: Mapped[str] = mapped_column(ForeignKey("user.user_id", ondelete="CASCADE"), index=True)
|
|
198
198
|
author_id: Mapped[str]
|
|
199
199
|
title: Mapped[str]
|
|
200
200
|
content: Mapped[str] = mapped_column(Text)
|
|
@@ -230,12 +230,12 @@ class Document(BaseObject):
|
|
|
230
230
|
|
|
231
231
|
class Note(Base):
|
|
232
232
|
__tablename__ = "note"
|
|
233
|
-
|
|
233
|
+
|
|
234
234
|
|
|
235
235
|
note_id: Mapped[str] = mapped_column(String(36), primary_key=True, init=False, default=lambda: str(uuid4()))
|
|
236
|
-
document_id: Mapped[str] = mapped_column(ForeignKey("
|
|
237
|
-
author_id: Mapped[str] = mapped_column(ForeignKey("
|
|
238
|
-
group_id: Mapped[str | None] = mapped_column(ForeignKey("
|
|
236
|
+
document_id: Mapped[str] = mapped_column(ForeignKey("document.document_id", ondelete="CASCADE"), index=True)
|
|
237
|
+
author_id: Mapped[str] = mapped_column(ForeignKey("user.user_id", ondelete="CASCADE"), index=True)
|
|
238
|
+
group_id: Mapped[str | None] = mapped_column(ForeignKey("group.group_id", ondelete="CASCADE"), index=True, nullable=True)
|
|
239
239
|
content: Mapped[str] = mapped_column(Text)
|
|
240
240
|
datetime_created: Mapped[datetime] = mapped_column(default=datetime.now(timezone.utc))
|
|
241
241
|
embedding = mapped_column(Vector(1536))
|
|
@@ -259,13 +259,13 @@ class Note(Base):
|
|
|
259
259
|
|
|
260
260
|
class Chunk(Base):
|
|
261
261
|
__tablename__ = "chunk"
|
|
262
|
-
|
|
262
|
+
|
|
263
263
|
|
|
264
264
|
chunk_id: Mapped[str] = mapped_column(String(36), primary_key=True, init=False, default=lambda: str(uuid4()))
|
|
265
265
|
hash: Mapped[str] = mapped_column(String(32))
|
|
266
266
|
content: Mapped[str] = mapped_column(Text)
|
|
267
|
-
document_id: Mapped[str | None] = mapped_column(ForeignKey("
|
|
268
|
-
note_id: Mapped[str | None] = mapped_column(ForeignKey("
|
|
267
|
+
document_id: Mapped[str | None] = mapped_column(ForeignKey("document.document_id", ondelete="CASCADE"), index=True, nullable=True)
|
|
268
|
+
note_id: Mapped[str | None] = mapped_column(ForeignKey("note.note_id", ondelete="CASCADE"), index=True, nullable=True)
|
|
269
269
|
chunk_type: Mapped[str] = mapped_column(String(16), default="document")
|
|
270
270
|
embedding = mapped_column(Vector(1536))
|
|
271
271
|
|
|
@@ -287,12 +287,12 @@ class Chunk(Base):
|
|
|
287
287
|
|
|
288
288
|
class Reference(Base):
|
|
289
289
|
__tablename__ = "reference"
|
|
290
|
-
|
|
290
|
+
|
|
291
291
|
|
|
292
292
|
reference_id: Mapped[str] = mapped_column(String(36), primary_key=True, init=False, default=lambda: str(uuid4()))
|
|
293
|
-
source_chunk_id: Mapped[str] = mapped_column(ForeignKey("
|
|
294
|
-
reference_document_id: Mapped[str | None] = mapped_column(ForeignKey("
|
|
295
|
-
reference_note_id: Mapped[str | None] = mapped_column(ForeignKey("
|
|
293
|
+
source_chunk_id: Mapped[str] = mapped_column(ForeignKey("chunk.chunk_id", ondelete="CASCADE"), index=True)
|
|
294
|
+
reference_document_id: Mapped[str | None] = mapped_column(ForeignKey("document.document_id", ondelete="CASCADE"), index=True, nullable=True)
|
|
295
|
+
reference_note_id: Mapped[str | None] = mapped_column(ForeignKey("note.note_id", ondelete="CASCADE"), index=True, nullable=True)
|
|
296
296
|
reference_type: Mapped[str] = mapped_column(String(16), default="document")
|
|
297
297
|
|
|
298
298
|
chunk = relationship("Chunk", back_populates="references")
|
|
@@ -302,10 +302,10 @@ class Reference(Base):
|
|
|
302
302
|
|
|
303
303
|
class Feedback(Base):
|
|
304
304
|
__tablename__ = "feedback"
|
|
305
|
-
|
|
305
|
+
|
|
306
306
|
|
|
307
307
|
feedback_id: Mapped[str] = mapped_column(String(36), primary_key=True, init=False, default=lambda: str(uuid4()))
|
|
308
|
-
source_chunk_id: Mapped[str] = mapped_column(ForeignKey("
|
|
308
|
+
source_chunk_id: Mapped[str] = mapped_column(ForeignKey("chunk.chunk_id", ondelete="CASCADE"), index=True)
|
|
309
309
|
feedback: Mapped[str] = mapped_column(Text)
|
|
310
310
|
model: Mapped[str] = mapped_column(Text)
|
|
311
311
|
timestamp: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=datetime.now(timezone.utc))
|
|
@@ -318,31 +318,31 @@ class Feedback(Base):
|
|
|
318
318
|
user_to_group_table = Table(
|
|
319
319
|
"user_to_group",
|
|
320
320
|
Base.metadata,
|
|
321
|
-
Column("user_id", ForeignKey("
|
|
322
|
-
Column("group_id", ForeignKey("
|
|
321
|
+
Column("user_id", ForeignKey("user.user_id", ondelete="CASCADE"), primary_key=True),
|
|
322
|
+
Column("group_id", ForeignKey("group.group_id", ondelete="CASCADE"), primary_key=True),
|
|
323
323
|
)
|
|
324
324
|
|
|
325
325
|
|
|
326
326
|
admin_to_group_table = Table(
|
|
327
327
|
"admin_to_group",
|
|
328
328
|
Base.metadata,
|
|
329
|
-
Column("admin_id", ForeignKey("
|
|
330
|
-
Column("group_id", ForeignKey("
|
|
329
|
+
Column("admin_id", ForeignKey("administrator.admin_id", ondelete="CASCADE"), primary_key=True),
|
|
330
|
+
Column("group_id", ForeignKey("group.group_id", ondelete="CASCADE"), primary_key=True),
|
|
331
331
|
)
|
|
332
332
|
|
|
333
333
|
|
|
334
334
|
document_to_group_table = Table(
|
|
335
335
|
"document_to_group",
|
|
336
336
|
Base.metadata,
|
|
337
|
-
Column("document_id", ForeignKey("
|
|
338
|
-
Column("group_id", ForeignKey("
|
|
337
|
+
Column("document_id", ForeignKey("document.document_id", ondelete="CASCADE"), primary_key=True),
|
|
338
|
+
Column("group_id", ForeignKey("group.group_id", ondelete="CASCADE"), primary_key=True),
|
|
339
339
|
)
|
|
340
340
|
|
|
341
341
|
note_to_group_table = Table(
|
|
342
342
|
"note_to_group",
|
|
343
343
|
Base.metadata,
|
|
344
|
-
Column("note_id", ForeignKey("
|
|
345
|
-
Column("group_id", ForeignKey("
|
|
344
|
+
Column("note_id", ForeignKey("note.note_id", ondelete="CASCADE"), primary_key=True),
|
|
345
|
+
Column("group_id", ForeignKey("group.group_id", ondelete="CASCADE"), primary_key=True),
|
|
346
346
|
)
|
|
347
347
|
|
|
348
348
|
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import secrets
|
|
4
|
+
from datetime import datetime, timedelta, timezone
|
|
5
|
+
|
|
6
|
+
from sqlalchemy.orm import Session
|
|
7
|
+
|
|
8
|
+
from compair.models import Activity
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def chunk_text(text: str) -> list[str]:
|
|
12
|
+
chunks = text.split("\n\n")
|
|
13
|
+
chunks = [c.strip() for c in chunks]
|
|
14
|
+
return [c for c in chunks if c]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def generate_verification_token() -> tuple[str, datetime]:
|
|
18
|
+
token = secrets.token_urlsafe(32)
|
|
19
|
+
expiration = datetime.now(timezone.utc) + timedelta(hours=24)
|
|
20
|
+
return token, expiration
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def log_activity(
|
|
24
|
+
session: Session,
|
|
25
|
+
user_id: str,
|
|
26
|
+
group_id: str,
|
|
27
|
+
action: str,
|
|
28
|
+
object_id: str,
|
|
29
|
+
object_name: str,
|
|
30
|
+
object_type: str,
|
|
31
|
+
) -> None:
|
|
32
|
+
activity = Activity(
|
|
33
|
+
user_id=user_id,
|
|
34
|
+
group_id=group_id,
|
|
35
|
+
action=action,
|
|
36
|
+
object_id=object_id,
|
|
37
|
+
object_name=object_name,
|
|
38
|
+
object_type=object_type,
|
|
39
|
+
timestamp=datetime.now(timezone.utc),
|
|
40
|
+
)
|
|
41
|
+
session.add(activity)
|
|
42
|
+
session.commit()
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import secrets
|
|
4
|
-
from datetime import datetime, timedelta, timezone
|
|
5
|
-
from typing import Any
|
|
6
|
-
|
|
7
|
-
from sqlalchemy.orm import Session
|
|
8
|
-
|
|
9
|
-
try:
|
|
10
|
-
from compair_cloud.utils import log_activity as cloud_log_activity # type: ignore
|
|
11
|
-
except (ImportError, ModuleNotFoundError):
|
|
12
|
-
cloud_log_activity = None
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def chunk_text(text: str) -> list[str]:
|
|
16
|
-
chunks = text.split("\n\n")
|
|
17
|
-
chunks = [c.strip() for c in chunks]
|
|
18
|
-
return [c for c in chunks if c]
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
def generate_verification_token() -> tuple[str, datetime]:
|
|
22
|
-
token = secrets.token_urlsafe(32)
|
|
23
|
-
expiration = datetime.now(timezone.utc) + timedelta(hours=24)
|
|
24
|
-
return token, expiration
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
def log_activity(
|
|
28
|
-
session: Session,
|
|
29
|
-
user_id: str,
|
|
30
|
-
group_id: str,
|
|
31
|
-
action: str,
|
|
32
|
-
object_id: str,
|
|
33
|
-
object_name: str,
|
|
34
|
-
object_type: str,
|
|
35
|
-
) -> None:
|
|
36
|
-
if cloud_log_activity:
|
|
37
|
-
cloud_log_activity(
|
|
38
|
-
session=session,
|
|
39
|
-
user_id=user_id,
|
|
40
|
-
group_id=group_id,
|
|
41
|
-
action=action,
|
|
42
|
-
object_id=object_id,
|
|
43
|
-
object_name=object_name,
|
|
44
|
-
object_type=object_type,
|
|
45
|
-
)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
def aggregate_usage_by_user() -> dict[str, Any]:
|
|
49
|
-
if cloud_log_activity:
|
|
50
|
-
from compair_cloud.utils import aggregate_usage_by_user as cloud_usage # type: ignore
|
|
51
|
-
|
|
52
|
-
return cloud_usage()
|
|
53
|
-
return {}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
def aggregate_service_resources() -> dict[str, Any]:
|
|
57
|
-
if cloud_log_activity:
|
|
58
|
-
from compair_cloud.utils import aggregate_service_resources as cloud_resources # type: ignore
|
|
59
|
-
|
|
60
|
-
return cloud_resources()
|
|
61
|
-
return {}
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|