Skip to content

Commit 8a20c02

Browse files
committed
Release v1.7.4
1 parent e23c22d commit 8a20c02

5 files changed

Lines changed: 21 additions & 18 deletions

File tree

RELEASE_NOTES_v1.7.4.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
## What's Changed
2+
3+
- Relax HA API FlyBase ID rewriting so `resolve_entity` and `resolve_combination` fall back to the canonical FlyBase ID when VFB term info cannot provide a preferred symbol or label.
4+
- Keep the preferred VFB term name rewrite path when term info is available.
5+
- Update HA API validation tests to cover the canonical-ID fallback behavior.

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
here = path.abspath(path.dirname(__file__))
55

6-
__version__ = "1.7.3"
6+
__version__ = "1.7.4"
77

88
# Get the long description from the README file
99
with open(path.join(here, 'README.md')) as f:

src/test/test_ha_api_validation.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def get_term_info(self, query, preview=False):
3939
assert query == "GMR37H08-ZpGAL4DBD in attP2"
4040

4141

42-
def test_rewrite_resolve_entity_query_returns_none_when_no_term_info_name(monkeypatch):
42+
def test_rewrite_resolve_entity_query_falls_back_to_canonical_id(monkeypatch):
4343
class DummyVfb:
4444
def get_term_info(self, query, preview=False):
4545
assert query == "FBst0007144"
@@ -50,41 +50,43 @@ def get_term_info(self, query, preview=False):
5050

5151
query = ha_api._rewrite_resolve_entity_query("fbst0007144")
5252

53-
assert query is None
53+
assert query == "FBst0007144"
5454

5555

56-
def test_run_resolve_entity_returns_not_found_when_id_cannot_be_rewritten(monkeypatch):
56+
def test_run_resolve_entity_falls_back_to_canonical_id_when_id_cannot_be_rewritten(monkeypatch):
5757
class DummyVfb:
5858
def get_term_info(self, query, preview=False):
5959
assert query == "FBst0007144"
6060
assert preview is False
6161
return None
6262

6363
def resolve_entity(self, query):
64-
raise AssertionError("Chado resolver should not receive raw IDs")
64+
assert query == "FBst0007144"
65+
return {"match_type": "EXACT", "results": [{"uniquename": "FBst0007144"}]}
6566

6667
monkeypatch.setattr(ha_api, "_vfb", DummyVfb(), raising=False)
6768

6869
result = ha_api._run_resolve_entity("fbst0007144")
6970

70-
assert result == {"match_type": "NOT_FOUND", "results": []}
71+
assert result == {"match_type": "EXACT", "results": [{"uniquename": "FBst0007144"}]}
7172

7273

73-
def test_run_resolve_combination_returns_not_found_when_id_cannot_be_rewritten(monkeypatch):
74+
def test_run_resolve_combination_falls_back_to_canonical_id_when_id_cannot_be_rewritten(monkeypatch):
7475
class DummyVfb:
7576
def get_term_info(self, query, preview=False):
7677
assert query == "FBco0000052"
7778
assert preview is False
7879
return None
7980

8081
def resolve_combination(self, query):
81-
raise AssertionError("Chado resolver should not receive raw IDs")
82+
assert query == "FBco0000052"
83+
return {"match_type": "EXACT", "results": [{"uniquename": "FBco0000052"}]}
8284

8385
monkeypatch.setattr(ha_api, "_vfb", DummyVfb(), raising=False)
8486

8587
result = ha_api._run_resolve_combination("fbco0000052")
8688

87-
assert result == {"match_type": "NOT_FOUND", "results": []}
89+
assert result == {"match_type": "EXACT", "results": [{"uniquename": "FBco0000052"}]}
8890

8991

9092
def test_parse_resolver_query_requires_query():

src/vfbquery/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,4 @@ def clear_solr_cache(query_type: str, term_id: str) -> bool:
9898
__solr_caching_available__ = False
9999

100100
# Version information
101-
__version__ = "1.7.3"
101+
__version__ = "1.7.4"

src/vfbquery/ha_api.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -327,8 +327,6 @@ def _run_query(short_form, func_name):
327327
def _run_resolve_entity(name_or_id):
328328
"""Execute resolve_entity in a worker process."""
329329
query = _rewrite_resolve_entity_query(name_or_id)
330-
if query is None:
331-
return {"match_type": "NOT_FOUND", "results": []}
332330
return _vfb.resolve_entity(query)
333331

334332

@@ -340,8 +338,6 @@ def _run_find_stocks(feature_id, collection_filter):
340338
def _run_resolve_combination(name_or_id):
341339
"""Execute resolve_combination in a worker process."""
342340
query = _rewrite_resolve_combination_query(name_or_id)
343-
if query is None:
344-
return {"match_type": "NOT_FOUND", "results": []}
345341
return _vfb.resolve_combination(query)
346342

347343

@@ -428,25 +424,25 @@ def _preferred_term_info_query(term_info):
428424

429425

430426
def _rewrite_resolve_entity_query(name_or_id):
431-
"""Rewrite a FlyBase feature ID to a preferred VFB term name."""
427+
"""Rewrite a FlyBase feature ID to a preferred VFB term name when available."""
432428
query = _parse_resolver_query(name_or_id)
433429
if not _FLYBASE_FEATURE_ID_RE.match(query):
434430
return query
435431

436432
canonical_id = _canonicalize_flybase_feature_id(query)
437433
term_info = _vfb.get_term_info(canonical_id, preview=False)
438-
return _preferred_term_info_query(term_info)
434+
return _preferred_term_info_query(term_info) or canonical_id
439435

440436

441437
def _rewrite_resolve_combination_query(name_or_id):
442-
"""Rewrite an FBco ID to a preferred VFB term name."""
438+
"""Rewrite an FBco ID to a preferred VFB term name when available."""
443439
query = _parse_resolver_query(name_or_id)
444440
if not _FBCO_ID_RE.match(query):
445441
return query
446442

447443
canonical_id = _canonicalize_fbco_id(query)
448444
term_info = _vfb.get_term_info(canonical_id, preview=False)
449-
return _preferred_term_info_query(term_info)
445+
return _preferred_term_info_query(term_info) or canonical_id
450446

451447

452448
# ---------------------------------------------------------------------------

0 commit comments

Comments
 (0)