Repository: ga4gh/vrs-python

Issue:
Add parameter to perform regex check in translate_from methods
I'm working on an issue in the variation normalizer, where we're first going to use the regex in the Translator, get the position to possibly liftover, and then use the translate from method to return the VRS representation. It would be nice to be able use the existing `match.groupdict()` rather than having this check done twice

Discussion:
korikuzma: > @korikuzma please verify my understanding that this change is really making sure that a deverloper can more easily turn off the default 'normalization' processing if desired. Whereas prior to this PR that would have been less straight forward.

@larrybabb Correct. This is similar to #214 (default assembly name). It doesn't change the functionality, but makes it easier to switch without having to constantly re-set the instance variable.

Patch:
diff --git a/src/ga4gh/vrs/extras/translator.py b/src/ga4gh/vrs/extras/translator.py
index dfe0bdc..f3faa98 100644
--- a/src/ga4gh/vrs/extras/translator.py
+++ b/src/ga4gh/vrs/extras/translator.py
@@ -54,14 +54,12 @@ class Translator:
         self,
         data_proxy,
         default_assembly_name="GRCh38",
-        normalize=True,
         identify=True,
         rle_seq_limit: Optional[int] = 50
     ):
         self.default_assembly_name = default_assembly_name
         self.data_proxy = data_proxy
         self.identify = identify
-        self.normalize = normalize
         self.rle_seq_limit = rle_seq_limit
         self.hgvs_tools = None
         self.from_translators = {}
@@ -127,6 +125,8 @@ class Translator:
                     To exclude `sequence` from the response, set to 0.
                     For no limit, set to `None`.
                     Defaults value set in instance variable, `rle_seq_limit`.
+                do_normalize (bool): `True` if fully justified normalization should be
+                    performed. `False` otherwise. Defaults to `True`
         """
         if fmt:
             try:
@@ -225,10 +225,10 @@ class AlleleTranslator(Translator):
     """Class for translating formats to and from VRS Alleles"""
 
     def __init__(
-        self, data_proxy, default_assembly_name="GRCh38", normalize=True, identify=True
+        self, data_proxy, default_assembly_name="GRCh38", identify=True
     ):
         """Initialize AlleleTranslator class"""
-        super().__init__(data_proxy, default_assembly_name, normalize, identify)
+        super().__init__(data_proxy, default_assembly_name, identify)
 
         self.from_translators = {
             "beacon": self._from_beacon,
@@ -253,6 +253,8 @@ class AlleleTranslator(Translator):
                 To exclude `sequence` from the response, set to 0.
                 For no limit, set to `None`.
                 Defaults value set in instance variable, `rle_seq_limit`.
+            do_normalize (bool): `True` if fully justified normalization should be
+                performed. `False` otherwise. Defaults to `True`
 
         #>>> a = tlr.from_beacon("19 : 44908822 C > T")
         #>>> a.model_dump()
@@ -316,6 +318,8 @@ class AlleleTranslator(Translator):
                 To exclude `sequence` from the response, set to 0.
                 For no limit, set to `None`.
                 Defaults value set in instance variable, `rle_seq_limit`.
+            do_normalize (bool): `True` if fully justified normalization should be
+                performed. `False` otherwise. Defaults to `True`
 
         #>>> a = tlr.from_gnomad("1-55516888-G-GA")
         #>>> a.model_dump()
@@ -378,6 +382,8 @@ class AlleleTranslator(Translator):
                 To exclude `sequence` from the response, set to 0.
                 For no limit, set to `None`.
                 Defaults value set in instance variable, `rle_seq_limit`.
+            do_normalize (bool): `True` if fully justified normalization should be
+                performed. `False` otherwise. Defaults to `True`
 
         #>>> a = tlr.from_hgvs("NC_000007.14:g.55181320A>T")
         #>>> a.model_dump()
@@ -452,6 +458,8 @@ class AlleleTranslator(Translator):
                 To exclude `sequence` from the response, set to 0.
                 For no limit, set to `None`.
                 Defaults value set in instance variable, `rle_seq_limit`.
+            do_normalize (bool): `True` if fully justified normalization should be
+                performed. `False` otherwise. Defaults to `True`
 
         #>>> a = tlr.from_spdi("NC_000013.11:32936731:1:C")
         #>>> a.model_dump()
@@ -626,8 +634,10 @@ class AlleleTranslator(Translator):
                 normalization, this sets the limit for the length of the `sequence`.
                 To exclude `sequence` from the response, set to 0.
                 For no limit, set to `None`.
+            do_normalize (bool): `True` if fully justified normalization should be
+                performed. `False` otherwise. Defaults to `True`
         """
-        if self.normalize:
+        if kwargs.get("do_normalize", True):
             allele = normalize(
                 allele,
                 self.data_proxy,
@@ -654,10 +664,10 @@ class CnvTranslator(Translator):
     """Class for translating formats from format to VRS Copy Number"""
 
     def __init__(
-        self, data_proxy, default_assembly_name="GRCh38", normalize=True, identify=True
+        self, data_proxy, default_assembly_name="GRCh38", identify=True
     ):
         """Initialize CnvTranslator class"""
-        super().__init__(data_proxy, default_assembly_name, normalize, identify)
+        super().__init__(data_proxy, default_assembly_name, identify)
         self.from_translators = {
             "hgvs": self._from_hgvs,
         }


Test patch:
diff --git a/tests/extras/cassettes/test_from_spdi.yaml b/tests/extras/cassettes/test_from_spdi.yaml
new file mode 100644
index 0000000..e864fe9
--- /dev/null
+++ b/tests/extras/cassettes/test_from_spdi.yaml
@@ -0,0 +1,86 @@
+interactions:
+- request:
+    body: null
+    headers:
+      Accept:
+      - '*/*'
+      Accept-Encoding:
+      - gzip, deflate
+      Connection:
+      - keep-alive
+      User-Agent:
+      - python-requests/2.31.0
+    method: GET
+    uri: http://localhost:5000/seqrepo/1/metadata/refseq:NC_000019.10
+  response:
+    body:
+      string: "{\n  \"added\": \"2016-08-24T08:19:02Z\",\n  \"aliases\": [\n    \"Ensembl:19\",\n
+        \   \"ensembl:19\",\n    \"GRCh38:19\",\n    \"GRCh38:chr19\",\n    \"GRCh38.p1:19\",\n
+        \   \"GRCh38.p1:chr19\",\n    \"GRCh38.p10:19\",\n    \"GRCh38.p10:chr19\",\n
+        \   \"GRCh38.p11:19\",\n    \"GRCh38.p11:chr19\",\n    \"GRCh38.p12:19\",\n
+        \   \"GRCh38.p12:chr19\",\n    \"GRCh38.p2:19\",\n    \"GRCh38.p2:chr19\",\n
+        \   \"GRCh38.p3:19\",\n    \"GRCh38.p3:chr19\",\n    \"GRCh38.p4:19\",\n    \"GRCh38.p4:chr19\",\n
+        \   \"GRCh38.p5:19\",\n    \"GRCh38.p5:chr19\",\n    \"GRCh38.p6:19\",\n    \"GRCh38.p6:chr19\",\n
+        \   \"GRCh38.p7:19\",\n    \"GRCh38.p7:chr19\",\n    \"GRCh38.p8:19\",\n    \"GRCh38.p8:chr19\",\n
+        \   \"GRCh38.p9:19\",\n    \"GRCh38.p9:chr19\",\n    \"MD5:b0eba2c7bb5c953d1e06a508b5e487de\",\n
+        \   \"NCBI:NC_000019.10\",\n    \"refseq:NC_000019.10\",\n    \"SEGUID:AHxM5/L8jIX08UhBBkKXkiO5rhY\",\n
+        \   \"SHA1:007c4ce7f2fc8c85f4f148410642979223b9ae16\",\n    \"VMC:GS_IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl\",\n
+        \   \"sha512t24u:IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl\",\n    \"ga4gh:SQ.IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl\"\n
+        \ ],\n  \"alphabet\": \"ACGNT\",\n  \"length\": 58617616\n}\n"
+    headers:
+      Connection:
+      - close
+      Content-Length:
+      - '1035'
+      Content-Type:
+      - application/json
+      Date:
+      - Tue, 12 Mar 2024 12:34:06 GMT
+      Server:
+      - Werkzeug/2.2.2 Python/3.10.4
+    status:
+      code: 200
+      message: OK
+- request:
+    body: null
+    headers:
+      Accept:
+      - '*/*'
+      Accept-Encoding:
+      - gzip, deflate
+      Connection:
+      - keep-alive
+      User-Agent:
+      - python-requests/2.31.0
+    method: GET
+    uri: http://localhost:5000/seqrepo/1/metadata/refseq:NC_000013.11
+  response:
+    body:
+      string: "{\n  \"added\": \"2016-08-27T23:50:14Z\",\n  \"aliases\": [\n    \"GRCh38:13\",\n
+        \   \"GRCh38:chr13\",\n    \"GRCh38.p1:13\",\n    \"GRCh38.p1:chr13\",\n    \"GRCh38.p10:13\",\n
+        \   \"GRCh38.p10:chr13\",\n    \"GRCh38.p11:13\",\n    \"GRCh38.p11:chr13\",\n
+        \   \"GRCh38.p12:13\",\n    \"GRCh38.p12:chr13\",\n    \"GRCh38.p2:13\",\n
+        \   \"GRCh38.p2:chr13\",\n    \"GRCh38.p3:13\",\n    \"GRCh38.p3:chr13\",\n
+        \   \"GRCh38.p4:13\",\n    \"GRCh38.p4:chr13\",\n    \"GRCh38.p5:13\",\n    \"GRCh38.p5:chr13\",\n
+        \   \"GRCh38.p6:13\",\n    \"GRCh38.p6:chr13\",\n    \"GRCh38.p7:13\",\n    \"GRCh38.p7:chr13\",\n
+        \   \"GRCh38.p8:13\",\n    \"GRCh38.p8:chr13\",\n    \"GRCh38.p9:13\",\n    \"GRCh38.p9:chr13\",\n
+        \   \"MD5:a5437debe2ef9c9ef8f3ea2874ae1d82\",\n    \"NCBI:NC_000013.11\",\n
+        \   \"refseq:NC_000013.11\",\n    \"SEGUID:2oDBty0yKV9wHo7gg+Bt+fPgi5o\",\n
+        \   \"SHA1:da80c1b72d32295f701e8ee083e06df9f3e08b9a\",\n    \"VMC:GS__0wi-qoDrvram155UmcSC-zA5ZK4fpLT\",\n
+        \   \"sha512t24u:_0wi-qoDrvram155UmcSC-zA5ZK4fpLT\",\n    \"ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT\"\n
+        \ ],\n  \"alphabet\": \"ACGKNTY\",\n  \"length\": 114364328\n}\n"
+    headers:
+      Connection:
+      - close
+      Content-Length:
+      - '1002'
+      Content-Type:
+      - application/json
+      Date:
+      - Tue, 12 Mar 2024 12:34:06 GMT
+      Server:
+      - Werkzeug/2.2.2 Python/3.10.4
+    status:
+      code: 200
+      message: OK
+version: 1
diff --git a/tests/extras/cassettes/test_hgvs[NC_000007.14:g.55181220del-expected2].yaml b/tests/extras/cassettes/test_hgvs[NC_000007.14:g.55181220del-expected2].yaml
index 6f18cf6..9cde005 100644
--- a/tests/extras/cassettes/test_hgvs[NC_000007.14:g.55181220del-expected2].yaml
+++ b/tests/extras/cassettes/test_hgvs[NC_000007.14:g.55181220del-expected2].yaml
@@ -9,7 +9,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ.F-LrLMe1SRpfUZHkQmvkVKFEGaoDeHul?start=55181219&end=55181220
   response:
@@ -23,7 +23,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:18 GMT
+      - Mon, 11 Mar 2024 21:21:23 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -39,7 +39,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ.F-LrLMe1SRpfUZHkQmvkVKFEGaoDeHul?start=55181218&end=55181219
   response:
@@ -53,7 +53,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:18 GMT
+      - Mon, 11 Mar 2024 21:21:23 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -69,7 +69,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ.F-LrLMe1SRpfUZHkQmvkVKFEGaoDeHul?start=55181220&end=55181221
   response:
@@ -83,7 +83,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:18 GMT
+      - Mon, 11 Mar 2024 21:21:23 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -99,7 +99,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ.F-LrLMe1SRpfUZHkQmvkVKFEGaoDeHul?start=55181219&end=55181219
   response:
@@ -113,7 +113,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:18 GMT
+      - Mon, 11 Mar 2024 21:21:23 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -129,7 +129,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ.F-LrLMe1SRpfUZHkQmvkVKFEGaoDeHul?start=55181220&end=55181220
   response:
@@ -143,7 +143,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:18 GMT
+      - Mon, 11 Mar 2024 21:21:23 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -159,7 +159,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000007.14&rettype=fasta&seq_start=55181220&seq_stop=55181220&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -183,20 +183,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:18 GMT
+      - Mon, 11 Mar 2024 21:21:23 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 322CF705C067C1A500004E8953DC8714.1.1.m_5
+      - 322CFCD26EC09885000045491929D908.1.1.m_5
       NCBI-SID:
-      - F908C0590198759C_1297SID
+      - CC70304937911EDE_9EBESID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=F908C0590198759C_1297SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:18 GMT
+      - ncbi_sid=CC70304937911EDE_9EBESID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:23 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -224,7 +224,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000007.14&rettype=fasta&seq_start=55181220&seq_stop=55181240&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -249,20 +249,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:18 GMT
+      - Mon, 11 Mar 2024 21:21:24 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 322CF705C067C1A500003B8959035020.1.1.m_5
+      - 322CFCD26EC09885000059491D137F58.1.1.m_5
       NCBI-SID:
-      - 0FA55D02B01B7AFC_8F66SID
+      - 11F6059A8AEDFE53_CBBESID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=0FA55D02B01B7AFC_8F66SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:19 GMT
+      - ncbi_sid=11F6059A8AEDFE53_CBBESID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:24 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
diff --git a/tests/extras/cassettes/test_hgvs[NC_000007.14:g.55181230_55181231insGGCT-expected3].yaml b/tests/extras/cassettes/test_hgvs[NC_000007.14:g.55181230_55181231insGGCT-expected3].yaml
index 0974809..86e7d5a 100644
--- a/tests/extras/cassettes/test_hgvs[NC_000007.14:g.55181230_55181231insGGCT-expected3].yaml
+++ b/tests/extras/cassettes/test_hgvs[NC_000007.14:g.55181230_55181231insGGCT-expected3].yaml
@@ -9,7 +9,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ.F-LrLMe1SRpfUZHkQmvkVKFEGaoDeHul?start=55181230&end=55181230
   response:
@@ -23,7 +23,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:20 GMT
+      - Mon, 11 Mar 2024 21:21:25 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -39,7 +39,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ.F-LrLMe1SRpfUZHkQmvkVKFEGaoDeHul?start=55181229&end=55181230
   response:
@@ -53,7 +53,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:20 GMT
+      - Mon, 11 Mar 2024 21:21:25 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -69,7 +69,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ.F-LrLMe1SRpfUZHkQmvkVKFEGaoDeHul?start=55181230&end=55181231
   response:
@@ -83,7 +83,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:20 GMT
+      - Mon, 11 Mar 2024 21:21:25 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -99,7 +99,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000007.14&rettype=fasta&seq_start=55181231&seq_stop=55181231&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -123,20 +123,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:20 GMT
+      - Mon, 11 Mar 2024 21:21:25 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - D0BD5673E54A8BE5000063882725ADF6.1.1.m_5
+      - D0BD851AC14C189500002C313D4FD5D0.1.1.m_5
       NCBI-SID:
-      - F7C03B5CCF0884C3_8C08SID
+      - 71199B9F013A4D28_29E9SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=F7C03B5CCF0884C3_8C08SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:19 GMT
+      - ncbi_sid=71199B9F013A4D28_29E9SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:25 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -164,7 +164,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000007.14&rettype=fasta&seq_start=55181230&seq_stop=55181250&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -189,20 +189,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:20 GMT
+      - Mon, 11 Mar 2024 21:21:26 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 322CF705C067C1A500003C89622340FC.1.1.m_5
+      - D0BD851AC14C1895000028314069F8AE.1.1.m_5
       NCBI-SID:
-      - BD11D769E840C2B7_657ESID
+      - 452BF474A62AD4D4_8223SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=BD11D769E840C2B7_657ESID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:20 GMT
+      - ncbi_sid=452BF474A62AD4D4_8223SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:26 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -230,7 +230,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000007.14&rettype=fasta&seq_start=55181227&seq_stop=55181230&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -254,20 +254,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:20 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 322CF705C067C1A50000368965BD192F.1.1.m_5
+      - 322CFCD26EC09885000052492B99F28C.1.1.m_5
       NCBI-SID:
-      - BA7AA08372DBFA5B_13E4SID
+      - 3CBEA9D58E5CB1D2_9D51SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=BA7AA08372DBFA5B_13E4SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:21 GMT
+      - ncbi_sid=3CBEA9D58E5CB1D2_9D51SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:26 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
diff --git a/tests/extras/cassettes/test_hgvs[NC_000007.14:g.55181320A>T-expected1].yaml b/tests/extras/cassettes/test_hgvs[NC_000007.14:g.55181320A>T-expected1].yaml
index 93b305a..88d2888 100644
--- a/tests/extras/cassettes/test_hgvs[NC_000007.14:g.55181320A>T-expected1].yaml
+++ b/tests/extras/cassettes/test_hgvs[NC_000007.14:g.55181320A>T-expected1].yaml
@@ -9,7 +9,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/metadata/refseq:NC_000007.14
   response:
@@ -34,7 +34,7 @@ interactions:
       Content-Type:
       - application/json
       Date:
-      - Mon, 19 Feb 2024 07:31:17 GMT
+      - Mon, 11 Mar 2024 21:21:22 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -50,7 +50,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ.F-LrLMe1SRpfUZHkQmvkVKFEGaoDeHul?start=55181319&end=55181320
   response:
@@ -64,7 +64,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:17 GMT
+      - Mon, 11 Mar 2024 21:21:22 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -80,7 +80,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000007.14&rettype=fasta&seq_start=55181320&seq_stop=55181320&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -104,20 +104,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:16 GMT
+      - Mon, 11 Mar 2024 21:21:22 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 322CF705C067C1A50000628949718316.1.1.m_5
+      - D0BD851AC14C1895000025312F867227.1.1.m_5
       NCBI-SID:
-      - 2F921A653A749DFD_6EE3SID
+      - FDDE2744782CFB95_7232SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=2F921A653A749DFD_6EE3SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:17 GMT
+      - ncbi_sid=FDDE2744782CFB95_7232SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:22 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -145,7 +145,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000007.14&rettype=fasta&seq_start=55181320&seq_stop=55181340&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -170,20 +170,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:17 GMT
+      - Mon, 11 Mar 2024 21:21:22 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 322CF705C067C1A5000062894EE9424B.1.1.m_5
+      - 939BB8C393EB3495000051352B0274C2.1.1.m_5
       NCBI-SID:
-      - 70A997EB67A84453_801ESID
+      - BD57D6E9DECB71A1_68D7SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=70A997EB67A84453_801ESID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:18 GMT
+      - ncbi_sid=BD57D6E9DECB71A1_68D7SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:23 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
diff --git a/tests/extras/cassettes/test_hgvs[NC_000013.11:g.32316467dup-expected5].yaml b/tests/extras/cassettes/test_hgvs[NC_000013.11:g.32316467dup-expected5].yaml
index 4be419e..b6ff17d 100644
--- a/tests/extras/cassettes/test_hgvs[NC_000013.11:g.32316467dup-expected5].yaml
+++ b/tests/extras/cassettes/test_hgvs[NC_000013.11:g.32316467dup-expected5].yaml
@@ -9,7 +9,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/NC_000013.11?start=32316466&end=32316467
   response:
@@ -23,7 +23,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:24 GMT
+      - Mon, 11 Mar 2024 21:21:31 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -39,7 +39,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32316466&end=32316467
   response:
@@ -53,7 +53,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:24 GMT
+      - Mon, 11 Mar 2024 21:21:31 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -69,7 +69,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32316467&end=32316467
   response:
@@ -83,7 +83,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:24 GMT
+      - Mon, 11 Mar 2024 21:21:31 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -99,7 +99,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32316465&end=32316466
   response:
@@ -113,7 +113,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:24 GMT
+      - Mon, 11 Mar 2024 21:21:31 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -129,7 +129,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32316467&end=32316468
   response:
@@ -143,7 +143,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:24 GMT
+      - Mon, 11 Mar 2024 21:21:31 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -159,7 +159,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000013.11&rettype=fasta&seq_start=32316467&seq_stop=32316467&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -183,20 +183,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:24 GMT
+      - Mon, 11 Mar 2024 21:21:31 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - D0BD5673E54A8BE50000428839BFCD43.1.1.m_5
+      - 322CFCD26EC0988500003C494447D8A5.1.1.m_5
       NCBI-SID:
-      - 67AAAD8049161044_5118SID
+      - 6B966A414785074D_5D23SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=67AAAD8049161044_5118SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:24 GMT
+      - ncbi_sid=6B966A414785074D_5D23SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:31 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -224,7 +224,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000013.11&rettype=fasta&seq_start=32316467&seq_stop=32316487&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -249,20 +249,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:24 GMT
+      - Mon, 11 Mar 2024 21:21:31 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - D0BD5673E54A8BE500002E883BE24A8B.1.1.m_5
+      - D0BD851AC14C189500003231556FB088.1.1.m_5
       NCBI-SID:
-      - 494214AB6C2024F6_B661SID
+      - 871F39FE5D993665_56C5SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=494214AB6C2024F6_B661SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:25 GMT
+      - ncbi_sid=871F39FE5D993665_56C5SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:32 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
diff --git a/tests/extras/cassettes/test_hgvs[NC_000013.11:g.32331093_32331094dup-expected4].yaml b/tests/extras/cassettes/test_hgvs[NC_000013.11:g.32331093_32331094dup-expected4].yaml
index 2ceb71e..97105a8 100644
--- a/tests/extras/cassettes/test_hgvs[NC_000013.11:g.32331093_32331094dup-expected4].yaml
+++ b/tests/extras/cassettes/test_hgvs[NC_000013.11:g.32331093_32331094dup-expected4].yaml
@@ -9,7 +9,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/NC_000013.11?start=32331092&end=32331094
   response:
@@ -23,7 +23,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:21 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -39,7 +39,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331092&end=32331094
   response:
@@ -53,7 +53,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:21 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -69,7 +69,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331094&end=32331094
   response:
@@ -83,7 +83,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:21 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -99,7 +99,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331093&end=32331094
   response:
@@ -113,7 +113,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:21 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -129,7 +129,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331092&end=32331093
   response:
@@ -143,7 +143,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:21 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -159,7 +159,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331091&end=32331092
   response:
@@ -173,7 +173,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -189,7 +189,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331090&end=32331091
   response:
@@ -203,7 +203,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -219,7 +219,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331089&end=32331090
   response:
@@ -233,7 +233,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -249,7 +249,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331088&end=32331089
   response:
@@ -263,7 +263,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -279,7 +279,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331087&end=32331088
   response:
@@ -293,7 +293,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -309,7 +309,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331086&end=32331087
   response:
@@ -323,7 +323,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -339,7 +339,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331085&end=32331086
   response:
@@ -353,7 +353,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -369,7 +369,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331084&end=32331085
   response:
@@ -383,7 +383,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -399,7 +399,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331083&end=32331084
   response:
@@ -413,7 +413,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -429,7 +429,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331082&end=32331083
   response:
@@ -443,7 +443,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -459,7 +459,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331081&end=32331082
   response:
@@ -473,7 +473,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -489,7 +489,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331094&end=32331095
   response:
@@ -503,7 +503,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -519,7 +519,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ._0wi-qoDrvram155UmcSC-zA5ZK4fpLT?start=32331082&end=32331094
   response:
@@ -533,7 +533,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -549,7 +549,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000013.11&rettype=fasta&seq_start=32331083&seq_stop=32331094&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -573,20 +573,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:21 GMT
+      - Mon, 11 Mar 2024 21:21:27 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 322CF705C067C1A500005E896ACACF1F.1.1.m_5
+      - D0BD851AC14C18950000393147BE4CE2.1.1.m_5
       NCBI-SID:
-      - 97ACF1D2D5A114F9_1396SID
+      - 5853A8146278684D_2189SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=97ACF1D2D5A114F9_1396SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:21 GMT
+      - ncbi_sid=5853A8146278684D_2189SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:28 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -594,7 +594,7 @@ interactions:
       X-RateLimit-Limit:
       - '3'
       X-RateLimit-Remaining:
-      - '1'
+      - '2'
       X-UA-Compatible:
       - IE=Edge
       X-XSS-Protection:
@@ -614,7 +614,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000013.11&rettype=fasta&seq_start=32331094&seq_stop=32331094&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -638,20 +638,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:22 GMT
+      - Mon, 11 Mar 2024 21:21:28 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - D0BD5673E54A8BE500004D88316ED359.1.1.m_5
+      - D0BD851AC14C18950000413149C0245C.1.1.m_5
       NCBI-SID:
-      - 860499C848FAF975_EF3FSID
+      - 02EFD13408F7159A_FFF2SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=860499C848FAF975_EF3FSID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:22 GMT
+      - ncbi_sid=02EFD13408F7159A_FFF2SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:28 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -679,7 +679,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000013.11&rettype=fasta&seq_start=32331083&seq_stop=32331114&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -704,20 +704,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:23 GMT
+      - Mon, 11 Mar 2024 21:21:29 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 322CF705C067C1A50000558971255303.1.1.m_5
+      - 322CFCD26EC09885000058493B468457.1.1.m_5
       NCBI-SID:
-      - 675FB4D79FE04D06_FE55SID
+      - 139990C564E81E74_BE4FSID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=675FB4D79FE04D06_FE55SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:23 GMT
+      - ncbi_sid=139990C564E81E74_BE4FSID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:29 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -745,7 +745,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000013.11&rettype=fasta&seq_start=32331093&seq_stop=32331094&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -769,20 +769,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:23 GMT
+      - Mon, 11 Mar 2024 21:21:30 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 322CF705C067C1A500005A8973EEEAC9.1.1.m_5
+      - 322CFCD26EC098850000354940E77BC7.1.1.m_5
       NCBI-SID:
-      - 77ED135DEA0F9216_C267SID
+      - CD04062346A2F11F_DF44SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=77ED135DEA0F9216_C267SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:23 GMT
+      - ncbi_sid=CD04062346A2F11F_DF44SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:30 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
diff --git a/tests/extras/cassettes/test_hgvs[NC_000013.11:g.32936732=-expected0].yaml b/tests/extras/cassettes/test_hgvs[NC_000013.11:g.32936732=-expected0].yaml
index 3676030..dc0baf8 100644
--- a/tests/extras/cassettes/test_hgvs[NC_000013.11:g.32936732=-expected0].yaml
+++ b/tests/extras/cassettes/test_hgvs[NC_000013.11:g.32936732=-expected0].yaml
@@ -9,7 +9,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/NC_000013.11?start=32936731&end=32936732
   response:
@@ -23,7 +23,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:14 GMT
+      - Mon, 11 Mar 2024 21:21:17 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -39,7 +39,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NC_000013.11&rettype=fasta&seq_start=32936732&seq_stop=32936732&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -63,20 +63,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:16 GMT
+      - Mon, 11 Mar 2024 21:21:21 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 322CF705C067C1A50000158944465C93.1.1.m_5
+      - 939BB8C393EB349500002A352803F722.1.1.m_5
       NCBI-SID:
-      - 04E0C48AA9C209F7_3DDESID
+      - 639F2F2ECDBC5B06_3AC1SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=04E0C48AA9C209F7_3DDESID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:16 GMT
+      - ncbi_sid=639F2F2ECDBC5B06_3AC1SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:21 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
diff --git a/tests/extras/cassettes/test_hgvs[NC_000019.10:g.289464_289465insCACA-expected8].yaml b/tests/extras/cassettes/test_hgvs[NC_000019.10:g.289464_289465insCACA-expected8].yaml
index f9ad64f..c37d8e4 100644
--- a/tests/extras/cassettes/test_hgvs[NC_000019.10:g.289464_289465insCACA-expected8].yaml
+++ b/tests/extras/cassettes/test_hgvs[NC_000019.10:g.289464_289465insCACA-expected8].yaml
@@ -1,88 +1,4 @@
 interactions:
-- request:
-    body: null
-    headers:
-      Accept:
-      - '*/*'
-      Accept-Encoding:
-      - gzip, deflate
-      Connection:
-      - keep-alive
-      User-Agent:
-      - python-requests/2.31.0
-    method: GET
-    uri: http://localhost:5000/seqrepo/1/metadata/refseq:NC_000019.10
-  response:
-    body:
-      string: "{\n  \"added\": \"2016-08-24T08:19:02Z\",\n  \"aliases\": [\n    \"Ensembl:19\",\n
-        \   \"ensembl:19\",\n    \"GRCh38:19\",\n    \"GRCh38:chr19\",\n    \"GRCh38.p1:19\",\n
-        \   \"GRCh38.p1:chr19\",\n    \"GRCh38.p10:19\",\n    \"GRCh38.p10:chr19\",\n
-        \   \"GRCh38.p11:19\",\n    \"GRCh38.p11:chr19\",\n    \"GRCh38.p12:19\",\n
-        \   \"GRCh38.p12:chr19\",\n    \"GRCh38.p2:19\",\n    \"GRCh38.p2:chr19\",\n
-        \   \"GRCh38.p3:19\",\n    \"GRCh38.p3:chr19\",\n    \"GRCh38.p4:19\",\n    \"GRCh38.p4:chr19\",\n
-        \   \"GRCh38.p5:19\",\n    \"GRCh38.p5:chr19\",\n    \"GRCh38.p6:19\",\n    \"GRCh38.p6:chr19\",\n
-        \   \"GRCh38.p7:19\",\n    \"GRCh38.p7:chr19\",\n    \"GRCh38.p8:19\",\n    \"GRCh38.p8:chr19\",\n
-        \   \"GRCh38.p9:19\",\n    \"GRCh38.p9:chr19\",\n    \"MD5:b0eba2c7bb5c953d1e06a508b5e487de\",\n
-        \   \"NCBI:NC_000019.10\",\n    \"refseq:NC_000019.10\",\n    \"SEGUID:AHxM5/L8jIX08UhBBkKXkiO5rhY\",\n
-        \   \"SHA1:007c4ce7f2fc8c85f4f148410642979223b9ae16\",\n    \"VMC:GS_IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl\",\n
-        \   \"sha512t24u:IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl\",\n    \"ga4gh:SQ.IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl\"\n
-        \ ],\n  \"alphabet\": \"ACGNT\",\n  \"length\": 58617616\n}\n"
-    headers:
-      Connection:
-      - close
-      Content-Length:
-      - '1035'
-      Content-Type:
-      - application/json
-      Date:
-      - Thu, 22 Feb 2024 17:17:55 GMT
-      Server:
-      - Werkzeug/2.2.2 Python/3.10.4
-    status:
-      code: 200
-      message: OK
-- request:
-    body: null
-    headers:
-      Accept:
-      - '*/*'
-      Accept-Encoding:
-      - gzip, deflate
-      Connection:
-      - keep-alive
-      User-Agent:
-      - python-requests/2.31.0
-    method: GET
-    uri: http://localhost:5000/seqrepo/1/metadata/ga4gh:SQ.IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl
-  response:
-    body:
-      string: "{\n  \"added\": \"2016-08-24T08:19:02Z\",\n  \"aliases\": [\n    \"Ensembl:19\",\n
-        \   \"ensembl:19\",\n    \"GRCh38:19\",\n    \"GRCh38:chr19\",\n    \"GRCh38.p1:19\",\n
-        \   \"GRCh38.p1:chr19\",\n    \"GRCh38.p10:19\",\n    \"GRCh38.p10:chr19\",\n
-        \   \"GRCh38.p11:19\",\n    \"GRCh38.p11:chr19\",\n    \"GRCh38.p12:19\",\n
-        \   \"GRCh38.p12:chr19\",\n    \"GRCh38.p2:19\",\n    \"GRCh38.p2:chr19\",\n
-        \   \"GRCh38.p3:19\",\n    \"GRCh38.p3:chr19\",\n    \"GRCh38.p4:19\",\n    \"GRCh38.p4:chr19\",\n
-        \   \"GRCh38.p5:19\",\n    \"GRCh38.p5:chr19\",\n    \"GRCh38.p6:19\",\n    \"GRCh38.p6:chr19\",\n
-        \   \"GRCh38.p7:19\",\n    \"GRCh38.p7:chr19\",\n    \"GRCh38.p8:19\",\n    \"GRCh38.p8:chr19\",\n
-        \   \"GRCh38.p9:19\",\n    \"GRCh38.p9:chr19\",\n    \"MD5:b0eba2c7bb5c953d1e06a508b5e487de\",\n
-        \   \"NCBI:NC_000019.10\",\n    \"refseq:NC_000019.10\",\n    \"SEGUID:AHxM5/L8jIX08UhBBkKXkiO5rhY\",\n
-        \   \"SHA1:007c4ce7f2fc8c85f4f148410642979223b9ae16\",\n    \"VMC:GS_IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl\",\n
-        \   \"sha512t24u:IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl\",\n    \"ga4gh:SQ.IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl\"\n
-        \ ],\n  \"alphabet\": \"ACGNT\",\n  \"length\": 58617616\n}\n"
-    headers:
-      Connection:
-      - close
-      Content-Length:
-      - '1035'
-      Content-Type:
-      - application/json
-      Date:
-      - Thu, 22 Feb 2024 17:17:56 GMT
-      Server:
-      - Werkzeug/2.2.2 Python/3.10.4
-    status:
-      code: 200
-      message: OK
 - request:
     body: null
     headers:
@@ -107,7 +23,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 17:17:56 GMT
+      - Mon, 11 Mar 2024 21:21:36 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -137,7 +53,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 17:17:56 GMT
+      - Mon, 11 Mar 2024 21:21:36 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -167,7 +83,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 17:17:56 GMT
+      - Mon, 11 Mar 2024 21:21:36 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -197,7 +113,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 17:17:56 GMT
+      - Mon, 11 Mar 2024 21:21:36 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -227,7 +143,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 17:17:56 GMT
+      - Mon, 11 Mar 2024 21:21:36 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -257,7 +173,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 17:17:56 GMT
+      - Mon, 11 Mar 2024 21:21:36 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -297,20 +213,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Thu, 22 Feb 2024 17:17:58 GMT
+      - Mon, 11 Mar 2024 21:21:36 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 939B247C4D7BE0F5000061C9999F8492.1.1.m_5
+      - D0BD851AC14C189500002531625B7B8D.1.1.m_5
       NCBI-SID:
-      - FB6A5F3ECEC87F93_5A24SID
+      - 68DE5F07019C10A3_9AE7SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=FB6A5F3ECEC87F93_5A24SID; domain=.nih.gov; path=/; expires=Sat, 22
-        Feb 2025 17:17:59 GMT
+      - ncbi_sid=68DE5F07019C10A3_9AE7SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:36 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -318,7 +234,7 @@ interactions:
       X-RateLimit-Limit:
       - '3'
       X-RateLimit-Remaining:
-      - '2'
+      - '1'
       X-UA-Compatible:
       - IE=Edge
       X-XSS-Protection:
@@ -362,20 +278,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Thu, 22 Feb 2024 17:17:59 GMT
+      - Mon, 11 Mar 2024 21:21:37 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 939B247C4D7BE0F500005AC9A142192D.1.1.m_5
+      - 322CFCD26EC09885000062496D69004E.1.1.m_5
       NCBI-SID:
-      - DD7E32BFC75A3A29_2025SID
+      - 83659F4CFCC93AC3_72C0SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=DD7E32BFC75A3A29_2025SID; domain=.nih.gov; path=/; expires=Sat, 22
-        Feb 2025 17:18:00 GMT
+      - ncbi_sid=83659F4CFCC93AC3_72C0SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:37 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -428,20 +344,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Thu, 22 Feb 2024 17:18:00 GMT
+      - Mon, 11 Mar 2024 21:21:38 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 939B247C4D7BE0F5000044C9A8CCAD75.1.1.m_5
+      - 322CFCD26EC098850000444971137956.1.1.m_5
       NCBI-SID:
-      - C12E8A945D8F2E08_3217SID
+      - C9FD64A84A1A879F_95E6SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=C12E8A945D8F2E08_3217SID; domain=.nih.gov; path=/; expires=Sat, 22
-        Feb 2025 17:18:00 GMT
+      - ncbi_sid=C9FD64A84A1A879F_95E6SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:38 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -493,20 +409,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Thu, 22 Feb 2024 17:18:01 GMT
+      - Mon, 11 Mar 2024 21:21:39 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 939B247C4D7BE0F5000041C9B0605DB1.1.1.m_5
+      - D0BD851AC14C189500004C316C883E95.1.1.m_5
       NCBI-SID:
-      - 55ABAA95384A40C3_7046SID
+      - 924F41447443575E_A170SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=55ABAA95384A40C3_7046SID; domain=.nih.gov; path=/; expires=Sat, 22
-        Feb 2025 17:18:01 GMT
+      - ncbi_sid=924F41447443575E_A170SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:39 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
diff --git a/tests/extras/cassettes/test_hgvs[NC_000019.10:g.289485_289500del-expected9].yaml b/tests/extras/cassettes/test_hgvs[NC_000019.10:g.289485_289500del-expected9].yaml
index e4d4808..d3800f3 100644
--- a/tests/extras/cassettes/test_hgvs[NC_000019.10:g.289485_289500del-expected9].yaml
+++ b/tests/extras/cassettes/test_hgvs[NC_000019.10:g.289485_289500del-expected9].yaml
@@ -23,7 +23,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 19:17:58 GMT
+      - Mon, 11 Mar 2024 21:21:39 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -53,7 +53,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 19:17:58 GMT
+      - Mon, 11 Mar 2024 21:21:39 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -83,7 +83,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 19:17:58 GMT
+      - Mon, 11 Mar 2024 21:21:39 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -113,7 +113,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 19:17:58 GMT
+      - Mon, 11 Mar 2024 21:21:39 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -143,7 +143,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 19:17:58 GMT
+      - Mon, 11 Mar 2024 21:21:40 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -173,7 +173,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 19:17:58 GMT
+      - Mon, 11 Mar 2024 21:21:40 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -203,7 +203,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 19:17:58 GMT
+      - Mon, 11 Mar 2024 21:21:40 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -233,7 +233,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 19:17:58 GMT
+      - Mon, 11 Mar 2024 21:21:40 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -263,7 +263,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 19:17:58 GMT
+      - Mon, 11 Mar 2024 21:21:40 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -293,7 +293,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Thu, 22 Feb 2024 19:17:58 GMT
+      - Mon, 11 Mar 2024 21:21:40 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -334,20 +334,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Thu, 22 Feb 2024 19:18:01 GMT
+      - Mon, 11 Mar 2024 21:21:41 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 322C2CA7550E811500003085136AA300.1.1.m_5
+      - 322CFCD26EC0988500002B497E0ACA63.1.1.m_5
       NCBI-SID:
-      - 09803CFF56A4005F_8568SID
+      - C65FEC3D560CC83B_F3C9SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=09803CFF56A4005F_8568SID; domain=.nih.gov; path=/; expires=Sat, 22
-        Feb 2025 19:18:01 GMT
+      - ncbi_sid=C65FEC3D560CC83B_F3C9SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:40 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -399,20 +399,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Thu, 22 Feb 2024 19:18:01 GMT
+      - Mon, 11 Mar 2024 21:21:41 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 939B247C4D7BE0F500003E4E6CC91B56.1.1.m_5
+      - 939BB8C393EB3495000056355729A26F.1.1.m_5
       NCBI-SID:
-      - 563574F7E99B22F2_181DSID
+      - 5D6F9CB304B2DCF0_8A5ASID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=563574F7E99B22F2_181DSID; domain=.nih.gov; path=/; expires=Sat, 22
-        Feb 2025 19:18:02 GMT
+      - ncbi_sid=5D6F9CB304B2DCF0_8A5ASID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:41 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -465,20 +465,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Thu, 22 Feb 2024 19:18:02 GMT
+      - Mon, 11 Mar 2024 21:21:42 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - D0BD2A910DB406F500004793D25D7785.1.1.m_5
+      - 322CFCD26EC0988500004E4985F04B1E.1.1.m_5
       NCBI-SID:
-      - FC0E607D3ECDAFBC_6C1BSID
+      - 63189E88C944FB73_BF25SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=FC0E607D3ECDAFBC_6C1BSID; domain=.nih.gov; path=/; expires=Sat, 22
-        Feb 2025 19:18:03 GMT
+      - ncbi_sid=63189E88C944FB73_BF25SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:43 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -486,7 +486,7 @@ interactions:
       X-RateLimit-Limit:
       - '3'
       X-RateLimit-Remaining:
-      - '1'
+      - '2'
       X-UA-Compatible:
       - IE=Edge
       X-XSS-Protection:
diff --git a/tests/extras/cassettes/test_hgvs[NM_001331029.1:n.872A>G-expected6].yaml b/tests/extras/cassettes/test_hgvs[NM_001331029.1:n.872A>G-expected6].yaml
index 39e1399..15b02ed 100644
--- a/tests/extras/cassettes/test_hgvs[NM_001331029.1:n.872A>G-expected6].yaml
+++ b/tests/extras/cassettes/test_hgvs[NM_001331029.1:n.872A>G-expected6].yaml
@@ -9,7 +9,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/metadata/refseq:NM_001331029.1
   response:
@@ -28,7 +28,7 @@ interactions:
       Content-Type:
       - application/json
       Date:
-      - Mon, 19 Feb 2024 07:31:25 GMT
+      - Mon, 11 Mar 2024 21:21:32 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -44,7 +44,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/metadata/ga4gh:SQ.MBIgVnoHFw34aFqNUVGM0zgjC3d-v8dK
   response:
@@ -63,7 +63,7 @@ interactions:
       Content-Type:
       - application/json
       Date:
-      - Mon, 19 Feb 2024 07:31:25 GMT
+      - Mon, 11 Mar 2024 21:21:32 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -79,7 +79,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ.MBIgVnoHFw34aFqNUVGM0zgjC3d-v8dK?start=871&end=872
   response:
@@ -93,7 +93,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:25 GMT
+      - Mon, 11 Mar 2024 21:21:32 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -109,7 +109,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NM_001331029.1&rettype=fasta&seq_start=872&seq_stop=872&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -134,20 +134,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:25 GMT
+      - Mon, 11 Mar 2024 21:21:32 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - D0BD5673E54A8BE5000024883E231355.1.1.m_5
+      - D0BD851AC14C189500001731573A5061.1.1.m_5
       NCBI-SID:
-      - 85126ED7D291E4C7_7864SID
+      - 431091A5E9CE2B97_52F7SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=85126ED7D291E4C7_7864SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:25 GMT
+      - ncbi_sid=431091A5E9CE2B97_52F7SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:32 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -175,7 +175,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NM_001331029.1&rettype=fasta&seq_start=872&seq_stop=892&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -200,20 +200,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:26 GMT
+      - Mon, 11 Mar 2024 21:21:33 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 939BB9A3D5B5DAC500006455EAD78D66.1.1.m_5
+      - 322CFCD26EC098850000314955D1A437.1.1.m_5
       NCBI-SID:
-      - E8F9AFDC05828C2C_DF29SID
+      - 8B7EB9245501CA74_F08DSID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=E8F9AFDC05828C2C_DF29SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:26 GMT
+      - ncbi_sid=8B7EB9245501CA74_F08DSID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:33 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
diff --git a/tests/extras/cassettes/test_hgvs[NM_181798.1:n.1263G>T-expected7].yaml b/tests/extras/cassettes/test_hgvs[NM_181798.1:n.1263G>T-expected7].yaml
index 1609c0f..8ee0461 100644
--- a/tests/extras/cassettes/test_hgvs[NM_181798.1:n.1263G>T-expected7].yaml
+++ b/tests/extras/cassettes/test_hgvs[NM_181798.1:n.1263G>T-expected7].yaml
@@ -9,7 +9,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/metadata/refseq:NM_181798.1
   response:
@@ -28,7 +28,7 @@ interactions:
       Content-Type:
       - application/json
       Date:
-      - Mon, 19 Feb 2024 07:31:27 GMT
+      - Mon, 11 Mar 2024 21:21:34 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -44,7 +44,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/metadata/ga4gh:SQ.KN07u-RFqd1dTyOWOG98HnOq87Nq-ZIg
   response:
@@ -63,7 +63,7 @@ interactions:
       Content-Type:
       - application/json
       Date:
-      - Mon, 19 Feb 2024 07:31:27 GMT
+      - Mon, 11 Mar 2024 21:21:34 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -79,7 +79,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ.KN07u-RFqd1dTyOWOG98HnOq87Nq-ZIg?start=1262&end=1263
   response:
@@ -93,7 +93,7 @@ interactions:
       Content-Type:
       - text/plain; charset=utf-8
       Date:
-      - Mon, 19 Feb 2024 07:31:27 GMT
+      - Mon, 11 Mar 2024 21:21:34 GMT
       Server:
       - Werkzeug/2.2.2 Python/3.10.4
     status:
@@ -109,7 +109,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NM_181798.1&rettype=fasta&seq_start=1263&seq_stop=1263&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -134,20 +134,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:26 GMT
+      - Mon, 11 Mar 2024 21:21:35 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 939BB9A3D5B5DAC500005655F17FDA5E.1.1.m_5
+      - 322CFCD26EC09885000061495C099120.1.1.m_5
       NCBI-SID:
-      - 77F193DD47E4E276_97B9SID
+      - 88C31025885ED05C_C4B9SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=77F193DD47E4E276_97B9SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:27 GMT
+      - ncbi_sid=88C31025885ED05C_C4B9SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:34 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
@@ -155,7 +155,7 @@ interactions:
       X-RateLimit-Limit:
       - '3'
       X-RateLimit-Remaining:
-      - '1'
+      - '2'
       X-UA-Compatible:
       - IE=Edge
       X-XSS-Protection:
@@ -175,7 +175,7 @@ interactions:
       Connection:
       - keep-alive
       User-Agent:
-      - python-requests/2.28.2
+      - python-requests/2.31.0
     method: GET
     uri: https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nucleotide&id=NM_181798.1&rettype=fasta&seq_start=1263&seq_stop=1268&tool=bioutils&email=biocommons-dev@googlegroups.com
   response:
@@ -200,20 +200,20 @@ interactions:
       Content-Type:
       - text/plain
       Date:
-      - Mon, 19 Feb 2024 07:31:27 GMT
+      - Mon, 11 Mar 2024 21:21:35 GMT
       Keep-Alive:
       - timeout=4, max=40
       NCBI-PHID:
-      - 939BB9A3D5B5DAC500006255F81B9091.1.1.m_5
+      - D0BD851AC14C1895000049315F660E1D.1.1.m_5
       NCBI-SID:
-      - F825C934D99704B6_D864SID
+      - 997B8D068DC9D474_33F1SID
       Referrer-Policy:
       - origin-when-cross-origin
       Server:
       - Finatra
       Set-Cookie:
-      - ncbi_sid=F825C934D99704B6_D864SID; domain=.nih.gov; path=/; expires=Wed, 19
-        Feb 2025 07:31:28 GMT
+      - ncbi_sid=997B8D068DC9D474_33F1SID; domain=.nih.gov; path=/; expires=Tue, 11
+        Mar 2025 21:21:35 GMT
       Strict-Transport-Security:
       - max-age=31536000; includeSubDomains; preload
       Transfer-Encoding:
diff --git a/tests/extras/cassettes/test_to_spdi.yaml b/tests/extras/cassettes/test_to_spdi.yaml
new file mode 100644
index 0000000..5adfca9
--- /dev/null
+++ b/tests/extras/cassettes/test_to_spdi.yaml
@@ -0,0 +1,74 @@
+interactions:
+- request:
+    body: null
+    headers:
+      Accept:
+      - '*/*'
+      Accept-Encoding:
+      - gzip, deflate
+      Connection:
+      - keep-alive
+      User-Agent:
+      - python-requests/2.31.0
+    method: GET
+    uri: http://localhost:5000/seqrepo/1/metadata/ga4gh:SQ.IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl
+  response:
+    body:
+      string: "{\n  \"added\": \"2016-08-24T08:19:02Z\",\n  \"aliases\": [\n    \"Ensembl:19\",\n
+        \   \"ensembl:19\",\n    \"GRCh38:19\",\n    \"GRCh38:chr19\",\n    \"GRCh38.p1:19\",\n
+        \   \"GRCh38.p1:chr19\",\n    \"GRCh38.p10:19\",\n    \"GRCh38.p10:chr19\",\n
+        \   \"GRCh38.p11:19\",\n    \"GRCh38.p11:chr19\",\n    \"GRCh38.p12:19\",\n
+        \   \"GRCh38.p12:chr19\",\n    \"GRCh38.p2:19\",\n    \"GRCh38.p2:chr19\",\n
+        \   \"GRCh38.p3:19\",\n    \"GRCh38.p3:chr19\",\n    \"GRCh38.p4:19\",\n    \"GRCh38.p4:chr19\",\n
+        \   \"GRCh38.p5:19\",\n    \"GRCh38.p5:chr19\",\n    \"GRCh38.p6:19\",\n    \"GRCh38.p6:chr19\",\n
+        \   \"GRCh38.p7:19\",\n    \"GRCh38.p7:chr19\",\n    \"GRCh38.p8:19\",\n    \"GRCh38.p8:chr19\",\n
+        \   \"GRCh38.p9:19\",\n    \"GRCh38.p9:chr19\",\n    \"MD5:b0eba2c7bb5c953d1e06a508b5e487de\",\n
+        \   \"NCBI:NC_000019.10\",\n    \"refseq:NC_000019.10\",\n    \"SEGUID:AHxM5/L8jIX08UhBBkKXkiO5rhY\",\n
+        \   \"SHA1:007c4ce7f2fc8c85f4f148410642979223b9ae16\",\n    \"VMC:GS_IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl\",\n
+        \   \"sha512t24u:IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl\",\n    \"ga4gh:SQ.IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl\"\n
+        \ ],\n  \"alphabet\": \"ACGNT\",\n  \"length\": 58617616\n}\n"
+    headers:
+      Connection:
+      - close
+      Content-Length:
+      - '1035'
+      Content-Type:
+      - application/json
+      Date:
+      - Thu, 22 Feb 2024 15:20:08 GMT
+      Server:
+      - Werkzeug/2.2.2 Python/3.10.4
+    status:
+      code: 200
+      message: OK
+- request:
+    body: null
+    headers:
+      Accept:
+      - '*/*'
+      Accept-Encoding:
+      - gzip, deflate
+      Connection:
+      - keep-alive
+      User-Agent:
+      - python-requests/2.31.0
+    method: GET
+    uri: http://localhost:5000/seqrepo/1/sequence/ga4gh:SQ.IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl?start=44908821&end=44908822
+  response:
+    body:
+      string: C
+    headers:
+      Connection:
+      - close
+      Content-Length:
+      - '1'
+      Content-Type:
+      - text/plain; charset=utf-8
+      Date:
+      - Thu, 22 Feb 2024 15:20:08 GMT
+      Server:
+      - Werkzeug/2.2.2 Python/3.10.4
+    status:
+      code: 200
+      message: OK
+version: 1
diff --git a/tests/extras/test_allele_translator.py b/tests/extras/test_allele_translator.py
index a7b93b8..9c1c67b 100644
--- a/tests/extras/test_allele_translator.py
+++ b/tests/extras/test_allele_translator.py
@@ -10,7 +10,6 @@ def tlr(rest_dataproxy):
         data_proxy=rest_dataproxy,
         default_assembly_name="GRCh38",
         identify=False,
-        normalize=False,
     )
 
 
@@ -185,19 +184,18 @@ duplication_output_normalized = {
 
 @pytest.mark.vcr
 def test_from_beacon(tlr):
-    tlr.normalize = False
-    assert tlr._from_beacon(snv_inputs["beacon"]).model_dump(exclude_none=True) == snv_output
+    assert tlr._from_beacon(snv_inputs["beacon"], do_normalize=False).model_dump(exclude_none=True) == snv_output
 
 
 @pytest.mark.vcr
 def test_from_gnomad(tlr):
-    tlr.normalize = False
-    assert tlr._from_gnomad(snv_inputs["gnomad"]).model_dump(exclude_none=True) == snv_output
-    assert tlr._from_gnomad(deletion_inputs["gnomad"]).model_dump(exclude_none=True) == gnomad_deletion_output
-    assert tlr._from_gnomad(insertion_inputs["gnomad"]).model_dump(exclude_none=True) == gnomad_insertion_output
-    assert tlr._from_gnomad(duplication_inputs["gnomad"]).model_dump(exclude_none=True) == duplication_output
+    do_normalize = False
+    assert tlr._from_gnomad(snv_inputs["gnomad"], do_normalize=do_normalize).model_dump(exclude_none=True) == snv_output
+    assert tlr._from_gnomad(deletion_inputs["gnomad"], do_normalize=do_normalize).model_dump(exclude_none=True) == gnomad_deletion_output
+    assert tlr._from_gnomad(insertion_inputs["gnomad"], do_normalize=do_normalize).model_dump(exclude_none=True) == gnomad_insertion_output
+    assert tlr._from_gnomad(duplication_inputs["gnomad"], do_normalize=do_normalize).model_dump(exclude_none=True) == duplication_output
 
-    tlr.normalize = True
+    # do_normalize defaults to true
     assert tlr._from_gnomad(snv_inputs["gnomad"]).model_dump(exclude_none=True) == snv_output
     assert tlr._from_gnomad(deletion_inputs["gnomad"]).model_dump(exclude_none=True) == deletion_output_normalized
     assert tlr._from_gnomad(insertion_inputs["gnomad"]).model_dump(exclude_none=True) == insertion_output
@@ -232,27 +230,27 @@ def test_from_gnomad(tlr):
 
 @pytest.mark.vcr
 def test_from_hgvs(tlr):
-    tlr.normalize = False
-    assert tlr._from_hgvs(snv_inputs["hgvs"]).model_dump(exclude_none=True) == snv_output
-    assert tlr._from_hgvs(deletion_inputs["hgvs"]).model_dump(exclude_none=True) == deletion_output
-    assert tlr._from_hgvs(insertion_inputs["hgvs"]).model_dump(exclude_none=True) == insertion_output
-    assert tlr._from_hgvs(duplication_inputs["hgvs"]).model_dump(exclude_none=True) == duplication_output
+    do_normalize = False
+    assert tlr._from_hgvs(snv_inputs["hgvs"], do_normalize=do_normalize).model_dump(exclude_none=True) == snv_output
+    assert tlr._from_hgvs(deletion_inputs["hgvs"], do_normalize=do_normalize).model_dump(exclude_none=True) == deletion_output
+    assert tlr._from_hgvs(insertion_inputs["hgvs"], do_normalize=do_normalize).model_dump(exclude_none=True) == insertion_output
+    assert tlr._from_hgvs(duplication_inputs["hgvs"], do_normalize=do_normalize).model_dump(exclude_none=True) == duplication_output
 
 
 @pytest.mark.vcr
 def test_from_spdi(tlr):
-    tlr.normalize = False
-    assert tlr._from_spdi(snv_inputs["spdi"]).model_dump(exclude_none=True) == snv_output
+    do_normalize = False
+    assert tlr._from_spdi(snv_inputs["spdi"], do_normalize=do_normalize).model_dump(exclude_none=True) == snv_output
     for spdi_del_expr in deletion_inputs["spdi"]:
-        assert tlr._from_spdi(spdi_del_expr).model_dump(exclude_none=True) == deletion_output, spdi_del_expr
+        assert tlr._from_spdi(spdi_del_expr, do_normalize=do_normalize).model_dump(exclude_none=True) == deletion_output, spdi_del_expr
     for spdi_ins_expr in insertion_inputs["spdi"]:
-        assert tlr._from_spdi(spdi_ins_expr).model_dump(exclude_none=True) == insertion_output, spdi_ins_expr
-    assert tlr._from_spdi(duplication_inputs["spdi"]).model_dump(exclude_none=True) == duplication_output
+        assert tlr._from_spdi(spdi_ins_expr, do_normalize=do_normalize).model_dump(exclude_none=True) == insertion_output, spdi_ins_expr
+    assert tlr._from_spdi(duplication_inputs["spdi"], do_normalize=do_normalize).model_dump(exclude_none=True) == duplication_output
 
 
 @pytest.mark.vcr
 def test_to_spdi(tlr):
-    tlr.normalize = True
+    # do_normalize defaults to true
     spdiexpr = snv_inputs["spdi"]
     allele = tlr.translate_from(spdiexpr, "spdi")
     to_spdi = tlr.translate_to(allele, "spdi")
@@ -369,33 +367,33 @@ hgvs_tests = (
       'type': 'Allele'}),
     ("NC_000019.10:g.289464_289465insCACA",
      {'digest': 'YFUR4oR_84b-rRFf0UzOjfI4eE5FTKAP',
-      'id': 'ga4gh:VA.YFUR4oR_84b-rRFf0UzOjfI4eE5FTKAP', 
-      'type': 'Allele', 
-      'location': {'digest': 'L145KFLJeJ334YnOVm59pPlbdqfHhgXZ', 
-                   'end': 289466, 
-                   'id': 'ga4gh:SL.L145KFLJeJ334YnOVm59pPlbdqfHhgXZ', 
-                   'sequenceReference': {'refgetAccession': 'SQ.IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl', 
-                                         'type': 'SequenceReference'}, 
-                   'start': 289464, 
-                   'type': 'SequenceLocation'}, 
-        'state': {'length': 6, 
-                  'repeatSubunitLength': 2, 
-                  'sequence': 'CACACA', 
+      'id': 'ga4gh:VA.YFUR4oR_84b-rRFf0UzOjfI4eE5FTKAP',
+      'type': 'Allele',
+      'location': {'digest': 'L145KFLJeJ334YnOVm59pPlbdqfHhgXZ',
+                   'end': 289466,
+                   'id': 'ga4gh:SL.L145KFLJeJ334YnOVm59pPlbdqfHhgXZ',
+                   'sequenceReference': {'refgetAccession': 'SQ.IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl',
+                                         'type': 'SequenceReference'},
+                   'start': 289464,
+                   'type': 'SequenceLocation'},
+        'state': {'length': 6,
+                  'repeatSubunitLength': 2,
+                  'sequence': 'CACACA',
                   'type': 'ReferenceLengthExpression'}}),
     ("NC_000019.10:g.289485_289500del",
      {'digest': 'Djc_SwVDFunsArqwUM00PciVaF70VTcU',
-      'id': 'ga4gh:VA.Djc_SwVDFunsArqwUM00PciVaF70VTcU', 
-      'type': 'Allele', 
-      'location': {'digest': 'WTE7jyihK4qvRRzEqM7u5nSD4iS2k3xp', 
-                   'end': 289501, 
-                   'id': 'ga4gh:SL.WTE7jyihK4qvRRzEqM7u5nSD4iS2k3xp', 
-                   'sequenceReference': {'refgetAccession': 'SQ.IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl', 
-                                         'type': 'SequenceReference'}, 
-                   'start': 289480, 
-                   'type': 'SequenceLocation'}, 
-        'state': {'length': 5, 
-                  'repeatSubunitLength': 16, 
-                  'sequence': 'CGAGG', 
+      'id': 'ga4gh:VA.Djc_SwVDFunsArqwUM00PciVaF70VTcU',
+      'type': 'Allele',
+      'location': {'digest': 'WTE7jyihK4qvRRzEqM7u5nSD4iS2k3xp',
+                   'end': 289501,
+                   'id': 'ga4gh:SL.WTE7jyihK4qvRRzEqM7u5nSD4iS2k3xp',
+                   'sequenceReference': {'refgetAccession': 'SQ.IIB53T8CNeJJdUqzn9V_JnRtQadwWCbl',
+                                         'type': 'SequenceReference'},
+                   'start': 289480,
+                   'type': 'SequenceLocation'},
+        'state': {'length': 5,
+                  'repeatSubunitLength': 16,
+                  'sequence': 'CGAGG',
                   'type': 'ReferenceLengthExpression'}}),
 )
 
@@ -408,7 +406,7 @@ hgvs_tests_to_hgvs_map = {
 @pytest.mark.parametrize("hgvsexpr,expected", hgvs_tests)
 @pytest.mark.vcr
 def test_hgvs(tlr, hgvsexpr, expected):
-    tlr.normalize = True
+    # do_normalize defaults to true
     tlr.identify = True
     allele = tlr.translate_from(hgvsexpr, "hgvs")
     assert allele.model_dump(exclude_none=True) == expected
@@ -420,7 +418,7 @@ def test_hgvs(tlr, hgvsexpr, expected):
 
 @pytest.mark.vcr
 def test_rle_seq_limit(tlr):
-    tlr.normalize = True
+    # do_normalize defaults to true
     tlr.identify = True
 
     a_dict = {
diff --git a/tests/extras/test_cnv_translator.py b/tests/extras/test_cnv_translator.py
index 4793058..edb553d 100644
--- a/tests/extras/test_cnv_translator.py
+++ b/tests/extras/test_cnv_translator.py
@@ -10,7 +10,6 @@ def tlr(rest_dataproxy):
         data_proxy=rest_dataproxy,
         default_assembly_name="GRCh38",
         identify=True,
-        normalize=False,
     )