# 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/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/drivers/python/api-reference).
## 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 the [TypeDB Server](https://docs.typedb.com/docs/running-typedb/install-and-run#start-the-typedb-server) 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.core_driver(address=TypeDB.DEFAULT_ADDRESS)
```
## Example usage
### TypeDB Core
<!-- CORE_EXAMPLE_START_MARKER -->
```py
from typedb.driver import *
def typedb_example():
# Open a driver connection. The connection will be automatically closed on the "with" block exit
with TypeDB.core_driver(TypeDB.DEFAULT_ADDRESS, Credentials("admin", "password"), DriverOptions()) 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
# Use "with" blocks to forget about "close" operations (similarly to connections)
with driver.transaction(database.name, TransactionType.SCHEMA) 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
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:
# A match query can be used for concept row outputs
var = "x"
answer = tx.query(f"match ${var} isa person;").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!")
```
<!-- CORE_EXAMPLE_END_MARKER -->
Raw data
{
"_id": null,
"home_page": "https://github.com/typedb/typedb-driver-python/",
"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/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/drivers/python/api-reference).\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 the [TypeDB Server](https://docs.typedb.com/docs/running-typedb/install-and-run#start-the-typedb-server) is 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.core_driver(address=TypeDB.DEFAULT_ADDRESS)\n```\n\n## Example usage\n\n### TypeDB Core\n\n<!-- CORE_EXAMPLE_START_MARKER -->\n\n```py\nfrom typedb.driver import *\n\n\n def typedb_example():\n # Open a driver connection. The connection will be automatically closed on the \"with\" block exit\n with TypeDB.core_driver(TypeDB.DEFAULT_ADDRESS, Credentials(\"admin\", \"password\"), DriverOptions()) 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 # Use \"with\" blocks to forget about \"close\" operations (similarly to connections)\n with driver.transaction(database.name, TransactionType.SCHEMA) 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(\n \"As we expect an entity instance, we can try to get its IID (unique identification): {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 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 # A match query can be used for concept row outputs\n var = \"x\"\n answer = tx.query(f\"match ${var} isa person;\").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<!-- CORE_EXAMPLE_END_MARKER -->\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "TypeDB Driver for Python",
"version": "3.0.0",
"project_urls": {
"Homepage": "https://github.com/typedb/typedb-driver-python/"
},
"split_keywords": [
"typedb",
"database",
"graph",
"knowledgebase",
"knowledge-engineering"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "737b775aca2f29eb5e964ad2931a557c15975bb803b7a5e169899d14901a27d8",
"md5": "7ef269163082490d2490612e143b8b25",
"sha256": "477d9f8723c8800fe91d5063af898a0f4f60be07439be06046237b09242e527d"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py310-none-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "7ef269163082490d2490612e143b8b25",
"packagetype": "bdist_wheel",
"python_version": "py310",
"requires_python": ">0",
"size": 4996291,
"upload_time": "2024-12-20T12:53:25",
"upload_time_iso_8601": "2024-12-20T12:53:25.136845Z",
"url": "https://files.pythonhosted.org/packages/73/7b/775aca2f29eb5e964ad2931a557c15975bb803b7a5e169899d14901a27d8/typedb_driver-3.0.0-py310-none-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b09f950e4f4f9c51967b577dc071e1694c07bbeb71ac005a3ed90b106c4e9bd9",
"md5": "02ab83060941e353531b66e7ebf057e6",
"sha256": "f160f2001c23727792ec0f0277ff8de39bf1e38a740799ecf2ede64c98129703"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py310-none-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "02ab83060941e353531b66e7ebf057e6",
"packagetype": "bdist_wheel",
"python_version": "py310",
"requires_python": ">0",
"size": 5079550,
"upload_time": "2024-12-20T12:59:41",
"upload_time_iso_8601": "2024-12-20T12:59:41.684295Z",
"url": "https://files.pythonhosted.org/packages/b0/9f/950e4f4f9c51967b577dc071e1694c07bbeb71ac005a3ed90b106c4e9bd9/typedb_driver-3.0.0-py310-none-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cd2a60e02ece2b25f31467633092ea28881f5c00466137e475f347c70bc19ceb",
"md5": "44dc0a7fcfe27ed8fd773952027b20ce",
"sha256": "24935a1c1b83eea98622e94dba8f4910a8801f68e4c8b554e1bcb8a9021d8f5d"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py310-none-manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "44dc0a7fcfe27ed8fd773952027b20ce",
"packagetype": "bdist_wheel",
"python_version": "py310",
"requires_python": ">0",
"size": 6049977,
"upload_time": "2024-12-20T13:00:36",
"upload_time_iso_8601": "2024-12-20T13:00:36.650046Z",
"url": "https://files.pythonhosted.org/packages/cd/2a/60e02ece2b25f31467633092ea28881f5c00466137e475f347c70bc19ceb/typedb_driver-3.0.0-py310-none-manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "de0a534ac3158d349b61fcf0e0b9ef96821266458934ada9c7adfbcc06ce37f0",
"md5": "23fcf816de70cdf4257ed63a064fe6b7",
"sha256": "b8ea7b59f31a4c895dabff04f2467553ea02d0f807f0f1568b0cac964d9ec802"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py310-none-manylinux_2_17_x86_64.whl",
"has_sig": false,
"md5_digest": "23fcf816de70cdf4257ed63a064fe6b7",
"packagetype": "bdist_wheel",
"python_version": "py310",
"requires_python": ">0",
"size": 6118638,
"upload_time": "2024-12-20T12:57:01",
"upload_time_iso_8601": "2024-12-20T12:57:01.458363Z",
"url": "https://files.pythonhosted.org/packages/de/0a/534ac3158d349b61fcf0e0b9ef96821266458934ada9c7adfbcc06ce37f0/typedb_driver-3.0.0-py310-none-manylinux_2_17_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2880ebecc51a9a479a67897b21081f284c23c2cbdd8b8be3ab0758a9f1795cf4",
"md5": "8bea3094369bd3a358d1200076930202",
"sha256": "5449125088630632f75a58b35e488ae3b5e6db95dafb2fb889c813fd35388a2d"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py310-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "8bea3094369bd3a358d1200076930202",
"packagetype": "bdist_wheel",
"python_version": "py310",
"requires_python": ">0",
"size": 2902768,
"upload_time": "2024-12-20T12:57:50",
"upload_time_iso_8601": "2024-12-20T12:57:50.889869Z",
"url": "https://files.pythonhosted.org/packages/28/80/ebecc51a9a479a67897b21081f284c23c2cbdd8b8be3ab0758a9f1795cf4/typedb_driver-3.0.0-py310-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dbd37da7084cbb17d5dc7b7b9024df26c75cd3417cd2b7ecb4574422cbcea0b7",
"md5": "8a2c851a17bc46a812b9632eb9340497",
"sha256": "ff5ef48970827bee68ffc7978bfa61f1e25c8856bf462e427a61b165d4e56a9c"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py311-none-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "8a2c851a17bc46a812b9632eb9340497",
"packagetype": "bdist_wheel",
"python_version": "py311",
"requires_python": ">0",
"size": 4996289,
"upload_time": "2024-12-20T12:53:43",
"upload_time_iso_8601": "2024-12-20T12:53:43.113058Z",
"url": "https://files.pythonhosted.org/packages/db/d3/7da7084cbb17d5dc7b7b9024df26c75cd3417cd2b7ecb4574422cbcea0b7/typedb_driver-3.0.0-py311-none-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "52dd2f84b18cc29d1fc128a5719332ad43998da71805ff30721e3954fac7d047",
"md5": "ae5feda4edef31d61624096426034d9b",
"sha256": "8e53e8caf4ed721486e6020835b80c6ab90451673d78b8e58ad0afb7b6a40228"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py311-none-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "ae5feda4edef31d61624096426034d9b",
"packagetype": "bdist_wheel",
"python_version": "py311",
"requires_python": ">0",
"size": 5079548,
"upload_time": "2024-12-20T13:00:00",
"upload_time_iso_8601": "2024-12-20T13:00:00.138397Z",
"url": "https://files.pythonhosted.org/packages/52/dd/2f84b18cc29d1fc128a5719332ad43998da71805ff30721e3954fac7d047/typedb_driver-3.0.0-py311-none-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6a4c2e75b3084defd5aef897dd33908f51189e4d5c6a6e67a1bd5ecb75fbba2f",
"md5": "7882c7419f06e06e031af5a8e5df7519",
"sha256": "24f439778f5c0426782aee95c5b3bf2185d8748d44f04e754c2466911df62b58"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py311-none-manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "7882c7419f06e06e031af5a8e5df7519",
"packagetype": "bdist_wheel",
"python_version": "py311",
"requires_python": ">0",
"size": 6050306,
"upload_time": "2024-12-20T13:00:57",
"upload_time_iso_8601": "2024-12-20T13:00:57.426151Z",
"url": "https://files.pythonhosted.org/packages/6a/4c/2e75b3084defd5aef897dd33908f51189e4d5c6a6e67a1bd5ecb75fbba2f/typedb_driver-3.0.0-py311-none-manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "48ee572ba05e98cf21f198b07a6a89c5ece59efbb11367c84e08c6489189ae2b",
"md5": "646e291641f3013407874578535ddbe1",
"sha256": "b6ab9640906900b1e11d1f08e9d7822a5555f358f2e90e8fd1eae36580575850"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py311-none-manylinux_2_17_x86_64.whl",
"has_sig": false,
"md5_digest": "646e291641f3013407874578535ddbe1",
"packagetype": "bdist_wheel",
"python_version": "py311",
"requires_python": ">0",
"size": 6118298,
"upload_time": "2024-12-20T12:57:25",
"upload_time_iso_8601": "2024-12-20T12:57:25.501604Z",
"url": "https://files.pythonhosted.org/packages/48/ee/572ba05e98cf21f198b07a6a89c5ece59efbb11367c84e08c6489189ae2b/typedb_driver-3.0.0-py311-none-manylinux_2_17_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "632b5ff8390899aa207d87e70d6356f085a911f64cb05c1c2ac68560a68c965e",
"md5": "1a7ae53109f52193c1706e48bf5e2e05",
"sha256": "6d248f8790210e2d727f9e07393ed0262212f20a8375a295f03df101be06b2ad"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py311-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "1a7ae53109f52193c1706e48bf5e2e05",
"packagetype": "bdist_wheel",
"python_version": "py311",
"requires_python": ">0",
"size": 2902828,
"upload_time": "2024-12-20T12:58:31",
"upload_time_iso_8601": "2024-12-20T12:58:31.009658Z",
"url": "https://files.pythonhosted.org/packages/63/2b/5ff8390899aa207d87e70d6356f085a911f64cb05c1c2ac68560a68c965e/typedb_driver-3.0.0-py311-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f1eb3727035bc600bcd3a6c28d6d0d8e5eab835a5aadc7ac7b0a04434801c9b2",
"md5": "44baa9d8f629627c147df4fc674a3779",
"sha256": "2165853c3b91bc62c56b814e58cfaebb39e8c5106562fd9204185284941f7574"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py312-none-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "44baa9d8f629627c147df4fc674a3779",
"packagetype": "bdist_wheel",
"python_version": "py312",
"requires_python": ">0",
"size": 4996194,
"upload_time": "2024-12-20T12:53:54",
"upload_time_iso_8601": "2024-12-20T12:53:54.041790Z",
"url": "https://files.pythonhosted.org/packages/f1/eb/3727035bc600bcd3a6c28d6d0d8e5eab835a5aadc7ac7b0a04434801c9b2/typedb_driver-3.0.0-py312-none-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e2e070b903b36ec0efaa1e34714cee3b60a5978f8be675b1cdd4e55600d303a5",
"md5": "dabfefc07198ba97bdf90c62a6d2c238",
"sha256": "60cacb6b5567d8766116ffa103e90070d096e4d3a8fb08f99a1ccf107a650349"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py312-none-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "dabfefc07198ba97bdf90c62a6d2c238",
"packagetype": "bdist_wheel",
"python_version": "py312",
"requires_python": ">0",
"size": 5080189,
"upload_time": "2024-12-20T13:00:20",
"upload_time_iso_8601": "2024-12-20T13:00:20.136893Z",
"url": "https://files.pythonhosted.org/packages/e2/e0/70b903b36ec0efaa1e34714cee3b60a5978f8be675b1cdd4e55600d303a5/typedb_driver-3.0.0-py312-none-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "86bed1428b1dab7bcabbb3ebf820b4d76bd8b4569fcfc1824081e02052e9e72e",
"md5": "8a1192f0bb547e1306b19f262d0cb396",
"sha256": "7ceb9f1b0415ec285ab508a970993dd05abc5fb35a191d25e8ca2e2b2419b105"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py312-none-manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "8a1192f0bb547e1306b19f262d0cb396",
"packagetype": "bdist_wheel",
"python_version": "py312",
"requires_python": ">0",
"size": 6050280,
"upload_time": "2024-12-20T13:01:19",
"upload_time_iso_8601": "2024-12-20T13:01:19.051485Z",
"url": "https://files.pythonhosted.org/packages/86/be/d1428b1dab7bcabbb3ebf820b4d76bd8b4569fcfc1824081e02052e9e72e/typedb_driver-3.0.0-py312-none-manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "379839db27043587d4c5731ff426e44b301a0ac258d075df06c225ea894bf3fd",
"md5": "e7a28dff1f9f38740daf41fed22339f9",
"sha256": "2738b37aa1fcef172acef2625466ef7ddb864b677481fba65a74e41147c24109"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py312-none-manylinux_2_17_x86_64.whl",
"has_sig": false,
"md5_digest": "e7a28dff1f9f38740daf41fed22339f9",
"packagetype": "bdist_wheel",
"python_version": "py312",
"requires_python": ">0",
"size": 6118741,
"upload_time": "2024-12-20T12:57:53",
"upload_time_iso_8601": "2024-12-20T12:57:53.589629Z",
"url": "https://files.pythonhosted.org/packages/37/98/39db27043587d4c5731ff426e44b301a0ac258d075df06c225ea894bf3fd/typedb_driver-3.0.0-py312-none-manylinux_2_17_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c1db445b41dd5ab1cb9470fb259a959c5a16d08d392e822ad651bc58bc24b59c",
"md5": "cff224b477f94669af12c1a15b48fb72",
"sha256": "aba8fdf3021be041b065774ca3171596d249239cf1a88d57e4ba67f594caee5b"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py312-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "cff224b477f94669af12c1a15b48fb72",
"packagetype": "bdist_wheel",
"python_version": "py312",
"requires_python": ">0",
"size": 2902513,
"upload_time": "2024-12-20T12:59:48",
"upload_time_iso_8601": "2024-12-20T12:59:48.453160Z",
"url": "https://files.pythonhosted.org/packages/c1/db/445b41dd5ab1cb9470fb259a959c5a16d08d392e822ad651bc58bc24b59c/typedb_driver-3.0.0-py312-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8dd43f2173093a28bc62c8ef132646628884425c57d6efaeb40fd2da65a8810f",
"md5": "fb5685e0aff52379e21ce07ccad78517",
"sha256": "994980f6c8c2932ae1e5fa81f232a8a312e362c7a66f859a126f4d6270184d79"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py39-none-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "fb5685e0aff52379e21ce07ccad78517",
"packagetype": "bdist_wheel",
"python_version": "py39",
"requires_python": ">0",
"size": 4996543,
"upload_time": "2024-12-20T12:53:13",
"upload_time_iso_8601": "2024-12-20T12:53:13.013028Z",
"url": "https://files.pythonhosted.org/packages/8d/d4/3f2173093a28bc62c8ef132646628884425c57d6efaeb40fd2da65a8810f/typedb_driver-3.0.0-py39-none-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6fe8219c2bd4e18987ced600900aa440d1742226cc6fb7b532550f6e5ab7af3e",
"md5": "435f7b33835fe2bb58c54c2e5cf1791d",
"sha256": "70b0b8da09f5e2c3a23ea47f099b17aa0fa5eb09155eddcef5c94a17baaae41f"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py39-none-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "435f7b33835fe2bb58c54c2e5cf1791d",
"packagetype": "bdist_wheel",
"python_version": "py39",
"requires_python": ">0",
"size": 5079538,
"upload_time": "2024-12-20T12:59:16",
"upload_time_iso_8601": "2024-12-20T12:59:16.686520Z",
"url": "https://files.pythonhosted.org/packages/6f/e8/219c2bd4e18987ced600900aa440d1742226cc6fb7b532550f6e5ab7af3e/typedb_driver-3.0.0-py39-none-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "65223aa88435613a25500ec43dc3ee043eaaaaf1e3c9c08e4532d161ec5b6271",
"md5": "dc5ee0f87dca1ffe86e341c129bdf769",
"sha256": "eead92687ae4d4f1cb85720d873553c259afdf95e6b7106b91a9a9b5b3069244"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py39-none-manylinux_2_17_aarch64.whl",
"has_sig": false,
"md5_digest": "dc5ee0f87dca1ffe86e341c129bdf769",
"packagetype": "bdist_wheel",
"python_version": "py39",
"requires_python": ">0",
"size": 6050302,
"upload_time": "2024-12-20T13:00:13",
"upload_time_iso_8601": "2024-12-20T13:00:13.615687Z",
"url": "https://files.pythonhosted.org/packages/65/22/3aa88435613a25500ec43dc3ee043eaaaaf1e3c9c08e4532d161ec5b6271/typedb_driver-3.0.0-py39-none-manylinux_2_17_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b9c72a6cb3e71aa4f516938f05eed031bcb9ac181f3f67b191f123f33de66184",
"md5": "3ba10b23aae5dd12dc5abd046c5d1688",
"sha256": "2df3f80685e47209e30c37264253acc20365a79a259c3d0fbee181e478769b8f"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py39-none-manylinux_2_17_x86_64.whl",
"has_sig": false,
"md5_digest": "3ba10b23aae5dd12dc5abd046c5d1688",
"packagetype": "bdist_wheel",
"python_version": "py39",
"requires_python": ">0",
"size": 6118674,
"upload_time": "2024-12-20T12:56:34",
"upload_time_iso_8601": "2024-12-20T12:56:34.922040Z",
"url": "https://files.pythonhosted.org/packages/b9/c7/2a6cb3e71aa4f516938f05eed031bcb9ac181f3f67b191f123f33de66184/typedb_driver-3.0.0-py39-none-manylinux_2_17_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3fb02e870fe5225cdf57cfd4268d16d1a2e8ebf49bedfb865412db35e0d54273",
"md5": "5218a759c94fe8822ddc5c2680e8bedc",
"sha256": "8060afd9baf1d8ad871600c7c41bcde7a21fb5abe1581be5f5fba61c3f1977fe"
},
"downloads": -1,
"filename": "typedb_driver-3.0.0-py39-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "5218a759c94fe8822ddc5c2680e8bedc",
"packagetype": "bdist_wheel",
"python_version": "py39",
"requires_python": ">0",
"size": 2902734,
"upload_time": "2024-12-20T12:56:26",
"upload_time_iso_8601": "2024-12-20T12:56:26.529769Z",
"url": "https://files.pythonhosted.org/packages/3f/b0/2e870fe5225cdf57cfd4268d16d1a2e8ebf49bedfb865412db35e0d54273/typedb_driver-3.0.0-py39-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-20 12:53:25",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "typedb",
"github_project": "typedb-driver-python",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "parse",
"specs": [
[
"==",
"1.18.0"
]
]
}
],
"lcname": "typedb-driver"
}