Skip to content

Commit da2802d

Browse files
Feature/safo6 NRL-1798 Update delete pointers usage hints (#1106)
1 parent 8581fcc commit da2802d

File tree

2 files changed

+18
-23
lines changed

2 files changed

+18
-23
lines changed

scripts/delete_pointers_by_id.py

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -263,36 +263,30 @@ def _batch_delete_pointers(
263263
def _delete_pointers_by_id(
264264
table_name: str,
265265
ods_code: str,
266-
pointers_to_delete: List[str] | None = None,
266+
pointers_to_delete: list[str] | None = None,
267267
pointers_file: str | None = None,
268268
) -> None:
269269
"""
270-
Delete pointers from DynamoDB table.
270+
Delete DynamoDB pointers by ID with ODS code validation.
271+
272+
REQUIRED: Provide either --pointers_to_delete OR --pointers_file (but not both)
271273
272274
Can accept pointers as:
273-
- list of strings: pointers_to_delete=["id1", "id2"]
274-
- JSON file: pointers_file=/path/to/pointers.json (array of objects with "id" field)
275-
- text file: pointers_file=/path/to/ids.txt (one id per line)
276-
277-
Parameters:
278-
- table_name: DynamoDB table name
279-
- ods_code: ODS code of the organisation that the pointers belong to
280-
- pointers_to_delete: list of pointer ids to delete
281-
- pointers_file: path to JSON file (array of objects with "id" field) or text file (one id per line)
282-
283-
Sample usage:
284-
- Delete by list of ids:
285-
python delete_pointers_by_id.py --table_name MyTable --ods_code ABC123 --pointers_to_delete '["ABC123-12345678910", "ABC123-109876543210"]'
286-
- Delete by JSON file:
287-
python delete_pointers_by_id.py --table_name MyTable --ods_code ABC123 --pointers_file /path/to/pointers.json
288-
- Delete by text file:
289-
python delete_pointers_by_id.py --table_name MyTable --ods_code ABC123 --pointers_file /path/to/ids.txt
275+
- list of strings: --pointers_to_delete '["ABC123-12345678910", "ABC123-109876543210"]'
276+
- JSON file: --pointers_file /path/to/pointers.json (array of objects with "id" field)
277+
- text file: --pointers_file /path/to/ids.txt (one id per line)
278+
279+
Args:
280+
table_name: DynamoDB table name
281+
ods_code: ODS code to validate pointer IDs against
282+
pointers_to_delete: List of pointer IDs as JSON string
283+
pointers_file: Path to file containing pointer IDs
290284
"""
291285
if pointers_to_delete is None and pointers_file is None:
292-
raise ValueError("Provide either pointers_to_delete or pointers_file")
286+
raise ValueError("Must provide either --pointers_to_delete or --pointers_file")
293287

294288
if pointers_to_delete is not None and pointers_file is not None:
295-
raise ValueError("Provide either pointers_to_delete or pointers_file, not both")
289+
raise ValueError("Cannot provide both --pointers_to_delete and --pointers_file")
296290

297291
if pointers_file:
298292
pointers_to_delete = _load_pointers_from_file(pointers_file)

scripts/tests/test_delete_pointers_by_id.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,14 +233,15 @@ def test_some_unprocessed(self, mock_dynamodb):
233233
class TestDeletePointersById:
234234
def test_missing_params(self):
235235
with pytest.raises(
236-
ValueError, match="Provide either pointers_to_delete or pointers_file"
236+
ValueError,
237+
match="Must provide either --pointers_to_delete or --pointers_file",
237238
):
238239
_delete_pointers_by_id("t", "G3H9E")
239240

240241
def test_both_params_provided(self):
241242
with pytest.raises(
242243
ValueError,
243-
match="Provide either pointers_to_delete or pointers_file, not both",
244+
match="Cannot provide both --pointers_to_delete and --pointers_file",
244245
):
245246
_delete_pointers_by_id(
246247
"t", "G3H9E", pointers_to_delete=["a"], pointers_file="./f"

0 commit comments

Comments
 (0)