typedb-driver


Nametypedb-driver JSON
Version 3.0.0 PyPI version JSON
download
home_pagehttps://github.com/typedb/typedb-driver-python/
SummaryTypeDB Driver for Python
upload_time2024-12-20 12:53:25
maintainerNone
docs_urlNone
authorTypeDB Community
requires_python>0
licenseApache-2.0
keywords typedb database graph knowledgebase knowledge-engineering
VCS
bugtrack_url
requirements parse
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/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"
}
        
Elapsed time: 0.40762s