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.

📚 Docs: https://plutonium-guy.github.io/cypher_validator/


Running the live integration tests

Most of the test suite runs offline. Around 60 ORM / pipeline tests exercise a real Neo4j instance and skip when no DB is reachable. To run the full suite:

docker run -d --name neo4j-cv \
    -p 7474:7474 -p 7687:7687 \
    -e NEO4J_AUTH=neo4j/testtest12 \
    neo4j:5.26-community

export NEO4J_URI=bolt://localhost:7687
export NEO4J_USERNAME=neo4j         # alias: NEO4J_USER
export NEO4J_PASSWORD=testtest12    # alias: NEO4J_PASS

pytest tests/ -q

Both env-name conventions (NEO4J_USERNAME/PASSWORD and NEO4J_USER/PASS) are accepted — tests/conftest.py mirrors them at collection time so older test modules and the newer ORM suite agree.

Stop the container when done:

docker rm -f neo4j-cv

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.13.0.tar.gz (12.8 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.13.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded PyPymusllinux: musl 1.2+ x86-64

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

Uploaded PyPymusllinux: musl 1.2+ i686

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

Uploaded PyPymusllinux: musl 1.2+ ARMv7l

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

Uploaded PyPymusllinux: musl 1.2+ ARM64

cypher_validator-0.13.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (943.1 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

cypher_validator-0.13.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (943.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ s390x

cypher_validator-0.13.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.13.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (993.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

cypher_validator-0.13.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (914.6 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARMv7l

cypher_validator-0.13.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (907.4 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

cypher_validator-0.13.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.13.0-cp314-cp314t-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ i686

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

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

cypher_validator-0.13.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl (941.9 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ s390x

cypher_validator-0.13.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.13.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (911.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARMv7l

cypher_validator-0.13.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (902.7 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

cypher_validator-0.13.0-cp314-cp314-win_arm64.whl (729.1 kB view details)

Uploaded CPython 3.14Windows ARM64

cypher_validator-0.13.0-cp314-cp314-win_amd64.whl (765.9 kB view details)

Uploaded CPython 3.14Windows x86-64

cypher_validator-0.13.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.13.0-cp314-cp314-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ i686

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

Uploaded CPython 3.14musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

cypher_validator-0.13.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (939.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

cypher_validator-0.13.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl (940.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ s390x

cypher_validator-0.13.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.13.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl (989.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ i686

cypher_validator-0.13.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (910.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARMv7l

cypher_validator-0.13.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (903.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

cypher_validator-0.13.0-cp314-cp314-macosx_11_0_arm64.whl (836.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cypher_validator-0.13.0-cp314-cp314-macosx_10_12_x86_64.whl (875.1 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

cypher_validator-0.13.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.13.0-cp313-cp313t-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

cypher_validator-0.13.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (941.1 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

cypher_validator-0.13.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.13.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (910.0 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

cypher_validator-0.13.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (902.0 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

cypher_validator-0.13.0-cp313-cp313-win_arm64.whl (729.5 kB view details)

Uploaded CPython 3.13Windows ARM64

cypher_validator-0.13.0-cp313-cp313-win_amd64.whl (767.0 kB view details)

Uploaded CPython 3.13Windows x86-64

cypher_validator-0.13.0-cp313-cp313-win32.whl (712.2 kB view details)

Uploaded CPython 3.13Windows x86

cypher_validator-0.13.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.13.0-cp313-cp313-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

cypher_validator-0.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (939.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

cypher_validator-0.13.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (940.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390x

cypher_validator-0.13.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.13.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (989.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

cypher_validator-0.13.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (909.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7l

cypher_validator-0.13.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (904.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

cypher_validator-0.13.0-cp313-cp313-macosx_11_0_arm64.whl (836.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cypher_validator-0.13.0-cp313-cp313-macosx_10_12_x86_64.whl (878.6 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

cypher_validator-0.13.0-cp312-cp312-win_arm64.whl (729.4 kB view details)

Uploaded CPython 3.12Windows ARM64

cypher_validator-0.13.0-cp312-cp312-win_amd64.whl (767.1 kB view details)

Uploaded CPython 3.12Windows x86-64

cypher_validator-0.13.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.13.0-cp312-cp312-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

cypher_validator-0.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (939.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cypher_validator-0.13.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (940.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

cypher_validator-0.13.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.13.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (989.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

cypher_validator-0.13.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (909.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

cypher_validator-0.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (904.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

cypher_validator-0.13.0-cp312-cp312-macosx_11_0_arm64.whl (837.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cypher_validator-0.13.0-cp312-cp312-macosx_10_12_x86_64.whl (878.7 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

cypher_validator-0.13.0-cp311-cp311-win_amd64.whl (768.4 kB view details)

Uploaded CPython 3.11Windows x86-64

cypher_validator-0.13.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ i686

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

cypher_validator-0.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (942.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cypher_validator-0.13.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (943.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390x

cypher_validator-0.13.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.13.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (992.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

cypher_validator-0.13.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (914.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARMv7l

cypher_validator-0.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (906.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

cypher_validator-0.13.0-cp311-cp311-macosx_11_0_arm64.whl (838.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cypher_validator-0.13.0-cp311-cp311-macosx_10_12_x86_64.whl (879.2 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

cypher_validator-0.13.0-cp310-cp310-win_amd64.whl (768.4 kB view details)

Uploaded CPython 3.10Windows x86-64

cypher_validator-0.13.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.2+ i686

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

cypher_validator-0.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (942.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cypher_validator-0.13.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (943.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390x

cypher_validator-0.13.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.13.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (992.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

cypher_validator-0.13.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (914.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARMv7l

cypher_validator-0.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (906.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0.tar.gz
  • Upload date:
  • Size: 12.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0.tar.gz
Algorithm Hash digest
SHA256 ec20129bcec6ab5a9ac075916ff567e9e4b2fa5c3409cbf20679ae1f393ece73
MD5 d7dae7998c2ba5e507407f38d7d79d6c
BLAKE2b-256 1ec63c4aa006ddf7dffd8419187690e82e2a28c48d9319c74562680ae2f10714

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: PyPy, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 383a5a282963d9126af293cb8fd09714416d825c45026ea23d0c90a83e490b7f
MD5 ba0cd2b3e124a94abe28763120402c79
BLAKE2b-256 73964e9fc952b62dfc54498155e58d5bc02b3c3b80799cdf7f9a293fa58ff006

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 021064bf5329af40f8c33fd58ae64ca4a62870d4341a2a27c0b659d9ae12afee
MD5 c6b32d03035b2f8873170645365a8d55
BLAKE2b-256 86e6a4eab89129cebde2ea0053485a1a38d93582f1569d77a3720eb38af224b2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ef82462a6984b2952e25442f3d0afab93b3882dd4faf8ff4fd51928ee51a65a0
MD5 31ece131e9eaa42ee302cab6f29413b0
BLAKE2b-256 fa69d82ee0549994a557d846e3ddceddf4ef0ae08a19d385172290981355a760

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 aa90d5e70a451f72ff325d431bcca255087097acfb27683e5fbafc36f32b9fbc
MD5 2b5f42a1df8c5f7773e62101732160db
BLAKE2b-256 83a08f454cf04ee7495b08c3aad626051aab72a5c227f2efa287ed5c2fc5173f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 943.1 kB
  • Tags: PyPy, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4b1f2170eab514eb5715081ea5ca046db9f6498a2dc10e9a1519b4b3aebaf9db
MD5 05e5fff042448c29538a3da61bb8555a
BLAKE2b-256 c294c41ef62cd97b6fbec46b93e648c43ae650f42920252d94c7babe66826f6d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 943.9 kB
  • Tags: PyPy, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 51ea37db2a38d5077a8f0cf9ad2d154ab7a524089283cecd3052cb6970f54c9f
MD5 df47de9e8d5ea68ec9cec53b8b9da3be
BLAKE2b-256 ba401b8efe8419e7f08fff9a28817b66f85c94c51401c3397c2fd61ccc784792

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 6106db46baae9296ca48d0ee75f1cd35c0be085d983a506069c930d8d61a1682
MD5 ea3789f9da7e38167ac69250a9764ca8
BLAKE2b-256 2c6b794734b00f22137bcbeb16f9c5c454f64343fe7ca24b0ebfa5b70b7659d9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 993.0 kB
  • Tags: PyPy, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2d36e3a9386e9c353419fa8c23a2088047fde3dff58be97d85b9a7123d2bf89e
MD5 83d2c5eca3c7e3bf348c71e864f614b5
BLAKE2b-256 469afc4e71d0e3967bbb5beafeab265177fcd8a9d1172995f9aadcee9f7889bd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 914.6 kB
  • Tags: PyPy, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 db75cfcf4810990121f9085ab27f9d26578de233446d4c7f1a5f947f45e8656b
MD5 f57e3de5db5f9b083b361e86aa28ccb7
BLAKE2b-256 3740db83f5f22201316e31b1169b780e9d338c9a834aa78e7086e9ce8eaa579e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 907.4 kB
  • Tags: PyPy, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 463a66e9ac837a1815bdda178c684dad5d5683b2ac9536662f9b216ce2c611ac
MD5 ad9a945d8403361d655c1f2c3d7b2133
BLAKE2b-256 1d53a334cd1bb8463c95017a51fc18bf5da97ac85d4e94dcbafcafe58da326c8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 482ccaa9877954a50deb2546a881c21477ce31750fa56f333916127161856470
MD5 43785384e7fd13419b37ff8a19bb29c8
BLAKE2b-256 ac4cf3cdc3ca5f430b04553ea05cc08f6d5fb8e9988ac7e548189d2910afc211

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 505aef0d8362f3a1a2d0071b0394c345e5d13b63084c7ee1204b395b0f7db4c0
MD5 4599dd399e44483fec80f06e9eb2f094
BLAKE2b-256 e4cdbd318446aac0ae8c1205c0d080f1307397012c2e947e2dee839af65965d8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 7361c4230ea886da9bb893b4f2b706cade5f7746fb3df18b163efe60135136d0
MD5 db114f5637ca00d16f338bba1087e367
BLAKE2b-256 07c6458e511431081d31ca4d957d7548f7a58854750b547f022eaee585fc9ebb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9673967af36c5d4bce1bd1288d5d0c4a989070bc00f69a6dde0cd596a6d02ed9
MD5 777037216fbaf9f9733327ecd887051f
BLAKE2b-256 58e5352425b7e673bb47788c50a8037e1120eaeb2bbfb1c25b70f008f6951af4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 941.9 kB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ca9944ce10a048cba0e9513e8c22a5457983dae1ba1805fe94a03e4bfae79086
MD5 f09f0afbec0efaca8b2afb816b565256
BLAKE2b-256 a637f435d02d94a08065cdc4627ef33f6239d4a1be010a44f24c2ded8a908d01

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 502947355a3fa3c8326611243a6a8a59a81b04daeae6a226eca71bab09d22fd8
MD5 a814ccbff7cf251e4bd59d8b9b45cead
BLAKE2b-256 6cf4220817cbc365f6df050f4a7fe815deec1532e9a3a5aef4a15dbd32902168

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 911.1 kB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 0cf4d05054bc4b98dff080c4dcd92e657eb537cf3cbc814e1c69e9c4d48277c7
MD5 f35d176aa9d805dccf6b5706f8a26027
BLAKE2b-256 78d324da9945f2a9bc9bcd061f1af8e66baf4c574ad445f38341443a4034e027

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 902.7 kB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 92d0838d1af7c899f264bceaa90d7c0774729eb639d2626ebf2e641454603259
MD5 f913da04540eeb39d5a20c8fd09a2f69
BLAKE2b-256 dd29ebfb0790b4c7ba2fd6e4b6c40487eeefc9367d562c81a32e09699e5820ad

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 729.1 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 98df2c496c0194b0914b89ea77aa8cf9debb44890ac15b45cb19a449da6c5945
MD5 3722e39342dedfbd27c3c91021c3a55c
BLAKE2b-256 4083efb54d60a1de64f5a19b9dda23f70edd8773c0f69e206e93b43f45125005

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 765.9 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0e6a0c11eb537130bca1bc09d5e0cc008750718080180fea3e33b911808ad409
MD5 d1eb24108dc0e70ab28b171d77624bb5
BLAKE2b-256 38e7f3f24b923ca89e00776789661e4809b390900c4d028d08659b418e3c11ae

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fab8d3e487ca35ff9f3d12084eaad55d2dcd38b0645ca5bf687ef9c53d69501d
MD5 103ac14c51afde09b9fbc9165b66ff97
BLAKE2b-256 132afacde0bf27ac15b7e47b45d1176eb1752486f88d35046c9c925c123f0c87

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 cc1361edffa261d6cffa558cb0328ae9cbc2803b623284bba9f581924c2eb07b
MD5 c3c17a2190eaff12e0cc30cf11920489
BLAKE2b-256 16bdb3213b90aa01f7f3cadb39b42f96e6fd198acc46c61b38db662a9ebd7e6f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 891c2f604c76af4452d178254980be0acffb5e5878588b41e9454b6365352939
MD5 f8d537a3f186ca1fc6c21973a246855f
BLAKE2b-256 b225b5d01c460bf0c75044c697dfc43651e17efdc6f095388452bdda4274eede

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3c5361216e3b6aa6b2cacf24ce205b5f9a879e1da30a0883598d20fe7e3dbe70
MD5 04dce6bccf356ebda3321efd05481eed
BLAKE2b-256 2ac101d78871d86222aa6698c14cb343ab6f788432f094cdaab77c5961d5930c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 939.1 kB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c6098b0c07031d3b270e44d8a914dc2c6b74810f9ad998fa2dfda6ad756ba9dd
MD5 aeb579a80dc412b43a087761e68e9b89
BLAKE2b-256 05a4877e559132b4ef6fa3b1e4756b31c4183236066c4f44fb52ef69b2ecb7d3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 940.0 kB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9f4f5e106b2cf06934df4c2d2e6d6b3183ed65bfa1a2b059c389fe40056ebb3a
MD5 5db2836d9611e6c9c80ccd59eac72630
BLAKE2b-256 5d283638bd800d312c48efd019b3373828b9456859b200f5076ad24fdda7ed6f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 04cff97e93208e5831f8944c6a3a112448d9106be2cae5569f81d755653bb027
MD5 b2c505142b0c7ff6985d9697ada1b2be
BLAKE2b-256 acdc1b5d0de1cc674bac001264fa4dde1660384929bf1a5b5969db8af8d67927

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 989.4 kB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 97164c048a574e3f734bb27b96a1f1764306e8ca1bd9b2bb618b6cd918c0b6c2
MD5 7987e66c6ffa82208396c451a271b2db
BLAKE2b-256 a7387fe32668acc06cebe47c64c4d75befb4d9987ab21a6ad824cba0ee042fb2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 910.2 kB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 641e7b64fbed899a46fddd5677461bf8afab9558d813883cee646c76a28a65a5
MD5 e86e11283efcb61ff8829bdd2c67ee06
BLAKE2b-256 c7ea1dcb89444f7d40a295e7bb69c0a3eb2fddf9d7f421c7e5eb8126c41ce3f3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 903.3 kB
  • Tags: CPython 3.14, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9ed77360ffd16d5e7d898cd87964caff3d142fd3daf839d1fdccdbc6a0285fe7
MD5 a0753e3e352b9d5378e81f499b994a60
BLAKE2b-256 8dc00929816724a2e941a99e42c4c11c202048adf58f0fe59c5c1fabbf933019

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 836.0 kB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3fb8b1232defde0a83d077ea392590f26d9e6fd1edcf2fc52c236da090603953
MD5 71cbb6b5fb785870c5326c5cd1fc167f
BLAKE2b-256 128ee4a566c73be5c44b487c154f45d4955c63109dad53875e567211a8dcb7d7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp314-cp314-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 875.1 kB
  • Tags: CPython 3.14, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 07f88ef2f55480a02c9c2ca1dafb8224d4b273f016fe5ae3a5807a456a9eed7e
MD5 bc0aef2ccd3aeea382b73f6079fd9b58
BLAKE2b-256 c496a3526a67f33cc7b646d2486549078d21c69d1f3f2a757b4146d353944b4d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a5b086012a0d6a28afcd4582339bae573c8b3b6c6dddabeb96daac10392ba267
MD5 3f00eb39c9089e31eed072f024bca034
BLAKE2b-256 abbdcca59973701e00867209880ee2e0c0a7553db0e85d76f7d074cb5314af88

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ec67fef25fecd61d4a0dcf77c7e7913d32bcf35a89e302b76cf1a7fed1d2ce8b
MD5 87ecaa3f771af54bcb34994711a62ac8
BLAKE2b-256 2ff3a2bd92be951891200db63dbb9be058236da89740a8ec939860ad81c76e73

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 3a6d5acd8e2b34214da79efea704156614d0565c39135083fd8e1744c4bc4b78
MD5 150da0c32b7bb87161ec301b22da2f86
BLAKE2b-256 93cb197238518d3937ee2551e447ecf391d58059d793725e126786c6049c3c10

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9a9b0331f01b0dee3393deb6d8263673312f61075fb72d710f4be5aff159db87
MD5 49b34bd4798b46e4b248e2e88ec33381
BLAKE2b-256 280faab012940cf9b64740933e2c19810924b31ee2fd4ccd1d8e29dc3c8a718e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 941.1 kB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 bfba95df8efd416453f9af4c9986883273108d2a794dac9dba6aed08cd194365
MD5 bb9e051392817c3f7962e9ae79b9aaa6
BLAKE2b-256 404ea1b2c3c3045448b1a2a031b89c923085cb5de32836e75cfe66803d46e40a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 4727995953e319b3d9dbd6bd8fc8f32bf88089ef7b9312992af904a34e08a620
MD5 83ae2c806a6739c7797ddcd88fedf5fb
BLAKE2b-256 671f2f902d2c6c2a0250c6e8b96d92ce80fbe4e9de1ee782d417ebc60484b617

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 910.0 kB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 4960786c23ac78b6dffba476a2be0ced296057a81b474eb45b4ab3c84e269bdc
MD5 d338099b88920603927c8bb6ee4ebe6c
BLAKE2b-256 54d57bb65acc37ee0c2f167b0a1562fa6df59121b402dcbdda4370e5938b2f60

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 902.0 kB
  • Tags: CPython 3.13t, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6f4c1459d66c5cc9cad232774767b353f4b9fedec5888f7fbe0d914e93bd71b3
MD5 b0ecca693e05425846f5a936aaa016ad
BLAKE2b-256 4232c82ce9a6804e8405b8b78f4d88e3f07d0492df02ecf1425ed72873578c27

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 729.5 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 5b5744a77dc690c967f14c687ebb2b910e77fec3e594ef91d81a944c0817b744
MD5 88d18d1b2a4aa669a7653c59b113044b
BLAKE2b-256 9a7bc823f6f385245d74bd91582c308898b796d65a256b161d85b0d7323a8ea9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 767.0 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a9684dd5a474b626b9b2b646ae3019f2cfbb59ce041d2e2d62a07c5a08bc6b09
MD5 45a25602b0e982dc17fa6368f26be201
BLAKE2b-256 77b4f24ea93183a6905ca21856a155ef56e6f7f7f20ed1741c2206a58c912fc9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 712.2 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 13e0bffefb53fb30545d2719d92e1a7a6705080392310d4a6daa03b7a394f4f9
MD5 63e2f7da2a0f24ea378c63719aac23e5
BLAKE2b-256 c883dd02229d87816708e81f42d26d6f580781520383103f01dfc30e987af7b7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d38ab6843223a196a5aee35a94498c7cfd6f21106e5fa05887bb40721781fd4d
MD5 9169f995cbaaa96d9baf65a9e59abd2d
BLAKE2b-256 1eaed2d5168365626d500c8bb5b8e3c786464892db8ec04d83bdd04a5e8d7073

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 34736a75192ed58dbecc569087838bbc5d624f836ac188161a056e5f859c69b7
MD5 5dee5c0ea78714833a49ee0358cbcc17
BLAKE2b-256 102cda48d941e764759da8c60399336660cd60fbaa2b287e30adb1c8b8a4fb6e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 bce3d031d5baf1a974e269d5ad32fda14b625a3fd4e9b496606069f02ea551bf
MD5 fdf461e7429a1aafd56f3f7c012febe1
BLAKE2b-256 e319ca4446e653f126818fcda4f436c3be2a76c4d251d8abc5b79da8400b24c4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 399625402315e6317342571179afc98b4e07cc30062a792b0f858c3542c6f601
MD5 d8eee1373e28db29b45bdc12410e5a48
BLAKE2b-256 0c88068940fa9d1816145c5c875f9bd094d605e2be7f3e58a111e2e54a75fbcb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 939.2 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 22166980cde3622726453f3c45e2e4838172cce3eb5ff08f584aa0325ef45f87
MD5 33ee7607095e90f0bfe6679af9dce81b
BLAKE2b-256 a4da87470846884830773095c7bdac569375dd47df3845d1038d7a6c0601e915

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 940.7 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 75e22bf573c02b9eeae1b6121083b7e35ad016ca41292bc44fc5b835e25aa83e
MD5 fef464ff747f6ec7a993c5f4d53200df
BLAKE2b-256 b24698ca1ae3162d9a1b76aa5be2c4b3dde59a54b3b68500fca618ef280672b9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 06a32e2723ac284b34d68224b73d9ebce76e23bb96ee42260ccb5600083aa82b
MD5 57f1749d6ba7816e093c072d9d808e33
BLAKE2b-256 6fb262b6035bb059722e7b405176c96ce36e470010f9b20e9904e3438c01df60

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 989.2 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1ffb7a8e8c0fad815883893a75af685c9be14d02f1076d0ca8afc4fad2669a45
MD5 24eab623528dbc07fc73f1b65c4eadd3
BLAKE2b-256 aca871dbf89464ddeb6c6682b1c59d40d30aa4698137e7a228ee4e5e55a42f35

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 909.5 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c85757476f3d8d2fc5b3ea346230722c875ef9c334a616d1e09a419687175472
MD5 237ccb1f087743d1ef5729d3fab775c2
BLAKE2b-256 c7c5dc52fce4d0de5f7c189b4a61baaeda6ee6fe682217ca7037829ae3308a6a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 904.4 kB
  • Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 67ee7359be6d4a9521e6a4fede27c0e7448f89a11c69409ef75e0c3e37aa2883
MD5 b691677c6d69fb7c85308482db5a226f
BLAKE2b-256 e79ae9b274d9ea032b70cc1c28bb95bb9491ae03e26f61f518fdfbe84085d9d4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 836.7 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3db476b75e750f783369e164f52bb9a15570f889b847bd30ba0980050688ba86
MD5 bbebe403541c958311b0924ec81ca26f
BLAKE2b-256 da76ab6ffc49fcad4e6c9c945fc2231d3d00e066056ce68e9f84d3005a5cfcfa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp313-cp313-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 878.6 kB
  • Tags: CPython 3.13, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3e85f6d7fa8d7ab0bcbae928a8436bf55b37eafa2c564db72f981ef0e59ef1a3
MD5 6f06d889e54fb83f9462219435743f0a
BLAKE2b-256 a7261fc068482b338d593348a5f77a5200f405087a5db77ada0b0e209864b873

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 729.4 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 1cdbce39a394184de715fe2c63f600f8af8ac03d677014b8a9374c3b810264c6
MD5 5bbf1cd8199856c238e1f47955773b14
BLAKE2b-256 fede24e1507f15ad2b271ccefc6c0a18b8ed37ebd9e06f2370594392635a93a1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 767.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b0f9b1a433622011f8247e68c8764ad0ec4df33ac86913e41ef8a6ecd985b50d
MD5 8f9a38fb78dc84f8547526eec7a860d4
BLAKE2b-256 c7064896e300a473728448fa1ba7f62012e5cee47ee63ada0403d7b527b9d805

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a098249e91b1737ffd89b954bf922b444f7207dd30a219a755ccf858a4b2577d
MD5 0892142a3f63d5318b7611e30bb49b81
BLAKE2b-256 93c46affb1ade500a0f2eaeecda0085e80571e39675dff1ecf70bc34afae563e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f1bf03890876285fbb3b4e0a7db0e30711a79fd4e9110c5d723fa6ea846046e1
MD5 ef040434bac0357d70d7567ab21cd2a1
BLAKE2b-256 44189adeac7edd622bc487f0fba367ee97f9b36fc284edfe5f8034659cbf36b2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 f7481e07bee69082c543ce0552942486ddbc7695505d57f8ae42e981ffc98f72
MD5 00d17fe4fbb3426e5422d772c1f4b206
BLAKE2b-256 f2e9827f07e3a7948fee6082b9309c93eb5e89ebc5905960033b49810704863b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 aa9dd1b24974027dafd57c18093e5e42b6fb53bcd6188833c954eb06c8ea3ccc
MD5 73c79db5a862255d7fe1767dac4160e2
BLAKE2b-256 37073d67450e6f5c7f43ac9f33a36b4797dd8d8b2d2a12fc7e310eaa608c5e3b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 939.5 kB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fa186ac1b68be9a98f19c883d91cbfde659b0b9f5a40dfb8fa27a3d439ea85bb
MD5 7853b860b124b0b00970c43b9ff06527
BLAKE2b-256 769d3a31c7d27841e5503272d80899aac704dd49c637b004906bf56288a115b9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 940.6 kB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ceef83ff5d3cb48e9600a884a55bede3ad3848edd8239448c9f067970c959ba4
MD5 678fc617aa0f3fd0a3a14d82b746e5bc
BLAKE2b-256 6ef047e4e31a75145f1601dd42033160cede0b0c6f87fe7665ca65167f2b5590

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 7b5f324b182834b6b98e6bfd3a02827d62fa562ddf193693bac90a9b06c62719
MD5 b26efe3d0f2abcd043ef61d4dc0c2bbe
BLAKE2b-256 d6c363e8d62c6b37b0f724bc6d684ab4e84f5f02fe8d3f9adddcc507f6baaacc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 989.5 kB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 92d7db4294fd9ee79401d15a32290feee94d5e33ccd535e13046aafca2b7b8b5
MD5 ce00f771d0d469169f59a83b00c89cfc
BLAKE2b-256 be877591338cfbb3e97a7785fddfa47db9a09ae17c1ef233468c56ebfb35f550

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 909.9 kB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 f74f5468c26e98df484235f408396556fc6fb6b1c32fb56cda6c137596017172
MD5 473b52c43f7e3b9021cf3bf6ed2598df
BLAKE2b-256 b2dcfe8913fec1af9706b2880f50de25ae68d191e7a20193bdeeef5efd3b7b7b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 904.3 kB
  • Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e8d2369ea05894910b60e702a46daf3a89c3cfd17154719d6b44aee99cc1299c
MD5 b92e22dbcfbb98ccb0f79303a91a73a7
BLAKE2b-256 73d081ed2ddb210355ec84e968d5baa6b3cead2cc6c7fbe3b6858bac81ff5354

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 837.0 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 35db932b7b6458b503911d10e5cfad234e1efffc233a9582db631a06b116a08c
MD5 5086075ac1c5bd0fad628ac5ac30883c
BLAKE2b-256 21e18d768a9a094ee8bc9a80b40167fc1a11f21ce2fab5581fff6e0b370689df

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp312-cp312-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 878.7 kB
  • Tags: CPython 3.12, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c46c054eedc61f057dca4c9ad3fcd8f4530036f4c0ee6545e01cd429ab3ef749
MD5 a7840f1e83f37f7a1bbf7feba42f8755
BLAKE2b-256 4750360687543ad1f89433203f6cedcdfce710a362e73de5ba4f92797646717b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 768.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f17daef91590c4304e3f34163d423789c32d49339702ca72281135d3b924f491
MD5 b81273518bb57e094a2d9a8cd4a13372
BLAKE2b-256 568e8a840da977c2f644e5ade9f6dc5a6c508617af17e87510e55252d030d24c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp311-cp311-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 32948cfc2905cfb61e13b0e456b3c229d8132830cd2cfb46305eaaf24b04c19a
MD5 7e35bd8cc59814e1256deaa3fe069abe
BLAKE2b-256 28ec04ebf5ccd1aed484c3f5cb1f7ed7d164d7aa1915881a9fe7b4320b674a3b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 49178374db076746e518f158a29c558e79eaeba036043a6e3ed9f4efe9e3cda4
MD5 9f7503e3b2b55a82d76a0fa548da0ffc
BLAKE2b-256 7cbb46cb1fb9eba3639a56065d6884e07eac7d8e70c1ca2b9060fa9f322724bf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp311-cp311-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 8f9f88565a30b75760541c88b7f60ba520d89f631fd4b2ca07607a267b512ef6
MD5 668d7468bf4377375fbbe15e3544102d
BLAKE2b-256 2070826c9a64c23a7217d984f29865a983565adda3805ba406cff9432dbae662

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 21d473cfe19ff4fd94de8aca4d0b039de3f839371c2711d5b1d5dd75d68a4fc5
MD5 7d0334fbee85551c0aa2697ff7f5c9f1
BLAKE2b-256 bc368f6ea4fd4f0edadb163af29fe89bc468d0c8b4259307c8a4fe819b230724

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 942.6 kB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e801d7761b9f6ae0c31d68997414c2609d2bdb2dedff5897ee8313169a4a90b7
MD5 045517ce09f12f29156952f7f615492e
BLAKE2b-256 9f8b2ca0068d581ecded9af3ebf9e19581647ac45d68dc90e1f8a7f76adf72b0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 943.9 kB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 b97224e8254b3882f7ad111006d83968c2d0a8075fb592bd679db8201d4b5044
MD5 7d99e5a1360840f26c1482564032324d
BLAKE2b-256 5f20eb4fb6f53600888fa85a59a9eeda1483f41f596da71bf3a4b40cd75b9514

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 49aa6e37bedf3a7b7204d5ff6d4b4ba430c1ffa482a5c96a9dea0d782f7654b7
MD5 c67d796768bd24920643a3d9bdc3b01f
BLAKE2b-256 ae4613b1f7197853c69bb251dc83c01263e778cd2ab17c11f2adda176833691f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 992.7 kB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0429fd3be2250c12e64a9a8ce99ad46042bfaba24e62e501c38aba3d47c9d311
MD5 8b1f0b268b0c507d3f4c7331850a8bd7
BLAKE2b-256 7309e4b6fd2e44224dfab5bc95c7bb8b7972159ade87b51243ef26b3bb9ccee8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 914.1 kB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 935ad804560c86aa08f616f2649ee79e2dbed9b64224c85af9966a4e4209c817
MD5 f21766fdedb97ea1ef4c23398263830a
BLAKE2b-256 48bb8f0a63eef6f8e8e04316f77724ef3b40f6402f60145604d46873ff180ff4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 906.3 kB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 faaa0ede7a22932b8f3fd9901f1171c004ff0c6942e5dfba00ea52b22de952db
MD5 bf6b60c0dca8fa7d3c5a138fb22cfb33
BLAKE2b-256 0c75b8db09c3a11f092e5d9b43e68b020a04ec3825506c95932b868eb3828648

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 838.9 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6a10c7a36f4c8cebb827f13fb81194f6bfdd375eb22382096118d0e19da199ac
MD5 ecf51c87e7f17ad045a0a28739458782
BLAKE2b-256 238e2ebeb4354f1bab68ed7f30525d37951e1f067f7123e4ce5cdb0ddf504724

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp311-cp311-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 879.2 kB
  • Tags: CPython 3.11, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 242c78cf105028b550393876f08720cd22cc111c198e929479ce56b88fa1ef4e
MD5 8c9e6791ee663a4e1fc07c87298126d4
BLAKE2b-256 7a8733b9f9da8499e6c25987c8e5b02b7d5f3a191bf88be8ade478f2e9cf181a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 768.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b7affa5c306f3445f3c4d4d59997e5f256e160fcfe16f493f87ba936e75419c4
MD5 a4bd8b12a8115674019eb8d89aa66797
BLAKE2b-256 5be558da6f2e9523ee4c35076a50ab789af5651206006d2ad720a0f6f9548a76

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp310-cp310-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c8b3d7784e98165f84ff8c2d0249b950cbf2187b2edd02f8c0f1a17bc6b18aad
MD5 3d006ac04ef60fdfff7141b3fdd58abf
BLAKE2b-256 f6825abb33b91e52b574382994b7330523aedc490c32ba0d574911687b392b1a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0d56ad6d56c161290f077d4b779589b51a0996aedcb9ef771da3833dd2e5ff46
MD5 89efd5bcd33e22fdb37a8df8b5a3bb6e
BLAKE2b-256 503aaf22c32954a6b256d6624f90f0b5881860caf43fde42ccaefad848ec5c78

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp310-cp310-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 d5441cd8c38ab25c6eeb7660136be067bf452b498188466a7dad0ba16aac2a26
MD5 72cd96d139a7fc34281b84e64dde6c30
BLAKE2b-256 c4b70b1870c07f479506f0c2b6f1467d81f505c8a158e4a9dc48f87fab3a2121

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ac1615f6fc98e4af22bc82ef43ff272db5bf2ce092f31fb6c9a87b0616531e77
MD5 79ad061a1136e92ef4bb780632c6f69d
BLAKE2b-256 980d86d665b4a11a6dc811417ae26c1c3b61cfd095596d15062d75d23ed56878

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 942.6 kB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b63de1f831fe0e84d62a124cab4fd3a92b2734fc21937e0e2c09948b51200842
MD5 0e9ef405e15eeb9236fbdfa5f1346ba7
BLAKE2b-256 5030e18fc047a7459de74a6f91bf5fc8397c494e192e12a3f8f265b9e07bffa3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 943.6 kB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9e1aad95843f714dc8b850e61c84649a664a94eb9d79f8347bbae07016e83af7
MD5 b6242d9b1722d8bfb1563e05ffd07d7e
BLAKE2b-256 f83437217e4e6783b2d1e3b249afb483a948f52227a8a1b9c32e1569621bc249

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.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.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 cf05ee20c1112092ca3fd74bf151f02b350e017bc0f606dd1b7d5ceb5375f3fe
MD5 0cd28f796cf64978c884cd8d4334f7d4
BLAKE2b-256 58fd461cd34126851d0dfce66756f5449068d8616b042469a45702863e75ee98

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 992.6 kB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e8532dab371bc3232ef16401ab90b84b87fdd0009c6fec32e83490dcdc6534dd
MD5 cafc2d466223b3ef7ae9e1a3d584d142
BLAKE2b-256 eff1854029ae443ce263dbd1e5ecbe9f65a5080dd97f04b499e1473090f20f7c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 914.4 kB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 3022cf0ef6211d895bb58cef184a8ec0a3dac0952a9c4ed2b0a7c0c617aaf277
MD5 008febe7408e7eac226ccfbc4689e69d
BLAKE2b-256 fa1c9203a49f25633a623a37657664414dfe6db7526a17801d637337e5c46c0c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cypher_validator-0.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 906.7 kB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","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.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2d5437ec50fc137635d2d9f1b8327df5d733aa39ef7e464e91db2116666787fd
MD5 5ee25afc12a50c7dcfcd916e2f267b4f
BLAKE2b-256 cd3a3f29361f90eb432d2c04c4510a8eae8976abfee02f98f6c46446b4e96271

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