Does Neomodel use read_transaction when running db.cypher_query()?

I am using Neomodel as OGM to connect my app with the Neo4j database.
For the more complex queries I'm using the function:
neomodel.db.cypher_query(query, params={})

Now, I can see that Neomodel uses session.run to execute this query, but I'm not sure if it's using read_transaction or write_transaction? If it's not explicitly set, the default option is write_transaction, meaning that Neomodel uses write locks whenever calling db.cypher_query().

And the approach is very important, as most of this queries are READ ONLY, so it's not needed to put WRITE locks on the nodes in order to be executed!

Thank you in advance!

Hello,

So I've done this simple test of calling db.cypher_query("CREATE (n:Random)" without any transaction configuration, and it went through successfully => that means it's a write transaction or it would have failed.
So your assumption is right that it's write transaction by default.

I'm not 100% clear on node locks for nodes that are only being MATCHed though, that would need to be checked.

Thank you for your answer.
I have extended your test to limit db.cypher_query() on read mode only. Writing the conclusion here, so it can be helpful for others.

When added @db.read_transaction wrapper on function or calling the method in clause
with db.read_transaction:, the method db.cypher_query() executes only read operations and throws error when trying to use write operation.
For example, this code throws error:

def tst():
    with db.read_transaction:
        query = """CREATE (n:Random) RETURN n"""
        matches, _ = neomodel.db.cypher_query(query)
    return matches

neo4j.exceptions.ClientError: {code: Neo.ClientError.Statement.AccessMode} {message: Writing in read access mode not allowed. Attempted write to neo4j}