lorebase-store 0.2.3__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.
- lorebase_store/__init__.py +1 -0
- lorebase_store/_migrations/env.py +106 -0
- lorebase_store/_migrations/script.py.mako +27 -0
- lorebase_store/_migrations/versions/0001_initial_schema.py +1071 -0
- lorebase_store/_migrations/versions/0002_merge_attempt_details.py +74 -0
- lorebase_store/_migrations/versions/0003_webhooks.py +127 -0
- lorebase_store/_migrations/versions/0004_defer_revision_references.py +38 -0
- lorebase_store/_migrations/versions/0005_security_definer_reads.py +396 -0
- lorebase_store/_migrations/versions/0006_api_key_usage.py +48 -0
- lorebase_store/_migrations/versions/0007_document_extraction.py +154 -0
- lorebase_store/_migrations/versions/0008_definer_argument_checks.py +178 -0
- lorebase_store/_migrations/versions/0009_api_key_networks.py +33 -0
- lorebase_store/_migrations/versions/0010_overlay_branches.py +582 -0
- lorebase_store/_migrations/versions/0011_branch_scoped_search_index.py +229 -0
- lorebase_store/_migrations/versions/0012_overlay_neighborhood_lookups.py +185 -0
- lorebase_store/_migrations/versions/0013_web_sessions.py +72 -0
- lorebase_store/_migrations/versions/0014_embedding_jobs.py +70 -0
- lorebase_store/_migrations/versions/0015_append_only_audit_log.py +83 -0
- lorebase_store/_migrations/versions/0016_sealed_webhook_keys.py +55 -0
- lorebase_store/_migrations/versions/0017_background_branch_copies.py +77 -0
- lorebase_store/_migrations/versions/0018_search_lexicon.py +477 -0
- lorebase_store/_migrations/versions/0019_vault_bindings.py +56 -0
- lorebase_store/_migrations/versions/0020_outbox_consumers.py +150 -0
- lorebase_store/_migrations/versions/0021_schema_suggestions.py +114 -0
- lorebase_store/_migrations/versions/0022_read_audit_and_shared_rate_limits.py +133 -0
- lorebase_store/_migrations/versions/0023_agent_trace.py +96 -0
- lorebase_store/_migrations/versions/0024_embedding_template_keys.py +205 -0
- lorebase_store/_migrations/versions/0025_snapshot_refs.py +35 -0
- lorebase_store/_migrations/versions/0026_plain_reverse_link_index.py +112 -0
- lorebase_store/_migrations/versions/0027_vault_rotation_and_tombstones.py +145 -0
- lorebase_store/_migrations/versions/0028_operation_deferred_events.py +71 -0
- lorebase_store/_migrations/versions/0029_agent_trace_sessions.py +108 -0
- lorebase_store/_migrations/versions/0030_path_fanout.py +31 -0
- lorebase_store/_migrations/versions/0031_branch_builds.py +91 -0
- lorebase_store/_migrations/versions/0032_lineage_revisions.py +35 -0
- lorebase_store/_migrations/versions/0033_vault_moved_tokens.py +30 -0
- lorebase_store/_migrations/versions/0034_inference_endpoint_modes.py +73 -0
- lorebase_store/_migrations/versions/0035_search_truncation.py +104 -0
- lorebase_store/_migrations/versions/0036_lineage_maps.py +325 -0
- lorebase_store/_migrations/versions/0037_bm25_search.py +346 -0
- lorebase_store/auth/__init__.py +52 -0
- lorebase_store/auth/api_keys.py +161 -0
- lorebase_store/auth/audit.py +382 -0
- lorebase_store/auth/checkpoints.py +185 -0
- lorebase_store/auth/grants.py +161 -0
- lorebase_store/auth/principals.py +158 -0
- lorebase_store/auth/scope.py +70 -0
- lorebase_store/auth/sessions.py +153 -0
- lorebase_store/auth/unit.py +53 -0
- lorebase_store/auth/usage.py +70 -0
- lorebase_store/blobs.py +73 -0
- lorebase_store/bm25.py +346 -0
- lorebase_store/bulk.py +147 -0
- lorebase_store/bundle.py +1830 -0
- lorebase_store/changefeed.py +261 -0
- lorebase_store/commit/__init__.py +42 -0
- lorebase_store/commit/changes.py +67 -0
- lorebase_store/commit/errors.py +60 -0
- lorebase_store/commit/migrations.py +335 -0
- lorebase_store/commit/pipeline.py +754 -0
- lorebase_store/commit/schema.py +123 -0
- lorebase_store/db.py +58 -0
- lorebase_store/definer.py +50 -0
- lorebase_store/digests.py +99 -0
- lorebase_store/embeddings.py +444 -0
- lorebase_store/endpoint_modes.py +59 -0
- lorebase_store/extraction/__init__.py +61 -0
- lorebase_store/extraction/items.py +187 -0
- lorebase_store/extraction/materialize.py +364 -0
- lorebase_store/extraction/proposal.py +65 -0
- lorebase_store/extraction/review.py +168 -0
- lorebase_store/gc.py +970 -0
- lorebase_store/indexes.py +1033 -0
- lorebase_store/jobs.py +651 -0
- lorebase_store/keyring.py +72 -0
- lorebase_store/layout.py +335 -0
- lorebase_store/materialize/__init__.py +103 -0
- lorebase_store/materialize/apply.py +436 -0
- lorebase_store/materialize/background.py +1184 -0
- lorebase_store/materialize/branch.py +268 -0
- lorebase_store/materialize/build.py +536 -0
- lorebase_store/materialize/derived.py +540 -0
- lorebase_store/materialize/lineage_backfill.py +502 -0
- lorebase_store/materialize/links.py +266 -0
- lorebase_store/materialize/overlay.py +292 -0
- lorebase_store/materialize/paths.py +315 -0
- lorebase_store/materialize/rebuild.py +326 -0
- lorebase_store/materialize/rows.py +153 -0
- lorebase_store/materialize/sensitivity.py +66 -0
- lorebase_store/materialize/snapshot.py +205 -0
- lorebase_store/materialize/stale.py +444 -0
- lorebase_store/materialize/verify.py +321 -0
- lorebase_store/merging/__init__.py +39 -0
- lorebase_store/merging/attempts.py +334 -0
- lorebase_store/merging/lineage.py +123 -0
- lorebase_store/merging/service.py +652 -0
- lorebase_store/migrations.py +133 -0
- lorebase_store/models/__init__.py +136 -0
- lorebase_store/models/base.py +64 -0
- lorebase_store/models/enums.py +132 -0
- lorebase_store/models/governance.py +268 -0
- lorebase_store/models/ingestion.py +288 -0
- lorebase_store/models/materialized.py +277 -0
- lorebase_store/models/proposals.py +195 -0
- lorebase_store/models/queues.py +87 -0
- lorebase_store/models/tracing.py +116 -0
- lorebase_store/models/versioning.py +222 -0
- lorebase_store/models/webhooks.py +96 -0
- lorebase_store/nodestore.py +384 -0
- lorebase_store/objectstore.py +162 -0
- lorebase_store/outbox_events.py +166 -0
- lorebase_store/profiling/__init__.py +58 -0
- lorebase_store/profiling/delimited.py +109 -0
- lorebase_store/profiling/postgres.py +211 -0
- lorebase_store/profiling/record_files.py +127 -0
- lorebase_store/profiling/records.py +92 -0
- lorebase_store/profiling/sql_databases.py +298 -0
- lorebase_store/ratelimit.py +129 -0
- lorebase_store/reads.py +1491 -0
- lorebase_store/replicas.py +434 -0
- lorebase_store/repositories/__init__.py +152 -0
- lorebase_store/repositories/changesets.py +59 -0
- lorebase_store/repositories/deferred_events.py +142 -0
- lorebase_store/repositories/documents.py +305 -0
- lorebase_store/repositories/domains.py +97 -0
- lorebase_store/repositories/events.py +205 -0
- lorebase_store/repositories/index_view.py +489 -0
- lorebase_store/repositories/invocations.py +68 -0
- lorebase_store/repositories/materializations.py +276 -0
- lorebase_store/repositories/materialized.py +1129 -0
- lorebase_store/repositories/merges.py +417 -0
- lorebase_store/repositories/proposal_items.py +199 -0
- lorebase_store/repositories/proposals.py +184 -0
- lorebase_store/repositories/provenance.py +77 -0
- lorebase_store/repositories/refs.py +452 -0
- lorebase_store/repositories/revisions.py +273 -0
- lorebase_store/repositories/scope.py +33 -0
- lorebase_store/repositories/source_runs.py +123 -0
- lorebase_store/repositories/suggestions.py +638 -0
- lorebase_store/runtime.py +87 -0
- lorebase_store/schema_cache.py +50 -0
- lorebase_store/settings.py +879 -0
- lorebase_store/storage.py +1478 -0
- lorebase_store/telemetry.py +142 -0
- lorebase_store/testing.py +108 -0
- lorebase_store/tracing.py +505 -0
- lorebase_store/traverse.py +578 -0
- lorebase_store/vault/__init__.py +50 -0
- lorebase_store/vault/keys.py +216 -0
- lorebase_store/vault/quotes.py +133 -0
- lorebase_store/vault/rotation.py +209 -0
- lorebase_store/vault/settings.py +152 -0
- lorebase_store/vault/store.py +987 -0
- lorebase_store/vault/transfer.py +558 -0
- lorebase_store/webhooks/__init__.py +24 -0
- lorebase_store/webhooks/delivery.py +637 -0
- lorebase_store/webhooks/keys.py +126 -0
- lorebase_store/webhooks/repository.py +142 -0
- lorebase_store/webhooks/settings.py +138 -0
- lorebase_store/webhooks/signing.py +50 -0
- lorebase_store-0.2.3.dist-info/METADATA +13 -0
- lorebase_store-0.2.3.dist-info/RECORD +163 -0
- lorebase_store-0.2.3.dist-info/WHEEL +4 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.3"
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"""Alembic environment: async engine from the `database` section, layout from `store`.
|
|
2
|
+
|
|
3
|
+
`lorebase_store.migrations` may pass settings and a URL override through `config.attributes`;
|
|
4
|
+
anything missing (always, for `alembic upgrade head` on the command line) comes from
|
|
5
|
+
`load_settings()`, so `LOREBASE__DATABASE__DSN` and `LOREBASE_CONFIG` apply.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import asyncio
|
|
11
|
+
from logging.config import fileConfig
|
|
12
|
+
from typing import Any
|
|
13
|
+
|
|
14
|
+
from alembic import context
|
|
15
|
+
from alembic.migration import MigrationContext
|
|
16
|
+
from alembic.script import ScriptDirectory
|
|
17
|
+
from sqlalchemy.engine import Connection
|
|
18
|
+
|
|
19
|
+
from lorebase_platform.settings import load_settings
|
|
20
|
+
from lorebase_store.db import async_url, create_engine
|
|
21
|
+
from lorebase_store.migrations import (
|
|
22
|
+
DATABASE_ATTRIBUTE,
|
|
23
|
+
STORE_ATTRIBUTE,
|
|
24
|
+
URL_ATTRIBUTE,
|
|
25
|
+
check_known_revisions,
|
|
26
|
+
include_object,
|
|
27
|
+
)
|
|
28
|
+
from lorebase_store.models import metadata
|
|
29
|
+
from lorebase_store.settings import (
|
|
30
|
+
DatabaseSettings,
|
|
31
|
+
database_settings,
|
|
32
|
+
store_settings,
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
config = context.config
|
|
36
|
+
if config.config_file_name is not None:
|
|
37
|
+
fileConfig(config.config_file_name, disable_existing_loggers=False)
|
|
38
|
+
|
|
39
|
+
if DATABASE_ATTRIBUTE not in config.attributes or STORE_ATTRIBUTE not in config.attributes:
|
|
40
|
+
loaded = load_settings()
|
|
41
|
+
config.attributes.setdefault(DATABASE_ATTRIBUTE, database_settings(loaded))
|
|
42
|
+
config.attributes.setdefault(STORE_ATTRIBUTE, store_settings(loaded))
|
|
43
|
+
database: DatabaseSettings = config.attributes[DATABASE_ATTRIBUTE]
|
|
44
|
+
url: str = config.attributes.get(URL_ATTRIBUTE) or database.dsn.get_secret_value()
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _configure(**options: Any) -> None:
|
|
48
|
+
context.configure(
|
|
49
|
+
target_metadata=metadata,
|
|
50
|
+
include_object=include_object,
|
|
51
|
+
compare_type=True,
|
|
52
|
+
transaction_per_migration=True,
|
|
53
|
+
**options,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def run_offline() -> None:
|
|
58
|
+
"""Emit SQL instead of executing it."""
|
|
59
|
+
_configure(
|
|
60
|
+
url=async_url(url).render_as_string(hide_password=False),
|
|
61
|
+
literal_binds=True,
|
|
62
|
+
dialect_opts={"paramstyle": "named"},
|
|
63
|
+
)
|
|
64
|
+
with context.begin_transaction():
|
|
65
|
+
context.run_migrations()
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _invoked_command() -> str | None:
|
|
69
|
+
"""Name of the `alembic` command line command being run; None when called from code."""
|
|
70
|
+
invocation = getattr(config.cmd_opts, "cmd", None)
|
|
71
|
+
return getattr(invocation[0], "__name__", None) if invocation else None
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def _run_sync(connection: Connection) -> None:
|
|
75
|
+
# `stamp --purge` is the manual way to repair the version table, so it is left alone.
|
|
76
|
+
if _invoked_command() != "stamp":
|
|
77
|
+
current = MigrationContext.configure(connection).get_current_heads()
|
|
78
|
+
# The read began a transaction; end it so that migrations manage their own (some run
|
|
79
|
+
# steps in autocommit blocks).
|
|
80
|
+
if connection.in_transaction():
|
|
81
|
+
connection.rollback()
|
|
82
|
+
check_known_revisions(ScriptDirectory.from_config(config), current)
|
|
83
|
+
_configure(connection=connection)
|
|
84
|
+
with context.begin_transaction():
|
|
85
|
+
context.run_migrations()
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
async def run_online() -> None:
|
|
89
|
+
"""Run migrations on a dedicated, unpooled connection."""
|
|
90
|
+
engine = create_engine(
|
|
91
|
+
database,
|
|
92
|
+
url=url,
|
|
93
|
+
pooled=False,
|
|
94
|
+
statement_timeout_ms=database.migration_statement_timeout_ms,
|
|
95
|
+
)
|
|
96
|
+
try:
|
|
97
|
+
async with engine.connect() as connection:
|
|
98
|
+
await connection.run_sync(_run_sync)
|
|
99
|
+
finally:
|
|
100
|
+
await engine.dispose()
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
if context.is_offline_mode():
|
|
104
|
+
run_offline()
|
|
105
|
+
else:
|
|
106
|
+
asyncio.run(run_online())
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""${message}
|
|
2
|
+
|
|
3
|
+
Revision ID: ${up_revision}
|
|
4
|
+
Revises: ${down_revision | comma,n}
|
|
5
|
+
Create Date: ${create_date}
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from collections.abc import Sequence
|
|
11
|
+
|
|
12
|
+
import sqlalchemy as sa
|
|
13
|
+
from alembic import op
|
|
14
|
+
${imports if imports else ""}
|
|
15
|
+
|
|
16
|
+
revision: str = ${repr(up_revision)}
|
|
17
|
+
down_revision: str | Sequence[str] | None = ${repr(down_revision)}
|
|
18
|
+
branch_labels: str | Sequence[str] | None = ${repr(branch_labels)}
|
|
19
|
+
depends_on: str | Sequence[str] | None = ${repr(depends_on)}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def upgrade() -> None:
|
|
23
|
+
${upgrades if upgrades else "pass"}
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def downgrade() -> None:
|
|
27
|
+
${downgrades if downgrades else "pass"}
|