Skip to main content

Rust-accelerated Cypher query validator, generator, and NL-to-Cypher pipeline via GLiNER2

Project description

cypher_validator

A fast, schema-aware Cypher query validator and generator with optional GLiNER2 relation-extraction and Graph RAG support for LLM-driven graph database applications.

The core parser and validator are written in Rust (via pyo3 and maturin) for performance. The GLiNER2 integration layer is pure Python and is an optional add-on.


Table of contents


Features

Capability Description
Syntax validation Parses Cypher with a hand-written PEG grammar (Pest) and surfaces clear syntax errors
Semantic validation Checks node labels, relationship types, properties, endpoint labels, relationship direction, and unbound variables against a user-supplied schema
"Did you mean?" suggestions Typos in labels and relationship types produce helpful suggestions (e.g. :Preson → did you mean :Person?) via capped Levenshtein edit-distance
Batch validation validate_batch() validates many queries in parallel using Rayon, releasing the Python GIL for the duration
Query generation Generates syntactically correct and schema-valid Cypher queries for 13 common patterns
Schema-free parsing Extracts labels, relationship types, and property keys from any query without requiring a schema
Schema serialization Schema.to_dict(), from_dict(), to_json(), from_json(), and merge() for complete schema lifecycle management
NL → Cypher Converts GLiNER2 relation-extraction output to MATCH / MERGE / CREATE queries with automatic deduplication
DB-aware generation db_aware=True looks up every extracted entity in Neo4j before query generation — existing nodes are MATCHed, new ones are CREATEd inline, preventing duplicate nodes
NER entity extraction EntityNERExtractor wraps spaCy or any HuggingFace Transformers NER pipeline to enrich entity-label resolution during DB-aware generation
Zero-shot RE Wraps the gliner2 model for natural-language relation extraction (optional)
LLM schema context to_prompt(), to_markdown(), to_cypher_context() format the schema for LLM system prompts
Cypher extraction extract_cypher_from_text() pulls Cypher out of any LLM response (fenced blocks, inline, plain text)
Self-repair loop repair_cypher() feeds validation errors back to an LLM for iterative self-correction
Result formatting format_records() renders Neo4j results as Markdown, CSV, JSON, or plain text for LLM context
Few-shot examples few_shot_examples() auto-generates (description, Cypher) pairs for LLM prompting
Tool spec builder cypher_tool_spec() produces Anthropic / OpenAI function-calling schemas for Cypher execution
Graph RAG pipeline GraphRAGPipeline chains schema injection → Cypher generation → validation → execution → answer
LLM NL-to-Cypher LLMNLToCypher generates Cypher from text via any OpenAI-compatible, Anthropic, or LangChain LLM with schema inference, validation, and repair
Batch text ingestion ingest_texts() / ingest_document() — two-phase batch ingestion with auto-schema stabilization, MERGE-based deduplication, and provenance tracking
Schema introspection Neo4jDatabase.introspect_schema() discovers the live DB schema automatically
Pydantic ORM Declarative NodeModel / RelationshipModel with typed properties, validation, and Cypher generation
Query builder Fluent chainable API: Query().match(Person, "p").where(p.age > 18).return_(p.name)
Repository pattern Repository(Person, db) with find_one, find_by, count, exists, create, merge, update, delete
AI agent tools Auto-generated OpenAI / Anthropic function-calling tool specs from your schema
Graph traversal Traversal.neighbors(), shortest_path(), subgraph(), degree(), common_neighbors()
Bulk operations UNWIND-based batch create / merge / delete for nodes and relationships
Schema migrations SchemaDDL auto-generates constraints and indexes; SchemaDiff computes migration DDL
Type stubs Full .pyi stub files for IDE autocompletion and mypy / pyright type checking

Installation

Prerequisites

  • Python ≥ 3.8
  • Rust toolchain (for building from source — rustup.rs)
  • maturin (install via pip install maturin)

From source

# Clone the repository
git clone <repo-url>
cd cypher_validator

# Build and install in editable/development mode
maturin develop

# Or build an optimised release wheel
maturin build --release
pip install dist/cypher_validator-*.whl

Optional dependencies

# Neo4j driver (required for execute=True and db_aware=True)
pip install "cypher_validator[neo4j]"

# NER with spaCy (EntityNERExtractor.from_spacy)
pip install "cypher_validator[ner-spacy]"
python -m spacy download en_core_web_sm   # or en_core_web_trf for transformer accuracy

# NER with HuggingFace Transformers (EntityNERExtractor.from_transformers)
pip install "cypher_validator[ner-transformers]"

# Everything at once
pip install "cypher_validator[neo4j,ner]"

Quick start

from cypher_validator import Schema, CypherValidator, CypherGenerator, parse_query

# 1. Define your graph schema
schema = Schema(
    nodes={
        "Person": ["name", "age"],
        "Movie":  ["title", "year"],
    },
    relationships={
        # rel_type: (source_label, target_label, [properties])
        "ACTED_IN": ("Person", "Movie", ["role"]),
        "DIRECTED": ("Person", "Movie", []),
    },
)

# 2. Validate a single query
validator = CypherValidator(schema)
result = validator.validate("MATCH (p:Person)-[:ACTED_IN]->(m:Movie) RETURN p.name, m.title")
print(result.is_valid)   # True

# 3. Validate with errors — get "did you mean?" suggestions
result = validator.validate("MATCH (p:Preson)-[:ACTEDIN]->(m:Movie) RETURN p")
print(result.is_valid)   # False
print(result.errors)
# ["Unknown node label: :Preson — did you mean :Person?",
#  "Unknown relationship type: :ACTEDIN — did you mean :ACTED_IN?"]

# 4. Validate multiple queries in parallel
results = validator.validate_batch([
    "MATCH (p:Person) RETURN p",
    "MATCH (p:Person)-[:ACTED_IN]->(m:Movie) RETURN p.name",
    "MATCH (x:BadLabel) RETURN x",
])
for r in results:
    print(r.is_valid, r.errors)

# 5. Round-trip schema serialization
d = schema.to_dict()
schema2 = Schema.from_dict(d)

# … or as a JSON string
json_str = schema.to_json()
schema3  = Schema.from_json(json_str)

# 6. Merge two schemas
s_extra = Schema({"Director": ["name"]}, {"DIRECTED": ("Director", "Movie", [])})
merged  = schema.merge(s_extra)   # union of labels, types, and properties

# 7. Generate random valid queries
gen = CypherGenerator(schema, seed=42)
print(gen.generate("match_relationship"))
# MATCH (a:Person)-[r:ACTED_IN]->(b:Movie) RETURN a, r, b

# Generate many queries at once (avoids per-call Python overhead)
batch = gen.generate_batch("match_return", 100)

# 8. NL → Cypher with GLiNER2 (no boilerplate — this is the recommended entry point)
from cypher_validator import NLToCypher
pipeline = NLToCypher.from_pretrained("fastino/gliner2-large-v1", schema=schema)
cypher = pipeline(
    "Tom Hanks acted in Cast Away.",
    ["acted_in"],
    mode="merge",
)
# MERGE (a0:Person {name: $a0_val})-[:ACTED_IN]->(b0:Movie {name: $b0_val})
# RETURN a0, b0

# 10. Parse without a schema — also extracts property keys
info = parse_query("MATCH (p:Person)-[:ACTED_IN]->(m:Movie) RETURN p.name, m.year")
print(info.is_valid)        # True
print(info.labels_used)     # ['Movie', 'Person']
print(info.rel_types_used)  # ['ACTED_IN']
print(info.properties_used) # ['name', 'year']

Core API

Schema

Describes the graph model: node labels with their allowed properties, and relationship types with their source label, target label, and allowed properties.

from cypher_validator import Schema

schema = Schema(
    nodes={
        "Person":  ["name", "age", "email"],
        "Company": ["name", "founded"],
        "City":    ["name", "population"],
    },
    relationships={
        # "REL_TYPE": ("SourceLabel", "TargetLabel", ["prop1", "prop2"])
        "WORKS_FOR":        ("Person",  "Company", ["since", "role"]),
        "LIVES_IN":         ("Person",  "City",    []),
        "HEADQUARTERED_IN": ("Company", "City",    []),
    },
)

Schema inspection methods:

schema.node_labels()               # ["City", "Company", "Person"]
schema.rel_types()                 # ["HEADQUARTERED_IN", "LIVES_IN", "WORKS_FOR"]
schema.has_node_label("Person")    # True
schema.has_rel_type("WORKS_FOR")   # True

schema.node_properties("Person")   # ["name", "age", "email"]
schema.rel_properties("WORKS_FOR") # ["since", "role"]
schema.rel_endpoints("WORKS_FOR")  # ("Person", "Company")

Round-trip serialization:

# Export to a plain Python dict (JSON-serializable)
d = schema.to_dict()
# {
#   "nodes": {"Person": ["name", "age", "email"], ...},
#   "relationships": {"WORKS_FOR": ["Person", "Company", ["since", "role"]], ...}
# }

# Reconstruct from a dict (e.g. loaded from JSON)
import json
with open("schema.json") as f:
    schema2 = Schema.from_dict(json.load(f))

# or directly
schema2 = Schema.from_dict(d)

JSON serialization (to_json / from_json):

# Serialise to a compact JSON string
json_str = schema.to_json()
# '{"nodes":{"Person":["age","email","name"],...},...}'

# Restore from the JSON string
schema2 = Schema.from_json(json_str)

# Store/load via a file
with open("schema.json", "w") as f:
    f.write(schema.to_json())

with open("schema.json") as f:
    schema3 = Schema.from_json(f.read())

Merging schemas (merge):

s1 = Schema(
    nodes={"Person": ["name", "age"]},
    relationships={"KNOWS": ("Person", "Person", [])},
)
s2 = Schema(
    nodes={"Movie": ["title"], "Person": ["email"]},   # Person gets extra property
    relationships={"ACTED_IN": ("Person", "Movie", ["role"])},
)
merged = s1.merge(s2)
merged.node_labels()               # ["Movie", "Person"]
merged.node_properties("Person")   # ["age", "email", "name"]  ← union
merged.rel_types()                 # ["ACTED_IN", "KNOWS"]

Schema.from_dict() is the preferred way to restore a schema from a plain dict produced by to_dict().


CypherValidator

Validates Cypher queries against a Schema in two phases:

  1. Syntax — Parses the query with the Cypher PEG grammar.
  2. Semantic — Checks labels, types, properties, directions, and variable scopes against the schema. Typos in labels and relationship types trigger a "did you mean?" suggestion using capped Levenshtein edit-distance.
from cypher_validator import CypherValidator

validator = CypherValidator(schema)

# Single query
result = validator.validate("MATCH (p:Person)-[:WORKS_FOR]->(c:Company) RETURN p.name")
print(result.is_valid)   # True

# Batch validation — parallel Rayon execution, GIL released for the duration
results = validator.validate_batch([
    "MATCH (p:Person) RETURN p.name",
    "MATCH (p:Person)-[:WORKS_FOR]->(c:Company) RETURN p, c",
    "MATCH (x:Employe) RETURN x",   # typo
])
for r in results:
    print(r.is_valid, r.errors)
# True  []
# True  []
# False ["Unknown node label: :Employe — did you mean :Employee?"]

validate_batch() notes:

  • Accepts a list[str] and returns a list[ValidationResult] in the same order.
  • Validation is done in parallel on the Rust side using Rayon.
  • The Python GIL is released for the entire batch, so other Python threads (e.g. an asyncio event loop) are not blocked.
  • There is no minimum batch size — it is efficient even for a single query, though the overhead is negligible for small lists.

ValidationResult

Returned by both CypherValidator.validate() and each element of CypherValidator.validate_batch().

Attribute Type Description
is_valid bool True when no errors were found
errors list[str] All errors combined (syntax + semantic)
syntax_errors list[str] Parse / grammar errors only
semantic_errors list[str] Schema-level errors only

Also supports bool(result) and len(result):

result = validator.validate(query)

if result:
    print("Valid!")
else:
    print(f"{len(result)} error(s):")
    for err in result.errors:
        print(" -", err)

# Categorised errors
print(result.syntax_errors)   # e.g. ["Parse error: …"]
print(result.semantic_errors) # e.g. ["Unknown node label: :Foo — did you mean :Bar?"]

Example error messages:

# Unknown label — with suggestion
"Unknown node label: :Preson — did you mean :Person?"

# Unknown label — no close match
"Unknown node label: :Actor"

# Unknown relationship type — with suggestion
"Unknown relationship type: :ACTEDIN — did you mean :ACTED_IN?"

# Property not in schema
"Unknown property 'salary' for node label :Person"

# Wrong relationship direction / endpoints
"Relationship :ACTED_IN expects source label :Person, but node has label(s): :Movie"
"Relationship :ACTED_IN expects target label :Movie, but node has label(s): :Person"

# Unbound variable
"Variable 'x' is not bound in this scope"

# WITH scope reset
"Variable 'n' is not bound in this scope"  # used after WITH that didn't project it

# Label used in SET/REMOVE
"Unknown node label: :Managr — did you mean :Manager?"

"Did you mean?" suggestions appear when a misspelled label or relationship type has a Levenshtein edit-distance of ≤ 2 from a known schema entry (case-insensitive comparison).


CypherGenerator

Generates syntactically correct, schema-valid Cypher queries for rapid prototyping, testing, and dataset creation.

from cypher_validator import CypherGenerator

gen = CypherGenerator(schema)           # random seed each run
gen = CypherGenerator(schema, seed=42)  # deterministic / reproducible output

query = gen.generate("match_return")
# "MATCH (n:Person) RETURN n LIMIT 17"

query = gen.generate("order_by")
# "MATCH (n:Movie) RETURN n ORDER BY n.year DESC LIMIT 5"

query = gen.generate("distinct_return")
# "MATCH (n:Person) RETURN DISTINCT n.name"

query = gen.generate("unwind")
# "MATCH (n:Person) UNWIND n.name AS item RETURN item"

# List all supported patterns
CypherGenerator.supported_types()
# ['match_return', 'match_where_return', 'create', 'merge', 'aggregation',
#  'match_relationship', 'create_relationship', 'match_set', 'match_delete',
#  'with_chain', 'distinct_return', 'order_by', 'unwind']

# Generate many queries in one call (avoids per-call Python overhead)
queries = gen.generate_batch("match_return", 500)  # list[str], len == 500

Supported query types (13 total):

Type Example output
match_return MATCH (n:Movie) RETURN n
match_where_return MATCH (n:Person) WHERE n.name = "Alice" RETURN n.name
create CREATE (n:Person {name: "Bob", age: 42}) RETURN n
merge MERGE (n:Movie {title: $value}) RETURN n
aggregation MATCH (n:Person) RETURN count(n.age) AS result
match_relationship OPTIONAL MATCH (a:Person)-[r:ACTED_IN]->(b:Movie) RETURN a, r, b
create_relationship MATCH (a:Person),(b:Movie) CREATE (a)-[r:ACTED_IN]->(b) RETURN r
match_set MATCH (n:Person) SET n.name = "Carol" RETURN n
match_delete MATCH (n:Movie) DETACH DELETE n
with_chain MATCH (n:Person) WITH n.name AS val RETURN count(*)
distinct_return MATCH (n:Person) RETURN DISTINCT n.name LIMIT 10
order_by MATCH (n:Movie) RETURN n ORDER BY n.year DESC LIMIT 25
unwind MATCH (n:Person) UNWIND n.age AS item RETURN item

Generated scalar values cycle through string literals ("Alice"), integers (42), booleans (true/false), and parameters ($name). OPTIONAL MATCH and LIMIT clauses are randomly included. All generated queries are guaranteed to pass CypherValidator with the same schema.


parse_query / QueryInfo

Parse a Cypher string and extract structural information without needing a schema.

from cypher_validator import parse_query

info = parse_query("MATCH (p:Person)-[:ACTED_IN]->(m:Movie) RETURN p.name, m.year")

info.is_valid        # True
info.errors          # []
info.labels_used     # ["Movie", "Person"]   (sorted, deduplicated)
info.rel_types_used  # ["ACTED_IN"]          (sorted, deduplicated)
info.properties_used # ["name", "year"]      (sorted, deduplicated)

bool(info)           # True  (same as is_valid)

# Invalid query
info = parse_query("THIS IS NOT CYPHER")
info.is_valid   # False
info.errors     # ["Parse error: …"]

QueryInfo attributes:

Attribute Type Description
is_valid bool Syntax check result
errors list[str] Syntax error messages (empty when valid)
labels_used list[str] Sorted, deduplicated node labels referenced in the query
rel_types_used list[str] Sorted, deduplicated relationship types referenced in the query
properties_used list[str] Sorted, deduplicated property keys accessed anywhere in the query

properties_used collects every property key that appears in the query — in RETURN, WHERE, SET, inline node/relationship maps, WITH, ORDER BY, list comprehensions, etc. This is useful for dependency analysis, schema introspection, and query auditing without a schema.

# Complex query — all property accesses are captured
info = parse_query("""
    MATCH (p:Person {age: 30})-[r:WORKS_FOR {since: 2020}]->(c:Company)
    WHERE p.name = "Alice" AND c.founded > 2000
    WITH p, p.email AS contact
    RETURN contact, c.name
    ORDER BY c.name
""")
info.properties_used
# ['age', 'email', 'founded', 'name', 'since']

GLiNER2 integration

The GLiNER2 integration converts relation-extraction results into Cypher queries.

**Most users should start with NLToCypher** — it wraps all three classes into a single callable that goes from raw text to Cypher (and optionally executes it against Neo4j) in one line. RelationToCypherConverter and GLiNER2RelationExtractor are lower-level building blocks exposed for advanced use cases.

RelationToCypherConverter

A pure-Python class that converts any dict matching the GLiNER2 output format into a Cypher query. No ML model required.

from cypher_validator import RelationToCypherConverter, Schema

# GLiNER2 extraction result
results = {
    "relation_extraction": {
        "works_for": [("John", "Apple Inc.")],
        "lives_in":  [("John", "San Francisco")],
        "founded":   [],   # requested but not found in text
    }
}

# Without schema (no node labels)
converter = RelationToCypherConverter()

# All three methods return (cypher_str, params_dict) — entity values are
# passed as $param placeholders to prevent Cypher injection.

# ── MATCH mode (find existing data) ────────────────────────────────────────
cypher, params = converter.to_match_query(results)
print(cypher)
# MATCH (a0 {name: $a0_val})-[:WORKS_FOR]->(b0 {name: $b0_val})
# MATCH (a1 {name: $a1_val})-[:LIVES_IN]->(b1 {name: $b1_val})
# RETURN a0, b0, a1, b1
print(params)
# {"a0_val": "John", "b0_val": "Apple Inc.", "a1_val": "John", "b1_val": "San Francisco"}

# ── MERGE mode (upsert) ────────────────────────────────────────────────────
cypher, params = converter.to_merge_query(results)

# ── CREATE mode (insert new) ───────────────────────────────────────────────
cypher, params = converter.to_create_query(results)

# ── Unified dispatcher ─────────────────────────────────────────────────────
cypher, params = converter.convert(results, mode="merge")

# Pass both to Neo4jDatabase.execute() — the driver handles escaping:
# results = db.execute(cypher, params)

With a schema — node labels are added automatically:

schema = Schema(
    nodes={"Person": ["name"], "Company": ["name"], "City": ["name"]},
    relationships={
        "WORKS_FOR": ("Person", "Company", []),
        "LIVES_IN":  ("Person", "City",    []),
    },
)
converter = RelationToCypherConverter(schema=schema)
cypher, params = converter.to_merge_query(results)
print(cypher)
# MERGE (a0:Person {name: $a0_val})-[:WORKS_FOR]->(b0:Company {name: $b0_val})
# MERGE (a1:Person {name: $a1_val})-[:LIVES_IN]->(b1:City {name: $b1_val})
# RETURN a0, b0, a1, b1

Multiple pairs of the same relation type:

results = {
    "relation_extraction": {
        "works_for": [
            ("John",  "Microsoft"),
            ("Mary",  "Google"),
            ("Bob",   "Apple"),
        ],
    }
}
cypher, params = converter.to_merge_query(results)
print(cypher)
# MERGE (a0:Person {name: $a0_val})-[:WORKS_FOR]->(b0:Company {name: $b0_val})
# MERGE (a1:Person {name: $a1_val})-[:WORKS_FOR]->(b1:Company {name: $b1_val})
# MERGE (a2:Person {name: $a2_val})-[:WORKS_FOR]->(b2:Company {name: $b2_val})
# RETURN a0, b0, a1, b1, a2, b2
print(params)
# {"a0_val": "John", "b0_val": "Microsoft", "a1_val": "Mary", ...}

Automatic deduplication:

If the same (subject, object) pair for a given relation type appears more than once in the extraction output (which can happen with overlapping model detections), the converter silently deduplicates them — each unique triple (subject, relation, object) appears exactly once in the generated Cypher:

results = {
    "relation_extraction": {
        "works_for": [
            ("John", "Apple"),   # first occurrence
            ("John", "Apple"),   # duplicate — skipped
            ("Mary", "Apple"),   # different subject — kept
        ]
    }
}
# Only two MERGE clauses are emitted, not three

Constructor parameters:

Parameter Default Description
schema None cypher_validator.Schema for label-aware generation
name_property "name" Node property key used for entity text spans

convert() parameters:

Parameter Default Description
relations required GLiNER2 output dict
mode "match" "match", "merge", or "create"
return_clause auto Custom RETURN … tail (e.g. "RETURN *")

to_db_aware_query() — advanced low-level use:

If you want to generate a MATCH/CREATE query without going through NLToCypher, you can call to_db_aware_query() directly after building the entity status dict yourself:

converter = RelationToCypherConverter(schema=schema)

# entity_status maps each entity name to its DB lookup result
entity_status = {
    "John":       {"var": "e0", "label": "Person",  "param_key": "e0_val",
                   "found": True,  "introduced": False},  # exists in DB
    "Apple Inc.": {"var": "e1", "label": "Company", "param_key": "e1_val",
                   "found": False, "introduced": False},  # new
}

relations = {"relation_extraction": {"works_for": [("John", "Apple Inc.")]}}
cypher, params = converter.to_db_aware_query(relations, entity_status)
# MATCH (e0:Person {name: $e0_val})
# CREATE (e0)-[:WORKS_FOR]->(e1:Company {name: $e1_val})
# RETURN e0, e1

NLToCypher._collect_entity_status() builds this dict automatically from a live DB when db_aware=True is used — the low-level API is exposed for cases where you control the lookup yourself.


DB-aware query generation

db_aware=True is the flag that makes NLToCypher graph-state-aware. Without it, every call blindly CREATEs all entities, producing duplicate nodes for entities that already exist in the database. With it, each entity is looked up first and either MATCHed (existing) or CREATEd (new).

How it works

When db_aware=True is passed to __call__() or extract_and_convert():

  1. Relations are extracted from the text (same as normal).
  2. Each unique entity is identified and its label is resolved from the schema (and optionally enriched by a EntityNERExtractor).
  3. A MATCH (n:Label {name: $val}) RETURN elementId(n) LIMIT 1 query is sent to Neo4j for each entity.
  4. A mixed query is generated.
  5. For existing entities, it adds MATCH (eN:Label {name: $eN_val}) at the top.
  6. For new entities, it adds CREATE (eN:Label {name: $eN_val}) inline on first use; subsequent relations reuse the bare variable eN.
  7. For relationship edges, it always adds CREATE (eA)-[:REL]->(eB).

All four entity-existence combinations

from cypher_validator import NLToCypher, Neo4jDatabase, Schema

schema = Schema(
    nodes={"Person": ["name"], "Company": ["name"]},
    relationships={"WORKS_FOR": ("Person", "Company", [])},
)
db = Neo4jDatabase("bolt://localhost:7687", "neo4j", "password")
pipeline = NLToCypher.from_pretrained("fastino/gliner2-large-v1", schema=schema, db=db)

Case 1 — neither entity exists:

cypher = pipeline("John works for Apple Inc.", ["works_for"], db_aware=True)
# CREATE (e0:Person {name: $e0_val})-[:WORKS_FOR]->(e1:Company {name: $e1_val})
# RETURN e0, e1

Case 2 — subject (John) exists, object is new:

# (John was previously inserted into the DB)
cypher = pipeline("John works for Apple Inc.", ["works_for"], db_aware=True)
# MATCH (e0:Person {name: $e0_val})
# CREATE (e0)-[:WORKS_FOR]->(e1:Company {name: $e1_val})
# RETURN e0, e1

Case 3 — object (Apple Inc.) exists, subject is new:

cypher = pipeline("John works for Apple Inc.", ["works_for"], db_aware=True)
# MATCH (e1:Company {name: $e1_val})
# CREATE (e0:Person {name: $e0_val})-[:WORKS_FOR]->(e1)
# RETURN e1, e0

Case 4 — both exist:

cypher = pipeline("John works for Apple Inc.", ["works_for"], db_aware=True)
# MATCH (e0:Person {name: $e0_val})
# MATCH (e1:Company {name: $e1_val})
# CREATE (e0)-[:WORKS_FOR]->(e1)
# RETURN e0, e1

Multiple relations — shared entity reuse

The same entity variable is introduced once and reused across all relations, regardless of how many it participates in:

schema = Schema(
    nodes={"Person": ["name"], "Company": ["name"], "City": ["name"]},
    relationships={
        "WORKS_FOR": ("Person", "Company", []),
        "LIVES_IN":  ("Person", "City", []),
    },
)
pipeline = NLToCypher.from_pretrained(..., schema=schema, db=db)

# John exists in DB; Apple Inc. and San Francisco are new
cypher = pipeline(
    "John works for Apple Inc. and lives in San Francisco.",
    ["works_for", "lives_in"],
    db_aware=True,
)
# MATCH (e0:Person {name: $e0_val})          ← John MATCHed once
# CREATE (e0)-[:WORKS_FOR]->(e1:Company {name: $e1_val})   ← Apple created inline
# CREATE (e0)-[:LIVES_IN]->(e2:City {name: $e2_val})       ← SF created inline, e0 reused
# RETURN e0, e1, e2

When all three exist:

# MATCH (e0:Person {name: $e0_val})
# MATCH (e1:Company {name: $e1_val})
# MATCH (e2:City {name: $e2_val})
# CREATE (e0)-[:WORKS_FOR]->(e1)   ← only edges are created
# CREATE (e0)-[:LIVES_IN]->(e2)
# RETURN e0, e1, e2

Combine db_aware with execute

# Look up entities, generate query, AND execute it — all in one call
cypher, records = pipeline(
    "John works for Apple Inc.",
    ["works_for"],
    db_aware=True,
    execute=True,
)
# cypher  → mixed MATCH/CREATE string
# records → [{"e0": <Node John>, "e1": <Node Apple Inc.>}]

Why this matters vs. plain execute=True

# ── Without db_aware (legacy) ─────────────────────────────────────────────
# John is already in the DB — this creates a second John node:
cypher, _ = pipeline("John works for Apple Inc.", ["works_for"],
                     mode="create", execute=True)
# CREATE (a0:Person {name: $a0_val})-[:WORKS_FOR]->(b0:Company {name: $b0_val})
# → John now appears TWICE in the database ✗

# ── With db_aware ─────────────────────────────────────────────────────────
cypher, _ = pipeline("John works for Apple Inc.", ["works_for"],
                     db_aware=True, execute=True)
# MATCH (e0:Person {name: $e0_val})
# CREATE (e0)-[:WORKS_FOR]->(e1:Company {name: $e1_val})
# → John reused, no duplicate ✓

EntityNERExtractor

An optional NER wrapper that enriches entity-label resolution during DB-aware query generation. Useful when the schema is absent, incomplete, or when you want finer-grained entity typing (e.g. distinguishing Person from Organization for entities that appear as arguments of an unknown relation type).

Supports two backends — spaCy (fast, CPU-friendly) and HuggingFace Transformers (higher accuracy, GPU-optional):

from cypher_validator import EntityNERExtractor

spaCy backend

# pip install "cypher_validator[ner-spacy]"
# python -m spacy download en_core_web_sm

ner = EntityNERExtractor.from_spacy("en_core_web_sm")
ner.extract("John works for Apple Inc. and lives in San Francisco.")
# [
#   {"text": "John",          "label": "Person"},
#   {"text": "Apple Inc.",    "label": "Organization"},
#   {"text": "San Francisco", "label": "Location"},
# ]

Built-in spaCy label → graph node-label mappings:

spaCy type Graph label
PERSON Person
ORG Organization
GPE Location
LOC Location
FAC Facility
PRODUCT Product
EVENT Event
NORP Group
(unknown) type capitalised as-is

Override or extend with label_map:

ner = EntityNERExtractor.from_spacy(
    "en_core_web_trf",
    label_map={"ORG": "Company", "GPE": "City"},   # override defaults
)

HuggingFace Transformers backend

# pip install "cypher_validator[ner-transformers]"

# General English NER (default model)
ner = EntityNERExtractor.from_transformers(
    "dbmdz/bert-large-cased-finetuned-conll03-english"
)

# High-accuracy general NER
ner = EntityNERExtractor.from_transformers("Jean-Baptiste/roberta-large-ner-english")

# Biomedical NER — fine-tuned model (recommended for medical/scientific graphs)
ner = EntityNERExtractor.from_transformers(
    "d4data/biomedical-ner-all",
    label_map={
        "Medication":           "Drug",
        "Disease_disorder":     "Disease",
        "Sign_symptom":         "Symptom",
        "Biological_structure": "Anatomy",
        "Diagnostic_procedure": "Procedure",
    },
    aggregation_strategy="first",   # avoids subword fragments with this model
)

ner.extract("John works for Apple Inc.")
# [{"text": "John", "label": "Person"}, {"text": "Apple Inc.", "label": "Organization"}]

Note on dmis-lab/biobert-v1.1: This is a pre-trained language model, not a fine-tuned NER classifier. When loaded as a token-classification pipeline it outputs generic LABEL_0 / LABEL_1 tags with no semantic meaning. Use it with a fully custom label_map (e.g. {"LABEL_0": "BioEntity", "LABEL_1": "BioEntity"}) if you only need candidate spans, or use a fine-tuned biomedical NER model such as d4data/biomedical-ner-all for semantic labels. See examples/11_biobert_ner.py for a detailed comparison.

Built-in HuggingFace label → graph node-label mappings:

HF tag Graph label
PER / PERSON Person
ORG Organization
LOC / GPE Location
MISC Entity
(unknown) tag capitalised as-is

Plugging the NER extractor into NLToCypher

When ner_extractor is supplied, its labels enrich or override schema-based label resolution for DB lookups. This is especially helpful when the schema doesn't cover all relation types:

from cypher_validator import NLToCypher, EntityNERExtractor, Neo4jDatabase

ner = EntityNERExtractor.from_spacy("en_core_web_sm")
db  = Neo4jDatabase("bolt://localhost:7687", "neo4j", "password")

pipeline = NLToCypher.from_pretrained(
    "fastino/gliner2-large-v1",
    schema=schema,
    db=db,
    ner_extractor=ner,    # ← plugged in here
)

cypher = pipeline(
    "John works for Apple Inc.",
    ["works_for"],
    db_aware=True,
)
# NER identifies "John" as Person and "Apple Inc." as Organization
# DB lookup uses those labels for the MATCH query
# Generated Cypher uses the schema's "Company" label (schema wins when both provide a label)

Label resolution priority (highest first):

  1. NER extractor label (when ner_extractor is set and entity text matches)
  2. Schema endpoint label (derived from the relation type)
  3. Empty string (no label in pattern)

EntityNERExtractor API:

Method Description
EntityNERExtractor.from_spacy(model_name, label_map=None) Load a spaCy nlp model
EntityNERExtractor.from_transformers(model_name, label_map=None, **kwargs) Load a HuggingFace NER pipeline
extractor.extract(text) Return list[{"text": str, "label": str}]

GLiNER2RelationExtractor

Wraps a loaded gliner2.GLiNER2 model and normalises its output to the standard format.

from cypher_validator import GLiNER2RelationExtractor

# Load from HuggingFace Hub
extractor = GLiNER2RelationExtractor.from_pretrained("fastino/gliner2-large-v1")

# Or set a custom threshold
extractor = GLiNER2RelationExtractor.from_pretrained(
    "fastino/gliner2-large-v1",
    threshold=0.7,
)

text = "John works for Apple Inc. and lives in San Francisco."

results = extractor.extract_relations(
    text,
    relation_types=["works_for", "lives_in", "founded"],
)
# {
#     "relation_extraction": {
#         "works_for": [("John", "Apple Inc.")],
#         "lives_in":  [("John", "San Francisco")],
#         "founded":   [],   # requested but not found
#     }
# }

# Override threshold for a single call
results = extractor.extract_relations(
    text,
    ["works_for"],
    threshold=0.85,   # high precision
)

Key behaviours:

  • Every requested relation type is always present in the output — missing types get an empty list.
  • Works with both the wrapped ({"relation_extraction": {...}}) and flat ({rel_type: [...]}) model output formats.
  • threshold set at construction becomes the default; it can be overridden per-call.
Method / attribute Description
GLiNER2RelationExtractor.from_pretrained(model_name, threshold=0.5) Load from HuggingFace Hub or local path
extractor.extract_relations(text, relation_types, threshold=None) Extract relations from text
extractor.threshold Instance-level default confidence threshold
GLiNER2RelationExtractor.DEFAULT_MODEL "fastino/gliner2-large-v1"

NLToCypher

This is the recommended entry point for most users. It wraps the extractor and converter into one callable — you only need to supply text, relation types, and a mode.

End-to-end pipeline combining GLiNER2RelationExtractor and RelationToCypherConverter.

from cypher_validator import NLToCypher, Schema

schema = Schema(
    nodes={"Person": ["name"], "Company": ["name"], "City": ["name"]},
    relationships={
        "WORKS_FOR": ("Person", "Company", []),
        "LIVES_IN":  ("Person", "City",    []),
    },
)

pipeline = NLToCypher.from_pretrained(
    "fastino/gliner2-large-v1",
    schema=schema,       # optional: enables label-aware generation
    threshold=0.5,
)

# Single sentence → Cypher
cypher = pipeline(
    "John works for Apple Inc. and lives in San Francisco.",
    relation_types=["works_for", "lives_in"],
    mode="merge",
)
# MERGE (a0:Person {name: $a0_val})-[:WORKS_FOR]->(b0:Company {name: $b0_val})
# MERGE (a1:Person {name: $a1_val})-[:LIVES_IN]->(b1:City {name: $b1_val})
# RETURN a0, b0, a1, b1

# Get both the raw extraction dict and the Cypher string
relations, cypher = pipeline.extract_and_convert(
    "Alice manages the Engineering team.",
    ["manages", "reports_to"],
    mode="match",
)
print(relations)
# {"relation_extraction": {"manages": [("Alice", "Engineering team")], "reports_to": []}}
print(cypher)
# MATCH (a0 {name: $a0_val})-[:MANAGES]->(b0 {name: $b0_val})
# RETURN a0, b0

# High-precision extraction
cypher = pipeline(
    "Bob acquired TechCorp in 2019.",
    ["acquired", "merged_with"],
    mode="merge",
    threshold=0.85,
)

Database execution (execute=True):

Pass a Neo4jDatabase to execute the generated query directly and receive both the Cypher string and the Neo4j records:

from cypher_validator import NLToCypher, Neo4jDatabase

db = Neo4jDatabase("bolt://localhost:7687", "neo4j", "password")
pipeline = NLToCypher.from_pretrained("fastino/gliner2-large-v1", schema=schema, db=db)

# execute=True → returns (cypher, records) instead of just cypher
cypher, records = pipeline(
    "John works for Apple Inc.",
    ["works_for"],
    mode="create",
    execute=True,
)
# cypher  → 'CREATE (a0:Person {name: $a0_val})-[:WORKS_FOR]->(b0:Company {name: $b0_val})\nRETURN a0, b0'
# records → [{"a0": {...}, "b0": {...}}]

Credentials from environment variables (from_env):

export NEO4J_URI=bolt://localhost:7687
export NEO4J_USERNAME=neo4j        # optional, defaults to "neo4j"
export NEO4J_PASSWORD=secret
pipeline = NLToCypher.from_env("fastino/gliner2-large-v1", schema=schema)
cypher, records = pipeline("John works for Apple Inc.", ["works_for"],
                           mode="create", execute=True)

from_pretrained() / from_env() parameters:

Parameter Default Description
model_name "fastino/gliner2-large-v1" HuggingFace model ID or local path
schema None Optional schema for label-aware Cypher
threshold 0.5 Confidence threshold for relation extraction
name_property "name" Node property key for entity text
db None Neo4jDatabase connection (from_pretrained only)
database "neo4j" Neo4j database name (from_env only)
ner_extractor None Optional EntityNERExtractor for enriched entity labels in DB-aware mode

__call__() / extract_and_convert() parameters:

Parameter Default Description
text required Input sentence or passage
relation_types required Relation labels to extract
mode "match" Cypher generation mode ("match", "merge", "create"). Ignored when db_aware=True.
threshold None Override instance threshold
execute False When True, run the query against the DB and return (cypher, records)
db_aware False When True, look up each entity in the DB and generate MATCH/CREATE accordingly (see below)
return_clause auto Custom RETURN … tail

Neo4jDatabase

Thin wrapper around the official Neo4j Python driver for executing Cypher queries. Requires pip install "cypher_validator[neo4j]".

from cypher_validator import Neo4jDatabase

# Direct instantiation
db = Neo4jDatabase("bolt://localhost:7687", "neo4j", "password", database="neo4j")

# Context manager — driver is closed on exit
with Neo4jDatabase("bolt://localhost:7687", "neo4j", "password") as db:
    results = db.execute("MATCH (n:Person) RETURN n.name LIMIT 5")
    # [{"n.name": "Alice"}, {"n.name": "Bob"}, ...]

# With parameters
results = db.execute(
    "MATCH (n:Person {name: $name}) RETURN n",
    {"name": "Alice"},
)

# Run multiple queries in one call
queries = [
    "MATCH (n:Person) RETURN count(n)",
    "MATCH (n:Movie) RETURN count(n)",
]
all_results = db.execute_many(queries)
# [[{"count(n)": 42}], [{"count(n)": 17}]]

# With per-query parameters
all_results = db.execute_many(
    ["MATCH (n {name: $x}) RETURN n", "MATCH (n {name: $x}) RETURN n"],
    [{"x": "Alice"}, {"x": "Bob"}],
)
Method Description
execute(cypher, parameters=None) Run one query, return list[dict]
execute_many(queries, parameters_list=None) Run multiple queries, return list[list[dict]]
close() Release driver connections

LLM integration

cypher_validator ships a dedicated set of helpers for building LLM-driven graph applications. All utilities are importable directly from the top-level package.

from cypher_validator import (
    extract_cypher_from_text,
    format_records,
    repair_cypher,
    cypher_tool_spec,
    few_shot_examples,
    GraphRAGPipeline,
)

Schema prompt helpers

Three methods on Schema format the graph model for LLM system prompts. Each targets a different LLM style:

from cypher_validator import Schema

schema = Schema(
    nodes={"Person": ["name", "age"], "Company": ["name", "founded"]},
    relationships={"WORKS_FOR": ("Person", "Company", ["since", "role"])},
)

# ── Readable text (best for general-purpose LLMs) ─────────────────────────
print(schema.to_prompt())
# Graph Schema
# ============
#
# Nodes
# -----
#   :Person                     name, age
#   :Company                    name, founded
#
# Relationships
# -------------
#   :WORKS_FOR                  (Person)-->(Company)   since, role

# ── Markdown table (great for docs and chat UIs) ──────────────────────────
print(schema.to_markdown())
# ### Nodes
# | Label | Properties |
# |---|---|
# | :Company | founded, name |
# | :Person | age, name |
#
# ### Relationships
# | Type | Source → Target | Properties |
# |---|---|---|
# | :WORKS_FOR | :Person → :Company | role, since |

# ── Inline Cypher patterns (best for LLMs that know Cypher) ───────────────
print(schema.to_cypher_context())
# // Node labels and their properties
# (:Company {founded, name})
# (:Person {age, name})
#
# // Relationship types
# (:Person)-[:WORKS_FOR {role, since}]->(:Company)

Inject the output directly into your LLM system prompt:

system_prompt = f"""You are a Cypher expert. Use this schema:

{schema.to_cypher_context()}

Rules: return ONLY the Cypher query inside a ```cypher

extract_cypher_from_text

Parses a raw LLM response and returns the Cypher query string, regardless of how the LLM formatted its output:

from cypher_validator import extract_cypher_from_text

# Fenced code block (most common)
extract_cypher_from_text("""
Sure! Here is the query:
```cypher
MATCH (p:Person)-[:WORKS_FOR]->(c:Company)
RETURN p.name, c.name

```""")

# "MATCH (p:Person)-[:WORKS_FOR]->(c:Company)\nRETURN p.name, c.name"

# Inline backtick

extract_cypher_from_text("Run `MATCH (n:Person) RETURN n` against your DB.")

# "MATCH (n:Person) RETURN n"

# Line-anchored (no formatting at all)

extract_cypher_from_text("MATCH (n:Person) RETURN n LIMIT 10")

# "MATCH (n:Person) RETURN n LIMIT 10"

Handles ```cypher, ```sql, plain ```, inline backticks, and bare Cypher lines — in that priority order.


repair_cypher

Validates a query and iteratively asks an LLM to fix it when it is invalid:

from cypher_validator import CypherValidator, repair_cypher

validator = CypherValidator(schema)

def call_llm(query: str, errors: list[str]) -> str:
    """Your LLM wrapper — receives the bad query and the error list."""
    ...

# Start with an LLM-generated query that may contain mistakes
bad_query = "MATCH (n:Persn)-[:WORKFOR]->(c:Company) RETURN n"

fixed_query, result = repair_cypher(validator, bad_query, call_llm, max_retries=3)
# validator calls call_llm(bad_query, ["Unknown node label :Persn — did you mean :Person?", ...])
# then re-validates, retrying up to 3 times

if result.is_valid:
    print("Repaired:", fixed_query)
else:
    print("Could not repair:", result.errors)

The errors list passed to your LLM already contains "did you mean?" hints, making self-correction highly effective even with small models.


format_records

Converts Neo4j result records into a string for injecting into LLM prompts:

from cypher_validator import format_records

records = db.execute("MATCH (p:Person)-[:WORKS_FOR]->(c:Company) RETURN p.name, c.name LIMIT 3")

# Markdown table (default) — great for chat UIs and Claude
print(format_records(records))
# | p.name | c.name    |
# |--------|-----------|
# | Alice  | Acme Corp |
# | Bob    | TechStart |

# CSV — compact for token-limited contexts
print(format_records(records, format="csv"))
# p.name,c.name
# Alice,Acme Corp

# JSON — for structured output or downstream parsing
print(format_records(records, format="json"))

# Plain text — numbered records
print(format_records(records, format="text"))
# Record 1:
#   p.name: Alice
#   c.name: Acme Corp

Neo4jDatabase.execute_and_format() combines execute() and format_records() in one step:

table = db.execute_and_format(
    "MATCH (p:Person)-[:WORKS_FOR]->(c:Company) RETURN p.name, c.name LIMIT 5"
)

few_shot_examples

Generates labelled (description, cypher) pairs from your schema for few-shot LLM prompting:

from cypher_validator import CypherGenerator, few_shot_examples

gen = CypherGenerator(schema, seed=42)
examples = few_shot_examples(gen, n=6)
# [
#   ("Return all :Person and :Company",             "MATCH (n:Person) RETURN n LIMIT 3"),
#   ("Find :Person matching a property condition",  "MATCH (n:Person) WHERE n.age = 30 RETURN n"),
#   ("Find :Person connected via :WORKS_FOR",       "MATCH (a:Person)-[r:WORKS_FOR]->(b:Company) RETURN a, r, b"),
#   ...
# ]

# Restrict to a specific type
create_examples = few_shot_examples(gen, n=3, query_type="create")

# Embed in a system prompt
shots = "\n\n".join(f"Q: {d}\nA:\n```cypher\n{c}\n```" for d, c in examples)
system_prompt = f"Generate Cypher for this schema.\n\nExamples:\n{shots}"

cypher_tool_spec

Builds a tool/function-call specification for Cypher execution that works with both the Anthropic and OpenAI APIs:

from cypher_validator import cypher_tool_spec

# ── Anthropic tool_use ─────────────────────────────────────────────────────
tool = cypher_tool_spec(schema, format="anthropic")
response = client.messages.create(
    model="claude-opus-4-6",
    tools=[tool],
    messages=[{"role": "user", "content": "Who works for Acme Corp?"}],
)
# When the model calls the tool:
# tool_input["cypher"]     → the generated Cypher query
# tool_input["parameters"] → optional $param values

# ── OpenAI function calling ────────────────────────────────────────────────
tool = cypher_tool_spec(schema, format="openai")
response = openai.chat.completions.create(
    model="gpt-4o",
    tools=[tool],
    messages=[{"role": "user", "content": "Who works for Acme Corp?"}],
)

# Optional: describe the database for better LLM guidance
tool = cypher_tool_spec(schema, db_description="HR knowledge graph", format="anthropic")

The schema's to_cypher_context() output is embedded in the tool description automatically when schema is provided, so the LLM knows exactly which labels and types to use.


GraphRAGPipeline

The highest-level interface: a complete Graph RAG loop in a single class.

from cypher_validator import GraphRAGPipeline, Neo4jDatabase, Schema
import openai

client = openai.OpenAI()   # reads OPENAI_API_KEY from environment

def call_llm(prompt: str) -> str:
    """Wrap your LLM here — must accept a string and return a string."""
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": prompt}],
    )
    return response.choices[0].message.content

schema = Schema(
    nodes={"Person": ["name"], "Company": ["name"]},
    relationships={"WORKS_FOR": ("Person", "Company", [])},
)
db = Neo4jDatabase("bolt://localhost:7687", "neo4j", "password")

pipeline = GraphRAGPipeline(schema=schema, db=db, llm_fn=call_llm)

# Simple call — returns a natural language answer
answer = pipeline.query("Who works for Acme Corp?")

# Full context — returns all intermediate artefacts
ctx = pipeline.query_with_context("Who works for Acme Corp?")
print(ctx["cypher"])             # The generated (and possibly repaired) Cypher
print(ctx["repair_attempts"])    # Number of LLM repair iterations (0 = first try valid)
print(ctx["records"])            # Raw Neo4j records
print(ctx["formatted_results"])  # Markdown table injected into the answer prompt
print(ctx["answer"])             # Final LLM-generated answer
print(ctx["execution_error"])    # None, or error message if Neo4j raised

What happens internally on each query() call:

  1. Schema is formatted via to_cypher_context() and injected into the system prompt.
  2. LLM generates a Cypher query (first call).
  3. extract_cypher_from_text() extracts the Cypher from the response.
  4. CypherValidator validates it — if invalid, the LLM is asked to fix it (up to max_repair_retries times).
  5. The validated query is executed against Neo4j.
  6. Results are formatted with format_records() and injected into the answer prompt.
  7. LLM generates the final answer (second call).

Constructor parameters:

Parameter Default Description
schema required Graph schema for context injection and validation
db required Neo4jDatabase for executing queries
llm_fn required Callable[[str], str] — your LLM wrapper
max_repair_retries 2 Max LLM repair attempts for invalid queries
result_format "markdown" Format passed to format_records()
cypher_system_prompt auto Override the Cypher-generation system prompt
answer_system_prompt auto Override the answer-synthesis system prompt

Auto-discovering the schema from a live database:

db = Neo4jDatabase("bolt://localhost:7687", "neo4j", "password")
schema = db.introspect_schema()   # discovers labels, properties, and relationships
pipeline = GraphRAGPipeline(schema=schema, db=db, llm_fn=call_llm)

introspect_schema() tries the built-in db.schema.* procedures first (Neo4j 4.3+) and falls back to sampling existing nodes and relationships.


LLM NL-to-Cypher pipeline

LLMNLToCypher sends natural language text directly to an LLM to produce Cypher. It supports any OpenAI-compatible API, Anthropic, or LangChain chat model. Schema can be provided explicitly, auto-discovered from a live Neo4j database, or inferred by the LLM from the input text.

Single-text usage

from cypher_validator import LLMNLToCypher, Schema

schema = Schema(
    nodes={"Person": ["name", "age"], "Company": ["name"]},
    relationships={"WORKS_FOR": ("Person", "Company", [])},
)

# Option 1: OpenAI-compatible provider
pipeline = LLMNLToCypher(model="gpt-4o", api_key="sk-...", schema=schema)

# Option 2: Anthropic
pipeline = LLMNLToCypher.from_anthropic(schema=schema)

# Option 3: From environment variables (auto-detects provider)
pipeline = LLMNLToCypher.from_env(schema=schema)

# Generate Cypher
cypher = pipeline("John works for Apple and lives in SF.", mode="create")

# Full context with all intermediate artefacts
ctx = pipeline.ingest_with_context("John works for Apple.", mode="merge")
print(ctx["cypher"])              # Generated Cypher
print(ctx["is_valid"])            # Whether it passed validation
print(ctx["validation_errors"])   # List of error strings
print(ctx["repair_attempts"])     # Number of LLM repair iterations

Batch text ingestion — ingest_texts()

Two-phase batch ingestion for building knowledge graphs from multiple texts:

Phase 1 — Schema stabilization (only when no schema is available): samples a few texts to let the LLM infer the schema, accumulating it via Schema.merge().

Phase 2 — Ingestion with stable schema: processes remaining texts using a MERGE-only prompt, validates + repairs each query, and optionally generates provenance Cypher and executes against Neo4j.

from cypher_validator import LLMNLToCypher, Schema

schema = Schema(
    nodes={"Person": ["name"], "Company": ["name"], "City": ["name"]},
    relationships={
        "WORKS_FOR": ("Person", "Company", []),
        "LIVES_IN": ("Person", "City", []),
    },
)

pipeline = LLMNLToCypher.from_env(schema=schema)

texts = [
    "Alice works for Acme Corp in New York.",
    "Bob is employed at Globex and lives in Chicago.",
    "Carol joined Initech in San Francisco.",
]

result = pipeline.ingest_texts(
    texts,
    source_ids=["doc1", "doc2", "doc3"],  # optional per-text identifiers
    provenance=True,                       # generate Chunk/MENTIONED_IN Cypher
    progress_fn=lambda cur, tot: print(f"{cur}/{tot}"),
)

print(result.total)               # 3
print(result.succeeded)           # number that passed validation
print(result.failed)              # number that failed
print(result.schema_source)       # "user", "db", or "inferred"
print(result.schema_sample_texts) # 0 when schema was provided

for chunk in result.results:
    print(f"[{chunk.index}] valid={chunk.is_valid} repairs={chunk.repair_attempts}")
    print(f"  Cypher: {chunk.cypher[:80]}...")
    if chunk.provenance_cypher:
        print(f"  Provenance: {chunk.provenance_cypher[:60]}...")

With execution against Neo4j:

from cypher_validator import LLMNLToCypher, Neo4jDatabase

db = Neo4jDatabase("bolt://localhost:7687", "neo4j", "password")

pipeline = LLMNLToCypher.from_env(schema=schema, db=db)

result = pipeline.ingest_texts(
    texts,
    execute=True,      # run domain + provenance Cypher against Neo4j
    on_error="skip",   # "skip" (default) or "raise"
)

for chunk in result.results:
    print(f"[{chunk.index}] executed={chunk.executed} error={chunk.execution_error}")

Without a schema (auto-inference):

pipeline = LLMNLToCypher.from_env()  # no schema, no db

result = pipeline.ingest_texts(
    texts,
    schema_sample_size=2,  # use first 2 texts to infer schema
)

# The LLM inferred the schema from the sample texts
print(result.schema)               # Schema(...)
print(result.schema_source)        # "inferred"
print(result.schema_sample_texts)  # 2

Document ingestion — ingest_document()

Convenience wrapper that chunks a long document and delegates to ingest_texts(). Splits on sentence boundaries with configurable chunk size and overlap.

long_text = open("article.txt").read()

result = pipeline.ingest_document(
    long_text,
    source_id="article",         # chunks get IDs: article_chunk_0, article_chunk_1, ...
    chunk_size=2000,             # max characters per chunk
    chunk_overlap=200,           # overlap between consecutive chunks
    provenance=True,
)

print(f"Chunked into {result.total} pieces, {result.succeeded} succeeded")

ChunkResult and IngestionResult

ChunkResult field Type Description
index int Position in the input list
source_id str Identifier for this text
text_preview str First 80 characters of the input text
cypher str Generated domain Cypher (MERGE-based)
provenance_cypher str Deterministic Chunk / MENTIONED_IN Cypher
is_valid bool Whether the Cypher passed validation
validation_errors list[str] Validation error messages
repair_attempts int Number of LLM repair iterations
executed bool Whether the Cypher was executed against the DB
execution_error str | None Error message if execution failed
records list[dict] Records returned by Neo4j
IngestionResult field Type Description
schema Schema Final stabilized schema
schema_source str "user", "db", or "inferred"
results list[ChunkResult] Per-text results
total int Number of texts processed
succeeded int Number that passed validation
failed int Number that failed validation
schema_sample_texts int Number of texts used for schema inference
errors list[tuple[int, str]] (index, error_message) for failed texts

ingest_texts() parameters

Parameter Default Description
texts required List of natural language passages
source_ids auto Per-text identifiers (defaults to text_0, text_1, ...)
execute False Execute Cypher against self.db
schema_sample_size 3 Texts to sample for schema inference (Phase 1)
provenance True Generate Chunk / MENTIONED_IN provenance Cypher
on_error "skip" "skip" or "raise"
progress_fn None Callback (current, total) after each text

Async & parallel ingestion

All synchronous methods have async counterparts that run LLM calls concurrently. Phase 1 (schema inference) stays sequential; Phase 2 runs up to max_concurrency LLM calls in parallel via asyncio.Semaphore. An optional token-bucket rate limiter prevents exceeding TPM (Tokens Per Minute) quotas.

Async single-text — acall()

import asyncio
from cypher_validator import LLMNLToCypher, Schema

schema = Schema(
    nodes={"Person": ["name"], "Company": ["name"]},
    relationships={"WORKS_FOR": ("Person", "Company", [])},
)

pipeline = LLMNLToCypher.from_env(schema=schema)

# acall() is the async version of __call__()
cypher = asyncio.run(pipeline.acall("John works for Apple.", mode="create"))

# With execution
cypher, records = asyncio.run(
    pipeline.acall("John works for Apple.", mode="create", execute=True)
)

Async batch ingestion — aingest_texts()

import asyncio
from cypher_validator import LLMNLToCypher, Schema

schema = Schema(
    nodes={"Person": ["name"], "Company": ["name"], "City": ["name"]},
    relationships={
        "WORKS_FOR": ("Person", "Company", []),
        "LIVES_IN": ("Person", "City", []),
    },
)

pipeline = LLMNLToCypher.from_env(schema=schema, max_concurrency=10)

texts = [
    "Alice works for Acme Corp in New York.",
    "Bob is employed at Globex and lives in Chicago.",
    "Carol joined Initech in San Francisco.",
    # ... hundreds more
]

result = asyncio.run(pipeline.aingest_texts(
    texts,
    source_ids=["doc1", "doc2", "doc3"],
    provenance=True,
    max_concurrency=10,  # up to 10 concurrent LLM calls
    progress_fn=lambda cur, tot: print(f"{cur}/{tot}"),
))

print(result.total, result.succeeded, result.failed)

Async document ingestion — aingest_document()

long_text = open("article.txt").read()

result = asyncio.run(pipeline.aingest_document(
    long_text,
    source_id="article",
    chunk_size=2000,
    chunk_overlap=200,
    max_concurrency=10,
))

Native async LLM callables

By default, acall() / aingest_texts() wrap the sync llm_fn with asyncio.to_thread(). For true async I/O, pass an async_llm_fn:

# Option 1: Custom async callable
async def my_async_llm(prompt: str) -> str:
    async with aiohttp.ClientSession() as session:
        resp = await session.post("https://api.example.com/v1/chat", json={"prompt": prompt})
        return (await resp.json())["text"]

pipeline = LLMNLToCypher(
    llm_fn=lambda p: "",       # sync fallback (required)
    async_llm_fn=my_async_llm, # used by all async methods
    schema=schema,
)

The library also provides built-in async SDK adapters (used internally by the async methods when model= is provided):

from cypher_validator.llm_pipeline import _build_async_openai_fn, _build_async_anthropic_fn

# AsyncOpenAI-backed callable
async_fn = _build_async_openai_fn(model="gpt-4o", base_url=None, api_key="sk-...", temperature=0.0)

# AsyncAnthropic-backed callable
async_fn = _build_async_anthropic_fn(model="claude-sonnet-4-20250514", api_key="sk-...", temperature=0.0)

TPM rate limiting — TokenBucketRateLimiter

Pass tpm_limit to throttle LLM calls so they stay within your provider's tokens-per-minute quota:

pipeline = LLMNLToCypher.from_env(
    schema=schema,
    tpm_limit=100_000,     # 100k tokens per minute
    max_concurrency=10,    # up to 10 parallel calls
)

# All async methods automatically throttle via the token bucket
result = asyncio.run(pipeline.aingest_texts(texts))

The rate limiter estimates token consumption as len(prompt) // 4 and blocks until the bucket has sufficient capacity. The bucket refills continuously at tpm / 60 tokens per second.

You can also use TokenBucketRateLimiter standalone:

from cypher_validator import TokenBucketRateLimiter

limiter = TokenBucketRateLimiter(tpm=100_000)

async def rate_limited_call(prompt: str) -> str:
    tokens = TokenBucketRateLimiter.estimate_tokens(prompt)
    await limiter.acquire(tokens)
    return await my_llm(prompt)

Async context manager

async with LLMNLToCypher.from_env(schema=schema) as pipeline:
    result = await pipeline.aingest_texts(texts)
# DB connection closed automatically

aingest_texts() parameters

Parameter Default Description
texts required List of natural language passages
source_ids auto Per-text identifiers (defaults to text_0, text_1, ...)
execute False Execute Cypher against self.db
schema_sample_size 3 Texts to sample for schema inference (Phase 1 — sequential)
provenance True Generate Chunk / MENTIONED_IN provenance Cypher
on_error "skip" "skip" or "raise"
progress_fn None Callback (current, total) after each text
max_concurrency None Override instance-level max_concurrency for this call

Constructor async parameters

Parameter Default Description
async_llm_fn None Async callable (str) -> Awaitable[str]. Falls back to asyncio.to_thread(llm_fn) if not set
tpm_limit None Tokens-per-minute budget. None = no rate limiting
max_concurrency 5 Default max parallel LLM calls for aingest_texts()

Pydantic Cypher ORM

Define your graph schema as Pydantic models and build validated, parameterized Cypher queries with a fluent API.

Define models

from cypher_validator import NodeModel, RelationshipModel

class Person(NodeModel):
    __label__ = "Person"
    name: str
    age: int = 0

class Movie(NodeModel):
    __label__ = "Movie"
    title: str
    year: int

class ActedIn(RelationshipModel):
    __source__ = Person
    __target__ = Movie
    __rel_type__ = "ACTED_IN"
    roles: list[str] = []

Multi-label nodes: set __labels__ = ["Person", "Actor"] for (:Person:Actor) patterns.

Query builder

from cypher_validator import Query, Cond, NodeRef, fn

# Fluent API
q = (Query()
     .match(Person, "p")
     .where(Cond("p.age", ">", 18))
     .return_("p.name", "p.age")
     .order_by("p.name")
     .limit(10))
cypher, params = q.build()
# MATCH (p:Person) WHERE p.age > 18 RETURN p.name, p.age ORDER BY p.name LIMIT 10

# Type-safe property expressions
p = NodeRef(Person, "p")
m = NodeRef(Movie, "m")
q = (Query()
     .match(p)
     .where((p.age > 18) & (p.name == "$name"))
     .return_(p.name, fn.as_(fn.count("*"), "total")))

# Path patterns
from cypher_validator import PathBuilder
path = (PathBuilder(Person, "actor")
        .rel(ActedIn, "r")
        .to(Movie, "movie")
        .rel("DIRECTED", direction="in")
        .to(Person, "director"))
q = path.to_query().return_("actor.name", "director.name")

Supported clauses: match, optional_match, match_path, where, create, merge, set, set_props, remove, delete, with_, return_, order_by, skip, limit, unwind, call_subquery, foreach, union, raw.

Repository pattern

from cypher_validator import Repository, Neo4jDatabase

db = Neo4jDatabase("bolt://localhost:7687", "neo4j", "password")
repo = Repository(Person, db)

# CRUD
repo.create(Person(name="Alice", age=30))
alice = repo.find_one(name="Alice")         # → Person instance or None
people = repo.find_by(age=30, limit=10)     # → [Person, ...]
repo.update({"name": "Alice"}, {"age": 31})
repo.delete(name="Alice")

# Aggregation
total = repo.count()
exists = repo.exists(name="Bob")

# Bulk operations
repo.create_many([{"name": "A", "age": 1}, {"name": "B", "age": 2}])
repo.merge_many([{"name": "A", "age": 1}], merge_keys=["name"])

GraphSession

from cypher_validator import GraphSession, GraphSchema

schema = GraphSchema.from_models([Person, Movie, ActedIn])
session = GraphSession(db, schema)

# Model-aware queries
people = session.query(Person, where={"name": "Alice"})
session.create(Person(name="Bob", age=25))
session.bulk_create(Person, [{"name": "C"}, {"name": "D"}])
session.neighbors(Person, match_props={"name": "Alice"})

# Apply schema DDL (constraints + indexes)
session.apply_ddl()

Async version: AsyncGraphSession with await session.query(...), await session.create(...), etc.

AI agent tools

from cypher_validator import AgentTools, ExtendedAgentTools

tools = ExtendedAgentTools(schema)

# OpenAI function-calling specs
specs = tools.all_tool_specs("openai")
# → [execute_cypher, create_node, create_relationship, search_nodes,
#    find_neighbors, find_path, get_graph_schema, bulk_create_nodes]

# Anthropic format
specs = tools.all_tool_specs("anthropic")

# Handle tool calls from AI agents
cypher, params = tools.handle_tool_call("create_node", {
    "label": "Person",
    "properties": {"name": "Alice", "age": 30}
})
# → ('CREATE (n:Person {name: $n_name, age: $n_age}) RETURN n', {'n_name': 'Alice', 'n_age': 30})

Graph traversal

from cypher_validator import Traversal

cypher, params = Traversal.neighbors(Person, match_props={"name": "Alice"}, direction="out", limit=10)
cypher, params = Traversal.shortest_path(Person, Movie, {"name": "Alice"}, {"title": "Matrix"})
cypher, params = Traversal.subgraph(Person, {"name": "Alice"}, depth=3)
cypher, params = Traversal.degree(Person, match_props={"name": "Alice"})
cypher, params = Traversal.common_neighbors(Person, Person, {"name": "Alice"}, {"name": "Bob"})
cypher, params = Traversal.path_exists(Person, Movie, {"name": "Alice"}, {"title": "Matrix"})

Bulk operations

from cypher_validator import BulkOps

# UNWIND-based batch operations (much faster than individual statements)
cypher, params = BulkOps.bulk_create_nodes(Person, [{"name": "A"}, {"name": "B"}])
cypher, params = BulkOps.bulk_merge_nodes(Person, items, merge_keys=["name"])
cypher, params = BulkOps.bulk_create_relationships(ActedIn, items, src_key="src_name", tgt_key="tgt_title")
cypher, params = BulkOps.bulk_delete_nodes(Person, "name", ["A", "B"])

Schema management

from cypher_validator import GraphSchema, SchemaDDL, SchemaDiff

# From Pydantic models
schema = GraphSchema.from_models([Person, Movie, ActedIn])

# From a live Neo4j database (auto-discovers schema)
schema = GraphSchema.from_neo4j_db(db)

# From a plain dict (e.g., received from an API)
schema = GraphSchema.from_dict({
    "nodes": {"Person": ["name", "age"]},
    "relationships": {"ACTED_IN": ["Person", "Movie", ["roles"]]}
})

# Generate DDL
ddl = SchemaDDL(schema)
for stmt in ddl.generate_all():
    db.execute(stmt)

# Compare schemas for migrations
diff = SchemaDiff(old_schema, new_schema)
print(diff.summary())
for stmt in diff.migration_ddl():
    db.execute(stmt)

Dynamic model factories

from cypher_validator import node, relationship

# Create models at runtime (useful for agent-discovered schemas)
City = node("City", name=(str, ...), population=(int, 0))
LivesIn = relationship("LIVES_IN", Person, City, since=(int, 2024))

Cypher function wrappers

from cypher_validator import fn

fn.count("n")              # count(n)
fn.count_distinct(p.name)  # count(DISTINCT p.name)
fn.sum(p.age)              # sum(p.age)
fn.avg(p.age)              # avg(p.age)
fn.collect(p.name)         # collect(p.name)
fn.coalesce(p.name, "'?'") # coalesce(p.name, '?')
fn.to_lower(p.name)        # toLower(p.name)
fn.as_(fn.count("*"), "total")  # count(*) AS total

Query serialization

# Serialize for agent message passing
message = q.to_json()
q2 = Query.from_json(message)  # Full roundtrip

What the validator checks

The semantic validator performs the following checks against the provided schema:

Node labels

  • Every node label used (:Person, :Movie, …) must exist in the schema.
  • Properties accessed on a labelled node (e.g. n.salary on :Person) must be declared for that label.
  • Typos trigger a "did you mean?" suggestion when a schema label is within edit-distance 2.

Relationship types

  • Every relationship type used ([:ACTED_IN], …) must exist in the schema.
  • Properties accessed on a labelled relationship (e.g. r.since on :WORKS_FOR) must be declared for that type.
  • Typos trigger a "did you mean?" suggestion when a schema type is within edit-distance 2.

Relationship direction and endpoints

  • For directed relationships (--> or <--), the source and target node labels are checked against the schema's declared endpoints.
  • Undirected patterns (--) skip the endpoint-direction check.
  • Nodes without labels are skipped (open-world assumption).
# Schema: ACTED_IN: (Person → Movie)
validator.validate("MATCH (m:Movie)-[:ACTED_IN]->(p:Person) RETURN m")
# Error: "Relationship :ACTED_IN expects source label :Person, but node has label(s): :Movie"
# Error: "Relationship :ACTED_IN expects target label :Movie, but node has label(s): :Person"

# Undirected — no direction error
validator.validate("MATCH (m:Movie)-[:ACTED_IN]-(p:Person) RETURN m")  # valid

Variable scope and unbound variables

  • Variables in RETURN, WHERE, SET, DELETE, etc. must have been bound in a preceding MATCH, CREATE, MERGE, or UNWIND.
  • WITH enforces a scope reset: only variables explicitly projected through WITH remain accessible afterwards.
validator.validate("MATCH (n:Person) RETURN m")
# Error: "Variable 'm' is not bound in this scope"

validator.validate("MATCH (n:Person) WITH n.name AS nm RETURN n")
# Error: "Variable 'n' is not bound in this scope"  (n not projected through WITH)

validator.validate("MATCH (n:Person) WITH n.name AS nm RETURN nm")
# valid — nm was projected

WHERE clause boolean operators

  • AND, OR, XOR, and NOT in WHERE clauses are fully supported, including combinations and precedence.
validator.validate(
    "MATCH (p:Person) WHERE p.age > 30 AND p.name = 'Alice' OR p.name = 'Bob' RETURN p"
)
# valid

validator.validate(
    "MATCH (p:Person) WHERE NOT p.age < 18 AND p.name = 'Alice' RETURN p"
)
# valid

List comprehensions and quantifiers

  • Variables introduced by [x IN list | ...] and ALL(x IN list WHERE ...) are locally scoped and don't leak.

Open-world assumption

  • Nodes and relationships without labels/types are never flagged (e.g. MATCH (n) RETURN n is always valid).
  • Property access on variables without known labels is not checked.

Generated query types

CypherGenerator supports 13 query patterns. All generated queries are guaranteed to pass CypherValidator with the same schema.

gen = CypherGenerator(schema, seed=0)
for query_type in CypherGenerator.supported_types():
    print(f"{query_type}: {gen.generate(query_type)}")

Generated property values cycle through four value types: string literals ("Alice"), integers (42), booleans (true/false), and parameters ($name). OPTIONAL MATCH and LIMIT clauses appear randomly. ORDER BY queries randomly include DESC.


Performance

The Rust core is designed for low-latency, high-throughput validation:

Parallel batch validation

validate_batch() uses Rayon to validate queries across all available CPU cores simultaneously. The Python GIL is released for the entire batch, so asyncio and other Python threads remain unblocked:

import time

queries = ["MATCH (n:Person) RETURN n"] * 10_000

start = time.perf_counter()
results = validator.validate_batch(queries)
elapsed = time.perf_counter() - start

print(f"Validated {len(results)} queries in {elapsed:.3f}s")
# Validated 10000 queries in ~0.05s  (hardware-dependent)

Capped Levenshtein

"Did you mean?" suggestions use a 1D rolling-array Levenshtein implementation with two early-exit optimisations:

  1. Length-difference short-circuit — if |len(a) - len(b)| > cap, return immediately without running the algorithm.
  2. Row-minimum early exit — if the minimum value in the current DP row already exceeds cap, no future row can produce a distance ≤ cap, so we exit early.

This keeps suggestion lookup fast even when the schema has many labels.

O(1) property lookup

Node and relationship property sets are stored as Rust HashSet<String> internally, so node_has_property and rel_has_property are O(1) regardless of how many properties a label declares.

Construction-time caching

CypherGenerator and SemanticValidator precompute their working data sets (label lists, relationship-type lists, per-label property maps) once at construction. Repeated calls to generate() / generate_batch() and validate() avoid redundant allocations.


Type stubs and IDE support

Full .pyi stub files are included in the package, providing:

  • IDE autocompletion for all Rust-backed classes (Schema, CypherValidator, ValidationResult, CypherGenerator, QueryInfo, parse_query)
  • mypy / pyright type checking — all methods, attributes, and return types are fully annotated
  • Inline docstrings accessible via IDE hover / help()

The stubs are automatically discovered by type checkers when the package is installed. No additional configuration is needed.

# mypy will verify this correctly
from cypher_validator import Schema, CypherValidator

schema: Schema = Schema(nodes={"Person": ["name"]}, relationships={})
validator: CypherValidator = CypherValidator(schema)
result = validator.validate("MATCH (p:Person) RETURN p")
reveal_type(result.is_valid)  # Revealed type is "bool"
reveal_type(result.errors)    # Revealed type is "list[str]"

Project structure

cypher_validator/
├── Cargo.toml                        # Rust crate (lib name: _cypher_validator)
├── Cargo.lock                        # Locked dependency versions
├── pyproject.toml                    # maturin mixed-package config
│
├── src/                              # Rust source
│   ├── lib.rs                        # PyO3 module registration
│   ├── error.rs                      # CypherError enum
│   ├── diagnostics.rs                # ErrorCode, Severity, Suggestion, ValidationDiagnostic
│   ├── grammar/
│   │   └── cypher.pest               # PEG grammar (Pest)
│   ├── parser/
│   │   ├── mod.rs                    # parse() entry point
│   │   ├── ast.rs                    # AST types
│   │   └── builder.rs                # Pest → AST builder (shared filter-expression helper)
│   ├── schema/
│   │   └── mod.rs                    # Schema struct
│   ├── validator/
│   │   ├── mod.rs                    # CypherValidator, ValidationResult
│   │   └── semantic.rs               # SemanticValidator (labels, props, scope, suggestions)
│   ├── generator/
│   │   └── mod.rs                    # CypherGenerator (13 query types)
│   └── bindings/
│       ├── mod.rs
│       ├── py_schema.rs              # Python Schema wrapper (incl. from_dict)
│       ├── py_validator.rs           # Python CypherValidator / ValidationResult (incl. validate_batch)
│       ├── py_generator.rs           # Python CypherGenerator
│       └── py_parser.rs              # Python parse_query / QueryInfo (incl. properties_used)
│
├── python/
│   └── cypher_validator/             # Python package (maturin python-source)
│       ├── __init__.py               # Re-exports Rust core + GLiNER2 + LLM helpers
│       ├── __init__.pyi              # Package-level type stubs (all classes and functions)
│       ├── _cypher_validator.pyi     # Rust extension type stubs
│       ├── gliner2_integration.py    # EntityNERExtractor, GLiNER2RelationExtractor,
│       │                             #   RelationToCypherConverter (incl. to_db_aware_query),
│       │                             #   NLToCypher (incl. db_aware, _collect_entity_status),
│       │                             #   Neo4jDatabase (incl. introspect_schema)
│       ├── llm_utils.py              # extract_cypher_from_text, format_records,
│       │                             #   repair_cypher, cypher_tool_spec, few_shot_examples
│       ├── llm_pipeline.py           # LLMNLToCypher, ChunkResult, IngestionResult,
│       │                             #   ingest_texts, ingest_document
│       └── rag.py                    # GraphRAGPipeline
│
└── tests/                            # 395 tests total
    ├── test_syntax.py                # PEG grammar / syntax tests
    ├── test_schema.py                # Schema API tests
    ├── test_validator.py             # Validator smoke tests
    ├── test_new_features.py          # Direction, scope, error-category, parse_query tests
    ├── test_generator.py             # CypherGenerator tests (all 13 types)
    ├── test_roundtrip.py             # Generator output validated by validator
    ├── test_gliner2_integration.py   # GLiNER2 integration tests (no ML required)
    ├── test_neo4j_integration.py     # Neo4jDatabase and NLToCypher execute=True tests
    ├── test_db_aware.py              # db_aware=True, EntityNERExtractor, _collect_entity_status,
    │                                 #   to_db_aware_query — all entity-existence combinations
    ├── test_task2_features.py        # AND/OR grammar fix, Schema.from_dict, validate_batch, properties_used
    ├── test_task3_features.py        # "Did you mean", new generator types, deduplication
    ├── test_llm_utils.py             # extract_cypher_from_text, format_records, repair_cypher,
    │                                 #   cypher_tool_spec, few_shot_examples, Schema prompt methods
    ├── test_rag.py                   # GraphRAGPipeline — construction, query, repair loop, error handling
    └── test_ingest.py                # ingest_texts, ingest_document, _chunk_text, _build_provenance_cypher


Examples

The examples/ directory contains 11 self-contained scripts covering every major feature. Each script uses the real fastino/gliner2-large-v1 model (no mocks) and connects to a live Neo4j instance where applicable.

File Topic Requires
01_basic_validation.py Schema definition, single/batch validation, "did you mean?" core
02_schema_serialization.py to_dict, from_dict, to_json, from_json, merge, prompt helpers core
03_cypher_generator.py All 13 CypherGenerator query types, batch generation core
04_nl_to_cypher_basic.py NLToCypher with real GLiNER2 — CREATE / MERGE / MATCH modes gliner2
05_db_aware_all_cases.py db_aware=True — 3 progressive rounds showing all MATCH/CREATE combinations neo4j + gliner2
06_ner_extractors.py EntityNERExtractor — spaCy and HuggingFace backends, custom label_map ner
07_db_aware_with_ner.py db_aware=True + real HuggingFace NER + real GLiNER2 + live Neo4j neo4j + ner + gliner2
08_neo4j_database.py Neo4jDatabase — execute, execute_many, execute_and_format, introspect_schema neo4j
09_llm_utils.py extract_cypher_from_text, format_records, repair_cypher, cypher_tool_spec, few_shot_examples core
10_graph_rag_pipeline.py Schema introspection, Cypher validation + execution, result formatting neo4j
11_biobert_ner.py BioBERT base vs fine-tuned biomedical NER — label_map adapter, full db_aware pipeline neo4j + ner + gliner2

Run the core examples (no extras needed):

for f in 01 02 03 09; do
    echo "=== examples/${f}_*.py ===" && /path/to/python examples/0${f}_*.py
done

Development

Building

# Development build (installs editable into the active venv)
maturin develop

# Optimised release build
maturin develop --release

# Build a distributable wheel
maturin build --release

Running tests

# All 395 tests
pytest tests/

# Specific test modules
pytest tests/test_task2_features.py -v   # Schema.from_dict, validate_batch, properties_used
pytest tests/test_task3_features.py -v   # "did you mean", new generator types, dedup

# GLiNER2 integration only (no gliner2 package needed — uses mocks)
pytest tests/test_gliner2_integration.py -v

# DB-aware generation and EntityNERExtractor (no ML or live DB needed — uses mocks)
pytest tests/test_db_aware.py -v

# With coverage
pytest tests/ --cov=cypher_validator

All GLiNER2, NER, and Neo4j tests use unittest.mock to simulate models and the database driver, so the full test suite runs without installing gliner2, spacy, transformers, or a live Neo4j instance.

Dependency management

Python dependencies are managed with uv:

uv pip install maturin pytest
uv pip install gliner2   # optional, for NLToCypher

CI

GitHub Actions (.github/workflows/CI.yml) builds wheels for Linux (x86_64, x86, aarch64, armv7, s390x, ppc64le), Linux musl, Windows (x64, x86, arm64), and macOS (x86_64, aarch64) on every push. Releases to PyPI are triggered by pushing a version tag.

Project details


Download files

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

Source Distribution

cypher_validator-0.12.0.tar.gz (12.7 MB view details)

Uploaded Source

Built Distributions

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

cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded PyPymusllinux: musl 1.2+ x86-64

cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded PyPymusllinux: musl 1.2+ i686

cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl (1.2 MB view details)

Uploaded PyPymusllinux: musl 1.2+ ARMv7l

cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded PyPymusllinux: musl 1.2+ ARM64

cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (925.1 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (926.8 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ s390x

cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ppc64le

cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (982.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (900.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARMv7l

cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (894.1 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ i686

cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_armv7l.whl (1.2 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARMv7l

cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl (923.5 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ s390x

cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ppc64le

cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (892.5 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARMv7l

cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (888.2 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

cypher_validator-0.12.0-cp314-cp314-win_arm64.whl (742.0 kB view details)

Uploaded CPython 3.14Windows ARM64

cypher_validator-0.12.0-cp314-cp314-win_amd64.whl (742.3 kB view details)

Uploaded CPython 3.14Windows x86-64

cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ i686

cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_armv7l.whl (1.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARMv7l

cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (922.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl (922.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ s390x

cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ppc64le

cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (974.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (895.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARMv7l

cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (888.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

cypher_validator-0.12.0-cp314-cp314-macosx_11_0_arm64.whl (821.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cypher_validator-0.12.0-cp314-cp314-macosx_10_12_x86_64.whl (862.8 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_armv7l.whl (1.2 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (925.3 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (893.2 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (887.8 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

cypher_validator-0.12.0-cp313-cp313-win_arm64.whl (741.0 kB view details)

Uploaded CPython 3.13Windows ARM64

cypher_validator-0.12.0-cp313-cp313-win_amd64.whl (741.5 kB view details)

Uploaded CPython 3.13Windows x86-64

cypher_validator-0.12.0-cp313-cp313-win32.whl (693.2 kB view details)

Uploaded CPython 3.13Windows x86

cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_armv7l.whl (1.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (921.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (924.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64le

cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (974.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (897.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (889.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

cypher_validator-0.12.0-cp313-cp313-macosx_11_0_arm64.whl (822.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cypher_validator-0.12.0-cp313-cp313-macosx_10_12_x86_64.whl (862.4 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

cypher_validator-0.12.0-cp312-cp312-win_arm64.whl (740.9 kB view details)

Uploaded CPython 3.12Windows ARM64

cypher_validator-0.12.0-cp312-cp312-win_amd64.whl (741.5 kB view details)

Uploaded CPython 3.12Windows x86-64

cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_armv7l.whl (1.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (921.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (925.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (974.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (896.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (889.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

cypher_validator-0.12.0-cp312-cp312-macosx_11_0_arm64.whl (822.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cypher_validator-0.12.0-cp312-cp312-macosx_10_12_x86_64.whl (862.4 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

cypher_validator-0.12.0-cp311-cp311-win_amd64.whl (743.9 kB view details)

Uploaded CPython 3.11Windows x86-64

cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_armv7l.whl (1.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARMv7l

cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (924.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (927.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390x

cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ppc64le

cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (979.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (897.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARMv7l

cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (892.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

cypher_validator-0.12.0-cp311-cp311-macosx_11_0_arm64.whl (823.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cypher_validator-0.12.0-cp311-cp311-macosx_10_12_x86_64.whl (863.8 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

cypher_validator-0.12.0-cp310-cp310-win_amd64.whl (742.6 kB view details)

Uploaded CPython 3.10Windows x86-64

cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_armv7l.whl (1.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARMv7l

cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (924.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (927.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390x

cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64le

cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (979.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (898.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARMv7l

cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (891.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

File details

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

File metadata

  • Download URL: cypher_validator-0.12.0.tar.gz
  • Upload date:
  • Size: 12.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0.tar.gz
Algorithm Hash digest
SHA256 9b58f400e129648d3e116cb26dbd5b3b9dcfa546052485e3fdc133d807cb12d2
MD5 793bcfc510fb52bcc6aba54bfe13f28a
BLAKE2b-256 4475bbb2df81f35f707a6b7bfe6b9485a39120866fe2bf7f93ad95e02f4dfb40

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: PyPy, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a5e5dddef69f7ef00634f99a7ac16ca43af239239cf48d5952ebeff249f47d5c
MD5 af3dced3b8d28450fdafb6f7045b15e6
BLAKE2b-256 cb8909eacd2e75e9d34e03e8923eea02197e792f678b6e60ef1e46e9d56bd459

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: PyPy, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 62227e5994769415dc7941d4b3e6ab5ba95722d950c185db853b3afce9fd3fff
MD5 97233cc67722dbf1bd0bf3bb2ed01233
BLAKE2b-256 c2fdc8381872b66517a0dfe54c1fa78eb5718c71d0da873dd7b7f339395782c6

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: PyPy, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 e805b7c797360d44e149d9bf5fac882361a911dc84b17410694f4043a3a89bdd
MD5 52d4475096f6d97b0fd85d81a054294f
BLAKE2b-256 d971af9b9d2a09cd114d46712159f79c2829b92fd026c61b795318a1c09d5a45

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: PyPy, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3fe30912f936441460dac2b1e4e88070b3053d037aaf13b0adc3c3e3a4ae85a7
MD5 cedcc9cbfeea0aca357591a4739b4f48
BLAKE2b-256 aa096812174957ff8202618c02bea9ae2b495a3bb86a3d83e007f5591731d344

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 925.1 kB
  • Tags: PyPy, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2262743169327627accd99657965430c8ff5d58560a6ece7f300c98c2000561a
MD5 2e34f79e4ce939ed14db7cb1b1050415
BLAKE2b-256 2b76cf11bbeb74d57126c7f88d7eff6b6a75103f2f506864f889503d03322e37

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 926.8 kB
  • Tags: PyPy, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 5b0c9b7abbf32a66ceb02067dce7fe72a417fabd831a97fe5c82c5acffc2c37a
MD5 5eef1f19895165659c32cc6089fc2d3f
BLAKE2b-256 e7866a8bb8dc08d874f9d7779121fa83ca1eb8f83c304c4b47bf8c67aa7a8358

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: PyPy, manylinux: glibc 2.17+ ppc64le
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 69e12bc32e3ba31f4229dfb295cfe02488ba3c1c527f5c0487b017f4579b1be8
MD5 73a8be1912838f571c1509eaa98cf15a
BLAKE2b-256 f8b9e9190c92fbfc207b5355a27543754947f7bde9e7efe237964bf2f067cc4e

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 982.9 kB
  • Tags: PyPy, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 249ef6972c596dedc95b370085350a203081c98b711c951c00a782c96b0b4e35
MD5 9e769629982cfb24050a333aa99573ed
BLAKE2b-256 705d375d8af6af98511fa7256f1971af5cc05a3d5c8ceac23738b042bafcbeb2

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 900.0 kB
  • Tags: PyPy, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 5b0157bb0f692476dab98968ebd00f60ffa019e658cab163c87463d719b365b1
MD5 1a34a75f119ae904ff31c3d827379a81
BLAKE2b-256 548fa4ac978c53c00075bc4d041ebbabc085227412197d47b93c880579f7822d

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 894.1 kB
  • Tags: PyPy, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 eb460f167e29f9d76e17eba36a81495ba410ff4e8b0d0e21fc52c54c783cb607
MD5 ed4c5c0e8b188d8db25d6847ea988243
BLAKE2b-256 97f9b7d91dbbefb6f51a31df3e66b591c702060453cd271cf4a64fedbd43dc3d

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ee1fb8516e0bfacfb42cc6cf7afaad419d5009f1d57c67ab8273bc5b19001035
MD5 cb41d5415194ae6ff3029c32f6c87979
BLAKE2b-256 426744b6659e23913f4d508322d7230eaa4db47deefb04d119fbf38872077869

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 7c0b34af4a7db6f4db7ad926eef9b8686667170d7a036ff816a13c29f73d9f82
MD5 e82f38a8a931735516b563ecd74e88ea
BLAKE2b-256 2a60895efe927b16254c6577397a02ebc64e652f07a26cb40974003e2fcc700d

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 134c3f0ec68326147f6a8ee8e95fca4aa46f842a378afa593e6cb5188f13607d
MD5 99885d2726f097f8eb454b3c5cd7e61c
BLAKE2b-256 a3905fb4bee79839de5ab35ad8ef7375ee1d40ff83f7ed90c1e1641567b23257

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2ea8869df28bd51a5ccccafe63c8d364658d7f23e056fd47c893e5378dd2bde8
MD5 232db77899cae7aa715dd4aad70b885e
BLAKE2b-256 0a3259fc9f64fa65838decb1d43464239219bf574ccc86e68202b06ac3311009

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 923.5 kB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 e97cf3d68965f96b5df51e95a88de45ecc0d215ae9b90663894d313689ef4a31
MD5 414f5351b0bcffb76ccf47bc00f0cf03
BLAKE2b-256 db530d4f3151d16a25767de625e804b631577beec011b676cbcdaf11b6a62c8a

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ ppc64le
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 39c8a64a115468585c237052c659d6d9a4349a0dae307c3ebaf82a7bb76db9b4
MD5 6d36c199a7926014fc35b543b983932e
BLAKE2b-256 7fedc65f2f2ee30ec4c9f595d1ef4db5d4d806b961512a426c60cb52a3af919c

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 892.5 kB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 5e2aa4acc9ba087e070d20b99a3621030315cff9e4f556c5e069f41819ab5377
MD5 f8c83c8414e3a1f402f00e4713c91ee7
BLAKE2b-256 56c1dc8991da61f6a9c264169f50d5f78cf6c482865070508e242715d7db69d9

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 888.2 kB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 64e380607e45b81c685c9707a57c1139ab244cfb07fe38896a75c98cc6c71a0e
MD5 28251180b3af5655f969941d6f709b61
BLAKE2b-256 037cbd6cf771a6aa35116fc61c054794b7555cd7a4eef6dff7ccf7a03c8db1f5

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 742.0 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 0a6837c9eade947417e7b6fa6005a86a0c89f99fa7bbc3d255072959fc7990dc
MD5 b5c5c138f4cbe9a8848da143c63335a4
BLAKE2b-256 64c03f8b8be007a13f46f9f132747ba3a4e5c1737a04339fd87cd3ddaca3cbdd

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 742.3 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 9ed1854117af65e2353550961e2dcdd676e63cab90c2120615963a19839f89a4
MD5 87115b1b742f6f714163f7d946a78d58
BLAKE2b-256 9234b1d9cc5a7ab8d41025c53918d76b6fe05c7dbf48e798e7e83f9b9d64479d

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.14, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d727d23138a91c5958f07c4fbdd6dbb87e002162cccb9ed6e0f427f8068d1407
MD5 32868eabf0ca6d1799f0bfa887d2d4c5
BLAKE2b-256 152772539488e081cc7ffc0bef0f8b312d74630f40b8980fdb10ec81a5cf2773

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.14, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a5add11e1221d31fd7c3db070c22e128b5a8a00f5663f9b2cb50e650f7159b57
MD5 25d1a47c5db837243817595ccf24f630
BLAKE2b-256 88603fd7463a58ebe2cfb13fd3ebe503d1798beb879e0d0dfe96e96cb4adc8a6

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.14, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 97f5e1aa0a7fb9e7ac21e1ee3639cc8d4ce01bec88d6824e6329bac55ead773f
MD5 4f7838e1de499d94266f4a8572bb64b6
BLAKE2b-256 de11ceec8517a19b52a53b772f0094430ff10c8653ad7f76f71011f70d506c55

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.14, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4d6decf02035a445f56d92b23f6b7fa5feb9605bc98acb539db9515c34e1d974
MD5 bd6749a5301f2d837943ba9a9d58d09e
BLAKE2b-256 5180e229326ca3bc4f6d18b6a0eb414f8909c9569f4d6ce740687cc23f427b27

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 922.7 kB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 818b41c1a211ad8733f497d934455b82753193848201488d09eeb471adfa7f69
MD5 82ceb8693623e5660507b5e7c94cae75
BLAKE2b-256 29d4a28b52f14d78f737045479751d84b38d7df4356ae8cea0d299e5b0f4debd

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 922.9 kB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 28d93d0f471bac3dba1d2125445b055fb7069bfbcce43fc0aeb2700324f078c2
MD5 cdfe5b8c5d4f1dd3aa4e1c678f13f6c4
BLAKE2b-256 32f2b83bc89b5b1097e51794c3a8fa3ab23d05593aafdfaebe965894395d41dd

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ ppc64le
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 bdfcfbe1541bd88e72f2cd968b1fc1d05a4bd06d906c5bba3baa2ead1d7c63f9
MD5 22a60aa096e4b6efc6ed1f9c1fbba0f5
BLAKE2b-256 1a032e3b024d1159c040a945704306b197038924fdf7461a089b2f998dc37963

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 974.9 kB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b709ebbc1d30965790d522b82a74e6f6f04248bc3619a34d4cbce18f424e1fc8
MD5 4bca1906d7a44668b1f4a79f10da95f0
BLAKE2b-256 6ea8fbcef5c6591bd4076c3d7de212560eebcb5b90339a3eb6a47d222a1d9df3

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 895.8 kB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 01aa5146460560bfd1ba3006547b1b516f817d79f054c67220e6a423b8bf0f2e
MD5 aa732df2c45157478ac623bc929e3011
BLAKE2b-256 3e8029a4efd21a57329a201da143c5e84c45ee7ddc8c9716f31e92c056f1f5b5

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 888.1 kB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8541a9031298984250affa003440e5b84a4f2c20d3882a2382f2b741ca73341f
MD5 752779b5d6485c44ff329d8bf10d3e89
BLAKE2b-256 943f88f97a6b2646135433c8526c750af06deb052a54e627e022e4bbe1a88969

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 821.2 kB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aca2b00ae88fe4938f5e1a1ec2d644f2f187028c217b2a84dd6ce2ca8ec16255
MD5 10a9052e562cd0db8f4570af00e571ac
BLAKE2b-256 0d16b775d03277e226588255b1143d965b62d65550b589324f99553254640536

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp314-cp314-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 862.8 kB
  • Tags: CPython 3.14, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 07f7d08adb9dacc84e08b35563c5cd340a9eb0580d22fb95b0fefd41c8582d83
MD5 7921e41710648229064fb04a5d4d8e12
BLAKE2b-256 9e11012d0945598f6b60517bbc5faac1eef60bd672726ce5c5b8933797c2658e

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 844a697f1a5fafb5cd7b9e861f45b689306ba7122df28ad5b68009e7f7324020
MD5 37150a1def42f06ae4a75a5c64f6dfc4
BLAKE2b-256 38cbd70a983fe6573a67b472e575f490b609bad88c075c8fa6dc9ad00bf3252e

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 3397fcd00b598c99cabc38bc915af73c0b306a84dc67037f60a9b1d79b1e4de2
MD5 03af8839a8a9b8e9ebbc7cca025fd412
BLAKE2b-256 21ad15dcbfab445d2a1db0503710a605935be516aaa0453a242b02cf9a26fd0b

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 9dba43968ec75cdcc5a31829feab1d8bbf0c1537d6c880c6f583d70e6c5ab6e9
MD5 a3d75f6fe626851e643163b38cb57998
BLAKE2b-256 3ce30906b0d25c4f4026f7916d307e0f8ce1e0e1e5dbf6524c4281fa48755a5b

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 24c244774238fd1e132c209367bb104d68d91d3fc64029a6e30ee51002426c87
MD5 77184dc063f38836008c324981487b97
BLAKE2b-256 9c1a09a01c8f22d77a5839d64f3b8af83de26a86b1fbcee228102416383d4fef

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 925.3 kB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ef4294ecd03905f09c0fca7f863cbe74cc7d84da4d9e8a86b35582b133d3fb64
MD5 c0e5d656a962edf51ed712ddfafee9a6
BLAKE2b-256 ec6697deb2c6ec4ac3f89e6f5ed68df907d58f9fb6aac763853cb0fea657500a

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ ppc64le
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 5723877c84784614fffbce52a49f1e1c1b09400d38b79d29c3ac555171198429
MD5 a05132da20f6045cc353f2a626932d25
BLAKE2b-256 c368f1eded2af587722a3d8f32f915629cb31acd50ad44873c6a6d32d85ad744

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 893.2 kB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 122e44b1c4941dd0101257b3bc272cb0c3f21a896739402433b55a4bd88337ea
MD5 2a62311802c81242df1632020bd18594
BLAKE2b-256 2d2f1884e9367203966650a91081d63794c8b5b47a5a7744ef8ffc5570d46108

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 887.8 kB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 75d9e9cf90999e80555ac629f50b0d38fb7d8b0bb7060c1c02993197a7b6523d
MD5 d37a4eb8edd1cbda4e0fb5873448e71e
BLAKE2b-256 d7a18452cd7151a6d00a3c75cd5d4a3818adeeb06a0ca92e20b0574b34ff7eff

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 741.0 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 516ad63f4bbb99fc32198925d2de35f2937561c7a8ec1f16ad457ef968cadb7f
MD5 bb9f6616b607e3e5a49a9cb1ada3547e
BLAKE2b-256 cf2c2926ce24bd72a22c7247c9392531772c6dfeffb84991568c5ebd0fc9859b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 741.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a177d95bb891f4ba920ab9038460e567415d7bbfb4e466c1d3c4896726039bc6
MD5 9e37deac35457f5355f9adaa9b4f17a6
BLAKE2b-256 ddfa0789016974f4686c9c8b1316fe01b9ae474a05bf1de82ec8a0477865cf22

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 693.2 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 bd8ed39412f5edcc4a1e435b7fae8b0ddb09776095476070ba2d7184e0f4ce4a
MD5 4be240cd83a2cb6273de744887ff33cd
BLAKE2b-256 02eabd708787f94180062f22ebb014914ce8c0269ddde1ab77b9a823b7635127

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a6e3869c2ebe8d6d2b9600f4746231f0d85fec781dda3210fef67be1a768bdaa
MD5 342bce857f9c97dd24fb47aad37634df
BLAKE2b-256 75e0c4128091cc4d1be11490acfdd308a94c0440e216678b8c8e4cb035671038

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0fe59d76a9b383defc46cd589961af9f22fc222205af1918314435ccd6452dca
MD5 55dbbb888c89fd5acf4618e87e8b4b8c
BLAKE2b-256 97ef9bd464ee30b155d8187c86f5e3b238c39643337371b46a8a844ace351216

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 f62fe43c2d0d225c7ad18b378c280c630a29429ec10f151f3cfd4d3e79b6c24a
MD5 7c3346647f529434de7e08417e500c2f
BLAKE2b-256 443ceef29e4ac01112c7853c88607e5fa81f9c6c65a0b663e21523ff876351d2

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.13, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a3a31eed7aabc128df42e596d4edf75ca83db85bf17896d5ff82b22ab9388fb7
MD5 cf09ff6099124c814bc7057236ecf0fe
BLAKE2b-256 2eaebdc76359802d0ff4bce9ffdf03012748f128854aedf7a17df6b62208b5a4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 921.0 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a9c6d7b21f8c8b3bccb4a60d9271bf0f0412a241fb4e5a6a700799b094af390a
MD5 393724b43348ab213cd19cb4268732fd
BLAKE2b-256 13301e3475873db7e2e83c43df29cc74b54ef7fad7707fa686f7ba771af4be23

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 924.9 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1dc24a59c5ade67f8ff280ab6c5502322bc5f69c3c2fec0f342cd866b27a3846
MD5 e0198e773fffa589fb9b948023901cc6
BLAKE2b-256 5f6faf9e1c83eb586578cd973d6f2897de8e53879164b2276529df284b9b9c70

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ ppc64le
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 d3de88ebb387f182ea530d60e569860a57eae6b9596f1ea253e53908f876c62b
MD5 82e9d2c299784b890131828bfb10a112
BLAKE2b-256 3eee8db899a97da0d9fc09ac3ebacb69601abd90bf2459e72f6f9e6f64ac9561

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 974.2 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 07a3840a03e0eb46d8254018663cc34d7bc43322cbea40a5a12fe168b5d28878
MD5 44c3b38f5439842671d4cc790e64d8d7
BLAKE2b-256 b4018e3aeaf565b0012251bd8272d6e1d2b710e57bac9de6b40cd086cb3aad87

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 897.0 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 be5052bfb30dc4a61ba98bb494395d0e6c19784eeb90c14de65a63a083377d34
MD5 5ffc01a2d3934a44ee3d3d2f81e042e9
BLAKE2b-256 b540a742397c3b959c8438a5e282b60b5ddda01194030760cd4a28032d6c8519

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 889.8 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a6a44d90ca975de7be947a6d760e8bbd51acf9895204eca4ac0c62afc95e2d65
MD5 947151e4ba88f43f39b5526950cb3659
BLAKE2b-256 d35390c33ee3e092265b1ca665bc1d5f397414cb722cd723468098a6d9c37673

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 822.5 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c4676430930cdc00c1cb84d06479d493920356ce87f24b35bb0b31150742ae77
MD5 c3743cb5ed8a2ebb0753d2189f913a05
BLAKE2b-256 8a1d28c4c4951ffe6f4f9c3dd606aea39aed313f6a708b1ba2292b517aaf1264

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp313-cp313-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 862.4 kB
  • Tags: CPython 3.13, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 52ea2b21578bc1fe3c6326808c21394332b65533a26a4699c1d00fba9f488321
MD5 afee57ab902b74c5991440339f9ac85d
BLAKE2b-256 e24555c1e3eb89d22dd88c058f37e46db312e2c2f4105cd284124a33aed68244

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 740.9 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 dae990343e3a5cf8d52a3626d5fd9c632bd2988880bdd4af232299d5c5c8ecbc
MD5 01c08f3f550d740b3019331428890e28
BLAKE2b-256 389e909726d89184709e28e173b5ae4c7f0b758cb557115f74a90df650bd144f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 741.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 468414a8af0b4d8e3588bcc89b5edf4766b9020e6010ee23a8a818a63610bcc4
MD5 2f01fbb2b741abd97a141d47a00954e1
BLAKE2b-256 6ffd9566f2f1e60d04280997f30f70fdc483d28e429d8b4ee3ec04d64f921460

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 39c8d25c0ea89fd6d6f0e5d08d22d279210ae9a9e255fcc3e662daead75c159c
MD5 60f2ff14ca74ed152d4c790359f8cb5c
BLAKE2b-256 05c20c8d972f17a328b005c82599305e5b2881feed89f51840c507c0a1d0d179

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 8bea3a7ed02d86b9d1a93e97ee1536dba6bca944d827f58953b6831212c0a4fb
MD5 9bda421ab1cd6f37d8cf39d3eb7af3ea
BLAKE2b-256 3ca45eb114b38c0389ed6e0b87f643f5a288968642c94bbdfe41a88156829f87

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 3c8c5c15fe4c19ca0fffe008a13f69defa2c84cf62929752c1c94df587041a9e
MD5 3a25404b58030f89b48f1c111db9de86
BLAKE2b-256 cc45682249af38b5a8954d477a397c21d5244e8d566cf4bafe6875a393e5af2b

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.12, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a6d9f8fe06fcb6ad22e0e3765b8dbff8f969f9c509272351aaa6acb8fcf7cd37
MD5 361f142c8bf0dd10729fe91ed6fa2e2d
BLAKE2b-256 9b5f8437ae6831b94f2e1e9d8207ad7042cc9815a3413e1b7f47640dc9e46944

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 921.2 kB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 08d1973c77e2634e2fd18da5270a08f2810f7df359f36537da47c34e3deacbb2
MD5 55624ee0b4c932b992602cad06795528
BLAKE2b-256 84fd22a6fb2a4bd1c7561351eb652c178f3ce49a6ac7084cf5264dd9a2871a91

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 925.5 kB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ba25a8c1fcfc4d87695eec6314fcd354ebf3ddd5eb6c4874ef271079b9002a1c
MD5 041be4ba14655cd9f2a0f56daa9cb791
BLAKE2b-256 ea03ff6598cae6275cdb22d9339ae812e94ae3ce5ba78943b93d6950c536003e

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ ppc64le
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 46eb721d89ca2e47ab0589564653dbd90fae2dd561cdd68ac8284f6b5d61c127
MD5 b3490a42395faf41b2ea6c2aa2342129
BLAKE2b-256 c6e73a2859d8315bd25b47840dffabe2d0e08d12aed687a3b2e4525db9b5104e

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 974.2 kB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 519ff97a4116f58a5ed583102da2a93582cbb29750b8da6016a88406195637d1
MD5 288a219103a2a4ce76ab46dd9f876e22
BLAKE2b-256 daa2ca67951e98b7c97a21018433be4c46c0a53b83a16860bd95cec629f1a7e0

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 896.7 kB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 2c087183fe5ba726fd20945fd2d7a3c1be7af36e83d09a0d312956b9ecea7769
MD5 627effa8202ee92647a6742050e18609
BLAKE2b-256 d7bc1231b7aaaceadffdec9b78b6a578cdd55a1a16ab4e238a23f02aa8e14c53

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 889.6 kB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 df1eaa3175e7f72d31f7a717f7869c933f5764a54c0507f27cf047d58b96407d
MD5 55360032fa9e7bc1c5fc18dddecaed66
BLAKE2b-256 c8aed7c89dd88fa7b562d01c83435ef0a565c35860b5bc25c22d4b692e7cadd7

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 822.4 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 defe2a15624d87278c5622daf3986824d80b3e655ccf420e130c631b47cc9e39
MD5 0459ccb298e626397d26ef8a419fad2b
BLAKE2b-256 5c3acebb2606cf577cbacfb5073180fb3c3acd46b89366472af0b19606405f4a

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp312-cp312-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 862.4 kB
  • Tags: CPython 3.12, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6fb86f6eabd36c7e296798751bc2995fe2483c2dd5d75e2458d4ece7551b79e1
MD5 90edde36dc41e2bcf3940f850af605ea
BLAKE2b-256 7928272803a9b53122be67fe383aa02dc3a146ed196dadf38c264fee57411b07

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.12.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 743.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6ff98f25cad4a9af436982897ad7a5c769da66578e25ebe9f5fd3690947239a4
MD5 ec225b8fc5efb60d3bf85813092def7c
BLAKE2b-256 d38130efef21791ad3ff265983b9ac6171bf529954412461b752d154f823f6c3

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5d8894e00c2ea396ef04ab35f70060d2a95aa94737e9042e0172109e5fe24279
MD5 90ce7bbe3181d7a096acbac7da30104c
BLAKE2b-256 82d0f77b593971324984d76ac8cc9578bc413c4700e46f49fb1fa090b1f14839

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.11, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0e4a79176527f6879858919c5842c8fa9a8220f3e38bfe120d26bc344c20134a
MD5 d75f2a2667d8ac378bc55553f02c7d99
BLAKE2b-256 3f325deaf903a39240d083a28c35a03a3f5a034164ee4693853f85a8738bd857

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.11, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 438d47e0e74902e326cf61ca898853155f4f169894b3cb4e7652b4e99689c05c
MD5 ddacd7febe7d0e2f0692e580eeb4a329
BLAKE2b-256 c025b468128cb71e775c2e5df37673b14759535e072c427d78dc3082df7019bb

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fd8c7202c73be872ea3fb3c5ee0185bb7b53432b36f37e57e4354558e0787997
MD5 d7d13f6c1bd336f7990c15fa29e49ff5
BLAKE2b-256 3c22ec2c53bd59fe72a6eacef3cf265ceb4a3dc2b6030dccd52ee43c040a5014

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 924.2 kB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 752b3c7ffb21e0bc3051c696b8848cd7367b7e445a0d2cc2969c3592b81b6831
MD5 51cac36de7682a41f7cd6caac8c8a0d3
BLAKE2b-256 28b69dd56f3436ef2896a2dc1d87dc27ce633143914b78508be7de2104501ce3

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 927.6 kB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 44cf1c04364d81c32fb2580f0d580f0d1ea676fd4abe2829238bdd1799290ba8
MD5 e36362d44d96ff1799789100712c207d
BLAKE2b-256 fa96ee9e88dac4dd58c527f8af4ebfefe69591c8f736146afe0805ad8be555d1

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ ppc64le
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 39a5408a66b72fc50ebb4605bbbbddd557b1a7f2f8ed86b9de8d293a88b39929
MD5 d8f4382d4c62efcead00dbe90854c397
BLAKE2b-256 25bd639b455db7cc16f9471daeec1c29c90b4b790c08e479ff774c78204f17df

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 979.6 kB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 45586d28f63ab69de948da6650c1d195eaf212876d7aeaca0e6d08d00f1f5e91
MD5 8c11ca30ac1dbbf4c5b3128a2b972934
BLAKE2b-256 1a61c0a2e5a69a305a3c9b01d88e7a7f43cc4fe3ccd9442a381992a11b2303f1

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 897.2 kB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 76eeca7931c6118d32640a2e0d7ef088326bdceabb0ecf168a076ba1ae9bae35
MD5 21b410e4a15232aee2e2e10177c294f1
BLAKE2b-256 b190df885aac4f8a2e4af5fa1cdb1013eb0da19434cc6ee288206978e717a6a2

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 892.7 kB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0501e309742c167dc4e12c7aeb9edfb69ea7555d50cd7ea9210d825785b4bee4
MD5 59aec0a04fc1df45eaf8c9b6c08f7da2
BLAKE2b-256 5fdbabaf3bf0f358e488aa5c27af175da2967cc95cec8d545cd5e650fb750e94

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 823.5 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 24b3065e9811a76bfd1e50f26f9dd3bd5d9fd215fbbcefbda15ca528ada6ff49
MD5 abc7b00838cdfb5055b0d91b59b65d38
BLAKE2b-256 82376ec7a5139ed98a413fd7b9881081980d952efda0ed99a67c8cc467adf7fa

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp311-cp311-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 863.8 kB
  • Tags: CPython 3.11, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2e4b4b943b6ba917fab6e499a6cde6a4791c30c977facccf44dea0682fff5c3c
MD5 396ecc873a110f793cc9673ad7145091
BLAKE2b-256 89defa39646892c7ce4eb61980c557f596a107888e399ef1af868a6f500fa00e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.12.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 742.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 00285d3924a02d329625c8d2b028db9494ae92dbfcedda05985836eb9b1cfd8f
MD5 504b1c19e4bc90ceca35956966178d1a
BLAKE2b-256 86555484f7085034782b27fa8d5377c51648839b9f7656b01b2340355efaac1b

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b86d97ca31ba7944245a0522fc75f756d98d0f2fb4070aac4e3e342a2c0fca18
MD5 a0e47674d110ec6cf1e50d3a97a886bd
BLAKE2b-256 5565f9526ae7e631e9193907350c92e04b75be5679491ddef3071ed6a94ee95b

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e3227c62f6f24bd7b95c0625cf187521193e4ddb7a27192070f7435318e99374
MD5 8bb8fbd6d914c20514aaccbbaf93bb61
BLAKE2b-256 b31b78b402aeb0130a265b02ffdbbe792848a2c318ddc649914da6e6bf599666

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 2eb7617c02d38c2418607564795979f78184a65f18eadb503ad2843be1157ab0
MD5 6752766256da7f84546b57b5eecc9912
BLAKE2b-256 93346db54387b564b4ad12fc9f4613745d714ffd5d58f3617355572831f97d6b

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4b6ac3cf81edc4a1f6d83ddd7ee7e118d05f2ee4aaaeb04335d0e9c480e09bc7
MD5 53f023e126bdefa8d791d471b32897f3
BLAKE2b-256 6d3a42bfc28781f2bb7d70c714a52288e06a6f8792284b3b5fc2c13208ef3f0a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 924.3 kB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1006c372ce870b61de79a4f5d8d09e8c6f601772f912d1bedbcb2b99470159fb
MD5 d0076e7ae10b88f27f882537c04aefda
BLAKE2b-256 913589db23f2231b26000e8498a45858e7c962f86cf7013b7b5407717dc96363

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 927.1 kB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 33af653cc87e892129a6b4f4412fe0ab718ca070fd97835c2f6abccca26ab612
MD5 9d35e2c36e56ee88953dc6e8e10daf54
BLAKE2b-256 ad9c01e027fed5234b4f2755bff620ea9b1eb70c756e5d94fba990f0d32250c0

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ ppc64le
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 7480f3a4b497f5f419159ccfa312cb031f03ad7a567341eeda6f042f60315fe1
MD5 a93c19c583b875f114dc69ceda72d311
BLAKE2b-256 f70bcf9514a98918de580761d4e17925412b95e95616e04317e95fd96915e94c

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 979.0 kB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5426b3521799350c1106ed21ba8babb2c22be647b7ef4146d79214dc464b0105
MD5 31e2fc82e05032d750e18dae9f5c793f
BLAKE2b-256 2d1b9ba3bcd59bd81b536afb5b693dfe68b472c5977c747c610652350d07f891

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 898.3 kB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 39edf2db49e07f03a263ba9388ff96f5b8a267ffda10bf01892a4c49df89a842
MD5 eac48c46e7bbb2f77935ea2f7d507702
BLAKE2b-256 9354d8be1482096ba98b2cda323ada646c462e6f80a86f1821c6e07aa7958d3f

See more details on using hashes here.

File details

Details for the file cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 891.8 kB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cypher_validator-0.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0b266b5e126061d2d53e6d39350dfe6e750c9bdd5df2ef85ff8a7e596708a3f8
MD5 7613cf434f17537cf8273124e0f02bcc
BLAKE2b-256 b4f15d13276ccb0b4089e89c75c9ce2b7974c73171a69be130f907f12ee50d1e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page