@classmethod
    def get_rates(cls, object_id, api_key=None, currency=None, **params):
        """
            Given a valid shipment object_id, all possible rates are calculated and returned.
        """
        if 'sync' in params and params['sync']:
            timeout = time.time() + rates_req_timeout
            while cls.retrieve(object_id).object_status in ("QUEUED", "WAITING") and time.time() < timeout:
                continue

        shipment_id = urllib.quote_plus(object_id)
        url = cls.class_url() + shipment_id + '/rates/'
        if currency:
            url = url + '' + urllib.quote_plus(currency)
        requestor = api_requestor.APIRequestor(api_key)
        response, content = requestor.request('get', url)
        return convert_to_shippo_object(response, content)
dataset/ETHPy150Open goshippo/shippo-python-client/shippo/resource.py/Shipment.get_rates/original