typedb-driver


Nametypedb-driver JSON
Version 3.5.0 PyPI version JSON
download
home_pagehttps://github.com/typedb/typedb-driver
SummaryTypeDB Driver for Python
upload_time2025-09-16 16:36:49
maintainerNone
docs_urlNone
authorTypeDB Community
requires_python>0
licenseApache-2.0
keywords typedb database graph knowledgebase knowledge-engineering
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 1.94869s