# TypeDB Python Driver
## Driver Architecture
To learn about the mechanism that TypeDB drivers use to set up communication with databases running on the TypeDB
Server, refer to the [Drivers Overview](https://typedb.com/docs/core-concepts/drivers/overview).
## API Reference
To learn about the methods available for executing queries and retrieving their answers using Python, refer to
the [API Reference](https://typedb.com/docs/reference/typedb-grpc-drivers/python).
## Install TypeDB Python Driver through Pip
1. Install `typedb-driver` using `pip`:
```bash
pip install typedb-driver
```
2. If multiple Python versions are available, you may wish to use:
```
pip3 install typedb-driver
```
3. Make sure a [TypeDB Server](https://typedb.com/docs/home/install/) is
running.
4. In your python program, import from `typedb.driver` (see [Example usage](#example-usage) or `tests/integration` for examples):
```py
from typedb.driver import *
driver = TypeDB.driver(address=TypeDB.DEFAULT_ADDRESS, ...)
```
## Example usage
<!-- EXAMPLE_START_MARKER -->
```py
from typedb.driver import *
class TypeDBExample:
def typedb_example(self):
# Open a driver connection. Specify your parameters if needed
# The connection will be automatically closed on the "with" block exit
with TypeDB.driver(TypeDB.DEFAULT_ADDRESS, Credentials("admin", "password"), DriverOptions(is_tls_enabled=False)) as driver:
# Create a database
driver.databases.create("typedb")
database = driver.databases.get("typedb")
# Use "try" blocks to catch driver exceptions
try:
# Open transactions of 3 types
tx = driver.transaction(database.name, TransactionType.READ)
# Execute any TypeDB query using TypeQL. Wrong queries are rejected with an explicit exception
result_promise = tx.query("define entity i-cannot-be-defined-in-read-transactions;")
print("The result is still promised, so it needs resolving even in case of errors!")
result_promise.resolve()
except TypeDBDriverException as expected_exception:
print(f"Once the query's promise is resolved, the exception is revealed: {expected_exception}")
finally:
# Don't forget to close the transaction!
tx.close()
# Open a schema transaction to make schema changes
# Transactions can be opened with configurable options. This option limits its lifetime
options = TransactionOptions(transaction_timeout_millis=10_000)
# Use "with" blocks to forget about "close" operations (similarly to connections)
with driver.transaction(database.name, TransactionType.SCHEMA, options) as tx:
define_query = """
define
entity person, owns name, owns age;
attribute name, value string;
attribute age, value integer;
"""
answer = tx.query(define_query).resolve()
if answer.is_ok():
print(f"OK results do not give any extra interesting information, but they mean that the query "
f"is successfully executed!")
# Commit automatically closes the transaction. It can still be safely called inside "with" blocks
tx.commit()
# Open a read transaction to safely read anything without database modifications
with driver.transaction(database.name, TransactionType.READ) as tx:
answer = tx.query("match entity $x;").resolve()
# Collect concept rows that represent the answer as a table
rows = list(answer.as_concept_rows())
row = rows[0]
# Collect column names to get concepts by index if the variable names are lost
header = list(row.column_names())
column_name = header[0]
# Get concept by the variable name (column name)
concept_by_name = row.get(column_name)
# Get concept by the header's index
concept_by_index = row.get_index(0)
print(f"Getting concepts by variable names ({concept_by_name.get_label()}) and "
f"indexes ({concept_by_index.get_label()}) is equally correct. ")
# Check if it's an entity type before the conversion
if concept_by_name.is_entity_type():
print(f"Both represent the defined entity type: '{concept_by_name.as_entity_type().get_label()}' "
f"(in case of a doubt: '{concept_by_index.as_entity_type().get_label()}')")
# Continue querying in the same transaction if needed
answer = tx.query("match attribute $a;").resolve()
# Concept rows can be used as any other iterator
rows = [row for row in answer.as_concept_rows()]
for row in rows:
# Same for column names
column_names_iter = row.column_names()
column_name = next(column_names_iter)
concept_by_name = row.get(column_name)
# Check if it's an attribute type before the conversion
if concept_by_name.is_attribute_type():
attribute_type = concept_by_name.as_attribute_type()
print(f"Defined attribute type's label: '{attribute_type.get_label()}', "
f"value type: '{attribute_type.try_get_value_type()}'")
print(f"It is also possible to just print the concept itself: '{concept_by_name}'")
# Open a write transaction to insert data
with driver.transaction(database.name, TransactionType.WRITE) as tx:
insert_query = "insert $z isa person, has age 10; $x isa person, has age 20, has name \"John\";"
answer = tx.query(insert_query).resolve()
# Insert queries also return concept rows
rows = list(answer.as_concept_rows())
row = rows[0]
for column_name in row.column_names():
inserted_concept = row.get(column_name)
print(f"Successfully inserted ${column_name}: {inserted_concept}")
if inserted_concept.is_entity():
print("This time, it's an entity, not a type!")
# It is possible to ask for the column names again
header = [name for name in row.column_names()]
x = row.get_index(header.index("x"))
print("As we expect an entity instance, we can try to get its IID (unique identification): "
"{x.try_get_iid()}. ")
if x.is_entity():
print(f"It can also be retrieved directly and safely after a cast: {x.as_entity().get_iid()}")
# Do not forget to commit if the changes should be persisted
print('CAUTION: Committing or closing (including leaving the "with" block) a transaction will '
'invalidate all its uncollected answer iterators')
tx.commit()
# Open another write transaction to try inserting even more data
with driver.transaction(database.name, TransactionType.WRITE) as tx:
# When loading a large dataset, it's often better not to resolve every query's promise immediately.
# Instead, collect promises and handle them later. Alternatively, if a commit is expected in the end,
# just call `commit`, which will wait for all ongoing operations to finish before executing.
queries = ["insert $a isa person, has name \"Alice\";", "insert $b isa person, has name \"Bob\";"]
for query in queries:
tx.query(query)
tx.commit()
with driver.transaction(database.name, TransactionType.WRITE) as tx:
# Commit will still fail if at least one of the queries produce an error.
queries = ["insert $c isa not-person, has name \"Chris\";", "insert $d isa person, has name \"David\";"]
promises = []
for query in queries:
promises.append(tx.query(query))
try:
tx.commit()
assert False, "TypeDBDriverException is expected"
except TypeDBDriverException as expected_exception:
print(f"Commit result will contain the unresolved query's error: {expected_exception}")
# Open a read transaction to verify that the previously inserted data is saved
with driver.transaction(database.name, TransactionType.READ) as tx:
# Queries can also be executed with configurable options. This option forces the database
# to include types of instance concepts in ConceptRows answers
options = QueryOptions(include_instance_types=True)
# A match query can be used for concept row outputs
var = "x"
answer = tx.query(f"match ${var} isa person;", options).resolve()
# Simple match queries always return concept rows
count = 0
for row in answer.as_concept_rows():
x = row.get(var)
x_type = x.as_entity().get_type().as_entity_type()
count += 1
print(f"Found a person {x} of type {x_type}")
print(f"Total persons found: {count}")
# A fetch query can be used for concept document outputs with flexible structure
fetch_query = """
match
$x isa! person, has $a;
$a isa! $t;
fetch {
"single attribute type": $t,
"single attribute": $a,
"all attributes": { $x.* },
};
"""
answer = tx.query(fetch_query).resolve()
# Fetch queries always return concept documents
count = 0
for document in answer.as_concept_documents():
count += 1
print(f"Fetched a document: {document}.")
print(f"This document contains an attribute of type: {document['single attribute type']['label']}")
print(f"Total documents fetched: {count}")
print("More examples can be found in the API reference and the documentation.\nWelcome to TypeDB!")
```
<!-- EXAMPLE_END_MARKER -->
Raw data
{
"_id": null,
"home_page": "https://github.com/typedb/typedb-driver",
"name": "typedb-driver",
"maintainer": null,
"docs_url": null,
"requires_python": ">0",
"maintainer_email": null,
"keywords": "typedb database graph knowledgebase knowledge-engineering",
"author": "TypeDB Community",
"author_email": "community@typedb.com",
"download_url": null,
"platform": null,
"description": "# TypeDB Python Driver\n\n## Driver Architecture\n\nTo learn about the mechanism that TypeDB drivers use to set up communication with databases running on the TypeDB\nServer, refer to the [Drivers Overview](https://typedb.com/docs/core-concepts/drivers/overview).\n\n## API Reference\n\nTo learn about the methods available for executing queries and retrieving their answers using Python, refer to\nthe [API Reference](https://typedb.com/docs/reference/typedb-grpc-drivers/python).\n\n## Install TypeDB Python Driver through Pip\n1. Install `typedb-driver` using `pip`:\n```bash\npip install typedb-driver\n```\n2. If multiple Python versions are available, you may wish to use:\n```\npip3 install typedb-driver\n```\n3. Make sure a [TypeDB Server](https://typedb.com/docs/home/install/) is\n running.\n4. In your python program, import from `typedb.driver` (see [Example usage](#example-usage) or `tests/integration` for examples):\n```py\nfrom typedb.driver import *\n\ndriver = TypeDB.driver(address=TypeDB.DEFAULT_ADDRESS, ...)\n```\n\n## Example usage\n\n<!-- EXAMPLE_START_MARKER -->\n\n```py\nfrom typedb.driver import *\n\n\nclass TypeDBExample:\n\n def typedb_example(self):\n # Open a driver connection. Specify your parameters if needed\n # The connection will be automatically closed on the \"with\" block exit\n with TypeDB.driver(TypeDB.DEFAULT_ADDRESS, Credentials(\"admin\", \"password\"), DriverOptions(is_tls_enabled=False)) as driver:\n # Create a database\n driver.databases.create(\"typedb\")\n database = driver.databases.get(\"typedb\")\n\n # Use \"try\" blocks to catch driver exceptions\n try:\n # Open transactions of 3 types\n tx = driver.transaction(database.name, TransactionType.READ)\n\n # Execute any TypeDB query using TypeQL. Wrong queries are rejected with an explicit exception\n result_promise = tx.query(\"define entity i-cannot-be-defined-in-read-transactions;\")\n\n print(\"The result is still promised, so it needs resolving even in case of errors!\")\n result_promise.resolve()\n except TypeDBDriverException as expected_exception:\n print(f\"Once the query's promise is resolved, the exception is revealed: {expected_exception}\")\n finally:\n # Don't forget to close the transaction!\n tx.close()\n\n # Open a schema transaction to make schema changes\n # Transactions can be opened with configurable options. This option limits its lifetime\n options = TransactionOptions(transaction_timeout_millis=10_000)\n\n # Use \"with\" blocks to forget about \"close\" operations (similarly to connections)\n with driver.transaction(database.name, TransactionType.SCHEMA, options) as tx:\n define_query = \"\"\"\n define \n entity person, owns name, owns age; \n attribute name, value string;\n attribute age, value integer;\n \"\"\"\n answer = tx.query(define_query).resolve()\n if answer.is_ok():\n print(f\"OK results do not give any extra interesting information, but they mean that the query \"\n f\"is successfully executed!\")\n\n # Commit automatically closes the transaction. It can still be safely called inside \"with\" blocks\n tx.commit()\n\n # Open a read transaction to safely read anything without database modifications\n with driver.transaction(database.name, TransactionType.READ) as tx:\n answer = tx.query(\"match entity $x;\").resolve()\n\n # Collect concept rows that represent the answer as a table\n rows = list(answer.as_concept_rows())\n row = rows[0]\n\n # Collect column names to get concepts by index if the variable names are lost\n header = list(row.column_names())\n\n column_name = header[0]\n\n # Get concept by the variable name (column name)\n concept_by_name = row.get(column_name)\n\n # Get concept by the header's index\n concept_by_index = row.get_index(0)\n\n print(f\"Getting concepts by variable names ({concept_by_name.get_label()}) and \"\n f\"indexes ({concept_by_index.get_label()}) is equally correct. \")\n\n # Check if it's an entity type before the conversion\n if concept_by_name.is_entity_type():\n print(f\"Both represent the defined entity type: '{concept_by_name.as_entity_type().get_label()}' \"\n f\"(in case of a doubt: '{concept_by_index.as_entity_type().get_label()}')\")\n\n # Continue querying in the same transaction if needed\n answer = tx.query(\"match attribute $a;\").resolve()\n\n # Concept rows can be used as any other iterator\n rows = [row for row in answer.as_concept_rows()]\n\n for row in rows:\n # Same for column names\n column_names_iter = row.column_names()\n column_name = next(column_names_iter)\n\n concept_by_name = row.get(column_name)\n\n # Check if it's an attribute type before the conversion\n if concept_by_name.is_attribute_type():\n attribute_type = concept_by_name.as_attribute_type()\n print(f\"Defined attribute type's label: '{attribute_type.get_label()}', \"\n f\"value type: '{attribute_type.try_get_value_type()}'\")\n\n\n print(f\"It is also possible to just print the concept itself: '{concept_by_name}'\")\n\n # Open a write transaction to insert data\n with driver.transaction(database.name, TransactionType.WRITE) as tx:\n insert_query = \"insert $z isa person, has age 10; $x isa person, has age 20, has name \\\"John\\\";\"\n answer = tx.query(insert_query).resolve()\n\n # Insert queries also return concept rows\n rows = list(answer.as_concept_rows())\n row = rows[0]\n\n for column_name in row.column_names():\n inserted_concept = row.get(column_name)\n print(f\"Successfully inserted ${column_name}: {inserted_concept}\")\n if inserted_concept.is_entity():\n print(\"This time, it's an entity, not a type!\")\n\n # It is possible to ask for the column names again\n header = [name for name in row.column_names()]\n\n x = row.get_index(header.index(\"x\"))\n print(\"As we expect an entity instance, we can try to get its IID (unique identification): \"\n \"{x.try_get_iid()}. \")\n if x.is_entity():\n print(f\"It can also be retrieved directly and safely after a cast: {x.as_entity().get_iid()}\")\n\n # Do not forget to commit if the changes should be persisted\n print('CAUTION: Committing or closing (including leaving the \"with\" block) a transaction will '\n 'invalidate all its uncollected answer iterators')\n tx.commit()\n\n # Open another write transaction to try inserting even more data\n with driver.transaction(database.name, TransactionType.WRITE) as tx:\n # When loading a large dataset, it's often better not to resolve every query's promise immediately.\n # Instead, collect promises and handle them later. Alternatively, if a commit is expected in the end,\n # just call `commit`, which will wait for all ongoing operations to finish before executing.\n queries = [\"insert $a isa person, has name \\\"Alice\\\";\", \"insert $b isa person, has name \\\"Bob\\\";\"]\n for query in queries:\n tx.query(query)\n tx.commit()\n\n with driver.transaction(database.name, TransactionType.WRITE) as tx:\n # Commit will still fail if at least one of the queries produce an error.\n queries = [\"insert $c isa not-person, has name \\\"Chris\\\";\", \"insert $d isa person, has name \\\"David\\\";\"]\n promises = []\n for query in queries:\n promises.append(tx.query(query))\n\n try:\n tx.commit()\n assert False, \"TypeDBDriverException is expected\"\n except TypeDBDriverException as expected_exception:\n print(f\"Commit result will contain the unresolved query's error: {expected_exception}\")\n\n # Open a read transaction to verify that the previously inserted data is saved\n with driver.transaction(database.name, TransactionType.READ) as tx:\n # Queries can also be executed with configurable options. This option forces the database\n # to include types of instance concepts in ConceptRows answers\n options = QueryOptions(include_instance_types=True)\n\n # A match query can be used for concept row outputs\n var = \"x\"\n answer = tx.query(f\"match ${var} isa person;\", options).resolve()\n\n # Simple match queries always return concept rows\n count = 0\n for row in answer.as_concept_rows():\n x = row.get(var)\n x_type = x.as_entity().get_type().as_entity_type()\n count += 1\n print(f\"Found a person {x} of type {x_type}\")\n print(f\"Total persons found: {count}\")\n\n # A fetch query can be used for concept document outputs with flexible structure\n fetch_query = \"\"\"\n match\n $x isa! person, has $a;\n $a isa! $t;\n fetch {\n \"single attribute type\": $t,\n \"single attribute\": $a,\n \"all attributes\": { $x.* },\n };\n \"\"\"\n answer = tx.query(fetch_query).resolve()\n\n # Fetch queries always return concept documents\n count = 0\n for document in answer.as_concept_documents():\n count += 1\n print(f\"Fetched a document: {document}.\")\n print(f\"This document contains an attribute of type: {document['single attribute type']['label']}\")\n print(f\"Total documents fetched: {count}\")\n\n print(\"More examples can be found in the API reference and the documentation.\\nWelcome to TypeDB!\")\n```\n\n<!-- EXAMPLE_END_MARKER -->\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "TypeDB Driver for Python",
"version": "3.5.0",
"project_urls": {
"Homepage": "https://github.com/typedb/typedb-driver"
},
"split_keywords": [
"typedb",
"database",
"graph",
"knowledgebase",
"knowledge-engineering"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "269b252722889e044434e0ff502299fcdf12ec19d53a2e9b0bfd111929009757",
"md5": "3c80e172430bc6619726a4c85639d225",
"sha256": "6fe2d7f752ee6ef1ea85ff2006d0a0b905669b3c6429fe2410b3a06558774d4d"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py310-none-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "3c80e172430bc6619726a4c85639d225",
"packagetype": "bdist_wheel",
"python_version": "py310",
"requires_python": ">0",
"size": 5459035,
"upload_time": "2025-09-16T16:36:49",
"upload_time_iso_8601": "2025-09-16T16:36:49.249108Z",
"url": "https://files.pythonhosted.org/packages/26/9b/252722889e044434e0ff502299fcdf12ec19d53a2e9b0bfd111929009757/typedb_driver-3.5.0-py310-none-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b42faa23174ee290cafff68062ec5d7b30db7a37bcc42f8536571630dd1515b2",
"md5": "a753783fa35ac8419ed2573df4c5923d",
"sha256": "36ee684fa7d0fa1e488c5b4bd066a56b3183bef4ef8a5ba27dd7cc2d806e07b8"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py310-none-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "a753783fa35ac8419ed2573df4c5923d",
"packagetype": "bdist_wheel",
"python_version": "py310",
"requires_python": ">0",
"size": 5563704,
"upload_time": "2025-09-16T16:42:54",
"upload_time_iso_8601": "2025-09-16T16:42:54.861257Z",
"url": "https://files.pythonhosted.org/packages/b4/2f/aa23174ee290cafff68062ec5d7b30db7a37bcc42f8536571630dd1515b2/typedb_driver-3.5.0-py310-none-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "493bfd90e8b14dc0051c226ee2dc1713076725cf1f9ad58569629af7150e7838",
"md5": "f7de4272a1195d4cd44f1d1a7981df47",
"sha256": "2f428c524d010c2dc48f3d3c1eebe42ec02ad83e1badb6a9aab40ec92de19c6f"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py310-none-manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "f7de4272a1195d4cd44f1d1a7981df47",
"packagetype": "bdist_wheel",
"python_version": "py310",
"requires_python": ">0",
"size": 6561259,
"upload_time": "2025-09-16T16:45:23",
"upload_time_iso_8601": "2025-09-16T16:45:23.202323Z",
"url": "https://files.pythonhosted.org/packages/49/3b/fd90e8b14dc0051c226ee2dc1713076725cf1f9ad58569629af7150e7838/typedb_driver-3.5.0-py310-none-manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ecc0c485506b1397473f9b41258fad7048472b70cbd44f5ed7e914db4a4fbfea",
"md5": "8771bd318c44986ca8e6c70925adfb8c",
"sha256": "c3903d10a6653dc58b920bf66bc14c7f168a56b9129e12426e4e7fc018d2f386"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py310-none-manylinux_2_17_x86_64.whl",
"has_sig": false,
"md5_digest": "8771bd318c44986ca8e6c70925adfb8c",
"packagetype": "bdist_wheel",
"python_version": "py310",
"requires_python": ">0",
"size": 6610094,
"upload_time": "2025-09-16T16:40:08",
"upload_time_iso_8601": "2025-09-16T16:40:08.587054Z",
"url": "https://files.pythonhosted.org/packages/ec/c0/c485506b1397473f9b41258fad7048472b70cbd44f5ed7e914db4a4fbfea/typedb_driver-3.5.0-py310-none-manylinux_2_17_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cd91b9a0d7961e7ed0139cbdb973e7dbb75c2aa8ba8e479f17b844a4ed98e9dc",
"md5": "ff6727e2beb447f622e434b88856b2ec",
"sha256": "becc4d79c7ec986b2ab7fc92a56e0be1efa76b8092f64160c6130354d0d43025"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py310-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "ff6727e2beb447f622e434b88856b2ec",
"packagetype": "bdist_wheel",
"python_version": "py310",
"requires_python": ">0",
"size": 3138296,
"upload_time": "2025-09-16T16:42:47",
"upload_time_iso_8601": "2025-09-16T16:42:47.071535Z",
"url": "https://files.pythonhosted.org/packages/cd/91/b9a0d7961e7ed0139cbdb973e7dbb75c2aa8ba8e479f17b844a4ed98e9dc/typedb_driver-3.5.0-py310-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ff5f7083457bfa722d3d45fe30a6bee6097749927e9c5905fb7584f057722d04",
"md5": "0f7c89be77ccfe6ecf4e41211edb5f7e",
"sha256": "e870d968632d51284f78b955ecd279826f3c2c9652750957e646cc8ec7222ace"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py311-none-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "0f7c89be77ccfe6ecf4e41211edb5f7e",
"packagetype": "bdist_wheel",
"python_version": "py311",
"requires_python": ">0",
"size": 5459029,
"upload_time": "2025-09-16T16:36:58",
"upload_time_iso_8601": "2025-09-16T16:36:58.792082Z",
"url": "https://files.pythonhosted.org/packages/ff/5f/7083457bfa722d3d45fe30a6bee6097749927e9c5905fb7584f057722d04/typedb_driver-3.5.0-py311-none-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b149150664d318daaf6faa6cf256683f6ed6f4caa313182108f0df8e1156fe50",
"md5": "2c7cda317a37ab0391b70ca245eff145",
"sha256": "b9c402d7e9b49b48b40987eed359fcd0e0a358bb54741b9c6b1a0d9ca0d2fb3e"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py311-none-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "2c7cda317a37ab0391b70ca245eff145",
"packagetype": "bdist_wheel",
"python_version": "py311",
"requires_python": ">0",
"size": 5563709,
"upload_time": "2025-09-16T16:43:11",
"upload_time_iso_8601": "2025-09-16T16:43:11.270776Z",
"url": "https://files.pythonhosted.org/packages/b1/49/150664d318daaf6faa6cf256683f6ed6f4caa313182108f0df8e1156fe50/typedb_driver-3.5.0-py311-none-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2cafa6a9bfdcd8a59e9c2ceac4b539e741c89c7b00a1ed2db6a6686546f6b9cd",
"md5": "36122a0436cc55d4d56467e10b7fb627",
"sha256": "b6f46766d305621c63174491f693c684fcc4ac51d326651e65a025a8e37ed28a"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py311-none-manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "36122a0436cc55d4d56467e10b7fb627",
"packagetype": "bdist_wheel",
"python_version": "py311",
"requires_python": ">0",
"size": 6561409,
"upload_time": "2025-09-16T16:45:43",
"upload_time_iso_8601": "2025-09-16T16:45:43.660287Z",
"url": "https://files.pythonhosted.org/packages/2c/af/a6a9bfdcd8a59e9c2ceac4b539e741c89c7b00a1ed2db6a6686546f6b9cd/typedb_driver-3.5.0-py311-none-manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8da3d2b8dce387ed9728da6c8b5032497adda44149ae689bda093e585abe17d8",
"md5": "168196eff6770f25f3c1571031f71f6b",
"sha256": "aef769510ee5a0419f615f1eb9f4de9f6c505f739841eb40854be7a975bb3615"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py311-none-manylinux_2_17_x86_64.whl",
"has_sig": false,
"md5_digest": "168196eff6770f25f3c1571031f71f6b",
"packagetype": "bdist_wheel",
"python_version": "py311",
"requires_python": ">0",
"size": 6609998,
"upload_time": "2025-09-16T16:40:35",
"upload_time_iso_8601": "2025-09-16T16:40:35.753437Z",
"url": "https://files.pythonhosted.org/packages/8d/a3/d2b8dce387ed9728da6c8b5032497adda44149ae689bda093e585abe17d8/typedb_driver-3.5.0-py311-none-manylinux_2_17_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b2e9a3ca3938b78fb8c4dfbc3e44ec978a87eda039ccf7f4564b517c685373d3",
"md5": "5b3ea2df4be294093af362d07c6b9bb2",
"sha256": "1fa21f06ea11ff12a46b2b175bf5c77ee4a9af5669b418c5409201cc0f6f68aa"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py311-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "5b3ea2df4be294093af362d07c6b9bb2",
"packagetype": "bdist_wheel",
"python_version": "py311",
"requires_python": ">0",
"size": 3138225,
"upload_time": "2025-09-16T16:43:19",
"upload_time_iso_8601": "2025-09-16T16:43:19.650467Z",
"url": "https://files.pythonhosted.org/packages/b2/e9/a3ca3938b78fb8c4dfbc3e44ec978a87eda039ccf7f4564b517c685373d3/typedb_driver-3.5.0-py311-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fb6030c3d222603683a519cf95772b38c8c3ecd88a926f0e5b82640019a24ac7",
"md5": "52d3da34e7e05275df9950ea60dc33cc",
"sha256": "1c29be15e22529324dfa1ffcf040d8595d04444e29714b0b5dd33e7e3fd24e93"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py312-none-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "52d3da34e7e05275df9950ea60dc33cc",
"packagetype": "bdist_wheel",
"python_version": "py312",
"requires_python": ">0",
"size": 5459165,
"upload_time": "2025-09-16T16:37:08",
"upload_time_iso_8601": "2025-09-16T16:37:08.454686Z",
"url": "https://files.pythonhosted.org/packages/fb/60/30c3d222603683a519cf95772b38c8c3ecd88a926f0e5b82640019a24ac7/typedb_driver-3.5.0-py312-none-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6d3ec140e2252ca76e88e93bbd5ff1d6af88e7228c98c712f5bc4c11a8c8faf8",
"md5": "562b274b03a4b3be655f0d0a27c21589",
"sha256": "004685be717af410fae5ca20a198798d5a76ef76a0c0dd0c903a8b21d8b7820d"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py312-none-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "562b274b03a4b3be655f0d0a27c21589",
"packagetype": "bdist_wheel",
"python_version": "py312",
"requires_python": ">0",
"size": 5564324,
"upload_time": "2025-09-16T16:43:28",
"upload_time_iso_8601": "2025-09-16T16:43:28.550624Z",
"url": "https://files.pythonhosted.org/packages/6d/3e/c140e2252ca76e88e93bbd5ff1d6af88e7228c98c712f5bc4c11a8c8faf8/typedb_driver-3.5.0-py312-none-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7a22ca191115893a65fbf0faad5afec2327312d91dca0740fc434e92cfa3bf0e",
"md5": "216f7214b60324cc07a1f768da781727",
"sha256": "475bf485b2e05090e25faaf7432dfec2409e831c97d3a138ce886c88f1ec7999"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py312-none-manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "216f7214b60324cc07a1f768da781727",
"packagetype": "bdist_wheel",
"python_version": "py312",
"requires_python": ">0",
"size": 6561663,
"upload_time": "2025-09-16T16:46:04",
"upload_time_iso_8601": "2025-09-16T16:46:04.285944Z",
"url": "https://files.pythonhosted.org/packages/7a/22/ca191115893a65fbf0faad5afec2327312d91dca0740fc434e92cfa3bf0e/typedb_driver-3.5.0-py312-none-manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9f0e6d7ed6479f5ad4f337a8002c7726b96eb2dddaf534fbf96bbc4c74cc4130",
"md5": "04bc656b50432a02ad6611cb989b17ac",
"sha256": "a31fe22f5e6e2121c5c962e407d7eeeb073bb530f991a47ffe1810fe19ba9dfd"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py312-none-manylinux_2_17_x86_64.whl",
"has_sig": false,
"md5_digest": "04bc656b50432a02ad6611cb989b17ac",
"packagetype": "bdist_wheel",
"python_version": "py312",
"requires_python": ">0",
"size": 6610431,
"upload_time": "2025-09-16T16:41:01",
"upload_time_iso_8601": "2025-09-16T16:41:01.511582Z",
"url": "https://files.pythonhosted.org/packages/9f/0e/6d7ed6479f5ad4f337a8002c7726b96eb2dddaf534fbf96bbc4c74cc4130/typedb_driver-3.5.0-py312-none-manylinux_2_17_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8b4be25472a3f0d81846d8e02901f9fab7d273c0e2eacce943596034f7bac3f0",
"md5": "779b14af1df0f4850448e8619e007cb1",
"sha256": "d007ae507b4684952b567c75baf2f8815c1daec6b1febdd83f22301b58cfce8c"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py312-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "779b14af1df0f4850448e8619e007cb1",
"packagetype": "bdist_wheel",
"python_version": "py312",
"requires_python": ">0",
"size": 3137962,
"upload_time": "2025-09-16T16:43:51",
"upload_time_iso_8601": "2025-09-16T16:43:51.638413Z",
"url": "https://files.pythonhosted.org/packages/8b/4b/e25472a3f0d81846d8e02901f9fab7d273c0e2eacce943596034f7bac3f0/typedb_driver-3.5.0-py312-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "adbc6cf42a712ee1160acf6454bb2d06ca6147316f79097705c9f0f063dd5807",
"md5": "71084046d5b0e1228e421e1269dc08cc",
"sha256": "3d9bd36757cd9aa1d47052246ead38cde979790ac13b6f84da3d9f79b515ad77"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py313-none-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "71084046d5b0e1228e421e1269dc08cc",
"packagetype": "bdist_wheel",
"python_version": "py313",
"requires_python": ">0",
"size": 5459177,
"upload_time": "2025-09-16T16:37:17",
"upload_time_iso_8601": "2025-09-16T16:37:17.729701Z",
"url": "https://files.pythonhosted.org/packages/ad/bc/6cf42a712ee1160acf6454bb2d06ca6147316f79097705c9f0f063dd5807/typedb_driver-3.5.0-py313-none-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "32f1595333d3f178b2e51f1f7d3390852c8dcc6830c820c02ca6f451a071840b",
"md5": "6b4d9c8d59383b56fe2af896dce11789",
"sha256": "fe92b9195ce073515be33f31b05ba698b35ab6163cc818489ab60c45a241f9bf"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py313-none-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "6b4d9c8d59383b56fe2af896dce11789",
"packagetype": "bdist_wheel",
"python_version": "py313",
"requires_python": ">0",
"size": 5564329,
"upload_time": "2025-09-16T16:43:45",
"upload_time_iso_8601": "2025-09-16T16:43:45.907557Z",
"url": "https://files.pythonhosted.org/packages/32/f1/595333d3f178b2e51f1f7d3390852c8dcc6830c820c02ca6f451a071840b/typedb_driver-3.5.0-py313-none-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "527df24df6fb5201bb997303e1cf3f5bc9efaff3fc853011dcbb3482e150ed99",
"md5": "540bb36f052641e9543331821270ab52",
"sha256": "d911d69894e1fb702593c573d565097475520553a6bb74910284d1eecd0b5e8e"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py313-none-manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "540bb36f052641e9543331821270ab52",
"packagetype": "bdist_wheel",
"python_version": "py313",
"requires_python": ">0",
"size": 6561621,
"upload_time": "2025-09-16T16:46:24",
"upload_time_iso_8601": "2025-09-16T16:46:24.491056Z",
"url": "https://files.pythonhosted.org/packages/52/7d/f24df6fb5201bb997303e1cf3f5bc9efaff3fc853011dcbb3482e150ed99/typedb_driver-3.5.0-py313-none-manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c1f61d67758c83005695b394f50afc1cb70dd866bfb8b64cc1590ecb0787fd21",
"md5": "f7d48ff782c31ce033cd9d12608295a2",
"sha256": "0de4d4f171ab2694cacfa3f35c9e4826d74d07376b8ba747e74283ca5541df8e"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py313-none-manylinux_2_17_x86_64.whl",
"has_sig": false,
"md5_digest": "f7d48ff782c31ce033cd9d12608295a2",
"packagetype": "bdist_wheel",
"python_version": "py313",
"requires_python": ">0",
"size": 6610473,
"upload_time": "2025-09-16T16:41:26",
"upload_time_iso_8601": "2025-09-16T16:41:26.465383Z",
"url": "https://files.pythonhosted.org/packages/c1/f6/1d67758c83005695b394f50afc1cb70dd866bfb8b64cc1590ecb0787fd21/typedb_driver-3.5.0-py313-none-manylinux_2_17_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7bbbc9989e070cda5faa44019e4e5dddebb9058ce1fe4c7e83ea31f9aef74e66",
"md5": "16613fd14e542a51f082ff0205807b98",
"sha256": "47687ff9a48cd6e6b4381cdfb3a874cbb76575158f3859da5eee81ef78e75f57"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py39-none-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "16613fd14e542a51f082ff0205807b98",
"packagetype": "bdist_wheel",
"python_version": "py39",
"requires_python": ">0",
"size": 5459158,
"upload_time": "2025-09-16T16:36:38",
"upload_time_iso_8601": "2025-09-16T16:36:38.089843Z",
"url": "https://files.pythonhosted.org/packages/7b/bb/c9989e070cda5faa44019e4e5dddebb9058ce1fe4c7e83ea31f9aef74e66/typedb_driver-3.5.0-py39-none-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bf997fbbe78e28e40a2cc6f9944e95b0649bb85b86ae2f92a205f6452da48f9d",
"md5": "1c336926b33c0840f770c2d3c780e5e3",
"sha256": "3d5eb468ae07de0f04e08ab6e4e747118c1315e1886adb1c2c1e196694f739db"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py39-none-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "1c336926b33c0840f770c2d3c780e5e3",
"packagetype": "bdist_wheel",
"python_version": "py39",
"requires_python": ">0",
"size": 5563980,
"upload_time": "2025-09-16T16:42:31",
"upload_time_iso_8601": "2025-09-16T16:42:31.315247Z",
"url": "https://files.pythonhosted.org/packages/bf/99/7fbbe78e28e40a2cc6f9944e95b0649bb85b86ae2f92a205f6452da48f9d/typedb_driver-3.5.0-py39-none-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7e7bffd2c4db72912dbf3441ec2763c6dd8e1fa93ef78e57b12eb07f05a79a60",
"md5": "b88c7f2c53e9ea70b56b66bc7a6133e0",
"sha256": "f9b2a7707eab846e41d87f9ca203e9ef9599d53fc640216650e327dabc171862"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py39-none-manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "b88c7f2c53e9ea70b56b66bc7a6133e0",
"packagetype": "bdist_wheel",
"python_version": "py39",
"requires_python": ">0",
"size": 6561341,
"upload_time": "2025-09-16T16:44:59",
"upload_time_iso_8601": "2025-09-16T16:44:59.674550Z",
"url": "https://files.pythonhosted.org/packages/7e/7b/ffd2c4db72912dbf3441ec2763c6dd8e1fa93ef78e57b12eb07f05a79a60/typedb_driver-3.5.0-py39-none-manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e54176c6fb1031d082ba9ecb7a2074c34093f5cb633e8948e17651651cc2700d",
"md5": "08e80b2362fa58f998957312f1ce5afb",
"sha256": "2727ff94be91c2b221bc6027e163224995d8bb9105bd1d1946f433a2464e49df"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py39-none-manylinux_2_17_x86_64.whl",
"has_sig": false,
"md5_digest": "08e80b2362fa58f998957312f1ce5afb",
"packagetype": "bdist_wheel",
"python_version": "py39",
"requires_python": ">0",
"size": 6610284,
"upload_time": "2025-09-16T16:39:41",
"upload_time_iso_8601": "2025-09-16T16:39:41.173148Z",
"url": "https://files.pythonhosted.org/packages/e5/41/76c6fb1031d082ba9ecb7a2074c34093f5cb633e8948e17651651cc2700d/typedb_driver-3.5.0-py39-none-manylinux_2_17_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f0bb7585fbf55776fc6ed39c590a2d63a0b9c615fcfa3b593a7075cfdd1b0233",
"md5": "5c77795f957d12210d54021219948390",
"sha256": "bee7feb787a4c3d54dfb792ff0904ea03bf77da8077b577ba2fb42b726f1bddd"
},
"downloads": -1,
"filename": "typedb_driver-3.5.0-py39-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "5c77795f957d12210d54021219948390",
"packagetype": "bdist_wheel",
"python_version": "py39",
"requires_python": ">0",
"size": 3138303,
"upload_time": "2025-09-16T16:41:29",
"upload_time_iso_8601": "2025-09-16T16:41:29.685865Z",
"url": "https://files.pythonhosted.org/packages/f0/bb/7585fbf55776fc6ed39c590a2d63a0b9c615fcfa3b593a7075cfdd1b0233/typedb_driver-3.5.0-py39-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-16 16:36:49",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "typedb",
"github_project": "typedb-driver",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"circle": true,
"lcname": "typedb-driver"
}