Skip to content

Commit 0e6782f

Browse files
authored
Merge pull request #372 from EasyPost/SHPE-483_batch_trackers
feat: add retrieve_batch tracker function
2 parents 71f1de9 + a2ba892 commit 0e6782f

File tree

4 files changed

+205
-0
lines changed

4 files changed

+205
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## Next Release
44

55
- Adds `UspsShipAccount` support to the create carrier method
6+
- Adds `tracker.retrieve_batch` function
67

78
## v10.1.0 (2025-06-18)
89

easypost/services/tracker_service.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@
44
)
55

66
from easypost.constant import _FILTERS_KEY
7+
from easypost.easypost_object import convert_to_easypost_object
78
from easypost.models import Tracker
9+
from easypost.requestor import (
10+
RequestMethod,
11+
Requestor,
12+
)
813
from easypost.services.base_service import BaseService
914

1015

@@ -31,6 +36,14 @@ def all(self, **params) -> dict[str, Any]:
3136

3237
return self._all_resources(self._model_class, filters, **params)
3338

39+
def retrieve_batch(self, **params) -> Tracker:
40+
"""Retrieve a batch of Trackers."""
41+
url = "/trackers/batch"
42+
43+
response = Requestor(self._client).request(method=RequestMethod.POST, url=url, params=params)
44+
45+
return convert_to_easypost_object(response=response)
46+
3447
def retrieve(self, id: str) -> Tracker:
3548
"""Retrieve a Tracker."""
3649
return self._retrieve_resource(self._model_class, id)

tests/cassettes/test_tracker_retrieve_batch.yaml

Lines changed: 180 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/test_tracker.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,17 @@ def test_tracker_all(page_size, test_client):
3838
assert all(isinstance(tracker, Tracker) for tracker in trackers_array)
3939

4040

41+
@pytest.mark.vcr()
42+
def test_tracker_retrieve_batch(page_size, test_client):
43+
tracker = test_client.tracker.create(tracking_code="EZ1000000001")
44+
45+
trackers = test_client.tracker.retrieve_batch(tracking_codes=[tracker.tracking_code])
46+
47+
trackers_array = trackers["trackers"]
48+
49+
assert all(isinstance(tracker, Tracker) for tracker in trackers_array)
50+
51+
4152
@pytest.mark.vcr()
4253
def test_tracker_get_next_page(page_size, test_client):
4354
try:

0 commit comments

Comments
 (0)