Skip to content

Commit 1addfa3

Browse files
author
Alan Christie
committed
feat: Adds get_job_from_key
1 parent 1e0731f commit 1addfa3

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

decoder/decoder.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,25 @@
4747

4848
_GITHUB_REF_RE: Pattern[str] = re.compile(r"/([^/]+)/data-manager/")
4949

50+
_JOB_KEY_DELIMITER: str = "|"
51+
5052

5153
class TextEncoding(enum.Enum):
5254
"""A general text encoding format, used initially for Job text fields."""
5355

5456
JINJA2_3_0 = 1 # Encoding that complies with Jinja2 v3.0.x
5557

5658

57-
def get_job_key(collection: str, job: str) -> str:
59+
def get_job_key(*, collection: str, job: str) -> str:
5860
"""Returns the job Key, a string formed from "<collection>|<job>."""
59-
return f"{collection}|{job}"
61+
return f"{collection}{_JOB_KEY_DELIMITER}{job}"
62+
63+
64+
def get_job_from_key(*, key: str) -> Tuple[str, str]:
65+
"""Returns the job Key "<collection>" and "<job>"."""
66+
parts = key.split(_JOB_KEY_DELIMITER)
67+
assert len(parts) == 2
68+
return parts[0], parts[1]
6069

6170

6271
def validate_manifest_schema(manifest: Dict[str, Any]) -> Optional[str]:
@@ -315,7 +324,7 @@ def get_jobs_replaced(job_definition: Dict[str, Any]) -> Optional[List[str]]:
315324
for replaces in replaces_list:
316325
r_collection: str = replaces["collection"]
317326
r_job: str = replaces["job"]
318-
replaced.add(get_job_key(r_collection, r_job))
327+
replaced.add(get_job_key(collection=r_collection, job=r_job))
319328
return list(replaced)
320329

321330

tests/test_decoder.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,30 @@
88
from decoder import decoder
99

1010

11+
def test_get_job_key():
12+
# Arrange
13+
j_collection: str = "c-1"
14+
j_job: str = "j-1"
15+
16+
# Act
17+
key = decoder.get_job_key(collection=j_collection, job=j_job)
18+
19+
# Assert
20+
assert key == "c-1|j-1"
21+
22+
23+
def test_get_job_from_key():
24+
# Arrange
25+
j_key: str = "c-1|j-1"
26+
27+
# Act
28+
j_collection, j_job = decoder.get_job_from_key(key=j_key)
29+
30+
# Assert
31+
assert j_collection == "c-1"
32+
assert j_job == "j-1"
33+
34+
1135
def test_jinja2_3_0_decode():
1236
# Arrange
1337
text: str = "foo={{ foo }}, bar={{ bar }}, baz={{ baz }}"

0 commit comments

Comments
 (0)