Skip to content

Commit d4cc480

Browse files
Merge pull request #10 from corneliusroemer/add-parent-function
Add `aliasor.parent(lineage)` method to get (compressed) parent lineage name
2 parents 21f30f2 + 147f8ce commit d4cc480

File tree

5 files changed

+27
-2
lines changed

5 files changed

+27
-2
lines changed

CHANGELOG

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# CHANGELOG
2+
3+
## 0.3.0 (2023-02-10)
4+
5+
- Add `aliasor.parent(lineage)` method to get (compressed) parent lineage name

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ aliasor.uncompress("XA") # 'XA'
2727
# Go from unaliased lineage to aliased lineage
2828
aliasor.compress("B.1.1.529.3.1") # 'BA.3.1'
2929

30+
# Find parent lineage
31+
aliasor.parent("BQ.1") # 'BE.1.1.1'
32+
3033
aliasor.partial_compress("B.1.1.529.3.1",up_to=1) # 'BA.3.1'
3134
aliasor.partial_compress("B.1.1.529.3.1.1.2",up_to=1) # 'BA.3.1.1.2'
3235

setup.cfg

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[metadata]
22
name = pango_aliasor
3-
version = 0.2.2
3+
version = 0.3.0
44
description = Pango lineage aliasing and dealiasing
55
long_description = file: README.md
66
long_description_content_type = text/markdown
@@ -15,6 +15,7 @@ classifiers =
1515
Programming Language :: Python :: 3.8
1616
Programming Language :: Python :: 3.9
1717
Programming Language :: Python :: 3.10
18+
Programming Language :: Python :: 3.11
1819
Bug Tracker = https://github.com/corneliusroemer/pango_aliasor/issues
1920
License = : OSI Approved :: MIT License
2021
Operating System = : OS Independent

src/pango_aliasor/aliasor.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ def uncompress(self, name):
4848
else:
4949
return unaliased + "." + ".".join(name_split[1:])
5050

51+
def parent(self, name):
52+
"""
53+
Returns parent lineage in aliased format or '' if at top level
54+
"""
55+
return self.compress(".".join(self.uncompress(name).split(".")[:-1]))
56+
5157
def partial_compress(self, name, up_to: int = 0, accepted_aliases: set = {}):
5258
"""
5359
aliasor.partial_compress("B.1.1.529.3.1",up_to=1) # 'BA.3.1'

tests/test_aliasor.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,14 @@ def test_partial_alias_combination():
8080
assert aliasor.partial_compress('B.1.617.2.3',up_to=1, accepted_aliases={"BA","AZ"}) == "AY.3"
8181
assert aliasor.partial_compress('B.1.1.529.2.75.1.2',up_to=3, accepted_aliases={"BA"}) == 'BL.2'
8282
assert aliasor.partial_compress('B.1.1.529.2.75.1.2',up_to=4, accepted_aliases={"BA"}) == 'BL.2'
83-
assert aliasor.partial_compress('B.1.1.529.2.75.1.2',up_to=1, accepted_aliases={"BA"}) == 'BA.2.75.1.2'
83+
assert aliasor.partial_compress('B.1.1.529.2.75.1.2',up_to=1, accepted_aliases={"BA"}) == 'BA.2.75.1.2'
84+
85+
def test_parent():
86+
aliasor = Aliasor()
87+
assert aliasor.parent('B.1.1.529.1') == 'B.1.1.529'
88+
assert aliasor.parent('BQ.1') == 'BE.1.1.1'
89+
assert aliasor.parent('XAA') == ''
90+
assert aliasor.parent('') == ''
91+
assert aliasor.parent('A') == ''
92+
assert aliasor.parent('B') == ''
93+
assert aliasor.parent('C.1') == 'B.1.1.1'

0 commit comments

Comments
 (0)