#!/usr/bin/env python

import gzip
import logging
from pathlib import Path

import lxml.etree as le

from eutils import Client
from eutils._internal.xmlfacades.entrezgeneset import EntrezgeneSet

# new style
from eutils._internal.xmlfacades.esearchresult import ESearchResult

logging.basicConfig(level=logging.DEBUG)
data_dir = Path(__file__).resolve().parent.parent / "tests" / "data"
ec = Client()


if True:
    with gzip.open(data_dir / "esearch.fcgi?term=hart%20rk[author].xml.gz") as f:
        xml = f.read()
    doc = le.XML(xml)
    esr = ESearchResult(doc)


if False:
    with gzip.open(data_dir / "entrezgeneset.xml.gz") as f:
        xml = f.read()
    doc = le.XML(xml)
    egs = EntrezgeneSet(doc)

    print(f"{len(egs.entrezgenes)} genes in EntrezgeneSet")
    for eg in egs:
        print(
            "\t".join(
                map(
                    str,
                    [
                        eg.gene_id,
                        eg.maploc,
                        eg.hgnc,
                        eg.summary[:30] + "..." if eg.summary else None,
                    ],
                )
            )
        )

if False:
    esr = ec.esearch(db="gene", term="tumor necrosis factor")
    egs = ec.efetch(db="gene", id=esr.ids[0])
    eg = egs.entrezgenes[0]

if False:
    esr = ec.esearch(db="nuccore", term="NM_000533.3")
    gbset = ec.efetch(db="nuccore", id=esr.ids[0])
    gbseq = gbset.gbseqs[0]


import IPython  # noqa: E402

IPython.embed()
