Skip to main content

sekejap

Embedded, graph-first multimodel database. Graph traversal, spatial search, vector similarity, and full-text search — composable in a single query, zero external dependencies, runs in-process.

Built for workloads that need more than one data model at a time:

  • root-cause analysis — traverse a causal graph filtered by text relevance
  • hybrid RAG — find semantically similar nodes then walk their graph context
  • knowledge graph discovery — spatial + graph + vector in one query
  • spatiotemporal intelligence — who was where, connected to what, when

Available as a Rust library, Rust CLI, and Python library.


Hello World — One Piece

The Grand Line is a graph. Islands are nodes. Sailing routes are edges. Characters have bounties, affiliations, fighting styles, and coordinates.

from sekejap import DB

db = DB()

# ── Schema ────────────────────────────────────────────────────────────────────

db.execute("""
    CREATE TABLE characters (
        _key       TEXT PRIMARY KEY,
        name       TEXT,
        crew       TEXT,
        bounty     INTEGER,
        location   GEO,
        embedding  VECTOR
    )
""")

db.execute("""
    CREATE TABLE islands (
        _key     TEXT PRIMARY KEY,
        name     TEXT,
        sea      TEXT,
        geometry GEO
    )
""")

db.execute("CREATE INDEX ON characters USING hash    (crew)")
db.execute("CREATE INDEX ON characters USING btree   (bounty)")
db.execute("CREATE INDEX ON characters USING gin     (name)")
db.execute("CREATE INDEX ON characters USING spatial (location)")
db.execute("CREATE INDEX ON characters USING hnsw    (embedding)")
db.execute("CREATE INDEX ON islands    USING spatial (geometry)")

# ── Nodes ─────────────────────────────────────────────────────────────────────

db.execute("INSERT INTO characters (_key, name, crew, bounty) VALUES ('luffy',  'Monkey D. Luffy',  'straw-hat',  3000000000)")
db.execute("INSERT INTO characters (_key, name, crew, bounty) VALUES ('zoro',   'Roronoa Zoro',     'straw-hat',  1111000000)")
db.execute("INSERT INTO characters (_key, name, crew, bounty) VALUES ('sanji',  'Vinsmoke Sanji',   'straw-hat',  1032000000)")
db.execute("INSERT INTO characters (_key, name, crew, bounty) VALUES ('shanks', 'Red Hair Shanks',  'red-hair',   4048900000)")
db.execute("INSERT INTO characters (_key, name, crew, bounty) VALUES ('mihawk', 'Dracule Mihawk',   'shichibukai', 0)")

db.execute("INSERT INTO islands (_key, name, sea) VALUES ('marineford',     'Marineford',     'grand-line')")
db.execute("INSERT INTO islands (_key, name, sea) VALUES ('dressrosa',      'Dressrosa',      'grand-line')")
db.execute("INSERT INTO islands (_key, name, sea) VALUES ('wano',           'Wano Kuni',      'grand-line')")
db.execute("INSERT INTO islands (_key, name, sea) VALUES ('fishman-island', 'Fishman Island', 'grand-line')")

# ── Edges ─────────────────────────────────────────────────────────────────────

db.execute("INSERT ('characters/luffy')-[:rival {strength: 10}]->('characters/mihawk')")
db.execute("INSERT ('characters/zoro')-[:student_of {years: 3}]->('characters/mihawk')")
db.execute("INSERT ('characters/shanks')-[:allied_with {trust: 10}]->('characters/luffy')")
db.execute("INSERT ('islands/marineford')-[:route_to {days: 3}]->('islands/fishman-island')")
db.execute("INSERT ('islands/fishman-island')-[:route_to {days: 7}]->('islands/dressrosa')")
db.execute("INSERT ('islands/dressrosa')-[:route_to {days: 5}]->('islands/wano')")
# ── Graph: who trained under Mihawk, and who are their rivals? ────────────────

hits = db.query("""
    SELECT b._key AS name
    FROM MATCH (a:characters)-[:student_of]->(:characters {_key: 'mihawk'})<-[:rival]-(b:characters)
""")

# ── Graph: reachable islands within 3 hops from Marineford ───────────────────

hits = db.query("""
    SELECT dest._key AS island
    FROM MATCH (start:islands)-[:route_to*1..3]->(dest:islands)
    WHERE start._key = 'marineford'
""")

# ── Aggregate: total route days from Marineford to each destination ───────────

hits = db.query("""
    SELECT dest._key AS island, SUM(r.days) AS total_days
    FROM MATCH (start:islands)-[r:route_to*1..3]->(dest:islands)
    WHERE start._key = 'marineford'
    GROUP BY dest._key
    ORDER BY total_days ASC
""")

# ── Spatial: islands within 1000 km of Marineford (0°, 0°) ───────────────────

hits = db.query("""
    SELECT * FROM islands
    WHERE ST_DWithin(geometry, POINT(0.0 0.0), 1000.0)
""")

# ── Vector: characters with similar fighting style to Zoro ───────────────────

zoro_vec = [0.95, 0.02, 0.01, 0.02]   # hypothetical embedding
hits = db.query(f"SELECT * FROM characters WHERE VECTOR_NEAR(embedding, {zoro_vec}, 5)")

# ── BM25: search bounty posters by wanted description ────────────────────────

hits = db.query("""
    SELECT * FROM characters
    WHERE BM25(description, 'swordsman pirate dangerous') > 0.3
    ORDER BY BM25(description, 'swordsman pirate dangerous') DESC
""")

Data Types

Type SQL keyword Stored as Use for
Text TEXT UTF-8 string names, categories, IDs
Integer INTEGER i64 counts, years, bounties
Float REAL f64 scores, weights, ratios
Timestamp TIMESTAMPTZ ISO-8601 events, creation time
Geometry GEO GeoJSON object points, polygons, lines
Vector VECTOR [f32, ...] array embeddings
JSON JSON arbitrary JSON nested / unstructured

GEO accepts any GeoJSON geometry — Point, Polygon, LineString, MultiPolygon, etc.

VECTOR is inserted as a SQL array literal: [0.12, -0.03, 0.87, ...]


Indexes

Index USING keyword Enables
Hash hash field = 'val', IN (...), equality lookups
B-tree btree >, <, BETWEEN, ORDER BY field
GIN gin ILIKE '%pattern%' (exact trigram postings, no verification step)
Spatial spatial ST_DWithin, ST_Contains, ST_Within, ST_Intersects
HNSW hnsw VECTOR_NEAR(field, [...], k), ORDER BY field <=> [...], VECTOR_COSINE(field, [...]) in score expressions
BM25 bm25 BM25(field, 'query') > score, ORDER BY BM25(...) DESC, BM25(...) in score expressions

All indexes are built via CREATE INDEX:

CREATE INDEX ON characters USING hash    (crew)
CREATE INDEX ON characters USING btree   (bounty)
CREATE INDEX ON characters USING gin     (name)
CREATE INDEX ON characters USING spatial (location)
CREATE INDEX ON characters USING hnsw    (embedding)
CREATE INDEX ON characters USING bm25    (bio)

Or declared inline in CREATE TABLE WITH (...):

CREATE TABLE characters (
    _key      TEXT PRIMARY KEY,
    name      TEXT,
    bounty    INTEGER,
    location  GEO,
    embedding VECTOR,
    bio       TEXT
) WITH (hash: ['_key'], range: ['bounty'], fulltext: ['name'], spatial: ['location'], vector: ['embedding'], bm25: ['bio'])

GIN stores exact trigram→document postings (no lossy signatures), so ILIKE queries require no verification pass. GIN is maintained automatically on every insert — declaring the index before loading data is the standard workflow.

HNSW is rebuilt automatically after each put_vector call when an index is declared. For large bulk loads, call REINDEX once after all data is in to rebuild the graph in one pass.

BM25 is batch-built at CREATE INDEX time. Run REINDEX after inserting new documents.

All index types survive a cold restart. Hash, B-tree, GIN, and BM25 indexes are rebuilt from persisted schema hints on open. HNSW and Spatial indexes are stored directly in the snapshot.


Interfaces

sekejap has three interfaces. Use whichever fits the context.

SQL

Standard SQL for schema, mutations, and queries. Use this most of the time.

-- Schema
CREATE TABLE islands (_key TEXT PRIMARY KEY, name TEXT, sea TEXT, geometry GEO)
CREATE INDEX ON islands USING spatial (geometry)

-- Mutations
INSERT INTO islands (_key, name, sea) VALUES ('wano', 'Wano Kuni', 'grand-line')
UPDATE islands SET sea = 'new-world' WHERE _key = 'wano'
DELETE FROM islands WHERE sea = 'east-blue'

-- Schema lifecycle
DROP TABLE islands
DROP TABLE IF EXISTS islands

-- DROP INDEX
DROP INDEX ON islands USING spatial (geometry)
DROP INDEX IF EXISTS ON islands USING btree (elevation)

-- REINDEX (force rebuild — useful after large bulk loads)
REINDEX ON researchers USING hnsw    (embedding)
REINDEX ON papers      USING bm25    (abstract)
REINDEX ON characters  USING gin     (name)

-- ALTER TABLE (PostgreSQL-style)
ALTER TABLE islands ADD COLUMN elevation INTEGER
ALTER TABLE islands DROP COLUMN elevation
ALTER TABLE islands DROP COLUMN IF EXISTS elevation
ALTER TABLE islands RENAME COLUMN sea TO ocean
ALTER TABLE islands RENAME TO atolls
ALTER TABLE islands ALTER COLUMN elevation TYPE REAL

-- Edges
INSERT ('islands/marineford')-[:route_to {days: 3}]->('islands/fishman-island')
DELETE ('islands/marineford')-[:route_to]->('islands/fishman-island')

-- Graph traversal
SELECT dest._key AS island
FROM MATCH (a:islands)-[:route_to*1..5]->(dest:islands)
WHERE a._key = 'marineford'

-- Graph aggregation
SELECT b._key AS name, COUNT(a) AS allies, SUM(r.strength) AS total_strength
FROM MATCH (a:characters)-[r:collaborated_with]->(b:characters)
GROUP BY b._key
ORDER BY total_strength DESC
LIMIT 10

-- Multi-stage graph query with WITH chaining
SELECT c.name AS island, COUNT(*) AS visitors
FROM MATCH (a:characters)-[:allied_with]->(b:characters)
WHERE a._key = 'luffy'
WITH b
MATCH (b)-[:visited]->(c:islands)
GROUP BY c.name
ORDER BY visitors DESC

-- MATCH...RETURN (Cypher-style, also via query())
MATCH (a:characters)-[:rival]->(b:characters)
RETURN a._key AS name, b.bounty AS rival_bounty

-- Edge intrinsics: _depth, _path_keys, _path_strength, _avg_strength, _min/_max_strength
-- Available on any named edge binding (e.g. [r:route_to] or [r*])
SELECT dest._key AS island, r2._depth AS hops, r2._path_keys AS route
FROM MATCH (start:islands)-[r:route_to]->(stop:islands)-[r2:route_to]->(dest:islands)
WHERE start._key = 'marineford'

-- PATH_* aggregates — operate on a JSON array in a path intrinsic field
-- PATH_AVG, PATH_SUM, PATH_MIN, PATH_MAX, PATH_PRODUCT, PATH_FIRST, PATH_LAST
SELECT c._key AS dest,
       PATH_PRODUCT(r2._path_strength) AS combined_reliability,
       PATH_FIRST(r2._path_keys)       AS departure,
       PATH_LAST(r2._path_keys)        AS arrival
FROM MATCH (a:islands)-[r:route_to]->(b:islands)-[r2:route_to]->(c:islands)
WHERE a._key = 'marineford'

-- CASE WHEN — conditional expression in SELECT list
SELECT b._key AS name,
       CASE WHEN r._depth = 1 THEN 'direct'
            WHEN r._depth = 2 THEN 'indirect'
            ELSE 'distant'
       END AS rivalry_type
FROM MATCH (a:characters)-[r:rival]->(b:characters)

-- Time expressions: NOW(), AGE_DAYS(var.field), AGE_HOURS(var.field)
-- NOW() returns current Unix timestamp (seconds as i64)
-- AGE_DAYS / AGE_HOURS accept a Unix int or "YYYY-MM-DD" string field
SELECT b._key AS name,
       AGE_DAYS(b.last_seen) AS days_since_seen,
       NOW()                  AS queried_at
FROM MATCH (a:characters)-[r:rival]->(b:characters)

-- JSON_ARRAY_LENGTH — length of a JSON array field
SELECT b._key AS dest, JSON_ARRAY_LENGTH(r._path_keys) AS hops_plus_one
FROM MATCH (a:islands)-[r:route_to*1..3]->(b:islands)
WHERE a._key = 'marineford'

-- Shortest path — 0 rows = unreachable, 1 row = found (path fields via r.*)
SELECT a.name AS from_name, b.name AS to_name, r.length AS hops, r._path_keys AS route
FROM MATCH SHORTEST (a)-[r*]->(b)
WHERE a._key = 'islands/marineford' AND b._key = 'islands/wano'
-- Path predicates (ANY / ALL / NONE / SINGLE)
AND ANY(n IN nodes(r) WHERE n.climate = 'tropical')

-- Multi-FROM cross-join — two independent sources Cartesian-producted
SELECT a._key AS island, b._key AS character
FROM MATCH ('crews/straw-hats')-[:member]->(b), islands AS a

-- Spatial
SELECT * FROM islands WHERE ST_DWithin(geometry, POINT(0.0 0.0), 500.0)
SELECT * FROM zones   WHERE ST_Contains(geometry, POINT(144.9671 -37.8183))

-- Vector
SELECT * FROM characters WHERE VECTOR_NEAR(embedding, [0.9, 0.1, 0.0], 5)

-- Full-text (GIN — fast exact ILIKE, no score)
SELECT * FROM characters WHERE name ILIKE '%shanks%'

-- Full-text (BM25 — relevance-ranked)
SELECT * FROM papers WHERE BM25(abstract, 'neural network') > 0.3
ORDER BY BM25(abstract, 'neural network') DESC

-- Arithmetic ORDER BY (weighted multi-signal ranking)
-- Combine any signals with +, -, *, /, (), and unary negation
ORDER BY BM25(title, 'pirate') * 0.7 + BM25(bio, 'pirate') * 0.3 DESC
ORDER BY BM25(title, 'pirate') * 0.5 + bounty * 0.5 DESC
ORDER BY VECTOR_COSINE(embedding, [0.9, 0.1, 0.0]) * 0.6 + BM25(bio, 'pirate') * 0.4 DESC
ORDER BY (BM25(title, 'luffy') + BM25(bio, 'luffy')) * 0.8 + threat_level * 0.2 DESC

-- Spatial signal: ST_DISTANCE_KM(geometry_field, POINT(lon lat)) → km (f64)
-- Negate to rank nearest-first: -ST_DISTANCE_KM(...) DESC
ORDER BY -ST_DISTANCE_KM(location, POINT(144.9671 -37.8183)) DESC

-- Vector distance operators (compile to same score node as the function forms)
-- a <=> b  ==  VECTOR_COSINE(a, b)    cosine distance (lower = more similar)
-- a <-> b  ==  VECTOR_L2(a, b)        Euclidean / L2
-- a <#> b  ==  VECTOR_DOT(a, b)       inner product (NOT negated, unlike pgvector)
-- a <+> b  ==  VECTOR_L1(a, b)        Manhattan / L1
ORDER BY embedding <=> [0.9, 0.1, 0.0] ASC   -- nearest cosine first

-- VECTOR_COSINE(field, [vec]) returns cosine distance (lower = more similar)
-- Numeric payload fields are coerced to f64 (absent or non-numeric = 0.0)
-- Default direction for score expressions is DESC (highest score first)

-- Filters
WHERE bounty BETWEEN 1000000000 AND 4000000000
WHERE crew IN ('straw-hat', 'red-hair')
WHERE name ILIKE '%luffy%'
WHERE description IS NOT NULL
AND / OR / NOT

-- Introspection
SHOW TABLES                                  -- all collections with row counts
SHOW EDGES                                   -- full graph schema with edge counts
SHOW EDGES FROM characters                   -- edge types leaving a collection + counts
SHOW EDGES FROM characters TO islands        -- edge types between two collections + counts
SHOW characters                              -- field structure (declared schema or inferred)

Graph path queries

SELECT … FROM MATCH SHORTEST finds the shortest directed path between two nodes. Returns 1 row when a path is found, 0 rows when none exists. Path fields are exposed via the path-bind variable (e.g. r): r.length, r._path_keys, r._path_strength, r.nodes, r.edges.

hits = db.query("""
    SELECT a.name AS from_name, b.name AS to_name,
           r.length AS hops, r._path_keys AS route
    FROM MATCH SHORTEST (a)-[r*]->(b)
    WHERE a._key = 'islands/marineford' AND b._key = 'islands/wano'
""")

if hits:
    import json
    row = json.loads(hits[0].payload)
    print(f"Shortest route: {row['hops']} hops")
    for slug in row['route']:
        print(" ", slug)

Path predicates filter on intermediate nodes:

# Only keep paths where every node has a tropical climate
hits = db.query("""
    SELECT r.length AS hops
    FROM MATCH SHORTEST (a)-[r*]->(b)
    WHERE a._key = 'islands/marineford' AND b._key = 'islands/wano'
    AND ALL(n IN nodes(r) WHERE n.climate = 'tropical')
""")

### Atomic (Rust fluent builder)

Use when you need lower-level control  pre-resolved hashes, programmatic step composition, or performance-sensitive inner loops.

```rust
use sekejap::CoreDB;

let mut db = CoreDB::open("./data")?;

// Fluent scan with filters
let hits = db.collection("characters")
    .where_eq("crew", "straw-hat")
    .where_gte("bounty", 1_000_000_000)
    .order_by("bounty", true)   // true = descending
    .limit(10)
    .collect();

// Vector similarity
let hits = db.collection("characters")
    .vector_near("embedding", query_vec, 10)
    .collect();

// Spatial radius
let hits = db.collection("islands")
    .st_dwithin(-37.8183, 144.9671, 5.0)   // lat, lon, km
    .collect();

// Raw node operations
db.put("characters/luffy", r#"{"_collection":"characters","_key":"luffy","name":"Luffy"}"#)?;
db.get("characters/luffy");
db.remove("characters/luffy");

// Edges
db.link("characters/zoro", "characters/mihawk", "student_of", 1.0);
db.link_meta("islands/marineford", "islands/fishman-island", "route_to", 1.0, r#"{"days":3}"#)?;
db.unlink("characters/zoro", "characters/mihawk", "student_of");

// Shortest path  0 rows = unreachable, 1 row = found
let hits = db.query(
    "SELECT a.name AS from_n, b.name AS to_n, r.length AS hops, r._path_keys AS route \
     FROM MATCH SHORTEST (a)-[r*]->(b) \
     WHERE a._key = 'islands/marineford' AND b._key = 'islands/wano'"
)?.collect();
if let Some(hit) = hits.first() {
    if let Some(p) = &hit.payload {
        println!("{} hops", p["hops"]);
        if let Some(arr) = p["route"].as_array() {
            for slug in arr { println!("  {}", slug); }
        }
    }
}

Python DataFrame (db.df)

Use for data science workflows — loading from CSV/parquet, returning query results as DataFrames.

import pandas as pd
import json
from sekejap import DB

db = DB("./data")

# ── Load from DataFrame ───────────────────────────────────────────────────────

df = pd.read_csv("characters.csv")
# map DataFrame columns to schema field names
db.df.load_nodes(df, "characters", id_col="character_id",
                 mapping={"character_id": "_key", "full_name": "name"})

df_routes = pd.read_csv("routes.csv")  # columns: from_island, to_island, days
db.df.load_edges(
    df_routes,
    source_col="from_island",
    target_col="to_island",
    edge_type="route_to",
    source_collection="islands",
    target_collection="islands",
    weight_col="days",
)

# ── Query → DataFrame ─────────────────────────────────────────────────────────

df = db.df.query("SELECT * FROM characters WHERE bounty >= 1000000000")
df = db.df.query("SELECT * FROM characters WHERE VECTOR_NEAR(embedding, [0.9, 0.1, 0.0], 20)")
df = db.df.query("SELECT * FROM islands WHERE ST_DWithin(geometry, POINT(0.0 0.0), 500.0)")

# ── Create collection from field spec ────────────────────────────────────────

db.df.create_collection(
    "characters",
    fields={
        "_key":      "TEXT PRIMARY KEY",
        "name":      "TEXT",
        "bounty":    "INTEGER",
        "location":  "GEO",
        "embedding": "VECTOR",
    },
    hash_index=["_key", "crew"],
    range_index=["bounty"],
    spatial_index=["location"],
    vector_index=["embedding"],
)

Full Data Science Example — Grand Line Intelligence

A pirate intelligence system combining all four data models.

Schema and data loading

from sekejap import DB
import pandas as pd
import numpy as np
import json

db = DB("./grandline_db")

db.execute("""
    CREATE TABLE characters (
        _key       TEXT PRIMARY KEY,
        name       TEXT,
        crew       TEXT,
        role       TEXT,
        bounty     INTEGER,
        location   GEO,
        embedding  VECTOR
    )
""")
db.execute("""
    CREATE TABLE bounty_posters (
        _key        TEXT PRIMARY KEY,
        subject     TEXT,
        description TEXT,
        bounty      INTEGER,
        year        INTEGER
    )
""")

db.execute("CREATE INDEX ON characters     USING hash    (crew)")
db.execute("CREATE INDEX ON characters     USING btree   (bounty)")
db.execute("CREATE INDEX ON characters     USING gin     (name)")
db.execute("CREATE INDEX ON characters     USING spatial (location)")
db.execute("CREATE INDEX ON characters     USING hnsw    (embedding)")
db.execute("CREATE INDEX ON bounty_posters USING bm25    (description)")

# Load from CSV + numpy embeddings
df = pd.read_csv("characters.csv")
embeddings = np.load("embeddings.npy")   # shape (n, 384)
df["location"] = df.apply(
    lambda r: json.dumps({"type": "Point", "coordinates": [r.lon, r.lat]}), axis=1
)
df["embedding"] = [e.tolist() for e in embeddings]

db.df.load_nodes(df, "characters", id_col="character_id",
                 mapping={"character_id": "_key"})

db.df.load_edges(
    pd.read_csv("rivalries.csv"),
    source_col="from_id",
    target_col="to_id",
    edge_type="rival",
    source_collection="characters",
    target_collection="characters",
    weight_col="intensity",
)

Spatial — powerful pirates in the New World

df = db.df.query("""
    SELECT * FROM characters
    WHERE ST_DWithin(location, POINT(0.0 0.0), 500.0)
      AND crew != 'marine'
      AND bounty >= 1000000000
    ORDER BY bounty DESC
    LIMIT 20
""")

Vector — characters with similar fighting style

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("all-MiniLM-L6-v2")
vec = model.encode("swordsman close-range power haki").tolist()

df = db.df.query(f"""
    SELECT * FROM characters
    WHERE VECTOR_NEAR(embedding, {vec}, 10)
      AND bounty >= 500000000
""")

Graph — rival and alliance networks, path queries

# Shortest path between two characters (0 rows = unreachable)
hits = db.query("""
    SELECT r.length AS hops, r._path_keys AS route
    FROM MATCH SHORTEST (a)-[r*]->(b)
    WHERE a._key = 'characters/luffy' AND b._key = 'characters/mihawk'
""")
if hits:
    import json
    row = json.loads(hits[0].payload)
    print(f"Degrees of separation: {row['hops']}")
    for slug in row['route']:
        print(" ", slug)

# 2-hop rival network from Luffy
hits = db.query("""
    SELECT b._key AS name
    FROM MATCH (a:characters)-[:rival*1..2]->(b:characters)
    WHERE a._key = 'luffy'
""")

# Most feared pirates by rival count
hits = db.query("""
    SELECT b._key AS pirate, COUNT(a) AS rivals, SUM(r.intensity) AS total_threat
    FROM MATCH (a:characters)-[r:rival]->(b:characters)
    GROUP BY b._key
    ORDER BY total_threat DESC
    LIMIT 10
""")

# Cross-crew rivalries
hits = db.query("""
    SELECT a.crew AS from_crew, b.crew AS to_crew, COUNT(r) AS clashes
    FROM MATCH (a:characters)-[r:rival]->(b:characters)
    GROUP BY a.crew, b.crew
    ORDER BY clashes DESC
""")

PATH_* aggregates — aggregate over path arrays

Edge bindings expose path intrinsics as JSON arrays: _path_keys, _path_strength, _path_length. PATH_* functions aggregate over those arrays in a single SELECT expression.

# PATH_PRODUCT: multiply all strengths along a 2-hop route (reliability score)
hits = db.query("""
    SELECT dest._key AS island,
           PATH_PRODUCT(r2._path_strength) AS route_reliability,
           PATH_FIRST(r2._path_keys)       AS departure,
           PATH_LAST(r2._path_keys)        AS arrival
    FROM MATCH (start:islands)-[r:route_to]->(mid:islands)-[r2:route_to]->(dest:islands)
    WHERE start._key = 'marineford'
    ORDER BY route_reliability DESC
""")

# PATH_AVG / PATH_SUM / PATH_MIN / PATH_MAX / PATH_FIRST / PATH_LAST work the same way
hits = db.query("""
    SELECT c._key AS target,
           PATH_MIN(r2._path_strength)  AS weakest_link,
           PATH_AVG(r2._path_strength)  AS avg_intensity
    FROM MATCH (a:characters)-[r:rival]->(b:characters)-[r2:rival]->(c:characters)
    WHERE a._key = 'shanks'
    ORDER BY avg_intensity DESC
""")

CASE WHEN, time functions, JSON_ARRAY_LENGTH

# CASE WHEN — conditional expression in SELECT list
hits = db.query("""
    SELECT b._key AS name,
           CASE WHEN r._depth = 1 THEN 'direct rival'
                WHEN r._depth = 2 THEN 'indirect rival'
                ELSE 'distant connection'
           END AS rivalry_type
    FROM MATCH (a:characters)-[r:rival]->(b:characters)
""")

# AGE_DAYS / AGE_HOURS — time since a field's epoch (Unix int or "YYYY-MM-DD")
# NOW() — current Unix timestamp in seconds
hits = db.query("""
    SELECT b._key                AS name,
           AGE_DAYS(b.last_seen) AS days_inactive,
           NOW()                 AS queried_at
    FROM MATCH (a:characters)-[r:rival]->(b:characters)
    ORDER BY days_inactive DESC
""")

# JSON_ARRAY_LENGTH — length of a JSON array field (e.g. _path_keys)
hits = db.query("""
    SELECT dest._key                       AS island,
           JSON_ARRAY_LENGTH(r._path_keys) AS stops
    FROM MATCH (start:islands)-[r:route_to*1..3]->(dest:islands)
    WHERE start._key = 'marineford'
    ORDER BY stops ASC
""")

BM25 — search bounty posters

df = db.df.query("""
    SELECT * FROM bounty_posters
    WHERE BM25(description, 'swordsman dangerous haki') > 0.2
      AND bounty >= 100000000
    ORDER BY BM25(description, 'swordsman dangerous haki') DESC
""")

Multi-modal — spatial + graph + vector in one workflow

# "Pirates near Marineford who are in Shanks' rival network
#  and have a similar fighting style to Whitebeard"

whitebeard_vec = model.encode("massive power conqueror close-range").tolist()

# Step 1: find pirates near Marineford (0°, 0°)
nearby = db.df.query("SELECT * FROM characters WHERE ST_DWithin(location, POINT(0.0 0.0), 300.0)")

# Step 2: walk Shanks' rival graph
rivals = db.query("""
    SELECT b._key AS name
    FROM MATCH (a:characters)-[:rival*1..3]->(b:characters)
    WHERE a._key = 'shanks'
""")
rival_keys = {json.loads(h.payload)["name"] for h in rivals if h.payload}

# Step 3: filter nearby pirates who appear in the rival graph
candidates = nearby[nearby["_key"].isin(rival_keys)]
keys_clause = ", ".join(f"'{k}'" for k in candidates["_key"])

# Step 4: rank by vector similarity to Whitebeard
result = db.df.query(f"""
    SELECT * FROM characters
    WHERE _key IN ({keys_clause})
      AND VECTOR_NEAR(embedding, {whitebeard_vec}, 5)
""")

Installation

# Rust library
cargo add sekejap

# Rust CLI
cargo install sekejap-cli

# Python
pip install sekejap

CLI

sekejap                              # in-memory REPL
sekejap ./data                       # persistent REPL
sekejap ./data "SELECT * FROM r;"    # one-shot
echo "SELECT...;" | sekejap ./data   # pipe script

sekejap> CREATE TABLE islands (_key TEXT, name TEXT, geometry GEO);
sekejap> INSERT INTO islands (_key, name, sea) VALUES ('wano', 'Wano Kuni', 'grand-line');
sekejap> SELECT * FROM islands WHERE ST_DWithin(geometry, POINT(0.0 0.0), 500.0);

-- Introspection (SQL)
sekejap> SHOW TABLES;
sekejap> SHOW EDGES;
sekejap> SHOW EDGES FROM characters;
sekejap> SHOW characters;

-- Introspection (dot commands  same results, tabular output)
sekejap> .tables
sekejap> .edges
sekejap> .edges characters
sekejap> .schema islands
sekejap> .stats
sekejap> .help

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sekejap-0.12.0.tar.gz (364.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sekejap-0.12.0-cp313-cp313-win_amd64.whl (4.8 MB view details)

Uploaded CPython 3.13Windows x86-64

sekejap-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

sekejap-0.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

sekejap-0.12.0-cp312-cp312-win_amd64.whl (4.8 MB view details)

Uploaded CPython 3.12Windows x86-64

sekejap-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

sekejap-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

sekejap-0.12.0-cp311-cp311-win_amd64.whl (4.8 MB view details)

Uploaded CPython 3.11Windows x86-64

sekejap-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

sekejap-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

sekejap-0.12.0-cp310-cp310-win_amd64.whl (4.9 MB view details)

Uploaded CPython 3.10Windows x86-64

sekejap-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

sekejap-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

sekejap-0.12.0-cp39-cp39-win_amd64.whl (4.8 MB view details)

Uploaded CPython 3.9Windows x86-64

sekejap-0.12.0-cp39-cp39-manylinux_2_28_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

sekejap-0.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

sekejap-0.12.0-cp38-cp38-win_amd64.whl (4.8 MB view details)

Uploaded CPython 3.8Windows x86-64

sekejap-0.12.0-cp38-cp38-manylinux_2_28_aarch64.whl (5.6 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

sekejap-0.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

Details for the file sekejap-0.12.0.tar.gz.

File metadata

  • Download URL: sekejap-0.12.0.tar.gz
  • Upload date:
  • Size: 364.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sekejap-0.12.0.tar.gz
Algorithm Hash digest
SHA256 d80559a2b19052f57a17749ecb56b40676c9cd6cceab1d33d856c60e38c65ea4
MD5 b12ae510b7205f75dc204676ad05e5f7
BLAKE2b-256 3ed8ac691b601c2aea14df1ebd65f3db4d7cc87624df97709cf2c5272b60ad3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0.tar.gz:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: sekejap-0.12.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 4.8 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sekejap-0.12.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3af12a7654079d2689369fd95f462b3fb9c183fafdb030281af10f7cf877da5b
MD5 3ad8b66beac47ba11e324e95ce18b3ca
BLAKE2b-256 55934665368f63bef4b2c5a34d917bfc4339948a473e23ae74249f6ef54a8b3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp313-cp313-win_amd64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sekejap-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6a1317b8c1eb285556a70ed638210e3257e8cf9ff30aa5bd8749409b3df326f1
MD5 9f5d3a567be04a0ddcc3d0e003cfe97e
BLAKE2b-256 1750b29a4b8f06246fdd09234218f5bc3943b4baf8ea1dbb454294a77c27407c

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sekejap-0.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8bf5a187094677153396b269cc38265bcd27fdd31e810e8e2b2e959d948be86d
MD5 74e15c8a0f7486ea5ce0d532ed97faad
BLAKE2b-256 66eede9c4eb93f536531b253094faf6c387b0ef11707e0c5d9784a05d32b2d71

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: sekejap-0.12.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 4.8 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sekejap-0.12.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 301b8df99d80fd103f351ced27f8fc7f621fa38c635071ada51d1dd29183a985
MD5 ff8ac31428ccf03876f888fe0d43412d
BLAKE2b-256 f8b1182698ae5444aad2066d01d93583870c9106dbe6929e57ca95be07f1c2b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp312-cp312-win_amd64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sekejap-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0cbf138c0ddd7fa5dbf680004e26d1f23e6509623659de7927db706625dca085
MD5 3a084fe97482f2d7e49e48a9dea6e3cc
BLAKE2b-256 3bd45ee00e05d91daacdae19edd6898bf8866f29fc3811bc1f1d78fbd38f6bb1

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sekejap-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 99cbee51b4dab4c430bd358d02ada6407c13bd58b1f4e1482caef6499e2eb09d
MD5 ab0f14a16c6f338c7bd5fcb520f3ddc6
BLAKE2b-256 9a7e321b97ac2eaa040dedbc8c0b8fb52359dd75b540ad6515251b013f10fa70

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: sekejap-0.12.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 4.8 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sekejap-0.12.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d4722012e18fcf19465fa7e41367232defab87991423142bd4b446ff092329a9
MD5 43457547c6db9ee5fbfc5b16b17174a7
BLAKE2b-256 20fc5309f62e235a7849e5e8bae679e002e7b02117e2dfdd3a8021fcb9c45b98

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp311-cp311-win_amd64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sekejap-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 21d253cefb5d720c24ca72f8568a3dae479eb5a181e49e48130420c02a33cb82
MD5 9be35c5e53f5a65946ec379051086c83
BLAKE2b-256 42392ddd4b2d011565b29f1153ce09dd54069cc9606b55e43b403424fb0fa74e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sekejap-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a38cee4e40c92a0256e2c7b00ce312b4d3f5fed26461b14789b9f97099775db2
MD5 61e50ecc6530e7016cbe886f48f01090
BLAKE2b-256 1e03639e10b0ea3378a22f8466cc1f689c32f849c8d7e151f045a4e75183096e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: sekejap-0.12.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 4.9 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sekejap-0.12.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8bada007e8d43de72517056ad239f3ee069f3927a88026ee0e82ed6df14b78ed
MD5 5d629746599bf4de19e453382c480752
BLAKE2b-256 b3023c326b989dbb5bf205ace27776f3956c6b107a105b417b5f0702171e3e1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp310-cp310-win_amd64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sekejap-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 920f0cadf2381e3f25c2bae8e516093ace0a60e4f627c93cd8c5551ed5351ab7
MD5 881f367d910e4d0f376217e4a92fbe8f
BLAKE2b-256 d966f5ff4b83b312c013b34b5be7345f56ccef992788b337b7323115d5004bc9

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sekejap-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2eebf4c4f0bbeadb8aff085d4027c3bacc6039a0ecd5cee4316cae3c936697fd
MD5 68c1b74f5120002bf8bd6d18d8e33a3f
BLAKE2b-256 078858f65f308758f05b757c466444f69e0d664041a38440971b14340ff5b83d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: sekejap-0.12.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 4.8 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sekejap-0.12.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 65462745709a5bda7afc439a33012e59f65c4e1f241b9619844f855ef455bc59
MD5 1b0a4bc29821f4e1fe368dae2c374275
BLAKE2b-256 270093a5d675380fc65b2648eaefc70158790cbe3b1fd95e4a69888c998de2c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp39-cp39-win_amd64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sekejap-0.12.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cac9a4ec2cc1654b68c2c6dbf8f7c29e794beeb73de68300263ffd2fad03a137
MD5 ecb2bd4564737482e2ded7d14c10c801
BLAKE2b-256 405390b0fac399c6fc90a663e92a6d99cd7c8bdb560be7ea1fa7ab1f86fa9af1

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp39-cp39-manylinux_2_28_aarch64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sekejap-0.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b7bfa3e257d94aa7407c1b8a6f3ff16957447a47e1c0a6712b1ea20660473d19
MD5 bba42965e611d79fab3c27deed84d8ee
BLAKE2b-256 bad1ee03a5aefd2fe8cb178c0b7e43a1282b09cf3bb759f4d7bafcf0a5d145f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: sekejap-0.12.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 4.8 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sekejap-0.12.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 9981b5e7aa2cc91304f98b385ae62b76755176c742b17ed049d641dce93ce9bc
MD5 a3f4087b8d0097a0039cfacd4d837d74
BLAKE2b-256 10d7994521dcc8ed5c5aec3518d9f5b3fb350fa728dfc3dd72c88bea73f10b33

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp38-cp38-win_amd64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp38-cp38-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sekejap-0.12.0-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fd8338a20372790e24123069c15c4489fd856f6a6731839ca24a3675736fa769
MD5 5be4ccd53aa111acefb0ca11a1ac01c7
BLAKE2b-256 0b5f34313143233e6c49eeff9dfe119d120f4a786f88873b7c41ebbccbef1d48

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp38-cp38-manylinux_2_28_aarch64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sekejap-0.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sekejap-0.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8cd8bf56a3e1bfe28dfae4cb30972a149f25cdab24f7f832228908afadcb7de6
MD5 1b3aeea1c4c93cbd675241cda2f9933a
BLAKE2b-256 14401eb66107a835736a0643577b41a66128be22985d7c07da892f6d950276ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for sekejap-0.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on insanalamin/sekejap

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.16.5

19 files

0.16.4

19 files

0.16.2

19 files

0.16.1

19 files

0.16.0

19 files

0.15.0

19 files

0.14.0

19 files

0.13.5

19 files

0.13.4

19 files

0.13.3

19 files

0.13.2

19 files

0.13.1

19 files

0.13.0

19 files

0.12.1

19 files

This release

0.12.0 This release

19 files

0.11.3

19 files

0.10.1

19 files

0.10.0

19 files

0.9.1

19 files

0.8.18

19 files

0.8.17

19 files

0.8.16

19 files

0.8.15

19 files

0.8.14

19 files

0.8.13

19 files

0.8.11

19 files

0.8.10

19 files

0.8.9

19 files

0.8.8

19 files

0.8.7

19 files

0.8.6

19 files

0.8.4

19 files

0.8.2

19 files

0.8.1

19 files

0.8.0

19 files

0.7.0

19 files

0.6.7

19 files

0.6.6

19 files

0.6.5

19 files

0.6.4

19 files

0.6.3

19 files

0.6.0

19 files

0.5.3

19 files

0.5.1

12 files

0.5.0

12 files

0.4.0

12 files

0.3.0

12 files

0.2.4

12 files

0.2.3

12 files

0.2.0

12 files

0.1.8

12 files

0.1.6

12 files

0.1.5

1 file

0.1.4

1 file

0.1.3

1 file

0.1.2

1 file

0.1.1

1 file

0.1.0

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page