From 90c269b3833dca4e7e6a52912c712717afb5b50b Mon Sep 17 00:00:00 2001 From: Justintime50 <39606064+Justintime50@users.noreply.github.com> Date: Wed, 2 Nov 2022 16:40:58 -0600 Subject: [PATCH 1/2] feat: adds library documentation --- .gitattributes | 5 + Makefile | 20 +- README.md | 3 + docs/easypost.html | 310 +++++++ docs/easypost/address.html | 492 ++++++++++ docs/easypost/batch.html | 583 ++++++++++++ docs/easypost/beta.html | 243 +++++ docs/easypost/beta/referral.html | 809 ++++++++++++++++ docs/easypost/billing.html | 530 +++++++++++ docs/easypost/brand.html | 295 ++++++ docs/easypost/carrier_account.html | 365 ++++++++ docs/easypost/constant.html | 239 +++++ docs/easypost/customs_info.html | 299 ++++++ docs/easypost/customs_item.html | 299 ++++++ docs/easypost/easypost_object.html | 1046 +++++++++++++++++++++ docs/easypost/endshipper.html | 434 +++++++++ docs/easypost/error.html | 375 ++++++++ docs/easypost/event.html | 331 +++++++ docs/easypost/insurance.html | 306 ++++++ docs/easypost/order.html | 431 +++++++++ docs/easypost/parcel.html | 299 ++++++ docs/easypost/pickup.html | 431 +++++++++ docs/easypost/pickup_rate.html | 295 ++++++ docs/easypost/postage_label.html | 295 ++++++ docs/easypost/rate.html | 295 ++++++ docs/easypost/referral.html | 796 ++++++++++++++++ docs/easypost/refund.html | 306 ++++++ docs/easypost/report.html | 390 ++++++++ docs/easypost/requestor.html | 1393 ++++++++++++++++++++++++++++ docs/easypost/resource.html | 922 ++++++++++++++++++ docs/easypost/scanform.html | 348 +++++++ docs/easypost/shipment.html | 906 ++++++++++++++++++ docs/easypost/tax_identifier.html | 295 ++++++ docs/easypost/tracker.html | 362 ++++++++ docs/easypost/user.html | 624 +++++++++++++ docs/easypost/util.html | 319 +++++++ docs/easypost/version.html | 241 +++++ docs/easypost/webhook.html | 487 ++++++++++ docs/index.html | 7 + docs/search.js | 46 + setup.py | 3 +- 41 files changed, 16466 insertions(+), 9 deletions(-) create mode 100644 docs/easypost.html create mode 100644 docs/easypost/address.html create mode 100644 docs/easypost/batch.html create mode 100644 docs/easypost/beta.html create mode 100644 docs/easypost/beta/referral.html create mode 100644 docs/easypost/billing.html create mode 100644 docs/easypost/brand.html create mode 100644 docs/easypost/carrier_account.html create mode 100644 docs/easypost/constant.html create mode 100644 docs/easypost/customs_info.html create mode 100644 docs/easypost/customs_item.html create mode 100644 docs/easypost/easypost_object.html create mode 100644 docs/easypost/endshipper.html create mode 100644 docs/easypost/error.html create mode 100644 docs/easypost/event.html create mode 100644 docs/easypost/insurance.html create mode 100644 docs/easypost/order.html create mode 100644 docs/easypost/parcel.html create mode 100644 docs/easypost/pickup.html create mode 100644 docs/easypost/pickup_rate.html create mode 100644 docs/easypost/postage_label.html create mode 100644 docs/easypost/rate.html create mode 100644 docs/easypost/referral.html create mode 100644 docs/easypost/refund.html create mode 100644 docs/easypost/report.html create mode 100644 docs/easypost/requestor.html create mode 100644 docs/easypost/resource.html create mode 100644 docs/easypost/scanform.html create mode 100644 docs/easypost/shipment.html create mode 100644 docs/easypost/tax_identifier.html create mode 100644 docs/easypost/tracker.html create mode 100644 docs/easypost/user.html create mode 100644 docs/easypost/util.html create mode 100644 docs/easypost/version.html create mode 100644 docs/easypost/webhook.html create mode 100644 docs/index.html create mode 100644 docs/search.js diff --git a/.gitattributes b/.gitattributes index f0bdf961..f6122fad 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,9 @@ * text=auto +# Cassettes tests/cassettes/* -diff tests/cassettes/* linguist-generated + +# Docs +docs/**/* -diff +docs/**/* linguist-generated diff --git a/Makefile b/Makefile index f4f53ce7..34f0783a 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,14 @@ TEST_DIR := tests help: @cat Makefile | grep '^## ' --color=never | cut -c4- | sed -e "`printf 's/ - /\t- /;'`" | column -s "`printf '\t'`" -t +## black - Runs the Black Python formatter against the project +black: + $(VIRTUAL_BIN)/black $(PROJECT_NAME)/ $(TEST_DIR)/ + +## black-check - Checks if the project is formatted correctly against the Black rules +black-check: + $(VIRTUAL_BIN)/black $(PROJECT_NAME)/ $(TEST_DIR)/ --check + ## build - Builds the project in preparation for release build: $(VIRTUAL_BIN)/python setup.py sdist bdist_wheel @@ -21,13 +29,9 @@ clean: coverage: $(VIRTUAL_BIN)/pytest --cov=$(PROJECT_NAME) --cov-branch --cov-report=html --cov-report=term-missing --cov-fail-under=87 -## black - Runs the Black Python formatter against the project -black: - $(VIRTUAL_BIN)/black $(PROJECT_NAME)/ $(TEST_DIR)/ - -## black-check - Checks if the project is formatted correctly against the Black rules -black-check: - $(VIRTUAL_BIN)/black $(PROJECT_NAME)/ $(TEST_DIR)/ --check +## docs - Generates docs for the library +docs: + $(VIRTUAL_BIN)/pdoc $(PROJECT_NAME) -o docs ## format - Runs all formatting tools against the project format: black isort @@ -75,4 +79,4 @@ scan: test: $(VIRTUAL_BIN)/pytest -.PHONY: help build clean coverage black black-check format format-check install isort isort-check lint mypy publish release scan test +.PHONY: help black black-check build clean coverage docs format format-check install isort isort-check lint mypy publish release scan test diff --git a/README.md b/README.md index 95f488e4..ba4a3496 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,9 @@ EASYPOST_TEST_API_KEY=123... EASYPOST_PROD_API_KEY=123... make coverage # Run security analysis make scan +# Generate library documentation +make docs + # Update submodules git submodule init git submodule update --remote diff --git a/docs/easypost.html b/docs/easypost.html new file mode 100644 index 00000000..513f8f95 --- /dev/null +++ b/docs/easypost.html @@ -0,0 +1,310 @@ + + + + + + + easypost API documentation + + + + + + + + + +
+
+

+easypost

+ + + + + + +
 1# flake8: noqa
+ 2import easypost.beta
+ 3from easypost.address import Address
+ 4from easypost.batch import Batch
+ 5from easypost.billing import Billing
+ 6from easypost.brand import Brand
+ 7from easypost.carrier_account import CarrierAccount
+ 8from easypost.customs_info import CustomsInfo
+ 9from easypost.customs_item import CustomsItem
+10from easypost.endshipper import EndShipper
+11from easypost.error import Error
+12from easypost.event import Event
+13from easypost.insurance import Insurance
+14from easypost.order import Order
+15from easypost.parcel import Parcel
+16from easypost.pickup import Pickup
+17from easypost.pickup_rate import PickupRate
+18from easypost.postage_label import PostageLabel
+19from easypost.rate import Rate
+20from easypost.referral import Referral
+21from easypost.refund import Refund
+22from easypost.report import Report
+23from easypost.scanform import ScanForm
+24from easypost.shipment import Shipment
+25from easypost.tax_identifier import TaxIdentifier
+26from easypost.tracker import Tracker
+27from easypost.user import User
+28from easypost.webhook import Webhook
+29
+30from .version import (
+31    VERSION,
+32    VERSION_INFO,
+33)
+34
+35
+36__author__ = "EasyPost <oss@easypost.com>"
+37__version__ = VERSION
+38version_info = VERSION_INFO
+39
+40# config
+41api_key = None
+42api_base = "https://api.easypost.com/v2"
+
+ + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/address.html b/docs/easypost/address.html new file mode 100644 index 00000000..964207f1 --- /dev/null +++ b/docs/easypost/address.html @@ -0,0 +1,492 @@ + + + + + + + easypost.address API documentation + + + + + + + + + +
+
+

+easypost.address

+ + + + + + +
 1from typing import (
+ 2    Any,
+ 3    Dict,
+ 4    Optional,
+ 5    Union,
+ 6)
+ 7
+ 8from easypost.easypost_object import convert_to_easypost_object
+ 9from easypost.requestor import (
+10    RequestMethod,
+11    Requestor,
+12)
+13from easypost.resource import AllResource
+14
+15
+16class Address(AllResource):
+17    @classmethod
+18    def create(
+19        cls,
+20        api_key: Optional[str] = None,
+21        verify: Optional[Union[Dict[str, Any], str, bool]] = None,
+22        verify_strict: Optional[Union[Dict[str, Any], str, bool]] = None,
+23        **params
+24    ) -> "Address":
+25        """Create an address."""
+26        requestor = Requestor(local_api_key=api_key)
+27        url = cls.class_url()
+28
+29        wrapped_params = {cls.snakecase_name(): params}  # type: Dict[str, Any]
+30        if verify:
+31            wrapped_params["verify"] = verify
+32        if verify_strict:
+33            wrapped_params["verify_strict"] = verify_strict
+34
+35        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+36        return convert_to_easypost_object(response=response, api_key=api_key)
+37
+38    @classmethod
+39    def create_and_verify(cls, api_key: Optional[str] = None, **params) -> "Address":
+40        """Create and verify an address."""
+41        requestor = Requestor(local_api_key=api_key)
+42        url = "%s/%s" % (cls.class_url(), "create_and_verify")
+43
+44        wrapped_params = {cls.snakecase_name(): params}
+45        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+46
+47        return convert_to_easypost_object(response=response["address"], api_key=api_key)
+48
+49    def verify(self) -> "Address":
+50        """Verify an address."""
+51        requestor = Requestor(local_api_key=self._api_key)
+52        url = "%s/%s" % (self.instance_url(), "verify")
+53        response, api_key = requestor.request(method=RequestMethod.GET, url=url)
+54
+55        return convert_to_easypost_object(response=response["address"], api_key=api_key)
+
+ + +
+
+ +
+ + class + Address(easypost.resource.AllResource): + + + +
+ +
17class Address(AllResource):
+18    @classmethod
+19    def create(
+20        cls,
+21        api_key: Optional[str] = None,
+22        verify: Optional[Union[Dict[str, Any], str, bool]] = None,
+23        verify_strict: Optional[Union[Dict[str, Any], str, bool]] = None,
+24        **params
+25    ) -> "Address":
+26        """Create an address."""
+27        requestor = Requestor(local_api_key=api_key)
+28        url = cls.class_url()
+29
+30        wrapped_params = {cls.snakecase_name(): params}  # type: Dict[str, Any]
+31        if verify:
+32            wrapped_params["verify"] = verify
+33        if verify_strict:
+34            wrapped_params["verify_strict"] = verify_strict
+35
+36        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+37        return convert_to_easypost_object(response=response, api_key=api_key)
+38
+39    @classmethod
+40    def create_and_verify(cls, api_key: Optional[str] = None, **params) -> "Address":
+41        """Create and verify an address."""
+42        requestor = Requestor(local_api_key=api_key)
+43        url = "%s/%s" % (cls.class_url(), "create_and_verify")
+44
+45        wrapped_params = {cls.snakecase_name(): params}
+46        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+47
+48        return convert_to_easypost_object(response=response["address"], api_key=api_key)
+49
+50    def verify(self) -> "Address":
+51        """Verify an address."""
+52        requestor = Requestor(local_api_key=self._api_key)
+53        url = "%s/%s" % (self.instance_url(), "verify")
+54        response, api_key = requestor.request(method=RequestMethod.GET, url=url)
+55
+56        return convert_to_easypost_object(response=response["address"], api_key=api_key)
+
+ + + + +
+ +
+
@classmethod
+ + def + create( cls, api_key: Optional[str] = None, verify: Union[Dict[str, Any], str, bool, NoneType] = None, verify_strict: Union[Dict[str, Any], str, bool, NoneType] = None, **params) -> easypost.address.Address: + + + +
+ +
18    @classmethod
+19    def create(
+20        cls,
+21        api_key: Optional[str] = None,
+22        verify: Optional[Union[Dict[str, Any], str, bool]] = None,
+23        verify_strict: Optional[Union[Dict[str, Any], str, bool]] = None,
+24        **params
+25    ) -> "Address":
+26        """Create an address."""
+27        requestor = Requestor(local_api_key=api_key)
+28        url = cls.class_url()
+29
+30        wrapped_params = {cls.snakecase_name(): params}  # type: Dict[str, Any]
+31        if verify:
+32            wrapped_params["verify"] = verify
+33        if verify_strict:
+34            wrapped_params["verify_strict"] = verify_strict
+35
+36        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+37        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Create an address.

+
+ + +
+
+ +
+
@classmethod
+ + def + create_and_verify(cls, api_key: Optional[str] = None, **params) -> easypost.address.Address: + + + +
+ +
39    @classmethod
+40    def create_and_verify(cls, api_key: Optional[str] = None, **params) -> "Address":
+41        """Create and verify an address."""
+42        requestor = Requestor(local_api_key=api_key)
+43        url = "%s/%s" % (cls.class_url(), "create_and_verify")
+44
+45        wrapped_params = {cls.snakecase_name(): params}
+46        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+47
+48        return convert_to_easypost_object(response=response["address"], api_key=api_key)
+
+ + +

Create and verify an address.

+
+ + +
+
+ +
+ + def + verify(self) -> easypost.address.Address: + + + +
+ +
50    def verify(self) -> "Address":
+51        """Verify an address."""
+52        requestor = Requestor(local_api_key=self._api_key)
+53        url = "%s/%s" % (self.instance_url(), "verify")
+54        response, api_key = requestor.request(method=RequestMethod.GET, url=url)
+55
+56        return convert_to_easypost_object(response=response["address"], api_key=api_key)
+
+ + +

Verify an address.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/batch.html b/docs/easypost/batch.html new file mode 100644 index 00000000..54cddde4 --- /dev/null +++ b/docs/easypost/batch.html @@ -0,0 +1,583 @@ + + + + + + + easypost.batch API documentation + + + + + + + + + +
+
+

+easypost.batch

+ + + + + + +
 1from typing import Optional
+ 2
+ 3from easypost.easypost_object import convert_to_easypost_object
+ 4from easypost.requestor import (
+ 5    RequestMethod,
+ 6    Requestor,
+ 7)
+ 8from easypost.resource import (
+ 9    AllResource,
+10    CreateResource,
+11)
+12
+13
+14class Batch(AllResource, CreateResource):
+15    @classmethod
+16    def create_and_buy(cls, api_key: Optional[str] = None, **params) -> "Batch":
+17        """Create and buy a Batch."""
+18        requestor = Requestor(local_api_key=api_key)
+19        url = "%s/%s" % (cls.class_url(), "create_and_buy")
+20        wrapped_params = {cls.snakecase_name(): params}
+21        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+22        return convert_to_easypost_object(response=response, api_key=api_key)
+23
+24    def buy(self, **params) -> "Batch":
+25        """Buy a batch."""
+26        requestor = Requestor(local_api_key=self._api_key)
+27        url = "%s/%s" % (self.instance_url(), "buy")
+28        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+29        self.refresh_from(values=response, api_key=api_key)
+30        return self
+31
+32    def label(self, **params) -> "Batch":
+33        """Create a batch label."""
+34        requestor = Requestor(local_api_key=self._api_key)
+35        url = "%s/%s" % (self.instance_url(), "label")
+36        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+37        self.refresh_from(values=response, api_key=api_key)
+38        return self
+39
+40    def remove_shipments(self, **params) -> "Batch":
+41        """Remove shipments from a batch."""
+42        requestor = Requestor(local_api_key=self._api_key)
+43        url = "%s/%s" % (self.instance_url(), "remove_shipments")
+44        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+45        self.refresh_from(values=response, api_key=api_key)
+46        return self
+47
+48    def add_shipments(self, **params) -> "Batch":
+49        """Add shipments from a batch."""
+50        requestor = Requestor(local_api_key=self._api_key)
+51        url = "%s/%s" % (self.instance_url(), "add_shipments")
+52        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+53        self.refresh_from(values=response, api_key=api_key)
+54        return self
+55
+56    def create_scan_form(self, **params) -> "Batch":
+57        """Create a scanform for a batch."""
+58        requestor = Requestor(local_api_key=self._api_key)
+59        url = "%s/%s" % (self.instance_url(), "scan_form")
+60        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+61        self.refresh_from(values=response, api_key=api_key)
+62        return self
+
+ + +
+
+ +
+ + class + Batch(easypost.resource.AllResource, easypost.resource.CreateResource): + + + +
+ +
15class Batch(AllResource, CreateResource):
+16    @classmethod
+17    def create_and_buy(cls, api_key: Optional[str] = None, **params) -> "Batch":
+18        """Create and buy a Batch."""
+19        requestor = Requestor(local_api_key=api_key)
+20        url = "%s/%s" % (cls.class_url(), "create_and_buy")
+21        wrapped_params = {cls.snakecase_name(): params}
+22        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+23        return convert_to_easypost_object(response=response, api_key=api_key)
+24
+25    def buy(self, **params) -> "Batch":
+26        """Buy a batch."""
+27        requestor = Requestor(local_api_key=self._api_key)
+28        url = "%s/%s" % (self.instance_url(), "buy")
+29        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+30        self.refresh_from(values=response, api_key=api_key)
+31        return self
+32
+33    def label(self, **params) -> "Batch":
+34        """Create a batch label."""
+35        requestor = Requestor(local_api_key=self._api_key)
+36        url = "%s/%s" % (self.instance_url(), "label")
+37        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+38        self.refresh_from(values=response, api_key=api_key)
+39        return self
+40
+41    def remove_shipments(self, **params) -> "Batch":
+42        """Remove shipments from a batch."""
+43        requestor = Requestor(local_api_key=self._api_key)
+44        url = "%s/%s" % (self.instance_url(), "remove_shipments")
+45        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+46        self.refresh_from(values=response, api_key=api_key)
+47        return self
+48
+49    def add_shipments(self, **params) -> "Batch":
+50        """Add shipments from a batch."""
+51        requestor = Requestor(local_api_key=self._api_key)
+52        url = "%s/%s" % (self.instance_url(), "add_shipments")
+53        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+54        self.refresh_from(values=response, api_key=api_key)
+55        return self
+56
+57    def create_scan_form(self, **params) -> "Batch":
+58        """Create a scanform for a batch."""
+59        requestor = Requestor(local_api_key=self._api_key)
+60        url = "%s/%s" % (self.instance_url(), "scan_form")
+61        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+62        self.refresh_from(values=response, api_key=api_key)
+63        return self
+
+ + + + +
+ +
+
@classmethod
+ + def + create_and_buy(cls, api_key: Optional[str] = None, **params) -> easypost.batch.Batch: + + + +
+ +
16    @classmethod
+17    def create_and_buy(cls, api_key: Optional[str] = None, **params) -> "Batch":
+18        """Create and buy a Batch."""
+19        requestor = Requestor(local_api_key=api_key)
+20        url = "%s/%s" % (cls.class_url(), "create_and_buy")
+21        wrapped_params = {cls.snakecase_name(): params}
+22        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+23        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Create and buy a Batch.

+
+ + +
+
+ +
+ + def + buy(self, **params) -> easypost.batch.Batch: + + + +
+ +
25    def buy(self, **params) -> "Batch":
+26        """Buy a batch."""
+27        requestor = Requestor(local_api_key=self._api_key)
+28        url = "%s/%s" % (self.instance_url(), "buy")
+29        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+30        self.refresh_from(values=response, api_key=api_key)
+31        return self
+
+ + +

Buy a batch.

+
+ + +
+
+ +
+ + def + label(self, **params) -> easypost.batch.Batch: + + + +
+ +
33    def label(self, **params) -> "Batch":
+34        """Create a batch label."""
+35        requestor = Requestor(local_api_key=self._api_key)
+36        url = "%s/%s" % (self.instance_url(), "label")
+37        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+38        self.refresh_from(values=response, api_key=api_key)
+39        return self
+
+ + +

Create a batch label.

+
+ + +
+
+ +
+ + def + remove_shipments(self, **params) -> easypost.batch.Batch: + + + +
+ +
41    def remove_shipments(self, **params) -> "Batch":
+42        """Remove shipments from a batch."""
+43        requestor = Requestor(local_api_key=self._api_key)
+44        url = "%s/%s" % (self.instance_url(), "remove_shipments")
+45        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+46        self.refresh_from(values=response, api_key=api_key)
+47        return self
+
+ + +

Remove shipments from a batch.

+
+ + +
+
+ +
+ + def + add_shipments(self, **params) -> easypost.batch.Batch: + + + +
+ +
49    def add_shipments(self, **params) -> "Batch":
+50        """Add shipments from a batch."""
+51        requestor = Requestor(local_api_key=self._api_key)
+52        url = "%s/%s" % (self.instance_url(), "add_shipments")
+53        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+54        self.refresh_from(values=response, api_key=api_key)
+55        return self
+
+ + +

Add shipments from a batch.

+
+ + +
+
+ +
+ + def + create_scan_form(self, **params) -> easypost.batch.Batch: + + + +
+ +
57    def create_scan_form(self, **params) -> "Batch":
+58        """Create a scanform for a batch."""
+59        requestor = Requestor(local_api_key=self._api_key)
+60        url = "%s/%s" % (self.instance_url(), "scan_form")
+61        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+62        self.refresh_from(values=response, api_key=api_key)
+63        return self
+
+ + +

Create a scanform for a batch.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/beta.html b/docs/easypost/beta.html new file mode 100644 index 00000000..469c1da0 --- /dev/null +++ b/docs/easypost/beta.html @@ -0,0 +1,243 @@ + + + + + + + easypost.beta API documentation + + + + + + + + + +
+
+

+easypost.beta

+ + + + + + +
1# flake8: noqa
+2from easypost.beta.referral import Referral
+
+ + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/beta/referral.html b/docs/easypost/beta/referral.html new file mode 100644 index 00000000..8ae57dd4 --- /dev/null +++ b/docs/easypost/beta/referral.html @@ -0,0 +1,809 @@ + + + + + + + easypost.beta.referral API documentation + + + + + + + + + +
+
+

+easypost.beta.referral

+ + + + + + +
  1from typing import (
+  2    Any,
+  3    Dict,
+  4    List,
+  5    Optional,
+  6)
+  7
+  8import requests
+  9
+ 10from easypost.easypost_object import convert_to_easypost_object
+ 11from easypost.error import Error
+ 12from easypost.requestor import (
+ 13    RequestMethod,
+ 14    Requestor,
+ 15)
+ 16
+ 17
+ 18class Referral:
+ 19    @staticmethod
+ 20    def create(
+ 21        api_key: Optional[str] = None,
+ 22        **params,
+ 23    ) -> Dict[str, Any]:
+ 24        """Create a referral user.
+ 25
+ 26        This function requires the Partner User's API key.
+ 27        """
+ 28        requestor = Requestor(local_api_key=api_key)
+ 29        new_params = {"user": params}
+ 30        response, api_key = requestor.request(
+ 31            method=RequestMethod.POST,
+ 32            url="/referral_customers",
+ 33            params=new_params,
+ 34            beta=True,
+ 35        )
+ 36        return convert_to_easypost_object(response=response, api_key=api_key)
+ 37
+ 38    @staticmethod
+ 39    def update_email(
+ 40        email,
+ 41        user_id,
+ 42        api_key: Optional[str] = None,
+ 43    ) -> bool:
+ 44        """Update a referral user.
+ 45
+ 46        This function requires the Partner User's API key.
+ 47        """
+ 48        requestor = Requestor(local_api_key=api_key)
+ 49        url = f"/referral_customers/{user_id}"
+ 50        wrapped_params = {
+ 51            "user": {
+ 52                "email": email,
+ 53            }
+ 54        }
+ 55        _, _ = requestor.request(
+ 56            method=RequestMethod.PUT,
+ 57            url=url,
+ 58            params=wrapped_params,
+ 59            beta=True,
+ 60        )
+ 61
+ 62        # Return true if succeeds, an error will be thrown if it fails
+ 63        return True
+ 64
+ 65    @staticmethod
+ 66    def all(
+ 67        api_key: Optional[str] = None,
+ 68        **params,
+ 69    ) -> List:
+ 70        """Retrieve a list of referral users.
+ 71
+ 72        This function requires the Partner User's API key.
+ 73        """
+ 74        requestor = Requestor(local_api_key=api_key)
+ 75        response, api_key = requestor.request(
+ 76            method=RequestMethod.GET,
+ 77            url="/referral_customers",
+ 78            params=params,
+ 79            beta=True,
+ 80        )
+ 81        return convert_to_easypost_object(response=response, api_key=api_key)
+ 82
+ 83    @staticmethod
+ 84    def add_credit_card(
+ 85        referral_api_key: str,
+ 86        number: str,
+ 87        expiration_month: int,
+ 88        expiration_year: int,
+ 89        cvc: str,
+ 90        primary_or_secondary: str = "primary",
+ 91    ) -> Dict[str, Any]:
+ 92        """Add credit card to a referral user.
+ 93
+ 94        This function requires the Referral User's API key.
+ 95        """
+ 96        easypost_stripe_api_key = Referral._retrieve_easypost_stripe_api_key()
+ 97
+ 98        try:
+ 99            stripe_token = Referral._create_stripe_token(
+100                number, expiration_month, expiration_year, cvc, easypost_stripe_api_key
+101            )
+102        except Exception:
+103            raise Error(message="Could not send card details to Stripe, please try again later")
+104
+105        response = Referral._create_easypost_credit_card(
+106            referral_api_key,
+107            stripe_token.get("id", ""),
+108            priority=primary_or_secondary,
+109        )
+110        return convert_to_easypost_object(response)
+111
+112    @staticmethod
+113    def _retrieve_easypost_stripe_api_key() -> str:
+114        """Retrieve EasyPost's Stripe public API key."""
+115        requestor = Requestor()
+116        public_key, _ = requestor.request(
+117            method=RequestMethod.GET,
+118            url="/partners/stripe_public_key",
+119            beta=True,
+120        )
+121        return public_key.get("public_key", "")
+122
+123    @staticmethod
+124    def _create_stripe_token(
+125        number: str,
+126        expiration_month: int,
+127        expiration_year: int,
+128        cvc: str,
+129        easypost_stripe_key: str,
+130    ) -> Dict[str, Any]:
+131        """Get credit card token from Stripe."""
+132        headers = {
+133            # This Stripe endpoint only accepts URL form encoded bodies
+134            "Content-type": "application/x-www-form-urlencoded",
+135        }
+136
+137        credit_card_dict = {
+138            "card": {
+139                "number": number,
+140                "exp_month": expiration_month,
+141                "exp_year": expiration_year,
+142                "cvc": cvc,
+143            }
+144        }
+145
+146        form_encoded_params = Requestor.form_encode_params(credit_card_dict)
+147        url = "https://api.stripe.com/v1/tokens"
+148
+149        stripe_response = requests.post(
+150            url,
+151            params=form_encoded_params,
+152            headers=headers,
+153            auth=requests.auth.HTTPBasicAuth(easypost_stripe_key, ""),
+154        )
+155        return stripe_response.json()
+156
+157    @staticmethod
+158    def _create_easypost_credit_card(
+159        referral_api_key: str,
+160        stripe_object_id: str,
+161        priority: str = "primary",
+162    ) -> Dict[str, Any]:
+163        """Submit Stripe credit card token to EasyPost."""
+164        requestor = Requestor(local_api_key=referral_api_key)
+165
+166        params = {
+167            "credit_card": {
+168                "stripe_object_id": stripe_object_id,
+169                "priority": priority,
+170            }
+171        }
+172
+173        response, _ = requestor.request(
+174            method=RequestMethod.POST,
+175            params=params,
+176            url="/credit_cards",
+177            beta=True,
+178        )
+179        return response
+
+ + +
+
+ +
+ + class + Referral: + + + +
+ +
 19class Referral:
+ 20    @staticmethod
+ 21    def create(
+ 22        api_key: Optional[str] = None,
+ 23        **params,
+ 24    ) -> Dict[str, Any]:
+ 25        """Create a referral user.
+ 26
+ 27        This function requires the Partner User's API key.
+ 28        """
+ 29        requestor = Requestor(local_api_key=api_key)
+ 30        new_params = {"user": params}
+ 31        response, api_key = requestor.request(
+ 32            method=RequestMethod.POST,
+ 33            url="/referral_customers",
+ 34            params=new_params,
+ 35            beta=True,
+ 36        )
+ 37        return convert_to_easypost_object(response=response, api_key=api_key)
+ 38
+ 39    @staticmethod
+ 40    def update_email(
+ 41        email,
+ 42        user_id,
+ 43        api_key: Optional[str] = None,
+ 44    ) -> bool:
+ 45        """Update a referral user.
+ 46
+ 47        This function requires the Partner User's API key.
+ 48        """
+ 49        requestor = Requestor(local_api_key=api_key)
+ 50        url = f"/referral_customers/{user_id}"
+ 51        wrapped_params = {
+ 52            "user": {
+ 53                "email": email,
+ 54            }
+ 55        }
+ 56        _, _ = requestor.request(
+ 57            method=RequestMethod.PUT,
+ 58            url=url,
+ 59            params=wrapped_params,
+ 60            beta=True,
+ 61        )
+ 62
+ 63        # Return true if succeeds, an error will be thrown if it fails
+ 64        return True
+ 65
+ 66    @staticmethod
+ 67    def all(
+ 68        api_key: Optional[str] = None,
+ 69        **params,
+ 70    ) -> List:
+ 71        """Retrieve a list of referral users.
+ 72
+ 73        This function requires the Partner User's API key.
+ 74        """
+ 75        requestor = Requestor(local_api_key=api_key)
+ 76        response, api_key = requestor.request(
+ 77            method=RequestMethod.GET,
+ 78            url="/referral_customers",
+ 79            params=params,
+ 80            beta=True,
+ 81        )
+ 82        return convert_to_easypost_object(response=response, api_key=api_key)
+ 83
+ 84    @staticmethod
+ 85    def add_credit_card(
+ 86        referral_api_key: str,
+ 87        number: str,
+ 88        expiration_month: int,
+ 89        expiration_year: int,
+ 90        cvc: str,
+ 91        primary_or_secondary: str = "primary",
+ 92    ) -> Dict[str, Any]:
+ 93        """Add credit card to a referral user.
+ 94
+ 95        This function requires the Referral User's API key.
+ 96        """
+ 97        easypost_stripe_api_key = Referral._retrieve_easypost_stripe_api_key()
+ 98
+ 99        try:
+100            stripe_token = Referral._create_stripe_token(
+101                number, expiration_month, expiration_year, cvc, easypost_stripe_api_key
+102            )
+103        except Exception:
+104            raise Error(message="Could not send card details to Stripe, please try again later")
+105
+106        response = Referral._create_easypost_credit_card(
+107            referral_api_key,
+108            stripe_token.get("id", ""),
+109            priority=primary_or_secondary,
+110        )
+111        return convert_to_easypost_object(response)
+112
+113    @staticmethod
+114    def _retrieve_easypost_stripe_api_key() -> str:
+115        """Retrieve EasyPost's Stripe public API key."""
+116        requestor = Requestor()
+117        public_key, _ = requestor.request(
+118            method=RequestMethod.GET,
+119            url="/partners/stripe_public_key",
+120            beta=True,
+121        )
+122        return public_key.get("public_key", "")
+123
+124    @staticmethod
+125    def _create_stripe_token(
+126        number: str,
+127        expiration_month: int,
+128        expiration_year: int,
+129        cvc: str,
+130        easypost_stripe_key: str,
+131    ) -> Dict[str, Any]:
+132        """Get credit card token from Stripe."""
+133        headers = {
+134            # This Stripe endpoint only accepts URL form encoded bodies
+135            "Content-type": "application/x-www-form-urlencoded",
+136        }
+137
+138        credit_card_dict = {
+139            "card": {
+140                "number": number,
+141                "exp_month": expiration_month,
+142                "exp_year": expiration_year,
+143                "cvc": cvc,
+144            }
+145        }
+146
+147        form_encoded_params = Requestor.form_encode_params(credit_card_dict)
+148        url = "https://api.stripe.com/v1/tokens"
+149
+150        stripe_response = requests.post(
+151            url,
+152            params=form_encoded_params,
+153            headers=headers,
+154            auth=requests.auth.HTTPBasicAuth(easypost_stripe_key, ""),
+155        )
+156        return stripe_response.json()
+157
+158    @staticmethod
+159    def _create_easypost_credit_card(
+160        referral_api_key: str,
+161        stripe_object_id: str,
+162        priority: str = "primary",
+163    ) -> Dict[str, Any]:
+164        """Submit Stripe credit card token to EasyPost."""
+165        requestor = Requestor(local_api_key=referral_api_key)
+166
+167        params = {
+168            "credit_card": {
+169                "stripe_object_id": stripe_object_id,
+170                "priority": priority,
+171            }
+172        }
+173
+174        response, _ = requestor.request(
+175            method=RequestMethod.POST,
+176            params=params,
+177            url="/credit_cards",
+178            beta=True,
+179        )
+180        return response
+
+ + + + +
+
+ + Referral() + + +
+ + + + +
+
+ +
+
@staticmethod
+ + def + create(api_key: Optional[str] = None, **params) -> Dict[str, Any]: + + + +
+ +
20    @staticmethod
+21    def create(
+22        api_key: Optional[str] = None,
+23        **params,
+24    ) -> Dict[str, Any]:
+25        """Create a referral user.
+26
+27        This function requires the Partner User's API key.
+28        """
+29        requestor = Requestor(local_api_key=api_key)
+30        new_params = {"user": params}
+31        response, api_key = requestor.request(
+32            method=RequestMethod.POST,
+33            url="/referral_customers",
+34            params=new_params,
+35            beta=True,
+36        )
+37        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Create a referral user.

+ +

This function requires the Partner User's API key.

+
+ + +
+
+ +
+
@staticmethod
+ + def + update_email(email, user_id, api_key: Optional[str] = None) -> bool: + + + +
+ +
39    @staticmethod
+40    def update_email(
+41        email,
+42        user_id,
+43        api_key: Optional[str] = None,
+44    ) -> bool:
+45        """Update a referral user.
+46
+47        This function requires the Partner User's API key.
+48        """
+49        requestor = Requestor(local_api_key=api_key)
+50        url = f"/referral_customers/{user_id}"
+51        wrapped_params = {
+52            "user": {
+53                "email": email,
+54            }
+55        }
+56        _, _ = requestor.request(
+57            method=RequestMethod.PUT,
+58            url=url,
+59            params=wrapped_params,
+60            beta=True,
+61        )
+62
+63        # Return true if succeeds, an error will be thrown if it fails
+64        return True
+
+ + +

Update a referral user.

+ +

This function requires the Partner User's API key.

+
+ + +
+
+ +
+
@staticmethod
+ + def + all(api_key: Optional[str] = None, **params) -> List: + + + +
+ +
66    @staticmethod
+67    def all(
+68        api_key: Optional[str] = None,
+69        **params,
+70    ) -> List:
+71        """Retrieve a list of referral users.
+72
+73        This function requires the Partner User's API key.
+74        """
+75        requestor = Requestor(local_api_key=api_key)
+76        response, api_key = requestor.request(
+77            method=RequestMethod.GET,
+78            url="/referral_customers",
+79            params=params,
+80            beta=True,
+81        )
+82        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Retrieve a list of referral users.

+ +

This function requires the Partner User's API key.

+
+ + +
+
+ +
+
@staticmethod
+ + def + add_credit_card( referral_api_key: str, number: str, expiration_month: int, expiration_year: int, cvc: str, primary_or_secondary: str = 'primary') -> Dict[str, Any]: + + + +
+ +
 84    @staticmethod
+ 85    def add_credit_card(
+ 86        referral_api_key: str,
+ 87        number: str,
+ 88        expiration_month: int,
+ 89        expiration_year: int,
+ 90        cvc: str,
+ 91        primary_or_secondary: str = "primary",
+ 92    ) -> Dict[str, Any]:
+ 93        """Add credit card to a referral user.
+ 94
+ 95        This function requires the Referral User's API key.
+ 96        """
+ 97        easypost_stripe_api_key = Referral._retrieve_easypost_stripe_api_key()
+ 98
+ 99        try:
+100            stripe_token = Referral._create_stripe_token(
+101                number, expiration_month, expiration_year, cvc, easypost_stripe_api_key
+102            )
+103        except Exception:
+104            raise Error(message="Could not send card details to Stripe, please try again later")
+105
+106        response = Referral._create_easypost_credit_card(
+107            referral_api_key,
+108            stripe_token.get("id", ""),
+109            priority=primary_or_secondary,
+110        )
+111        return convert_to_easypost_object(response)
+
+ + +

Add credit card to a referral user.

+ +

This function requires the Referral User's API key.

+
+ + +
+
+
+ + \ No newline at end of file diff --git a/docs/easypost/billing.html b/docs/easypost/billing.html new file mode 100644 index 00000000..47e3d7f1 --- /dev/null +++ b/docs/easypost/billing.html @@ -0,0 +1,530 @@ + + + + + + + easypost.billing API documentation + + + + + + + + + +
+
+

+easypost.billing

+ + + + + + +
 1from typing import (
+ 2    Any,
+ 3    Dict,
+ 4    List,
+ 5    Optional,
+ 6)
+ 7
+ 8from easypost.easypost_object import convert_to_easypost_object
+ 9from easypost.error import Error
+10from easypost.requestor import (
+11    RequestMethod,
+12    Requestor,
+13)
+14from easypost.resource import Resource
+15
+16
+17class Billing(Resource):
+18    @classmethod
+19    def fund_wallet(cls, amount: str, primary_or_secondary: str = "primary", api_key: Optional[str] = None) -> bool:
+20        """Fund your EasyPost wallet by charging your primary or secondary payment method on file."""
+21        endpoint, payment_method_id = Billing._get_payment_method_info(primary_or_secondary=primary_or_secondary)
+22
+23        requestor = Requestor(local_api_key=api_key)
+24        url = f"{endpoint}/{payment_method_id}/charges"
+25        wrapped_params = {"amount": amount}
+26        requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+27
+28        # Return true if the request succeeds, an error will be thrown if it fails
+29        return True
+30
+31    @classmethod
+32    def delete_payment_method(cls, primary_or_secondary: str, api_key: Optional[str] = None) -> bool:
+33        """Delete a payment method."""
+34        endpoint, payment_method_id = Billing._get_payment_method_info(primary_or_secondary=primary_or_secondary)
+35
+36        requestor = Requestor(local_api_key=api_key)
+37        url = f"{endpoint}/{payment_method_id}"
+38        requestor.request(method=RequestMethod.DELETE, url=url)
+39
+40        # Return true if the request succeeds, an error will be thrown if it fails
+41        return True
+42
+43    @classmethod
+44    def retrieve_payment_methods(cls, api_key: Optional[str] = None, **params) -> Dict[str, Any]:
+45        """Retrieve payment methods."""
+46        requestor = Requestor(local_api_key=api_key)
+47        response, api_key = requestor.request(method=RequestMethod.GET, url="/payment_methods", params=params)
+48
+49        if response.get("id") is None:
+50            raise Error(message="Billing has not been setup for this user. Please add a payment method.")
+51
+52        return convert_to_easypost_object(response=response, api_key=api_key)
+53
+54    @classmethod
+55    def _get_payment_method_info(cls, primary_or_secondary: str = "primary") -> List[str]:
+56        """Get payment method info (type of the payment method and ID of the payment method)"""
+57        payment_methods = Billing.retrieve_payment_methods()
+58
+59        payment_method_map = {
+60            "primary": "primary_payment_method",
+61            "secondary": "secondary_payment_method",
+62        }
+63
+64        payment_method_to_use = payment_method_map.get(primary_or_secondary)
+65        error_string = "The chosen payment method is not valid. Please try again."
+66
+67        if payment_method_to_use and payment_methods[payment_method_to_use]:
+68            payment_method_id = payment_methods[payment_method_to_use]["id"]
+69            if payment_method_id.startswith("card_"):
+70                endpoint = "/credit_cards"
+71            elif payment_method_id.startswith("bank_"):
+72                endpoint = "/bank_accounts"
+73            else:
+74                raise Error(message=error_string)
+75        else:
+76            raise Error(message=error_string)
+77
+78        return [endpoint, payment_method_id]
+
+ + +
+
+ +
+ + class + Billing(easypost.resource.Resource): + + + +
+ +
18class Billing(Resource):
+19    @classmethod
+20    def fund_wallet(cls, amount: str, primary_or_secondary: str = "primary", api_key: Optional[str] = None) -> bool:
+21        """Fund your EasyPost wallet by charging your primary or secondary payment method on file."""
+22        endpoint, payment_method_id = Billing._get_payment_method_info(primary_or_secondary=primary_or_secondary)
+23
+24        requestor = Requestor(local_api_key=api_key)
+25        url = f"{endpoint}/{payment_method_id}/charges"
+26        wrapped_params = {"amount": amount}
+27        requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+28
+29        # Return true if the request succeeds, an error will be thrown if it fails
+30        return True
+31
+32    @classmethod
+33    def delete_payment_method(cls, primary_or_secondary: str, api_key: Optional[str] = None) -> bool:
+34        """Delete a payment method."""
+35        endpoint, payment_method_id = Billing._get_payment_method_info(primary_or_secondary=primary_or_secondary)
+36
+37        requestor = Requestor(local_api_key=api_key)
+38        url = f"{endpoint}/{payment_method_id}"
+39        requestor.request(method=RequestMethod.DELETE, url=url)
+40
+41        # Return true if the request succeeds, an error will be thrown if it fails
+42        return True
+43
+44    @classmethod
+45    def retrieve_payment_methods(cls, api_key: Optional[str] = None, **params) -> Dict[str, Any]:
+46        """Retrieve payment methods."""
+47        requestor = Requestor(local_api_key=api_key)
+48        response, api_key = requestor.request(method=RequestMethod.GET, url="/payment_methods", params=params)
+49
+50        if response.get("id") is None:
+51            raise Error(message="Billing has not been setup for this user. Please add a payment method.")
+52
+53        return convert_to_easypost_object(response=response, api_key=api_key)
+54
+55    @classmethod
+56    def _get_payment_method_info(cls, primary_or_secondary: str = "primary") -> List[str]:
+57        """Get payment method info (type of the payment method and ID of the payment method)"""
+58        payment_methods = Billing.retrieve_payment_methods()
+59
+60        payment_method_map = {
+61            "primary": "primary_payment_method",
+62            "secondary": "secondary_payment_method",
+63        }
+64
+65        payment_method_to_use = payment_method_map.get(primary_or_secondary)
+66        error_string = "The chosen payment method is not valid. Please try again."
+67
+68        if payment_method_to_use and payment_methods[payment_method_to_use]:
+69            payment_method_id = payment_methods[payment_method_to_use]["id"]
+70            if payment_method_id.startswith("card_"):
+71                endpoint = "/credit_cards"
+72            elif payment_method_id.startswith("bank_"):
+73                endpoint = "/bank_accounts"
+74            else:
+75                raise Error(message=error_string)
+76        else:
+77            raise Error(message=error_string)
+78
+79        return [endpoint, payment_method_id]
+
+ + + + +
+ +
+
@classmethod
+ + def + fund_wallet( cls, amount: str, primary_or_secondary: str = 'primary', api_key: Optional[str] = None) -> bool: + + + +
+ +
19    @classmethod
+20    def fund_wallet(cls, amount: str, primary_or_secondary: str = "primary", api_key: Optional[str] = None) -> bool:
+21        """Fund your EasyPost wallet by charging your primary or secondary payment method on file."""
+22        endpoint, payment_method_id = Billing._get_payment_method_info(primary_or_secondary=primary_or_secondary)
+23
+24        requestor = Requestor(local_api_key=api_key)
+25        url = f"{endpoint}/{payment_method_id}/charges"
+26        wrapped_params = {"amount": amount}
+27        requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+28
+29        # Return true if the request succeeds, an error will be thrown if it fails
+30        return True
+
+ + +

Fund your EasyPost wallet by charging your primary or secondary payment method on file.

+
+ + +
+
+ +
+
@classmethod
+ + def + delete_payment_method(cls, primary_or_secondary: str, api_key: Optional[str] = None) -> bool: + + + +
+ +
32    @classmethod
+33    def delete_payment_method(cls, primary_or_secondary: str, api_key: Optional[str] = None) -> bool:
+34        """Delete a payment method."""
+35        endpoint, payment_method_id = Billing._get_payment_method_info(primary_or_secondary=primary_or_secondary)
+36
+37        requestor = Requestor(local_api_key=api_key)
+38        url = f"{endpoint}/{payment_method_id}"
+39        requestor.request(method=RequestMethod.DELETE, url=url)
+40
+41        # Return true if the request succeeds, an error will be thrown if it fails
+42        return True
+
+ + +

Delete a payment method.

+
+ + +
+
+ +
+
@classmethod
+ + def + retrieve_payment_methods(cls, api_key: Optional[str] = None, **params) -> Dict[str, Any]: + + + +
+ +
44    @classmethod
+45    def retrieve_payment_methods(cls, api_key: Optional[str] = None, **params) -> Dict[str, Any]:
+46        """Retrieve payment methods."""
+47        requestor = Requestor(local_api_key=api_key)
+48        response, api_key = requestor.request(method=RequestMethod.GET, url="/payment_methods", params=params)
+49
+50        if response.get("id") is None:
+51            raise Error(message="Billing has not been setup for this user. Please add a payment method.")
+52
+53        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Retrieve payment methods.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/brand.html b/docs/easypost/brand.html new file mode 100644 index 00000000..ba1dcee1 --- /dev/null +++ b/docs/easypost/brand.html @@ -0,0 +1,295 @@ + + + + + + + easypost.brand API documentation + + + + + + + + + +
+
+

+easypost.brand

+ + + + + + +
1from easypost.resource import Resource
+2
+3
+4class Brand(Resource):
+5    pass
+
+ + +
+
+ +
+ + class + Brand(easypost.resource.Resource): + + + +
+ +
5class Brand(Resource):
+6    pass
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/carrier_account.html b/docs/easypost/carrier_account.html new file mode 100644 index 00000000..b351a172 --- /dev/null +++ b/docs/easypost/carrier_account.html @@ -0,0 +1,365 @@ + + + + + + + easypost.carrier_account API documentation + + + + + + + + + +
+
+

+easypost.carrier_account

+ + + + + + +
 1from typing import (
+ 2    List,
+ 3    Optional,
+ 4)
+ 5
+ 6from easypost.easypost_object import convert_to_easypost_object
+ 7from easypost.requestor import (
+ 8    RequestMethod,
+ 9    Requestor,
+10)
+11from easypost.resource import (
+12    AllResource,
+13    CreateResource,
+14    DeleteResource,
+15    UpdateResource,
+16)
+17
+18
+19class CarrierAccount(AllResource, CreateResource, UpdateResource, DeleteResource):
+20    @classmethod
+21    def types(cls, api_key: Optional[str] = None) -> List[str]:
+22        """Get the types of carrier accounts available to the user."""
+23        requestor = Requestor(local_api_key=api_key)
+24        response, api_key = requestor.request(method=RequestMethod.GET, url="/carrier_types")
+25        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +
+
+ + + +
20class CarrierAccount(AllResource, CreateResource, UpdateResource, DeleteResource):
+21    @classmethod
+22    def types(cls, api_key: Optional[str] = None) -> List[str]:
+23        """Get the types of carrier accounts available to the user."""
+24        requestor = Requestor(local_api_key=api_key)
+25        response, api_key = requestor.request(method=RequestMethod.GET, url="/carrier_types")
+26        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + + + +
+ +
+
@classmethod
+ + def + types(cls, api_key: Optional[str] = None) -> List[str]: + + + +
+ +
21    @classmethod
+22    def types(cls, api_key: Optional[str] = None) -> List[str]:
+23        """Get the types of carrier accounts available to the user."""
+24        requestor = Requestor(local_api_key=api_key)
+25        response, api_key = requestor.request(method=RequestMethod.GET, url="/carrier_types")
+26        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Get the types of carrier accounts available to the user.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/constant.html b/docs/easypost/constant.html new file mode 100644 index 00000000..9c092616 --- /dev/null +++ b/docs/easypost/constant.html @@ -0,0 +1,239 @@ + + + + + + + easypost.constant API documentation + + + + + + + + + +
+
+

+easypost.constant

+ + + + + + +
1SUPPORT_EMAIL = "support@easypost.com"
+2TIMEOUT = 60
+
+ + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/customs_info.html b/docs/easypost/customs_info.html new file mode 100644 index 00000000..aef63295 --- /dev/null +++ b/docs/easypost/customs_info.html @@ -0,0 +1,299 @@ + + + + + + + easypost.customs_info API documentation + + + + + + + + + +
+
+

+easypost.customs_info

+ + + + + + +
1from easypost.resource import CreateResource
+2
+3
+4class CustomsInfo(CreateResource):
+5    pass
+
+ + +
+
+ +
+ + class + CustomsInfo(easypost.resource.CreateResource): + + + +
+ +
5class CustomsInfo(CreateResource):
+6    pass
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/customs_item.html b/docs/easypost/customs_item.html new file mode 100644 index 00000000..953e2f14 --- /dev/null +++ b/docs/easypost/customs_item.html @@ -0,0 +1,299 @@ + + + + + + + easypost.customs_item API documentation + + + + + + + + + +
+
+

+easypost.customs_item

+ + + + + + +
1from easypost.resource import CreateResource
+2
+3
+4class CustomsItem(CreateResource):
+5    pass
+
+ + +
+
+ +
+ + class + CustomsItem(easypost.resource.CreateResource): + + + +
+ +
5class CustomsItem(CreateResource):
+6    pass
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/easypost_object.html b/docs/easypost/easypost_object.html new file mode 100644 index 00000000..ae80e1d7 --- /dev/null +++ b/docs/easypost/easypost_object.html @@ -0,0 +1,1046 @@ + + + + + + + easypost.easypost_object API documentation + + + + + + + + + +
+
+

+easypost.easypost_object

+ + + + + + +
  1import json
+  2from typing import (
+  3    Any,
+  4    Dict,
+  5    List,
+  6    Optional,
+  7)
+  8
+  9import easypost
+ 10
+ 11
+ 12EASYPOST_OBJECT_ID_PREFIX_TO_CLASS_NAME_MAP = {
+ 13    "adr": "Address",
+ 14    "batch": "Batch",
+ 15    "brd": "Brand",
+ 16    "ca": "CarrierAccount",
+ 17    "cfrep": "Report",
+ 18    "cstinfo": "CustomsInfo",
+ 19    "cstitem": "CustomsItem",
+ 20    "es": "EndShipper",
+ 21    "evt": "Event",
+ 22    "hook": "Webhook",
+ 23    "ins": "Insurance",
+ 24    "order": "Order",
+ 25    "pickup": "Pickup",
+ 26    "pickuprate": "PickupRate",
+ 27    "pl": "PostageLabel",
+ 28    "plrep": "Report",
+ 29    "prcl": "Parcel",
+ 30    "rate": "Rate",
+ 31    "refrep": "Report",
+ 32    "rfnd": "Refund",
+ 33    "sf": "ScanForm",
+ 34    "shp": "Shipment",
+ 35    "shpinvrep": "Report",
+ 36    "shprep": "Report",
+ 37    "trk": "Tracker",
+ 38    "trkrep": "Report",
+ 39    "user": "User",
+ 40}
+ 41
+ 42OBJECT_CLASS_NAME_OVERRIDES = {
+ 43    "CashFlowReport": "Report",
+ 44    "PaymentLogReport": "Report",
+ 45    "RefundReport": "Report",
+ 46    "ShipmentInvoiceReport": "Report",
+ 47    "ShipmentReport": "Report",
+ 48    "TrackerReport": "Report",
+ 49}
+ 50
+ 51
+ 52def convert_to_easypost_object(
+ 53    response: Dict[str, Any],
+ 54    api_key: Optional[str] = None,
+ 55    parent: object = None,
+ 56    name: Optional[str] = None,
+ 57):
+ 58    """Convert a response to an EasyPost object."""
+ 59    if isinstance(response, list):
+ 60        return [convert_to_easypost_object(response=item, api_key=api_key, parent=parent) for item in response]
+ 61    elif isinstance(response, dict):
+ 62        response = response.copy()
+ 63        object_type_str = response.get("object", "EasyPostObject")
+ 64        class_name = OBJECT_CLASS_NAME_OVERRIDES.get(object_type_str, object_type_str)
+ 65
+ 66        object_id = response.get("id", None)
+ 67        if object_id is not None:
+ 68            # If an object ID is present, use it to find the class type instead.
+ 69            object_id_prefix = object_id.split("_")[0]
+ 70            class_name = EASYPOST_OBJECT_ID_PREFIX_TO_CLASS_NAME_MAP.get(object_id_prefix, "EasyPostObject")
+ 71
+ 72        cls = getattr(easypost, class_name, EasyPostObject)
+ 73        obj = cls.construct_from(values=response, api_key=api_key, parent=parent, name=name)
+ 74        return obj
+ 75    else:
+ 76        return response
+ 77
+ 78
+ 79class EasyPostObject(object):
+ 80    def __init__(
+ 81        self,
+ 82        easypost_id: Optional[str] = None,
+ 83        api_key: Optional[str] = None,
+ 84        parent: object = None,
+ 85        name: Optional[str] = None,
+ 86        **params,
+ 87    ):
+ 88        self.__dict__["_values"] = set()
+ 89        self.__dict__["_unsaved_values"] = set()
+ 90        self.__dict__["_transient_values"] = set()
+ 91        self.__dict__["_immutable_values"] = {"_api_key", "id"}
+ 92        self.__dict__["_retrieve_params"] = params
+ 93
+ 94        self.__dict__["_parent"] = parent
+ 95        self.__dict__["_name"] = name
+ 96
+ 97        self.__dict__["_api_key"] = api_key
+ 98
+ 99        if easypost_id:
+100            self.id = easypost_id
+101
+102    def __setattr__(self, k, v: Any) -> None:
+103        self.__dict__[k] = v
+104
+105        if k not in self._immutable_values:
+106            self._values.add(k)
+107            self._unsaved_values.add(k)
+108
+109            cur = self
+110            cur_parent = self._parent
+111            while cur_parent:
+112                if cur._name:
+113                    cur_parent._unsaved_values.add(cur._name)
+114                cur = cur_parent
+115                cur_parent = cur._parent
+116
+117    def __getattr__(self, k) -> Any:
+118        try:
+119            return self.__dict__[k]
+120        except KeyError:
+121            pass
+122        raise AttributeError("%r object has no attribute %r" % (type(self).__name__, k))
+123
+124    def __getitem__(self, k):
+125        return self.__dict__[k]
+126
+127    def get(self, k, default: Any = None) -> Any:
+128        try:
+129            return self[k]
+130        except KeyError:
+131            return default
+132
+133    def setdefault(self, k, default: Any = None) -> Any:
+134        try:
+135            return self[k]
+136        except KeyError:
+137            self[k] = default
+138        return default
+139
+140    def __setitem__(self, k, v) -> None:
+141        setattr(self, k, v)
+142
+143    @property
+144    def keys(self) -> List[str]:
+145        return self._values.keys()
+146
+147    @property
+148    def values(self) -> List[Any]:
+149        return self._values.keys()
+150
+151    @classmethod
+152    def construct_from(
+153        cls,
+154        values: Dict[str, Any],
+155        api_key: Optional[str] = None,
+156        parent: object = None,
+157        name: Optional[str] = None,
+158    ) -> object:
+159        """Construct an object."""
+160        instance = cls(easypost_id=values.get("id"), api_key=api_key, parent=parent, name=name)
+161        instance.refresh_from(values=values, api_key=api_key)
+162        return instance
+163
+164    def refresh_from(self, values: Dict[str, Any], api_key: Optional[str] = None) -> None:
+165        """Update local object with changes from the API."""
+166        self._api_key = api_key
+167
+168        for k, v in sorted(values.items()):
+169            if k == "id" and self.id != v:
+170                self.id = v
+171            if k in self._immutable_values:
+172                continue
+173            self.__dict__[k] = convert_to_easypost_object(response=v, api_key=api_key, parent=self, name=k)
+174            self._values.add(k)
+175            self._transient_values.discard(k)
+176            self._unsaved_values.discard(k)
+177
+178    def flatten_unsaved(self) -> Dict[str, Any]:
+179        """Return a dict of `_unsaved_values` values from the current object."""
+180        values = {}
+181        for key in self._unsaved_values:
+182            value = self.get(key)
+183            if type(value) is EasyPostObject:
+184                values[key] = value.flatten_unsaved()
+185            else:
+186                values[key] = value
+187        return values
+188
+189    def __repr__(self) -> str:
+190        type_string = ""
+191
+192        if isinstance(self.get("object"), str):
+193            type_string = " %s" % self.get("object").encode("utf8")
+194
+195        json_string = json.dumps(obj=self.to_dict(), sort_keys=True, indent=2, cls=EasyPostObjectEncoder)
+196
+197        return "<%s%s at %s> JSON: %s" % (type(self).__name__, type_string, hex(id(self)), json_string)
+198
+199    def __str__(self) -> str:
+200        return self.to_json(indent=2)
+201
+202    def __eq__(self, other) -> bool:
+203        if not isinstance(other, EasyPostObject):
+204            return False
+205        return self.__str__() == other.__str__()
+206
+207    def to_json(self, indent: int = None) -> str:
+208        """Convert current object to json string."""
+209        return json.dumps(obj=self.to_dict(), sort_keys=True, indent=indent, cls=EasyPostObjectEncoder)
+210
+211    def to_dict(self) -> Dict[str, Any]:
+212        """Convert current object to a dict."""
+213
+214        def _serialize(o):
+215            if isinstance(o, EasyPostObject):
+216                return o.to_dict()
+217            if isinstance(o, list):
+218                return [_serialize(r) for r in o]
+219            return o
+220
+221        d = {"id": self.get("id")} if self.get("id") else {}
+222        for k in sorted(self._values):
+223            v = getattr(self, k)
+224            v = _serialize(v)
+225            d[k] = v
+226        return d
+227
+228
+229class EasyPostObjectEncoder(json.JSONEncoder):
+230    def default(self, obj: Any) -> Any:
+231        """Convert easypost object to a dict."""
+232        if isinstance(obj, EasyPostObject):
+233            return obj.to_dict()
+234        else:
+235            return json.JSONEncoder.default(self, o=obj)
+
+ + +
+
+ +
+ + def + convert_to_easypost_object( response: Dict[str, Any], api_key: Optional[str] = None, parent: object = None, name: Optional[str] = None): + + + +
+ +
53def convert_to_easypost_object(
+54    response: Dict[str, Any],
+55    api_key: Optional[str] = None,
+56    parent: object = None,
+57    name: Optional[str] = None,
+58):
+59    """Convert a response to an EasyPost object."""
+60    if isinstance(response, list):
+61        return [convert_to_easypost_object(response=item, api_key=api_key, parent=parent) for item in response]
+62    elif isinstance(response, dict):
+63        response = response.copy()
+64        object_type_str = response.get("object", "EasyPostObject")
+65        class_name = OBJECT_CLASS_NAME_OVERRIDES.get(object_type_str, object_type_str)
+66
+67        object_id = response.get("id", None)
+68        if object_id is not None:
+69            # If an object ID is present, use it to find the class type instead.
+70            object_id_prefix = object_id.split("_")[0]
+71            class_name = EASYPOST_OBJECT_ID_PREFIX_TO_CLASS_NAME_MAP.get(object_id_prefix, "EasyPostObject")
+72
+73        cls = getattr(easypost, class_name, EasyPostObject)
+74        obj = cls.construct_from(values=response, api_key=api_key, parent=parent, name=name)
+75        return obj
+76    else:
+77        return response
+
+ + +

Convert a response to an EasyPost object.

+
+ + +
+
+ +
+ + class + EasyPostObject: + + + +
+ +
 80class EasyPostObject(object):
+ 81    def __init__(
+ 82        self,
+ 83        easypost_id: Optional[str] = None,
+ 84        api_key: Optional[str] = None,
+ 85        parent: object = None,
+ 86        name: Optional[str] = None,
+ 87        **params,
+ 88    ):
+ 89        self.__dict__["_values"] = set()
+ 90        self.__dict__["_unsaved_values"] = set()
+ 91        self.__dict__["_transient_values"] = set()
+ 92        self.__dict__["_immutable_values"] = {"_api_key", "id"}
+ 93        self.__dict__["_retrieve_params"] = params
+ 94
+ 95        self.__dict__["_parent"] = parent
+ 96        self.__dict__["_name"] = name
+ 97
+ 98        self.__dict__["_api_key"] = api_key
+ 99
+100        if easypost_id:
+101            self.id = easypost_id
+102
+103    def __setattr__(self, k, v: Any) -> None:
+104        self.__dict__[k] = v
+105
+106        if k not in self._immutable_values:
+107            self._values.add(k)
+108            self._unsaved_values.add(k)
+109
+110            cur = self
+111            cur_parent = self._parent
+112            while cur_parent:
+113                if cur._name:
+114                    cur_parent._unsaved_values.add(cur._name)
+115                cur = cur_parent
+116                cur_parent = cur._parent
+117
+118    def __getattr__(self, k) -> Any:
+119        try:
+120            return self.__dict__[k]
+121        except KeyError:
+122            pass
+123        raise AttributeError("%r object has no attribute %r" % (type(self).__name__, k))
+124
+125    def __getitem__(self, k):
+126        return self.__dict__[k]
+127
+128    def get(self, k, default: Any = None) -> Any:
+129        try:
+130            return self[k]
+131        except KeyError:
+132            return default
+133
+134    def setdefault(self, k, default: Any = None) -> Any:
+135        try:
+136            return self[k]
+137        except KeyError:
+138            self[k] = default
+139        return default
+140
+141    def __setitem__(self, k, v) -> None:
+142        setattr(self, k, v)
+143
+144    @property
+145    def keys(self) -> List[str]:
+146        return self._values.keys()
+147
+148    @property
+149    def values(self) -> List[Any]:
+150        return self._values.keys()
+151
+152    @classmethod
+153    def construct_from(
+154        cls,
+155        values: Dict[str, Any],
+156        api_key: Optional[str] = None,
+157        parent: object = None,
+158        name: Optional[str] = None,
+159    ) -> object:
+160        """Construct an object."""
+161        instance = cls(easypost_id=values.get("id"), api_key=api_key, parent=parent, name=name)
+162        instance.refresh_from(values=values, api_key=api_key)
+163        return instance
+164
+165    def refresh_from(self, values: Dict[str, Any], api_key: Optional[str] = None) -> None:
+166        """Update local object with changes from the API."""
+167        self._api_key = api_key
+168
+169        for k, v in sorted(values.items()):
+170            if k == "id" and self.id != v:
+171                self.id = v
+172            if k in self._immutable_values:
+173                continue
+174            self.__dict__[k] = convert_to_easypost_object(response=v, api_key=api_key, parent=self, name=k)
+175            self._values.add(k)
+176            self._transient_values.discard(k)
+177            self._unsaved_values.discard(k)
+178
+179    def flatten_unsaved(self) -> Dict[str, Any]:
+180        """Return a dict of `_unsaved_values` values from the current object."""
+181        values = {}
+182        for key in self._unsaved_values:
+183            value = self.get(key)
+184            if type(value) is EasyPostObject:
+185                values[key] = value.flatten_unsaved()
+186            else:
+187                values[key] = value
+188        return values
+189
+190    def __repr__(self) -> str:
+191        type_string = ""
+192
+193        if isinstance(self.get("object"), str):
+194            type_string = " %s" % self.get("object").encode("utf8")
+195
+196        json_string = json.dumps(obj=self.to_dict(), sort_keys=True, indent=2, cls=EasyPostObjectEncoder)
+197
+198        return "<%s%s at %s> JSON: %s" % (type(self).__name__, type_string, hex(id(self)), json_string)
+199
+200    def __str__(self) -> str:
+201        return self.to_json(indent=2)
+202
+203    def __eq__(self, other) -> bool:
+204        if not isinstance(other, EasyPostObject):
+205            return False
+206        return self.__str__() == other.__str__()
+207
+208    def to_json(self, indent: int = None) -> str:
+209        """Convert current object to json string."""
+210        return json.dumps(obj=self.to_dict(), sort_keys=True, indent=indent, cls=EasyPostObjectEncoder)
+211
+212    def to_dict(self) -> Dict[str, Any]:
+213        """Convert current object to a dict."""
+214
+215        def _serialize(o):
+216            if isinstance(o, EasyPostObject):
+217                return o.to_dict()
+218            if isinstance(o, list):
+219                return [_serialize(r) for r in o]
+220            return o
+221
+222        d = {"id": self.get("id")} if self.get("id") else {}
+223        for k in sorted(self._values):
+224            v = getattr(self, k)
+225            v = _serialize(v)
+226            d[k] = v
+227        return d
+
+ + + + +
+ +
+ + EasyPostObject( easypost_id: Optional[str] = None, api_key: Optional[str] = None, parent: object = None, name: Optional[str] = None, **params) + + + +
+ +
 81    def __init__(
+ 82        self,
+ 83        easypost_id: Optional[str] = None,
+ 84        api_key: Optional[str] = None,
+ 85        parent: object = None,
+ 86        name: Optional[str] = None,
+ 87        **params,
+ 88    ):
+ 89        self.__dict__["_values"] = set()
+ 90        self.__dict__["_unsaved_values"] = set()
+ 91        self.__dict__["_transient_values"] = set()
+ 92        self.__dict__["_immutable_values"] = {"_api_key", "id"}
+ 93        self.__dict__["_retrieve_params"] = params
+ 94
+ 95        self.__dict__["_parent"] = parent
+ 96        self.__dict__["_name"] = name
+ 97
+ 98        self.__dict__["_api_key"] = api_key
+ 99
+100        if easypost_id:
+101            self.id = easypost_id
+
+ + + + +
+
+ +
+ + def + get(self, k, default: Any = None) -> Any: + + + +
+ +
128    def get(self, k, default: Any = None) -> Any:
+129        try:
+130            return self[k]
+131        except KeyError:
+132            return default
+
+ + + + +
+
+ +
+ + def + setdefault(self, k, default: Any = None) -> Any: + + + +
+ +
134    def setdefault(self, k, default: Any = None) -> Any:
+135        try:
+136            return self[k]
+137        except KeyError:
+138            self[k] = default
+139        return default
+
+ + + + +
+
+ +
+
@classmethod
+ + def + construct_from( cls, values: Dict[str, Any], api_key: Optional[str] = None, parent: object = None, name: Optional[str] = None) -> object: + + + +
+ +
152    @classmethod
+153    def construct_from(
+154        cls,
+155        values: Dict[str, Any],
+156        api_key: Optional[str] = None,
+157        parent: object = None,
+158        name: Optional[str] = None,
+159    ) -> object:
+160        """Construct an object."""
+161        instance = cls(easypost_id=values.get("id"), api_key=api_key, parent=parent, name=name)
+162        instance.refresh_from(values=values, api_key=api_key)
+163        return instance
+
+ + +

Construct an object.

+
+ + +
+
+ +
+ + def + refresh_from(self, values: Dict[str, Any], api_key: Optional[str] = None) -> None: + + + +
+ +
165    def refresh_from(self, values: Dict[str, Any], api_key: Optional[str] = None) -> None:
+166        """Update local object with changes from the API."""
+167        self._api_key = api_key
+168
+169        for k, v in sorted(values.items()):
+170            if k == "id" and self.id != v:
+171                self.id = v
+172            if k in self._immutable_values:
+173                continue
+174            self.__dict__[k] = convert_to_easypost_object(response=v, api_key=api_key, parent=self, name=k)
+175            self._values.add(k)
+176            self._transient_values.discard(k)
+177            self._unsaved_values.discard(k)
+
+ + +

Update local object with changes from the API.

+
+ + +
+
+ +
+ + def + flatten_unsaved(self) -> Dict[str, Any]: + + + +
+ +
179    def flatten_unsaved(self) -> Dict[str, Any]:
+180        """Return a dict of `_unsaved_values` values from the current object."""
+181        values = {}
+182        for key in self._unsaved_values:
+183            value = self.get(key)
+184            if type(value) is EasyPostObject:
+185                values[key] = value.flatten_unsaved()
+186            else:
+187                values[key] = value
+188        return values
+
+ + +

Return a dict of _unsaved_values values from the current object.

+
+ + +
+
+ +
+ + def + to_json(self, indent: int = None) -> str: + + + +
+ +
208    def to_json(self, indent: int = None) -> str:
+209        """Convert current object to json string."""
+210        return json.dumps(obj=self.to_dict(), sort_keys=True, indent=indent, cls=EasyPostObjectEncoder)
+
+ + +

Convert current object to json string.

+
+ + +
+
+ +
+ + def + to_dict(self) -> Dict[str, Any]: + + + +
+ +
212    def to_dict(self) -> Dict[str, Any]:
+213        """Convert current object to a dict."""
+214
+215        def _serialize(o):
+216            if isinstance(o, EasyPostObject):
+217                return o.to_dict()
+218            if isinstance(o, list):
+219                return [_serialize(r) for r in o]
+220            return o
+221
+222        d = {"id": self.get("id")} if self.get("id") else {}
+223        for k in sorted(self._values):
+224            v = getattr(self, k)
+225            v = _serialize(v)
+226            d[k] = v
+227        return d
+
+ + +

Convert current object to a dict.

+
+ + +
+
+
+ +
+ + class + EasyPostObjectEncoder(json.encoder.JSONEncoder): + + + +
+ +
230class EasyPostObjectEncoder(json.JSONEncoder):
+231    def default(self, obj: Any) -> Any:
+232        """Convert easypost object to a dict."""
+233        if isinstance(obj, EasyPostObject):
+234            return obj.to_dict()
+235        else:
+236            return json.JSONEncoder.default(self, o=obj)
+
+ + +

Extensible JSON https://json.org encoder for Python data structures.

+ +

Supports the following objects and types by default:

+ +

+-------------------+---------------+ +| Python | JSON | ++===================+===============+ +| dict | object | ++-------------------+---------------+ +| list, tuple | array | ++-------------------+---------------+ +| str | string | ++-------------------+---------------+ +| int, float | number | ++-------------------+---------------+ +| True | true | ++-------------------+---------------+ +| False | false | ++-------------------+---------------+ +| None | null | ++-------------------+---------------+

+ +

To extend this to recognize other objects, subclass and implement a +.default() method with another method that returns a serializable +object for o if possible, otherwise it should call the superclass +implementation (to raise TypeError).

+
+ + +
+ +
+ + def + default(self, obj: Any) -> Any: + + + +
+ +
231    def default(self, obj: Any) -> Any:
+232        """Convert easypost object to a dict."""
+233        if isinstance(obj, EasyPostObject):
+234            return obj.to_dict()
+235        else:
+236            return json.JSONEncoder.default(self, o=obj)
+
+ + +

Convert easypost object to a dict.

+
+ + +
+
+
Inherited Members
+
+
json.encoder.JSONEncoder
+
JSONEncoder
+
encode
+
iterencode
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/docs/easypost/endshipper.html b/docs/easypost/endshipper.html new file mode 100644 index 00000000..5c58a2ca --- /dev/null +++ b/docs/easypost/endshipper.html @@ -0,0 +1,434 @@ + + + + + + + easypost.endshipper API documentation + + + + + + + + + +
+
+

+easypost.endshipper

+ + + + + + +
 1from typing import Optional
+ 2
+ 3from easypost.easypost_object import (
+ 4    EasyPostObject,
+ 5    convert_to_easypost_object,
+ 6)
+ 7from easypost.requestor import (
+ 8    RequestMethod,
+ 9    Requestor,
+10)
+11from easypost.resource import AllResource
+12
+13
+14class EndShipper(AllResource):
+15    @classmethod
+16    def create(cls, api_key: Optional[str] = None, **params) -> "EndShipper":
+17        """Create an EndShipper."""
+18        requestor = Requestor(local_api_key=api_key)
+19        url = cls.class_url()
+20        wrapped_params = {"address": params}
+21        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+22        return convert_to_easypost_object(response=response, api_key=api_key)
+23
+24    def save(self) -> "EndShipper":
+25        """Update an EndShipper object.
+26
+27        This function requires all parameters to be present for an EndShipper.
+28        """
+29        if self._unsaved_values:
+30            requestor = Requestor(local_api_key=self._api_key)
+31            params = {}
+32            for k in self._unsaved_values:
+33                params[k] = getattr(self, k)
+34                if type(params[k]) is EasyPostObject:
+35                    params[k] = params[k].flatten_unsaved()
+36            wrapped_params = {"address": params}  # This function is overridden due to the key has to be `address`
+37            url = self.instance_url()
+38            response, api_key = requestor.request(method=RequestMethod.PUT, url=url, params=wrapped_params)
+39            self.refresh_from(values=response, api_key=api_key)
+40
+41        return self
+
+ + +
+
+ +
+ + class + EndShipper(easypost.resource.AllResource): + + + +
+ +
15class EndShipper(AllResource):
+16    @classmethod
+17    def create(cls, api_key: Optional[str] = None, **params) -> "EndShipper":
+18        """Create an EndShipper."""
+19        requestor = Requestor(local_api_key=api_key)
+20        url = cls.class_url()
+21        wrapped_params = {"address": params}
+22        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+23        return convert_to_easypost_object(response=response, api_key=api_key)
+24
+25    def save(self) -> "EndShipper":
+26        """Update an EndShipper object.
+27
+28        This function requires all parameters to be present for an EndShipper.
+29        """
+30        if self._unsaved_values:
+31            requestor = Requestor(local_api_key=self._api_key)
+32            params = {}
+33            for k in self._unsaved_values:
+34                params[k] = getattr(self, k)
+35                if type(params[k]) is EasyPostObject:
+36                    params[k] = params[k].flatten_unsaved()
+37            wrapped_params = {"address": params}  # This function is overridden due to the key has to be `address`
+38            url = self.instance_url()
+39            response, api_key = requestor.request(method=RequestMethod.PUT, url=url, params=wrapped_params)
+40            self.refresh_from(values=response, api_key=api_key)
+41
+42        return self
+
+ + + + +
+ +
+
@classmethod
+ + def + create( cls, api_key: Optional[str] = None, **params) -> easypost.endshipper.EndShipper: + + + +
+ +
16    @classmethod
+17    def create(cls, api_key: Optional[str] = None, **params) -> "EndShipper":
+18        """Create an EndShipper."""
+19        requestor = Requestor(local_api_key=api_key)
+20        url = cls.class_url()
+21        wrapped_params = {"address": params}
+22        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+23        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Create an EndShipper.

+
+ + +
+
+ +
+ + def + save(self) -> easypost.endshipper.EndShipper: + + + +
+ +
25    def save(self) -> "EndShipper":
+26        """Update an EndShipper object.
+27
+28        This function requires all parameters to be present for an EndShipper.
+29        """
+30        if self._unsaved_values:
+31            requestor = Requestor(local_api_key=self._api_key)
+32            params = {}
+33            for k in self._unsaved_values:
+34                params[k] = getattr(self, k)
+35                if type(params[k]) is EasyPostObject:
+36                    params[k] = params[k].flatten_unsaved()
+37            wrapped_params = {"address": params}  # This function is overridden due to the key has to be `address`
+38            url = self.instance_url()
+39            response, api_key = requestor.request(method=RequestMethod.PUT, url=url, params=wrapped_params)
+40            self.refresh_from(values=response, api_key=api_key)
+41
+42        return self
+
+ + +

Update an EndShipper object.

+ +

This function requires all parameters to be present for an EndShipper.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/error.html b/docs/easypost/error.html new file mode 100644 index 00000000..7ecac2b1 --- /dev/null +++ b/docs/easypost/error.html @@ -0,0 +1,375 @@ + + + + + + + easypost.error API documentation + + + + + + + + + +
+
+

+easypost.error

+ + + + + + +
 1import json
+ 2from typing import (
+ 3    Optional,
+ 4    Union,
+ 5)
+ 6
+ 7
+ 8class Error(Exception):
+ 9    def __init__(
+10        self,
+11        message: Optional[
+12            Union[str, list]
+13        ] = None,  # message should be a string but can sometimes incorrectly come back as a list
+14        http_status: Optional[int] = None,
+15        http_body: Optional[Union[str, bytes]] = None,
+16        original_exception: Optional[Exception] = None,
+17    ):
+18        super(Error, self).__init__(message)
+19        self.message = ", ".join(message) if type(message) == list else message
+20        self.http_status = http_status
+21        self.http_body = http_body
+22        self.original_exception = original_exception
+23        if http_body:
+24            try:
+25                self.json_body = json.loads(http_body)
+26            except Exception:
+27                self.json_body = None
+28
+29        try:
+30            self.param = self.json_body["error"].get("param", None)
+31        except Exception:
+32            self.param = None
+
+ + +
+
+ +
+ + class + Error(builtins.Exception): + + + +
+ +
 9class Error(Exception):
+10    def __init__(
+11        self,
+12        message: Optional[
+13            Union[str, list]
+14        ] = None,  # message should be a string but can sometimes incorrectly come back as a list
+15        http_status: Optional[int] = None,
+16        http_body: Optional[Union[str, bytes]] = None,
+17        original_exception: Optional[Exception] = None,
+18    ):
+19        super(Error, self).__init__(message)
+20        self.message = ", ".join(message) if type(message) == list else message
+21        self.http_status = http_status
+22        self.http_body = http_body
+23        self.original_exception = original_exception
+24        if http_body:
+25            try:
+26                self.json_body = json.loads(http_body)
+27            except Exception:
+28                self.json_body = None
+29
+30        try:
+31            self.param = self.json_body["error"].get("param", None)
+32        except Exception:
+33            self.param = None
+
+ + +

Common base class for all non-exit exceptions.

+
+ + +
+ +
+ + Error( message: Union[str, list, NoneType] = None, http_status: Optional[int] = None, http_body: Union[str, bytes, NoneType] = None, original_exception: Optional[Exception] = None) + + + +
+ +
10    def __init__(
+11        self,
+12        message: Optional[
+13            Union[str, list]
+14        ] = None,  # message should be a string but can sometimes incorrectly come back as a list
+15        http_status: Optional[int] = None,
+16        http_body: Optional[Union[str, bytes]] = None,
+17        original_exception: Optional[Exception] = None,
+18    ):
+19        super(Error, self).__init__(message)
+20        self.message = ", ".join(message) if type(message) == list else message
+21        self.http_status = http_status
+22        self.http_body = http_body
+23        self.original_exception = original_exception
+24        if http_body:
+25            try:
+26                self.json_body = json.loads(http_body)
+27            except Exception:
+28                self.json_body = None
+29
+30        try:
+31            self.param = self.json_body["error"].get("param", None)
+32        except Exception:
+33            self.param = None
+
+ + + + +
+
+
Inherited Members
+
+
builtins.BaseException
+
with_traceback
+ +
+
+
+
+
+ + \ No newline at end of file diff --git a/docs/easypost/event.html b/docs/easypost/event.html new file mode 100644 index 00000000..7745d5df --- /dev/null +++ b/docs/easypost/event.html @@ -0,0 +1,331 @@ + + + + + + + easypost.event API documentation + + + + + + + + + +
+
+

+easypost.event

+ + + + + + +
 1import json
+ 2
+ 3import easypost
+ 4from easypost.easypost_object import convert_to_easypost_object
+ 5from easypost.resource import AllResource
+ 6
+ 7
+ 8class Event(AllResource):
+ 9    @classmethod
+10    def receive(cls, values: str) -> "Event":
+11        return convert_to_easypost_object(response=json.loads(s=values), api_key=easypost.api_key)
+
+ + +
+
+ +
+ + class + Event(easypost.resource.AllResource): + + + +
+ +
 9class Event(AllResource):
+10    @classmethod
+11    def receive(cls, values: str) -> "Event":
+12        return convert_to_easypost_object(response=json.loads(s=values), api_key=easypost.api_key)
+
+ + + + +
+ +
+
@classmethod
+ + def + receive(cls, values: str) -> easypost.event.Event: + + + +
+ +
10    @classmethod
+11    def receive(cls, values: str) -> "Event":
+12        return convert_to_easypost_object(response=json.loads(s=values), api_key=easypost.api_key)
+
+ + + + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/insurance.html b/docs/easypost/insurance.html new file mode 100644 index 00000000..66f8496e --- /dev/null +++ b/docs/easypost/insurance.html @@ -0,0 +1,306 @@ + + + + + + + easypost.insurance API documentation + + + + + + + + + +
+
+

+easypost.insurance

+ + + + + + +
1from easypost.resource import (
+2    AllResource,
+3    CreateResource,
+4)
+5
+6
+7class Insurance(AllResource, CreateResource):
+8    pass
+
+ + +
+
+ +
+ + class + Insurance(easypost.resource.AllResource, easypost.resource.CreateResource): + + + +
+ +
8class Insurance(AllResource, CreateResource):
+9    pass
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/order.html b/docs/easypost/order.html new file mode 100644 index 00000000..2b5db8aa --- /dev/null +++ b/docs/easypost/order.html @@ -0,0 +1,431 @@ + + + + + + + easypost.order API documentation + + + + + + + + + +
+
+

+easypost.order

+ + + + + + +
 1from typing import List
+ 2
+ 3from easypost.requestor import (
+ 4    RequestMethod,
+ 5    Requestor,
+ 6)
+ 7from easypost.resource import CreateResource
+ 8from easypost.util import get_lowest_object_rate
+ 9
+10
+11class Order(CreateResource):
+12    def get_rates(self) -> "Order":
+13        """Get rates for an order."""
+14        requestor = Requestor(local_api_key=self._api_key)
+15        url = "%s/%s" % (self.instance_url(), "rates")
+16        response, api_key = requestor.request(method=RequestMethod.GET, url=url)
+17        self.refresh_from(values=response, api_key=api_key)
+18        return self
+19
+20    def buy(self, **params) -> "Order":
+21        """Buy an order."""
+22        requestor = Requestor(local_api_key=self._api_key)
+23        url = "%s/%s" % (self.instance_url(), "buy")
+24        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+25        self.refresh_from(values=response, api_key=api_key)
+26        return self
+27
+28    def lowest_rate(self, carriers: List[str] = None, services: List[str] = None):
+29        """Get the lowest rate of this order."""
+30        lowest_rate = get_lowest_object_rate(self, carriers, services)
+31
+32        return lowest_rate
+
+ + +
+
+ +
+ + class + Order(easypost.resource.CreateResource): + + + +
+ +
12class Order(CreateResource):
+13    def get_rates(self) -> "Order":
+14        """Get rates for an order."""
+15        requestor = Requestor(local_api_key=self._api_key)
+16        url = "%s/%s" % (self.instance_url(), "rates")
+17        response, api_key = requestor.request(method=RequestMethod.GET, url=url)
+18        self.refresh_from(values=response, api_key=api_key)
+19        return self
+20
+21    def buy(self, **params) -> "Order":
+22        """Buy an order."""
+23        requestor = Requestor(local_api_key=self._api_key)
+24        url = "%s/%s" % (self.instance_url(), "buy")
+25        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+26        self.refresh_from(values=response, api_key=api_key)
+27        return self
+28
+29    def lowest_rate(self, carriers: List[str] = None, services: List[str] = None):
+30        """Get the lowest rate of this order."""
+31        lowest_rate = get_lowest_object_rate(self, carriers, services)
+32
+33        return lowest_rate
+
+ + + + +
+ +
+ + def + get_rates(self) -> easypost.order.Order: + + + +
+ +
13    def get_rates(self) -> "Order":
+14        """Get rates for an order."""
+15        requestor = Requestor(local_api_key=self._api_key)
+16        url = "%s/%s" % (self.instance_url(), "rates")
+17        response, api_key = requestor.request(method=RequestMethod.GET, url=url)
+18        self.refresh_from(values=response, api_key=api_key)
+19        return self
+
+ + +

Get rates for an order.

+
+ + +
+
+ +
+ + def + buy(self, **params) -> easypost.order.Order: + + + +
+ +
21    def buy(self, **params) -> "Order":
+22        """Buy an order."""
+23        requestor = Requestor(local_api_key=self._api_key)
+24        url = "%s/%s" % (self.instance_url(), "buy")
+25        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+26        self.refresh_from(values=response, api_key=api_key)
+27        return self
+
+ + +

Buy an order.

+
+ + +
+
+ +
+ + def + lowest_rate(self, carriers: List[str] = None, services: List[str] = None): + + + +
+ +
29    def lowest_rate(self, carriers: List[str] = None, services: List[str] = None):
+30        """Get the lowest rate of this order."""
+31        lowest_rate = get_lowest_object_rate(self, carriers, services)
+32
+33        return lowest_rate
+
+ + +

Get the lowest rate of this order.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/parcel.html b/docs/easypost/parcel.html new file mode 100644 index 00000000..4af966d4 --- /dev/null +++ b/docs/easypost/parcel.html @@ -0,0 +1,299 @@ + + + + + + + easypost.parcel API documentation + + + + + + + + + +
+
+

+easypost.parcel

+ + + + + + +
1from easypost.resource import CreateResource
+2
+3
+4class Parcel(CreateResource):
+5    pass
+
+ + +
+
+ +
+ + class + Parcel(easypost.resource.CreateResource): + + + +
+ +
5class Parcel(CreateResource):
+6    pass
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/pickup.html b/docs/easypost/pickup.html new file mode 100644 index 00000000..22f87cbe --- /dev/null +++ b/docs/easypost/pickup.html @@ -0,0 +1,431 @@ + + + + + + + easypost.pickup API documentation + + + + + + + + + +
+
+

+easypost.pickup

+ + + + + + +
 1from typing import List
+ 2
+ 3from easypost.requestor import (
+ 4    RequestMethod,
+ 5    Requestor,
+ 6)
+ 7from easypost.resource import CreateResource
+ 8from easypost.util import get_lowest_object_rate
+ 9
+10
+11class Pickup(CreateResource):
+12    def buy(self, **params) -> "Pickup":
+13        """Buy a pickup."""
+14        requestor = Requestor(local_api_key=self._api_key)
+15        url = "%s/%s" % (self.instance_url(), "buy")
+16        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+17        self.refresh_from(values=response, api_key=api_key)
+18        return self
+19
+20    def cancel(self, **params) -> "Pickup":
+21        """Cancel a pickup."""
+22        requestor = Requestor(local_api_key=self._api_key)
+23        url = "%s/%s" % (self.instance_url(), "cancel")
+24        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+25        self.refresh_from(values=response, api_key=api_key)
+26        return self
+27
+28    def lowest_rate(self, carriers: List[str] = None, services: List[str] = None):
+29        """Get the lowest rate of this pickup."""
+30        lowest_rate = get_lowest_object_rate(self, carriers, services, "pickup_rates")
+31
+32        return lowest_rate
+
+ + +
+
+ +
+ + class + Pickup(easypost.resource.CreateResource): + + + +
+ +
12class Pickup(CreateResource):
+13    def buy(self, **params) -> "Pickup":
+14        """Buy a pickup."""
+15        requestor = Requestor(local_api_key=self._api_key)
+16        url = "%s/%s" % (self.instance_url(), "buy")
+17        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+18        self.refresh_from(values=response, api_key=api_key)
+19        return self
+20
+21    def cancel(self, **params) -> "Pickup":
+22        """Cancel a pickup."""
+23        requestor = Requestor(local_api_key=self._api_key)
+24        url = "%s/%s" % (self.instance_url(), "cancel")
+25        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+26        self.refresh_from(values=response, api_key=api_key)
+27        return self
+28
+29    def lowest_rate(self, carriers: List[str] = None, services: List[str] = None):
+30        """Get the lowest rate of this pickup."""
+31        lowest_rate = get_lowest_object_rate(self, carriers, services, "pickup_rates")
+32
+33        return lowest_rate
+
+ + + + +
+ +
+ + def + buy(self, **params) -> easypost.pickup.Pickup: + + + +
+ +
13    def buy(self, **params) -> "Pickup":
+14        """Buy a pickup."""
+15        requestor = Requestor(local_api_key=self._api_key)
+16        url = "%s/%s" % (self.instance_url(), "buy")
+17        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+18        self.refresh_from(values=response, api_key=api_key)
+19        return self
+
+ + +

Buy a pickup.

+
+ + +
+
+ +
+ + def + cancel(self, **params) -> easypost.pickup.Pickup: + + + +
+ +
21    def cancel(self, **params) -> "Pickup":
+22        """Cancel a pickup."""
+23        requestor = Requestor(local_api_key=self._api_key)
+24        url = "%s/%s" % (self.instance_url(), "cancel")
+25        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+26        self.refresh_from(values=response, api_key=api_key)
+27        return self
+
+ + +

Cancel a pickup.

+
+ + +
+
+ +
+ + def + lowest_rate(self, carriers: List[str] = None, services: List[str] = None): + + + +
+ +
29    def lowest_rate(self, carriers: List[str] = None, services: List[str] = None):
+30        """Get the lowest rate of this pickup."""
+31        lowest_rate = get_lowest_object_rate(self, carriers, services, "pickup_rates")
+32
+33        return lowest_rate
+
+ + +

Get the lowest rate of this pickup.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/pickup_rate.html b/docs/easypost/pickup_rate.html new file mode 100644 index 00000000..9b10ad4c --- /dev/null +++ b/docs/easypost/pickup_rate.html @@ -0,0 +1,295 @@ + + + + + + + easypost.pickup_rate API documentation + + + + + + + + + +
+
+

+easypost.pickup_rate

+ + + + + + +
1from easypost.resource import Resource
+2
+3
+4class PickupRate(Resource):
+5    pass
+
+ + +
+
+ +
+ + class + PickupRate(easypost.resource.Resource): + + + +
+ +
5class PickupRate(Resource):
+6    pass
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/postage_label.html b/docs/easypost/postage_label.html new file mode 100644 index 00000000..df1ebae4 --- /dev/null +++ b/docs/easypost/postage_label.html @@ -0,0 +1,295 @@ + + + + + + + easypost.postage_label API documentation + + + + + + + + + +
+
+

+easypost.postage_label

+ + + + + + +
1from easypost.resource import Resource
+2
+3
+4class PostageLabel(Resource):
+5    pass
+
+ + +
+
+ +
+ + class + PostageLabel(easypost.resource.Resource): + + + +
+ +
5class PostageLabel(Resource):
+6    pass
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/rate.html b/docs/easypost/rate.html new file mode 100644 index 00000000..53a3628c --- /dev/null +++ b/docs/easypost/rate.html @@ -0,0 +1,295 @@ + + + + + + + easypost.rate API documentation + + + + + + + + + +
+
+

+easypost.rate

+ + + + + + +
1from easypost.resource import Resource
+2
+3
+4class Rate(Resource):
+5    pass
+
+ + +
+
+ +
+ + class + Rate(easypost.resource.Resource): + + + +
+ +
5class Rate(Resource):
+6    pass
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/referral.html b/docs/easypost/referral.html new file mode 100644 index 00000000..95802297 --- /dev/null +++ b/docs/easypost/referral.html @@ -0,0 +1,796 @@ + + + + + + + easypost.referral API documentation + + + + + + + + + +
+
+

+easypost.referral

+ + + + + + +
  1from typing import (
+  2    Any,
+  3    Dict,
+  4    List,
+  5    Optional,
+  6)
+  7
+  8import requests
+  9
+ 10from easypost.easypost_object import convert_to_easypost_object
+ 11from easypost.error import Error
+ 12from easypost.requestor import (
+ 13    RequestMethod,
+ 14    Requestor,
+ 15)
+ 16
+ 17
+ 18class Referral:
+ 19    @staticmethod
+ 20    def create(
+ 21        api_key: Optional[str] = None,
+ 22        **params,
+ 23    ) -> Dict[str, Any]:
+ 24        """Create a referral user.
+ 25
+ 26        This function requires the Partner User's API key.
+ 27        """
+ 28        requestor = Requestor(local_api_key=api_key)
+ 29        new_params = {"user": params}
+ 30        response, api_key = requestor.request(
+ 31            method=RequestMethod.POST,
+ 32            url="/referral_customers",
+ 33            params=new_params,
+ 34        )
+ 35        return convert_to_easypost_object(response=response, api_key=api_key)
+ 36
+ 37    @staticmethod
+ 38    def update_email(
+ 39        email,
+ 40        user_id,
+ 41        api_key: Optional[str] = None,
+ 42    ) -> bool:
+ 43        """Update a referral user.
+ 44
+ 45        This function requires the Partner User's API key.
+ 46        """
+ 47        requestor = Requestor(local_api_key=api_key)
+ 48        url = f"/referral_customers/{user_id}"
+ 49        wrapped_params = {
+ 50            "user": {
+ 51                "email": email,
+ 52            }
+ 53        }
+ 54        _, _ = requestor.request(
+ 55            method=RequestMethod.PUT,
+ 56            url=url,
+ 57            params=wrapped_params,
+ 58        )
+ 59
+ 60        # Return true if succeeds, an error will be thrown if it fails
+ 61        return True
+ 62
+ 63    @staticmethod
+ 64    def all(
+ 65        api_key: Optional[str] = None,
+ 66        **params,
+ 67    ) -> List:
+ 68        """Retrieve a list of referral users.
+ 69
+ 70        This function requires the Partner User's API key.
+ 71        """
+ 72        requestor = Requestor(local_api_key=api_key)
+ 73        response, api_key = requestor.request(
+ 74            method=RequestMethod.GET,
+ 75            url="/referral_customers",
+ 76            params=params,
+ 77        )
+ 78        return convert_to_easypost_object(response=response, api_key=api_key)
+ 79
+ 80    @staticmethod
+ 81    def add_credit_card(
+ 82        referral_api_key: str,
+ 83        number: str,
+ 84        expiration_month: int,
+ 85        expiration_year: int,
+ 86        cvc: str,
+ 87        primary_or_secondary: str = "primary",
+ 88    ) -> Dict[str, Any]:
+ 89        """Add credit card to a referral user.
+ 90
+ 91        This function requires the Referral User's API key.
+ 92        """
+ 93        easypost_stripe_api_key = Referral._retrieve_easypost_stripe_api_key()
+ 94
+ 95        try:
+ 96            stripe_token = Referral._create_stripe_token(
+ 97                number, expiration_month, expiration_year, cvc, easypost_stripe_api_key
+ 98            )
+ 99        except Exception:
+100            raise Error(message="Could not send card details to Stripe, please try again later")
+101
+102        response = Referral._create_easypost_credit_card(
+103            referral_api_key,
+104            stripe_token.get("id", ""),
+105            priority=primary_or_secondary,
+106        )
+107        return convert_to_easypost_object(response)
+108
+109    @staticmethod
+110    def _retrieve_easypost_stripe_api_key() -> str:
+111        """Retrieve EasyPost's Stripe public API key."""
+112        requestor = Requestor()
+113        public_key, _ = requestor.request(
+114            method=RequestMethod.GET,
+115            url="/partners/stripe_public_key",
+116        )
+117        return public_key.get("public_key", "")
+118
+119    @staticmethod
+120    def _create_stripe_token(
+121        number: str,
+122        expiration_month: int,
+123        expiration_year: int,
+124        cvc: str,
+125        easypost_stripe_key: str,
+126    ) -> Dict[str, Any]:
+127        """Get credit card token from Stripe."""
+128        headers = {
+129            # This Stripe endpoint only accepts URL form encoded bodies
+130            "Content-type": "application/x-www-form-urlencoded",
+131        }
+132
+133        credit_card_dict = {
+134            "card": {
+135                "number": number,
+136                "exp_month": expiration_month,
+137                "exp_year": expiration_year,
+138                "cvc": cvc,
+139            }
+140        }
+141
+142        form_encoded_params = Requestor.form_encode_params(credit_card_dict)
+143        url = "https://api.stripe.com/v1/tokens"
+144
+145        stripe_response = requests.post(
+146            url,
+147            params=form_encoded_params,
+148            headers=headers,
+149            auth=requests.auth.HTTPBasicAuth(easypost_stripe_key, ""),
+150        )
+151        return stripe_response.json()
+152
+153    @staticmethod
+154    def _create_easypost_credit_card(
+155        referral_api_key: str,
+156        stripe_object_id: str,
+157        priority: str = "primary",
+158    ) -> Dict[str, Any]:
+159        """Submit Stripe credit card token to EasyPost."""
+160        requestor = Requestor(local_api_key=referral_api_key)
+161
+162        params = {
+163            "credit_card": {
+164                "stripe_object_id": stripe_object_id,
+165                "priority": priority,
+166            }
+167        }
+168
+169        response, _ = requestor.request(
+170            method=RequestMethod.POST,
+171            params=params,
+172            url="/credit_cards",
+173        )
+174        return response
+
+ + +
+
+ +
+ + class + Referral: + + + +
+ +
 19class Referral:
+ 20    @staticmethod
+ 21    def create(
+ 22        api_key: Optional[str] = None,
+ 23        **params,
+ 24    ) -> Dict[str, Any]:
+ 25        """Create a referral user.
+ 26
+ 27        This function requires the Partner User's API key.
+ 28        """
+ 29        requestor = Requestor(local_api_key=api_key)
+ 30        new_params = {"user": params}
+ 31        response, api_key = requestor.request(
+ 32            method=RequestMethod.POST,
+ 33            url="/referral_customers",
+ 34            params=new_params,
+ 35        )
+ 36        return convert_to_easypost_object(response=response, api_key=api_key)
+ 37
+ 38    @staticmethod
+ 39    def update_email(
+ 40        email,
+ 41        user_id,
+ 42        api_key: Optional[str] = None,
+ 43    ) -> bool:
+ 44        """Update a referral user.
+ 45
+ 46        This function requires the Partner User's API key.
+ 47        """
+ 48        requestor = Requestor(local_api_key=api_key)
+ 49        url = f"/referral_customers/{user_id}"
+ 50        wrapped_params = {
+ 51            "user": {
+ 52                "email": email,
+ 53            }
+ 54        }
+ 55        _, _ = requestor.request(
+ 56            method=RequestMethod.PUT,
+ 57            url=url,
+ 58            params=wrapped_params,
+ 59        )
+ 60
+ 61        # Return true if succeeds, an error will be thrown if it fails
+ 62        return True
+ 63
+ 64    @staticmethod
+ 65    def all(
+ 66        api_key: Optional[str] = None,
+ 67        **params,
+ 68    ) -> List:
+ 69        """Retrieve a list of referral users.
+ 70
+ 71        This function requires the Partner User's API key.
+ 72        """
+ 73        requestor = Requestor(local_api_key=api_key)
+ 74        response, api_key = requestor.request(
+ 75            method=RequestMethod.GET,
+ 76            url="/referral_customers",
+ 77            params=params,
+ 78        )
+ 79        return convert_to_easypost_object(response=response, api_key=api_key)
+ 80
+ 81    @staticmethod
+ 82    def add_credit_card(
+ 83        referral_api_key: str,
+ 84        number: str,
+ 85        expiration_month: int,
+ 86        expiration_year: int,
+ 87        cvc: str,
+ 88        primary_or_secondary: str = "primary",
+ 89    ) -> Dict[str, Any]:
+ 90        """Add credit card to a referral user.
+ 91
+ 92        This function requires the Referral User's API key.
+ 93        """
+ 94        easypost_stripe_api_key = Referral._retrieve_easypost_stripe_api_key()
+ 95
+ 96        try:
+ 97            stripe_token = Referral._create_stripe_token(
+ 98                number, expiration_month, expiration_year, cvc, easypost_stripe_api_key
+ 99            )
+100        except Exception:
+101            raise Error(message="Could not send card details to Stripe, please try again later")
+102
+103        response = Referral._create_easypost_credit_card(
+104            referral_api_key,
+105            stripe_token.get("id", ""),
+106            priority=primary_or_secondary,
+107        )
+108        return convert_to_easypost_object(response)
+109
+110    @staticmethod
+111    def _retrieve_easypost_stripe_api_key() -> str:
+112        """Retrieve EasyPost's Stripe public API key."""
+113        requestor = Requestor()
+114        public_key, _ = requestor.request(
+115            method=RequestMethod.GET,
+116            url="/partners/stripe_public_key",
+117        )
+118        return public_key.get("public_key", "")
+119
+120    @staticmethod
+121    def _create_stripe_token(
+122        number: str,
+123        expiration_month: int,
+124        expiration_year: int,
+125        cvc: str,
+126        easypost_stripe_key: str,
+127    ) -> Dict[str, Any]:
+128        """Get credit card token from Stripe."""
+129        headers = {
+130            # This Stripe endpoint only accepts URL form encoded bodies
+131            "Content-type": "application/x-www-form-urlencoded",
+132        }
+133
+134        credit_card_dict = {
+135            "card": {
+136                "number": number,
+137                "exp_month": expiration_month,
+138                "exp_year": expiration_year,
+139                "cvc": cvc,
+140            }
+141        }
+142
+143        form_encoded_params = Requestor.form_encode_params(credit_card_dict)
+144        url = "https://api.stripe.com/v1/tokens"
+145
+146        stripe_response = requests.post(
+147            url,
+148            params=form_encoded_params,
+149            headers=headers,
+150            auth=requests.auth.HTTPBasicAuth(easypost_stripe_key, ""),
+151        )
+152        return stripe_response.json()
+153
+154    @staticmethod
+155    def _create_easypost_credit_card(
+156        referral_api_key: str,
+157        stripe_object_id: str,
+158        priority: str = "primary",
+159    ) -> Dict[str, Any]:
+160        """Submit Stripe credit card token to EasyPost."""
+161        requestor = Requestor(local_api_key=referral_api_key)
+162
+163        params = {
+164            "credit_card": {
+165                "stripe_object_id": stripe_object_id,
+166                "priority": priority,
+167            }
+168        }
+169
+170        response, _ = requestor.request(
+171            method=RequestMethod.POST,
+172            params=params,
+173            url="/credit_cards",
+174        )
+175        return response
+
+ + + + +
+
+ + Referral() + + +
+ + + + +
+
+ +
+
@staticmethod
+ + def + create(api_key: Optional[str] = None, **params) -> Dict[str, Any]: + + + +
+ +
20    @staticmethod
+21    def create(
+22        api_key: Optional[str] = None,
+23        **params,
+24    ) -> Dict[str, Any]:
+25        """Create a referral user.
+26
+27        This function requires the Partner User's API key.
+28        """
+29        requestor = Requestor(local_api_key=api_key)
+30        new_params = {"user": params}
+31        response, api_key = requestor.request(
+32            method=RequestMethod.POST,
+33            url="/referral_customers",
+34            params=new_params,
+35        )
+36        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Create a referral user.

+ +

This function requires the Partner User's API key.

+
+ + +
+
+ +
+
@staticmethod
+ + def + update_email(email, user_id, api_key: Optional[str] = None) -> bool: + + + +
+ +
38    @staticmethod
+39    def update_email(
+40        email,
+41        user_id,
+42        api_key: Optional[str] = None,
+43    ) -> bool:
+44        """Update a referral user.
+45
+46        This function requires the Partner User's API key.
+47        """
+48        requestor = Requestor(local_api_key=api_key)
+49        url = f"/referral_customers/{user_id}"
+50        wrapped_params = {
+51            "user": {
+52                "email": email,
+53            }
+54        }
+55        _, _ = requestor.request(
+56            method=RequestMethod.PUT,
+57            url=url,
+58            params=wrapped_params,
+59        )
+60
+61        # Return true if succeeds, an error will be thrown if it fails
+62        return True
+
+ + +

Update a referral user.

+ +

This function requires the Partner User's API key.

+
+ + +
+
+ +
+
@staticmethod
+ + def + all(api_key: Optional[str] = None, **params) -> List: + + + +
+ +
64    @staticmethod
+65    def all(
+66        api_key: Optional[str] = None,
+67        **params,
+68    ) -> List:
+69        """Retrieve a list of referral users.
+70
+71        This function requires the Partner User's API key.
+72        """
+73        requestor = Requestor(local_api_key=api_key)
+74        response, api_key = requestor.request(
+75            method=RequestMethod.GET,
+76            url="/referral_customers",
+77            params=params,
+78        )
+79        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Retrieve a list of referral users.

+ +

This function requires the Partner User's API key.

+
+ + +
+
+ +
+
@staticmethod
+ + def + add_credit_card( referral_api_key: str, number: str, expiration_month: int, expiration_year: int, cvc: str, primary_or_secondary: str = 'primary') -> Dict[str, Any]: + + + +
+ +
 81    @staticmethod
+ 82    def add_credit_card(
+ 83        referral_api_key: str,
+ 84        number: str,
+ 85        expiration_month: int,
+ 86        expiration_year: int,
+ 87        cvc: str,
+ 88        primary_or_secondary: str = "primary",
+ 89    ) -> Dict[str, Any]:
+ 90        """Add credit card to a referral user.
+ 91
+ 92        This function requires the Referral User's API key.
+ 93        """
+ 94        easypost_stripe_api_key = Referral._retrieve_easypost_stripe_api_key()
+ 95
+ 96        try:
+ 97            stripe_token = Referral._create_stripe_token(
+ 98                number, expiration_month, expiration_year, cvc, easypost_stripe_api_key
+ 99            )
+100        except Exception:
+101            raise Error(message="Could not send card details to Stripe, please try again later")
+102
+103        response = Referral._create_easypost_credit_card(
+104            referral_api_key,
+105            stripe_token.get("id", ""),
+106            priority=primary_or_secondary,
+107        )
+108        return convert_to_easypost_object(response)
+
+ + +

Add credit card to a referral user.

+ +

This function requires the Referral User's API key.

+
+ + +
+
+
+ + \ No newline at end of file diff --git a/docs/easypost/refund.html b/docs/easypost/refund.html new file mode 100644 index 00000000..035cd2c1 --- /dev/null +++ b/docs/easypost/refund.html @@ -0,0 +1,306 @@ + + + + + + + easypost.refund API documentation + + + + + + + + + +
+
+

+easypost.refund

+ + + + + + +
1from easypost.resource import (
+2    AllResource,
+3    CreateResource,
+4)
+5
+6
+7class Refund(CreateResource, AllResource):
+8    pass
+
+ + +
+
+ +
+ + class + Refund(easypost.resource.CreateResource, easypost.resource.AllResource): + + + +
+ +
8class Refund(CreateResource, AllResource):
+9    pass
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/report.html b/docs/easypost/report.html new file mode 100644 index 00000000..8103fd08 --- /dev/null +++ b/docs/easypost/report.html @@ -0,0 +1,390 @@ + + + + + + + easypost.report API documentation + + + + + + + + + +
+
+

+easypost.report

+ + + + + + +
 1from typing import Optional
+ 2
+ 3from easypost.easypost_object import convert_to_easypost_object
+ 4from easypost.requestor import (
+ 5    RequestMethod,
+ 6    Requestor,
+ 7)
+ 8from easypost.resource import Resource
+ 9
+10
+11class Report(Resource):
+12    @classmethod
+13    def create(cls, api_key: Optional[str] = None, **params):
+14        """Create a report."""
+15        requestor = Requestor(local_api_key=api_key)
+16        url = f"{cls.class_url()}/{params.get('type')}"
+17        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+18        return convert_to_easypost_object(response=response, api_key=api_key)
+19
+20    @classmethod
+21    def all(cls, api_key: Optional[str] = None, **params):
+22        """Retrieve all reports."""
+23        requestor = Requestor(local_api_key=api_key)
+24        url = f"{cls.class_url()}/{params.get('type')}"
+25        response, api_key = requestor.request(method=RequestMethod.GET, url=url, params=params)
+26        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +
+
+ +
+ + class + Report(easypost.resource.Resource): + + + +
+ +
12class Report(Resource):
+13    @classmethod
+14    def create(cls, api_key: Optional[str] = None, **params):
+15        """Create a report."""
+16        requestor = Requestor(local_api_key=api_key)
+17        url = f"{cls.class_url()}/{params.get('type')}"
+18        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+19        return convert_to_easypost_object(response=response, api_key=api_key)
+20
+21    @classmethod
+22    def all(cls, api_key: Optional[str] = None, **params):
+23        """Retrieve all reports."""
+24        requestor = Requestor(local_api_key=api_key)
+25        url = f"{cls.class_url()}/{params.get('type')}"
+26        response, api_key = requestor.request(method=RequestMethod.GET, url=url, params=params)
+27        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + + + +
+ +
+
@classmethod
+ + def + create(cls, api_key: Optional[str] = None, **params): + + + +
+ +
13    @classmethod
+14    def create(cls, api_key: Optional[str] = None, **params):
+15        """Create a report."""
+16        requestor = Requestor(local_api_key=api_key)
+17        url = f"{cls.class_url()}/{params.get('type')}"
+18        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+19        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Create a report.

+
+ + +
+
+ +
+
@classmethod
+ + def + all(cls, api_key: Optional[str] = None, **params): + + + +
+ +
21    @classmethod
+22    def all(cls, api_key: Optional[str] = None, **params):
+23        """Retrieve all reports."""
+24        requestor = Requestor(local_api_key=api_key)
+25        url = f"{cls.class_url()}/{params.get('type')}"
+26        response, api_key = requestor.request(method=RequestMethod.GET, url=url, params=params)
+27        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Retrieve all reports.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/requestor.html b/docs/easypost/requestor.html new file mode 100644 index 00000000..53191be2 --- /dev/null +++ b/docs/easypost/requestor.html @@ -0,0 +1,1393 @@ + + + + + + + easypost.requestor API documentation + + + + + + + + + +
+
+

+easypost.requestor

+ + + + + + +
  1import datetime
+  2import json
+  3import platform
+  4import time
+  5from enum import Enum
+  6from json import JSONDecodeError
+  7from typing import (
+  8    Any,
+  9    Dict,
+ 10    List,
+ 11    Optional,
+ 12    Tuple,
+ 13    Union,
+ 14)
+ 15from urllib.parse import urlencode
+ 16
+ 17from easypost.constant import (
+ 18    SUPPORT_EMAIL,
+ 19    TIMEOUT,
+ 20)
+ 21from easypost.easypost_object import EasyPostObject
+ 22from easypost.error import Error
+ 23
+ 24
+ 25class RequestMethod(Enum):
+ 26    GET = "get"
+ 27    POST = "post"
+ 28    PUT = "put"
+ 29    PATCH = "patch"
+ 30    DELETE = "delete"
+ 31
+ 32
+ 33class Requestor:
+ 34    def __init__(self, local_api_key: Optional[str] = None):
+ 35        self._api_key = local_api_key
+ 36
+ 37    @classmethod
+ 38    def _objects_to_ids(cls, param: Dict[str, Any]) -> Dict[str, Any]:
+ 39        """If providing an object as a parameter to another object,
+ 40        only pass along the ID so the API will use the object reference correctly."""
+ 41        if isinstance(param, EasyPostObject):
+ 42            return {"id": param.id}
+ 43        elif isinstance(param, dict):
+ 44            data = {}
+ 45            for (k, v) in param.items():
+ 46                if isinstance(v, list):
+ 47                    data[k] = [cls._objects_to_ids(item) for item in v]  # type: ignore
+ 48                else:
+ 49                    data[k] = cls._objects_to_ids(v)  # type: ignore
+ 50            return data
+ 51        else:
+ 52            return param
+ 53
+ 54    @staticmethod
+ 55    def form_encode_params(data: Dict, parent_keys: List[str] = None, parent_dict: Dict = None) -> Dict:
+ 56        """Form-encode a multi-layer dictionary to a one-layer dictionary."""
+ 57        result = parent_dict or {}
+ 58        keys = parent_keys or []
+ 59
+ 60        for key, value in data.items():
+ 61            if isinstance(value, dict):
+ 62                keys.append(key)
+ 63                result = Requestor.form_encode_params(data=value, parent_keys=keys, parent_dict=result)
+ 64            else:
+ 65                dict_key = Requestor._build_dict_key(keys + [key])
+ 66                result[dict_key] = value
+ 67        return result
+ 68
+ 69    @staticmethod
+ 70    def _build_dict_key(keys: List[str]) -> str:
+ 71        """Build a dict key from a list of keys.
+ 72        Example: [code, number] -> code[number]
+ 73        """
+ 74        result = keys[0]
+ 75
+ 76        for key in keys[1:]:
+ 77            result += f"[{key}]"
+ 78        return result
+ 79
+ 80    def request(
+ 81        self,
+ 82        method: RequestMethod,
+ 83        url: str,
+ 84        params: Optional[Dict[str, Any]] = None,
+ 85        api_key_required: bool = True,
+ 86        beta: bool = False,
+ 87    ) -> Tuple[dict, Optional[str]]:
+ 88        """Make a request to the EasyPost API."""
+ 89        if params is None:
+ 90            params = {}
+ 91        http_body, http_status, my_api_key = self.request_raw(
+ 92            method=method,
+ 93            url=url,
+ 94            params=params,
+ 95            api_key_required=api_key_required,
+ 96            beta=beta,
+ 97        )
+ 98        response = self.interpret_response(http_body=http_body, http_status=http_status)
+ 99        return response, my_api_key
+100
+101    def request_raw(
+102        self,
+103        method: RequestMethod,
+104        url: str,
+105        params: Optional[Dict[str, Any]] = None,
+106        api_key_required: bool = True,
+107        beta: bool = False,
+108    ) -> Tuple[str, int, Optional[str]]:
+109        """Internal logic required to make a request to the EasyPost API."""
+110        # Importing here to avoid circular imports
+111        from easypost import (
+112            VERSION,
+113            api_base,
+114            api_key,
+115        )
+116
+117        my_api_key = self._api_key or api_key
+118
+119        if api_key_required and my_api_key is None:
+120            raise Error(
+121                "No API key provided. Set an API key via \"easypost.api_key = 'APIKEY'. "
+122                "Your API keys can be found in your EasyPost dashboard, or you can email us "
+123                f"at {SUPPORT_EMAIL} for assistance."
+124            )
+125
+126        if beta:
+127            abs_url = f"https://api.easypost.com/beta{url}"
+128        else:
+129            abs_url = f"{api_base}{url}"
+130
+131        params = self._objects_to_ids(param=params or {})
+132
+133        # Fallback values for the user-agent header
+134        user_agent = {
+135            "client_version": VERSION,
+136            "implementation": "NA",
+137            "os_arch": "NA",
+138            "os_version": "NA",
+139            "os": "NA",
+140            "python_version": "NA",
+141        }
+142
+143        # Attempt to populate the user-agent header
+144        for attr, func in (
+145            ("implementation", platform.python_implementation),
+146            ("os_details", platform.uname),
+147            ("python_version", platform.python_version),
+148        ):
+149            try:
+150                val = func()  # type: ignore
+151                if attr == "os_details":
+152                    user_agent["os"] = val[0]
+153                    user_agent["os_version"] = val[2]
+154                    user_agent["os_arch"] = val[4]
+155                else:
+156                    user_agent[attr] = val  # type: ignore
+157            except Exception:  # nosec
+158                # If we fail to get OS info, do nothing as we already set fallbacks for these values
+159                pass
+160
+161        user_agent = (
+162            f"EasyPost/v2 PythonClient/{VERSION} Python/{user_agent['python_version']}"  # type: ignore
+163            f" OS/{user_agent['os']} OSVersion/{user_agent['os_version']} OSArch/{user_agent['os_arch']}"
+164            f" Implementation/{user_agent['implementation']}"
+165        )
+166
+167        headers = {
+168            "Authorization": "Bearer %s" % my_api_key,
+169            "User-Agent": user_agent,
+170        }
+171
+172        if request_lib == "urlfetch":
+173            http_body, http_status = self.urlfetch_request(
+174                method=method, abs_url=abs_url, headers=headers, params=params
+175            )
+176        elif request_lib == "requests":
+177            http_body, http_status = self.requests_request(
+178                method=method, abs_url=abs_url, headers=headers, params=params
+179            )
+180        else:
+181            raise Error(f"Bug discovered: invalid request_lib: {request_lib}. Please report to {SUPPORT_EMAIL}.")
+182
+183        return http_body, http_status, my_api_key
+184
+185    def interpret_response(self, http_body: str, http_status: int) -> Dict[str, Any]:
+186        """Interpret the response body we receive from the API."""
+187        if http_status == 204:
+188            # HTTP 204 does not have any response body and we can just return here
+189            return {}
+190        try:
+191            response = json.loads(http_body)
+192        except JSONDecodeError:
+193            raise Exception(
+194                f"Unable to parse response body from API: {http_body}\nHTTP response code was: {http_status}"
+195            )
+196        if not (200 <= http_status < 300):
+197            self.handle_api_error(http_status=http_status, http_body=http_body, response=response)
+198        return response
+199
+200    def requests_request(
+201        self,
+202        method: RequestMethod,
+203        abs_url: str,
+204        headers: Dict[str, Any],
+205        params: Dict[str, Any],
+206    ) -> Tuple[str, int]:
+207        """Make a request by using the `request` library."""
+208        if method in [RequestMethod.GET, RequestMethod.DELETE]:
+209            url_params = params
+210            body = None
+211        elif method in [RequestMethod.POST, RequestMethod.PATCH, RequestMethod.PUT]:
+212            url_params = None
+213            body = params
+214        else:
+215            # how did you reach here with an enum?
+216            raise Error(f"Bug discovered: invalid request method: {method}. Please report to {SUPPORT_EMAIL}.")
+217
+218        if url_params and method not in [RequestMethod.GET, RequestMethod.DELETE]:
+219            raise Error("Only GET and DELETE requests support parameters.")
+220
+221        try:
+222            result = requests_session.request(
+223                method=method.value,
+224                url=abs_url,
+225                params=url_params,
+226                headers=headers,
+227                json=body,
+228                timeout=timeout,
+229                verify=True,
+230            )
+231            http_body = result.text
+232            http_status = result.status_code
+233        except Exception as e:
+234            raise Error(
+235                "Unexpected error communicating with EasyPost. If this "
+236                f"problem persists please let us know at {SUPPORT_EMAIL}.",
+237                original_exception=e,
+238            )
+239        return http_body, http_status
+240
+241    def urlfetch_request(
+242        self,
+243        method: RequestMethod,
+244        abs_url: str,
+245        headers: Dict[str, Any],
+246        params: Dict[str, Any],
+247    ) -> Tuple[str, int]:
+248        """Make a request by using the `urlfetch` library."""
+249        fetch_args = {"method": method.value, "headers": headers, "validate_certificate": False, "deadline": timeout}
+250        if method in [RequestMethod.GET, RequestMethod.DELETE]:
+251            # GET/DELETE requests use query params
+252            fetch_args["url"] = self.add_params_to_url(url=abs_url, params=params, method=method)
+253        elif method in [RequestMethod.POST, RequestMethod.PUT]:
+254            fetch_args["url"] = abs_url
+255            # POST/PUT requests use body params
+256            fetch_args["payload"] = json.dumps(params, default=self._utf8)
+257        else:
+258            # how did you reach here with an enum?
+259            raise Error(f"Bug discovered: invalid request method: {method}. Please report to {SUPPORT_EMAIL}.")
+260
+261        try:
+262            from google.appengine.api import urlfetch  # type: ignore
+263
+264            result = urlfetch.fetch(**fetch_args)  # type: ignore
+265        except Exception as e:
+266            raise Error(
+267                "Unexpected error communicating with EasyPost. "
+268                f"If this problem persists, let us know at {SUPPORT_EMAIL}.",
+269                original_exception=e,
+270            )
+271
+272        return result.content, result.status_code
+273
+274    def handle_api_error(self, http_status: int, http_body: str, response: Dict[str, Any]) -> None:
+275        """Handles API errors returned from EasyPost."""
+276        try:
+277            error = response["error"]
+278        except (KeyError, TypeError):
+279            raise Error("Invalid response from API: (%d) %r " % (http_status, http_body), http_status, http_body)
+280
+281        try:
+282            raise Error(message=error.get("message", ""), http_status=http_status, http_body=http_body)
+283        except AttributeError:
+284            raise Error(message=error, http_status=http_status, http_body=http_body)
+285
+286    def _utf8(self, value: Union[str, bytes]) -> str:
+287        # Python3's str(bytestring) returns "b'bytestring'" so we use .decode instead
+288        if isinstance(value, bytes):
+289            return value.decode(encoding="utf-8")
+290        return value
+291
+292    def encode_url_params(self, params: Dict[str, Any], method: RequestMethod) -> Union[str, None]:
+293        """Encode params for a URL."""
+294        if method not in [RequestMethod.GET, RequestMethod.DELETE]:
+295            raise Error("Only GET and DELETE requests support parameters.")
+296        converted_params = []
+297        for key, value in sorted(params.items()):
+298            if value is None:
+299                continue  # Don't add Nones to the query
+300            elif isinstance(value, datetime.datetime):
+301                value = int(time.mktime(value.timetuple()))  # to UTC timestamp
+302            converted_params.append((key, value))
+303        return urlencode(query=converted_params)
+304
+305    def add_params_to_url(self, url: str, params: Dict[str, Any], method: RequestMethod) -> str:
+306        """Add params to the URL."""
+307        if method not in [RequestMethod.GET, RequestMethod.DELETE]:
+308            raise Error("Only GET and DELETE requests support parameters.")
+309        encoded_params = self.encode_url_params(params=params, method=method)
+310        if encoded_params:
+311            return "%s?%s" % (url, encoded_params)
+312        return url
+313
+314
+315# use urlfetch as request_lib on google app engine, otherwise use requests
+316request_lib = None
+317try:
+318    from google.appengine.api import urlfetch
+319
+320    request_lib = "urlfetch"
+321    # use the GAE application-wide "deadline" (or its default)
+322    timeout = urlfetch.get_default_fetch_deadline() or TIMEOUT
+323except ImportError:
+324    timeout = TIMEOUT
+325    try:
+326        import requests
+327
+328        request_lib = "requests"
+329        requests_session = requests.Session()
+330        requests_http_adapter = requests.adapters.HTTPAdapter(max_retries=3)
+331        requests_session.mount(prefix="https://api.easypost.com", adapter=requests_http_adapter)
+332    except Exception:
+333        raise ImportError(
+334            "EasyPost requires an up to date requests library. "
+335            'Update requests via "pip install -U requests" or '
+336            f"contact us at {SUPPORT_EMAIL}."
+337        )
+338
+339    try:
+340        version = requests.__version__
+341        major, minor, patch = [int(i) for i in version.split(".")]
+342    except Exception:
+343        raise ImportError(
+344            "EasyPost requires an up to date requests library. "
+345            'Update requests via "pip install -U requests" or contact '
+346            f"us at {SUPPORT_EMAIL}."
+347        )
+348    else:
+349        if major < 1:
+350            raise ImportError(
+351                "EasyPost requires an up to date requests library. Update "
+352                'requests via "pip install -U requests" or contact us '
+353                f"at {SUPPORT_EMAIL}."
+354            )
+
+ + +
+
+ +
+ + class + RequestMethod(enum.Enum): + + + +
+ +
26class RequestMethod(Enum):
+27    GET = "get"
+28    POST = "post"
+29    PUT = "put"
+30    PATCH = "patch"
+31    DELETE = "delete"
+
+ + +

An enumeration.

+
+ + +
+
Inherited Members
+
+
enum.Enum
+
name
+
value
+ +
+
+
+
+
+ +
+ + class + Requestor: + + + +
+ +
 34class Requestor:
+ 35    def __init__(self, local_api_key: Optional[str] = None):
+ 36        self._api_key = local_api_key
+ 37
+ 38    @classmethod
+ 39    def _objects_to_ids(cls, param: Dict[str, Any]) -> Dict[str, Any]:
+ 40        """If providing an object as a parameter to another object,
+ 41        only pass along the ID so the API will use the object reference correctly."""
+ 42        if isinstance(param, EasyPostObject):
+ 43            return {"id": param.id}
+ 44        elif isinstance(param, dict):
+ 45            data = {}
+ 46            for (k, v) in param.items():
+ 47                if isinstance(v, list):
+ 48                    data[k] = [cls._objects_to_ids(item) for item in v]  # type: ignore
+ 49                else:
+ 50                    data[k] = cls._objects_to_ids(v)  # type: ignore
+ 51            return data
+ 52        else:
+ 53            return param
+ 54
+ 55    @staticmethod
+ 56    def form_encode_params(data: Dict, parent_keys: List[str] = None, parent_dict: Dict = None) -> Dict:
+ 57        """Form-encode a multi-layer dictionary to a one-layer dictionary."""
+ 58        result = parent_dict or {}
+ 59        keys = parent_keys or []
+ 60
+ 61        for key, value in data.items():
+ 62            if isinstance(value, dict):
+ 63                keys.append(key)
+ 64                result = Requestor.form_encode_params(data=value, parent_keys=keys, parent_dict=result)
+ 65            else:
+ 66                dict_key = Requestor._build_dict_key(keys + [key])
+ 67                result[dict_key] = value
+ 68        return result
+ 69
+ 70    @staticmethod
+ 71    def _build_dict_key(keys: List[str]) -> str:
+ 72        """Build a dict key from a list of keys.
+ 73        Example: [code, number] -> code[number]
+ 74        """
+ 75        result = keys[0]
+ 76
+ 77        for key in keys[1:]:
+ 78            result += f"[{key}]"
+ 79        return result
+ 80
+ 81    def request(
+ 82        self,
+ 83        method: RequestMethod,
+ 84        url: str,
+ 85        params: Optional[Dict[str, Any]] = None,
+ 86        api_key_required: bool = True,
+ 87        beta: bool = False,
+ 88    ) -> Tuple[dict, Optional[str]]:
+ 89        """Make a request to the EasyPost API."""
+ 90        if params is None:
+ 91            params = {}
+ 92        http_body, http_status, my_api_key = self.request_raw(
+ 93            method=method,
+ 94            url=url,
+ 95            params=params,
+ 96            api_key_required=api_key_required,
+ 97            beta=beta,
+ 98        )
+ 99        response = self.interpret_response(http_body=http_body, http_status=http_status)
+100        return response, my_api_key
+101
+102    def request_raw(
+103        self,
+104        method: RequestMethod,
+105        url: str,
+106        params: Optional[Dict[str, Any]] = None,
+107        api_key_required: bool = True,
+108        beta: bool = False,
+109    ) -> Tuple[str, int, Optional[str]]:
+110        """Internal logic required to make a request to the EasyPost API."""
+111        # Importing here to avoid circular imports
+112        from easypost import (
+113            VERSION,
+114            api_base,
+115            api_key,
+116        )
+117
+118        my_api_key = self._api_key or api_key
+119
+120        if api_key_required and my_api_key is None:
+121            raise Error(
+122                "No API key provided. Set an API key via \"easypost.api_key = 'APIKEY'. "
+123                "Your API keys can be found in your EasyPost dashboard, or you can email us "
+124                f"at {SUPPORT_EMAIL} for assistance."
+125            )
+126
+127        if beta:
+128            abs_url = f"https://api.easypost.com/beta{url}"
+129        else:
+130            abs_url = f"{api_base}{url}"
+131
+132        params = self._objects_to_ids(param=params or {})
+133
+134        # Fallback values for the user-agent header
+135        user_agent = {
+136            "client_version": VERSION,
+137            "implementation": "NA",
+138            "os_arch": "NA",
+139            "os_version": "NA",
+140            "os": "NA",
+141            "python_version": "NA",
+142        }
+143
+144        # Attempt to populate the user-agent header
+145        for attr, func in (
+146            ("implementation", platform.python_implementation),
+147            ("os_details", platform.uname),
+148            ("python_version", platform.python_version),
+149        ):
+150            try:
+151                val = func()  # type: ignore
+152                if attr == "os_details":
+153                    user_agent["os"] = val[0]
+154                    user_agent["os_version"] = val[2]
+155                    user_agent["os_arch"] = val[4]
+156                else:
+157                    user_agent[attr] = val  # type: ignore
+158            except Exception:  # nosec
+159                # If we fail to get OS info, do nothing as we already set fallbacks for these values
+160                pass
+161
+162        user_agent = (
+163            f"EasyPost/v2 PythonClient/{VERSION} Python/{user_agent['python_version']}"  # type: ignore
+164            f" OS/{user_agent['os']} OSVersion/{user_agent['os_version']} OSArch/{user_agent['os_arch']}"
+165            f" Implementation/{user_agent['implementation']}"
+166        )
+167
+168        headers = {
+169            "Authorization": "Bearer %s" % my_api_key,
+170            "User-Agent": user_agent,
+171        }
+172
+173        if request_lib == "urlfetch":
+174            http_body, http_status = self.urlfetch_request(
+175                method=method, abs_url=abs_url, headers=headers, params=params
+176            )
+177        elif request_lib == "requests":
+178            http_body, http_status = self.requests_request(
+179                method=method, abs_url=abs_url, headers=headers, params=params
+180            )
+181        else:
+182            raise Error(f"Bug discovered: invalid request_lib: {request_lib}. Please report to {SUPPORT_EMAIL}.")
+183
+184        return http_body, http_status, my_api_key
+185
+186    def interpret_response(self, http_body: str, http_status: int) -> Dict[str, Any]:
+187        """Interpret the response body we receive from the API."""
+188        if http_status == 204:
+189            # HTTP 204 does not have any response body and we can just return here
+190            return {}
+191        try:
+192            response = json.loads(http_body)
+193        except JSONDecodeError:
+194            raise Exception(
+195                f"Unable to parse response body from API: {http_body}\nHTTP response code was: {http_status}"
+196            )
+197        if not (200 <= http_status < 300):
+198            self.handle_api_error(http_status=http_status, http_body=http_body, response=response)
+199        return response
+200
+201    def requests_request(
+202        self,
+203        method: RequestMethod,
+204        abs_url: str,
+205        headers: Dict[str, Any],
+206        params: Dict[str, Any],
+207    ) -> Tuple[str, int]:
+208        """Make a request by using the `request` library."""
+209        if method in [RequestMethod.GET, RequestMethod.DELETE]:
+210            url_params = params
+211            body = None
+212        elif method in [RequestMethod.POST, RequestMethod.PATCH, RequestMethod.PUT]:
+213            url_params = None
+214            body = params
+215        else:
+216            # how did you reach here with an enum?
+217            raise Error(f"Bug discovered: invalid request method: {method}. Please report to {SUPPORT_EMAIL}.")
+218
+219        if url_params and method not in [RequestMethod.GET, RequestMethod.DELETE]:
+220            raise Error("Only GET and DELETE requests support parameters.")
+221
+222        try:
+223            result = requests_session.request(
+224                method=method.value,
+225                url=abs_url,
+226                params=url_params,
+227                headers=headers,
+228                json=body,
+229                timeout=timeout,
+230                verify=True,
+231            )
+232            http_body = result.text
+233            http_status = result.status_code
+234        except Exception as e:
+235            raise Error(
+236                "Unexpected error communicating with EasyPost. If this "
+237                f"problem persists please let us know at {SUPPORT_EMAIL}.",
+238                original_exception=e,
+239            )
+240        return http_body, http_status
+241
+242    def urlfetch_request(
+243        self,
+244        method: RequestMethod,
+245        abs_url: str,
+246        headers: Dict[str, Any],
+247        params: Dict[str, Any],
+248    ) -> Tuple[str, int]:
+249        """Make a request by using the `urlfetch` library."""
+250        fetch_args = {"method": method.value, "headers": headers, "validate_certificate": False, "deadline": timeout}
+251        if method in [RequestMethod.GET, RequestMethod.DELETE]:
+252            # GET/DELETE requests use query params
+253            fetch_args["url"] = self.add_params_to_url(url=abs_url, params=params, method=method)
+254        elif method in [RequestMethod.POST, RequestMethod.PUT]:
+255            fetch_args["url"] = abs_url
+256            # POST/PUT requests use body params
+257            fetch_args["payload"] = json.dumps(params, default=self._utf8)
+258        else:
+259            # how did you reach here with an enum?
+260            raise Error(f"Bug discovered: invalid request method: {method}. Please report to {SUPPORT_EMAIL}.")
+261
+262        try:
+263            from google.appengine.api import urlfetch  # type: ignore
+264
+265            result = urlfetch.fetch(**fetch_args)  # type: ignore
+266        except Exception as e:
+267            raise Error(
+268                "Unexpected error communicating with EasyPost. "
+269                f"If this problem persists, let us know at {SUPPORT_EMAIL}.",
+270                original_exception=e,
+271            )
+272
+273        return result.content, result.status_code
+274
+275    def handle_api_error(self, http_status: int, http_body: str, response: Dict[str, Any]) -> None:
+276        """Handles API errors returned from EasyPost."""
+277        try:
+278            error = response["error"]
+279        except (KeyError, TypeError):
+280            raise Error("Invalid response from API: (%d) %r " % (http_status, http_body), http_status, http_body)
+281
+282        try:
+283            raise Error(message=error.get("message", ""), http_status=http_status, http_body=http_body)
+284        except AttributeError:
+285            raise Error(message=error, http_status=http_status, http_body=http_body)
+286
+287    def _utf8(self, value: Union[str, bytes]) -> str:
+288        # Python3's str(bytestring) returns "b'bytestring'" so we use .decode instead
+289        if isinstance(value, bytes):
+290            return value.decode(encoding="utf-8")
+291        return value
+292
+293    def encode_url_params(self, params: Dict[str, Any], method: RequestMethod) -> Union[str, None]:
+294        """Encode params for a URL."""
+295        if method not in [RequestMethod.GET, RequestMethod.DELETE]:
+296            raise Error("Only GET and DELETE requests support parameters.")
+297        converted_params = []
+298        for key, value in sorted(params.items()):
+299            if value is None:
+300                continue  # Don't add Nones to the query
+301            elif isinstance(value, datetime.datetime):
+302                value = int(time.mktime(value.timetuple()))  # to UTC timestamp
+303            converted_params.append((key, value))
+304        return urlencode(query=converted_params)
+305
+306    def add_params_to_url(self, url: str, params: Dict[str, Any], method: RequestMethod) -> str:
+307        """Add params to the URL."""
+308        if method not in [RequestMethod.GET, RequestMethod.DELETE]:
+309            raise Error("Only GET and DELETE requests support parameters.")
+310        encoded_params = self.encode_url_params(params=params, method=method)
+311        if encoded_params:
+312            return "%s?%s" % (url, encoded_params)
+313        return url
+
+ + + + +
+ +
+ + Requestor(local_api_key: Optional[str] = None) + + + +
+ +
35    def __init__(self, local_api_key: Optional[str] = None):
+36        self._api_key = local_api_key
+
+ + + + +
+
+ +
+
@staticmethod
+ + def + form_encode_params( data: Dict, parent_keys: List[str] = None, parent_dict: Dict = None) -> Dict: + + + +
+ +
55    @staticmethod
+56    def form_encode_params(data: Dict, parent_keys: List[str] = None, parent_dict: Dict = None) -> Dict:
+57        """Form-encode a multi-layer dictionary to a one-layer dictionary."""
+58        result = parent_dict or {}
+59        keys = parent_keys or []
+60
+61        for key, value in data.items():
+62            if isinstance(value, dict):
+63                keys.append(key)
+64                result = Requestor.form_encode_params(data=value, parent_keys=keys, parent_dict=result)
+65            else:
+66                dict_key = Requestor._build_dict_key(keys + [key])
+67                result[dict_key] = value
+68        return result
+
+ + +

Form-encode a multi-layer dictionary to a one-layer dictionary.

+
+ + +
+
+ +
+ + def + request( self, method: easypost.requestor.RequestMethod, url: str, params: Optional[Dict[str, Any]] = None, api_key_required: bool = True, beta: bool = False) -> Tuple[dict, Optional[str]]: + + + +
+ +
 81    def request(
+ 82        self,
+ 83        method: RequestMethod,
+ 84        url: str,
+ 85        params: Optional[Dict[str, Any]] = None,
+ 86        api_key_required: bool = True,
+ 87        beta: bool = False,
+ 88    ) -> Tuple[dict, Optional[str]]:
+ 89        """Make a request to the EasyPost API."""
+ 90        if params is None:
+ 91            params = {}
+ 92        http_body, http_status, my_api_key = self.request_raw(
+ 93            method=method,
+ 94            url=url,
+ 95            params=params,
+ 96            api_key_required=api_key_required,
+ 97            beta=beta,
+ 98        )
+ 99        response = self.interpret_response(http_body=http_body, http_status=http_status)
+100        return response, my_api_key
+
+ + +

Make a request to the EasyPost API.

+
+ + +
+
+ +
+ + def + request_raw( self, method: easypost.requestor.RequestMethod, url: str, params: Optional[Dict[str, Any]] = None, api_key_required: bool = True, beta: bool = False) -> Tuple[str, int, Optional[str]]: + + + +
+ +
102    def request_raw(
+103        self,
+104        method: RequestMethod,
+105        url: str,
+106        params: Optional[Dict[str, Any]] = None,
+107        api_key_required: bool = True,
+108        beta: bool = False,
+109    ) -> Tuple[str, int, Optional[str]]:
+110        """Internal logic required to make a request to the EasyPost API."""
+111        # Importing here to avoid circular imports
+112        from easypost import (
+113            VERSION,
+114            api_base,
+115            api_key,
+116        )
+117
+118        my_api_key = self._api_key or api_key
+119
+120        if api_key_required and my_api_key is None:
+121            raise Error(
+122                "No API key provided. Set an API key via \"easypost.api_key = 'APIKEY'. "
+123                "Your API keys can be found in your EasyPost dashboard, or you can email us "
+124                f"at {SUPPORT_EMAIL} for assistance."
+125            )
+126
+127        if beta:
+128            abs_url = f"https://api.easypost.com/beta{url}"
+129        else:
+130            abs_url = f"{api_base}{url}"
+131
+132        params = self._objects_to_ids(param=params or {})
+133
+134        # Fallback values for the user-agent header
+135        user_agent = {
+136            "client_version": VERSION,
+137            "implementation": "NA",
+138            "os_arch": "NA",
+139            "os_version": "NA",
+140            "os": "NA",
+141            "python_version": "NA",
+142        }
+143
+144        # Attempt to populate the user-agent header
+145        for attr, func in (
+146            ("implementation", platform.python_implementation),
+147            ("os_details", platform.uname),
+148            ("python_version", platform.python_version),
+149        ):
+150            try:
+151                val = func()  # type: ignore
+152                if attr == "os_details":
+153                    user_agent["os"] = val[0]
+154                    user_agent["os_version"] = val[2]
+155                    user_agent["os_arch"] = val[4]
+156                else:
+157                    user_agent[attr] = val  # type: ignore
+158            except Exception:  # nosec
+159                # If we fail to get OS info, do nothing as we already set fallbacks for these values
+160                pass
+161
+162        user_agent = (
+163            f"EasyPost/v2 PythonClient/{VERSION} Python/{user_agent['python_version']}"  # type: ignore
+164            f" OS/{user_agent['os']} OSVersion/{user_agent['os_version']} OSArch/{user_agent['os_arch']}"
+165            f" Implementation/{user_agent['implementation']}"
+166        )
+167
+168        headers = {
+169            "Authorization": "Bearer %s" % my_api_key,
+170            "User-Agent": user_agent,
+171        }
+172
+173        if request_lib == "urlfetch":
+174            http_body, http_status = self.urlfetch_request(
+175                method=method, abs_url=abs_url, headers=headers, params=params
+176            )
+177        elif request_lib == "requests":
+178            http_body, http_status = self.requests_request(
+179                method=method, abs_url=abs_url, headers=headers, params=params
+180            )
+181        else:
+182            raise Error(f"Bug discovered: invalid request_lib: {request_lib}. Please report to {SUPPORT_EMAIL}.")
+183
+184        return http_body, http_status, my_api_key
+
+ + +

Internal logic required to make a request to the EasyPost API.

+
+ + +
+
+ +
+ + def + interpret_response(self, http_body: str, http_status: int) -> Dict[str, Any]: + + + +
+ +
186    def interpret_response(self, http_body: str, http_status: int) -> Dict[str, Any]:
+187        """Interpret the response body we receive from the API."""
+188        if http_status == 204:
+189            # HTTP 204 does not have any response body and we can just return here
+190            return {}
+191        try:
+192            response = json.loads(http_body)
+193        except JSONDecodeError:
+194            raise Exception(
+195                f"Unable to parse response body from API: {http_body}\nHTTP response code was: {http_status}"
+196            )
+197        if not (200 <= http_status < 300):
+198            self.handle_api_error(http_status=http_status, http_body=http_body, response=response)
+199        return response
+
+ + +

Interpret the response body we receive from the API.

+
+ + +
+
+ +
+ + def + requests_request( self, method: easypost.requestor.RequestMethod, abs_url: str, headers: Dict[str, Any], params: Dict[str, Any]) -> Tuple[str, int]: + + + +
+ +
201    def requests_request(
+202        self,
+203        method: RequestMethod,
+204        abs_url: str,
+205        headers: Dict[str, Any],
+206        params: Dict[str, Any],
+207    ) -> Tuple[str, int]:
+208        """Make a request by using the `request` library."""
+209        if method in [RequestMethod.GET, RequestMethod.DELETE]:
+210            url_params = params
+211            body = None
+212        elif method in [RequestMethod.POST, RequestMethod.PATCH, RequestMethod.PUT]:
+213            url_params = None
+214            body = params
+215        else:
+216            # how did you reach here with an enum?
+217            raise Error(f"Bug discovered: invalid request method: {method}. Please report to {SUPPORT_EMAIL}.")
+218
+219        if url_params and method not in [RequestMethod.GET, RequestMethod.DELETE]:
+220            raise Error("Only GET and DELETE requests support parameters.")
+221
+222        try:
+223            result = requests_session.request(
+224                method=method.value,
+225                url=abs_url,
+226                params=url_params,
+227                headers=headers,
+228                json=body,
+229                timeout=timeout,
+230                verify=True,
+231            )
+232            http_body = result.text
+233            http_status = result.status_code
+234        except Exception as e:
+235            raise Error(
+236                "Unexpected error communicating with EasyPost. If this "
+237                f"problem persists please let us know at {SUPPORT_EMAIL}.",
+238                original_exception=e,
+239            )
+240        return http_body, http_status
+
+ + +

Make a request by using the request library.

+
+ + +
+
+ +
+ + def + urlfetch_request( self, method: easypost.requestor.RequestMethod, abs_url: str, headers: Dict[str, Any], params: Dict[str, Any]) -> Tuple[str, int]: + + + +
+ +
242    def urlfetch_request(
+243        self,
+244        method: RequestMethod,
+245        abs_url: str,
+246        headers: Dict[str, Any],
+247        params: Dict[str, Any],
+248    ) -> Tuple[str, int]:
+249        """Make a request by using the `urlfetch` library."""
+250        fetch_args = {"method": method.value, "headers": headers, "validate_certificate": False, "deadline": timeout}
+251        if method in [RequestMethod.GET, RequestMethod.DELETE]:
+252            # GET/DELETE requests use query params
+253            fetch_args["url"] = self.add_params_to_url(url=abs_url, params=params, method=method)
+254        elif method in [RequestMethod.POST, RequestMethod.PUT]:
+255            fetch_args["url"] = abs_url
+256            # POST/PUT requests use body params
+257            fetch_args["payload"] = json.dumps(params, default=self._utf8)
+258        else:
+259            # how did you reach here with an enum?
+260            raise Error(f"Bug discovered: invalid request method: {method}. Please report to {SUPPORT_EMAIL}.")
+261
+262        try:
+263            from google.appengine.api import urlfetch  # type: ignore
+264
+265            result = urlfetch.fetch(**fetch_args)  # type: ignore
+266        except Exception as e:
+267            raise Error(
+268                "Unexpected error communicating with EasyPost. "
+269                f"If this problem persists, let us know at {SUPPORT_EMAIL}.",
+270                original_exception=e,
+271            )
+272
+273        return result.content, result.status_code
+
+ + +

Make a request by using the urlfetch library.

+
+ + +
+
+ +
+ + def + handle_api_error(self, http_status: int, http_body: str, response: Dict[str, Any]) -> None: + + + +
+ +
275    def handle_api_error(self, http_status: int, http_body: str, response: Dict[str, Any]) -> None:
+276        """Handles API errors returned from EasyPost."""
+277        try:
+278            error = response["error"]
+279        except (KeyError, TypeError):
+280            raise Error("Invalid response from API: (%d) %r " % (http_status, http_body), http_status, http_body)
+281
+282        try:
+283            raise Error(message=error.get("message", ""), http_status=http_status, http_body=http_body)
+284        except AttributeError:
+285            raise Error(message=error, http_status=http_status, http_body=http_body)
+
+ + +

Handles API errors returned from EasyPost.

+
+ + +
+
+ +
+ + def + encode_url_params( self, params: Dict[str, Any], method: easypost.requestor.RequestMethod) -> Optional[str]: + + + +
+ +
293    def encode_url_params(self, params: Dict[str, Any], method: RequestMethod) -> Union[str, None]:
+294        """Encode params for a URL."""
+295        if method not in [RequestMethod.GET, RequestMethod.DELETE]:
+296            raise Error("Only GET and DELETE requests support parameters.")
+297        converted_params = []
+298        for key, value in sorted(params.items()):
+299            if value is None:
+300                continue  # Don't add Nones to the query
+301            elif isinstance(value, datetime.datetime):
+302                value = int(time.mktime(value.timetuple()))  # to UTC timestamp
+303            converted_params.append((key, value))
+304        return urlencode(query=converted_params)
+
+ + +

Encode params for a URL.

+
+ + +
+
+ +
+ + def + add_params_to_url( self, url: str, params: Dict[str, Any], method: easypost.requestor.RequestMethod) -> str: + + + +
+ +
306    def add_params_to_url(self, url: str, params: Dict[str, Any], method: RequestMethod) -> str:
+307        """Add params to the URL."""
+308        if method not in [RequestMethod.GET, RequestMethod.DELETE]:
+309            raise Error("Only GET and DELETE requests support parameters.")
+310        encoded_params = self.encode_url_params(params=params, method=method)
+311        if encoded_params:
+312            return "%s?%s" % (url, encoded_params)
+313        return url
+
+ + +

Add params to the URL.

+
+ + +
+
+
+ + \ No newline at end of file diff --git a/docs/easypost/resource.html b/docs/easypost/resource.html new file mode 100644 index 00000000..755e6d2a --- /dev/null +++ b/docs/easypost/resource.html @@ -0,0 +1,922 @@ + + + + + + + easypost.resource API documentation + + + + + + + + + +
+
+

+easypost.resource

+ + + + + + +
  1import re
+  2from typing import (
+  3    Any,
+  4    List,
+  5    Optional,
+  6)
+  7
+  8from easypost.easypost_object import (
+  9    EasyPostObject,
+ 10    convert_to_easypost_object,
+ 11)
+ 12from easypost.error import Error
+ 13from easypost.requestor import (
+ 14    RequestMethod,
+ 15    Requestor,
+ 16)
+ 17
+ 18
+ 19class Resource(EasyPostObject):
+ 20    @classmethod
+ 21    def retrieve(cls, easypost_id: str, api_key: Optional[str] = None, **params) -> object:
+ 22        """Retrieve an object from the EasyPost API."""
+ 23        instance = cls(easypost_id=easypost_id, api_key=api_key, **params)
+ 24        instance.refresh()
+ 25        return instance
+ 26
+ 27    def refresh(self) -> object:
+ 28        """Refresh the local object from the API response."""
+ 29        requestor = Requestor(local_api_key=self._api_key)
+ 30        url = self.instance_url()
+ 31        response, api_key = requestor.request(method=RequestMethod.GET, url=url, params=self._retrieve_params)
+ 32        self.refresh_from(values=response, api_key=api_key)
+ 33        return self
+ 34
+ 35    @classmethod
+ 36    def snakecase_name(cls) -> str:
+ 37        """Return the class name as snake_case."""
+ 38        snake_name = (cls.__name__[0:1] + re.sub(r"([A-Z])", r"_\1", cls.__name__[1:])).lower()
+ 39        return snake_name
+ 40
+ 41    @classmethod
+ 42    def class_url(cls) -> str:
+ 43        """Generate a URL based on class name."""
+ 44        cls_name = cls.snakecase_name()
+ 45        if cls_name[-1:] in ("s", "h"):
+ 46            return "/%ses" % cls_name
+ 47        else:
+ 48            return "/%ss" % cls_name
+ 49
+ 50    def instance_url(self) -> str:
+ 51        """Generate an instance URL based on the ID of the object."""
+ 52        easypost_id = self.get("id")
+ 53        if not easypost_id:
+ 54            raise Error("%s instance has invalid ID: %r" % (type(self).__name__, easypost_id))
+ 55        return "%s/%s" % (self.class_url(), easypost_id)
+ 56
+ 57
+ 58class AllResource(Resource):
+ 59    @classmethod
+ 60    def all(cls, api_key: Optional[str] = None, **params) -> List[Any]:
+ 61        """Retrieve a list of records from the API."""
+ 62        requestor = Requestor(local_api_key=api_key)
+ 63        url = cls.class_url()
+ 64        response, api_key = requestor.request(method=RequestMethod.GET, url=url, params=params)
+ 65        return convert_to_easypost_object(response=response, api_key=api_key)
+ 66
+ 67
+ 68class CreateResource(Resource):
+ 69    @classmethod
+ 70    def create(cls, api_key: Optional[str] = None, **params) -> Any:
+ 71        """Create an EasyPost object."""
+ 72        requestor = Requestor(local_api_key=api_key)
+ 73        url = cls.class_url()
+ 74        wrapped_params = {cls.snakecase_name(): params}
+ 75        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+ 76        return convert_to_easypost_object(response=response, api_key=api_key)
+ 77
+ 78
+ 79class UpdateResource(Resource):
+ 80    def save(self) -> Any:
+ 81        """Update an EasyPost object."""
+ 82        if self._unsaved_values:
+ 83            requestor = Requestor(local_api_key=self._api_key)
+ 84            params = {}
+ 85            for k in self._unsaved_values:
+ 86                params[k] = getattr(self, k)
+ 87                if type(params[k]) is EasyPostObject:
+ 88                    params[k] = params[k].flatten_unsaved()
+ 89            params = {self.snakecase_name(): params}
+ 90            url = self.instance_url()
+ 91            response, api_key = requestor.request(method=RequestMethod.PATCH, url=url, params=params)
+ 92            self.refresh_from(values=response, api_key=api_key)
+ 93
+ 94        return self
+ 95
+ 96
+ 97class DeleteResource(Resource):
+ 98    def delete(self, **params) -> Any:
+ 99        """Delete an EasyPost object."""
+100        requestor = Requestor(local_api_key=self._api_key)
+101        url = self.instance_url()
+102        response, api_key = requestor.request(method=RequestMethod.DELETE, url=url, params=params)
+103        self.refresh_from(values=response, api_key=api_key)
+104        return self
+
+ + +
+
+ +
+ + class + Resource(easypost.easypost_object.EasyPostObject): + + + +
+ +
20class Resource(EasyPostObject):
+21    @classmethod
+22    def retrieve(cls, easypost_id: str, api_key: Optional[str] = None, **params) -> object:
+23        """Retrieve an object from the EasyPost API."""
+24        instance = cls(easypost_id=easypost_id, api_key=api_key, **params)
+25        instance.refresh()
+26        return instance
+27
+28    def refresh(self) -> object:
+29        """Refresh the local object from the API response."""
+30        requestor = Requestor(local_api_key=self._api_key)
+31        url = self.instance_url()
+32        response, api_key = requestor.request(method=RequestMethod.GET, url=url, params=self._retrieve_params)
+33        self.refresh_from(values=response, api_key=api_key)
+34        return self
+35
+36    @classmethod
+37    def snakecase_name(cls) -> str:
+38        """Return the class name as snake_case."""
+39        snake_name = (cls.__name__[0:1] + re.sub(r"([A-Z])", r"_\1", cls.__name__[1:])).lower()
+40        return snake_name
+41
+42    @classmethod
+43    def class_url(cls) -> str:
+44        """Generate a URL based on class name."""
+45        cls_name = cls.snakecase_name()
+46        if cls_name[-1:] in ("s", "h"):
+47            return "/%ses" % cls_name
+48        else:
+49            return "/%ss" % cls_name
+50
+51    def instance_url(self) -> str:
+52        """Generate an instance URL based on the ID of the object."""
+53        easypost_id = self.get("id")
+54        if not easypost_id:
+55            raise Error("%s instance has invalid ID: %r" % (type(self).__name__, easypost_id))
+56        return "%s/%s" % (self.class_url(), easypost_id)
+
+ + + + +
+ +
+
@classmethod
+ + def + retrieve(cls, easypost_id: str, api_key: Optional[str] = None, **params) -> object: + + + +
+ +
21    @classmethod
+22    def retrieve(cls, easypost_id: str, api_key: Optional[str] = None, **params) -> object:
+23        """Retrieve an object from the EasyPost API."""
+24        instance = cls(easypost_id=easypost_id, api_key=api_key, **params)
+25        instance.refresh()
+26        return instance
+
+ + +

Retrieve an object from the EasyPost API.

+
+ + +
+
+ +
+ + def + refresh(self) -> object: + + + +
+ +
28    def refresh(self) -> object:
+29        """Refresh the local object from the API response."""
+30        requestor = Requestor(local_api_key=self._api_key)
+31        url = self.instance_url()
+32        response, api_key = requestor.request(method=RequestMethod.GET, url=url, params=self._retrieve_params)
+33        self.refresh_from(values=response, api_key=api_key)
+34        return self
+
+ + +

Refresh the local object from the API response.

+
+ + +
+
+ +
+
@classmethod
+ + def + snakecase_name(cls) -> str: + + + +
+ +
36    @classmethod
+37    def snakecase_name(cls) -> str:
+38        """Return the class name as snake_case."""
+39        snake_name = (cls.__name__[0:1] + re.sub(r"([A-Z])", r"_\1", cls.__name__[1:])).lower()
+40        return snake_name
+
+ + +

Return the class name as snake_case.

+
+ + +
+
+ +
+
@classmethod
+ + def + class_url(cls) -> str: + + + +
+ +
42    @classmethod
+43    def class_url(cls) -> str:
+44        """Generate a URL based on class name."""
+45        cls_name = cls.snakecase_name()
+46        if cls_name[-1:] in ("s", "h"):
+47            return "/%ses" % cls_name
+48        else:
+49            return "/%ss" % cls_name
+
+ + +

Generate a URL based on class name.

+
+ + +
+
+ +
+ + def + instance_url(self) -> str: + + + +
+ +
51    def instance_url(self) -> str:
+52        """Generate an instance URL based on the ID of the object."""
+53        easypost_id = self.get("id")
+54        if not easypost_id:
+55            raise Error("%s instance has invalid ID: %r" % (type(self).__name__, easypost_id))
+56        return "%s/%s" % (self.class_url(), easypost_id)
+
+ + +

Generate an instance URL based on the ID of the object.

+
+ + +
+ +
+
+ +
+ + class + AllResource(Resource): + + + +
+ +
59class AllResource(Resource):
+60    @classmethod
+61    def all(cls, api_key: Optional[str] = None, **params) -> List[Any]:
+62        """Retrieve a list of records from the API."""
+63        requestor = Requestor(local_api_key=api_key)
+64        url = cls.class_url()
+65        response, api_key = requestor.request(method=RequestMethod.GET, url=url, params=params)
+66        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + + + +
+ +
+
@classmethod
+ + def + all(cls, api_key: Optional[str] = None, **params) -> List[Any]: + + + +
+ +
60    @classmethod
+61    def all(cls, api_key: Optional[str] = None, **params) -> List[Any]:
+62        """Retrieve a list of records from the API."""
+63        requestor = Requestor(local_api_key=api_key)
+64        url = cls.class_url()
+65        response, api_key = requestor.request(method=RequestMethod.GET, url=url, params=params)
+66        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Retrieve a list of records from the API.

+
+ + +
+ +
+
+ +
+ + class + CreateResource(Resource): + + + +
+ +
69class CreateResource(Resource):
+70    @classmethod
+71    def create(cls, api_key: Optional[str] = None, **params) -> Any:
+72        """Create an EasyPost object."""
+73        requestor = Requestor(local_api_key=api_key)
+74        url = cls.class_url()
+75        wrapped_params = {cls.snakecase_name(): params}
+76        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+77        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + + + +
+ +
+
@classmethod
+ + def + create(cls, api_key: Optional[str] = None, **params) -> Any: + + + +
+ +
70    @classmethod
+71    def create(cls, api_key: Optional[str] = None, **params) -> Any:
+72        """Create an EasyPost object."""
+73        requestor = Requestor(local_api_key=api_key)
+74        url = cls.class_url()
+75        wrapped_params = {cls.snakecase_name(): params}
+76        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+77        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Create an EasyPost object.

+
+ + +
+ +
+
+ +
+ + class + UpdateResource(Resource): + + + +
+ +
80class UpdateResource(Resource):
+81    def save(self) -> Any:
+82        """Update an EasyPost object."""
+83        if self._unsaved_values:
+84            requestor = Requestor(local_api_key=self._api_key)
+85            params = {}
+86            for k in self._unsaved_values:
+87                params[k] = getattr(self, k)
+88                if type(params[k]) is EasyPostObject:
+89                    params[k] = params[k].flatten_unsaved()
+90            params = {self.snakecase_name(): params}
+91            url = self.instance_url()
+92            response, api_key = requestor.request(method=RequestMethod.PATCH, url=url, params=params)
+93            self.refresh_from(values=response, api_key=api_key)
+94
+95        return self
+
+ + + + +
+ +
+ + def + save(self) -> Any: + + + +
+ +
81    def save(self) -> Any:
+82        """Update an EasyPost object."""
+83        if self._unsaved_values:
+84            requestor = Requestor(local_api_key=self._api_key)
+85            params = {}
+86            for k in self._unsaved_values:
+87                params[k] = getattr(self, k)
+88                if type(params[k]) is EasyPostObject:
+89                    params[k] = params[k].flatten_unsaved()
+90            params = {self.snakecase_name(): params}
+91            url = self.instance_url()
+92            response, api_key = requestor.request(method=RequestMethod.PATCH, url=url, params=params)
+93            self.refresh_from(values=response, api_key=api_key)
+94
+95        return self
+
+ + +

Update an EasyPost object.

+
+ + +
+ +
+
+ +
+ + class + DeleteResource(Resource): + + + +
+ +
 98class DeleteResource(Resource):
+ 99    def delete(self, **params) -> Any:
+100        """Delete an EasyPost object."""
+101        requestor = Requestor(local_api_key=self._api_key)
+102        url = self.instance_url()
+103        response, api_key = requestor.request(method=RequestMethod.DELETE, url=url, params=params)
+104        self.refresh_from(values=response, api_key=api_key)
+105        return self
+
+ + + + +
+ +
+ + def + delete(self, **params) -> Any: + + + +
+ +
 99    def delete(self, **params) -> Any:
+100        """Delete an EasyPost object."""
+101        requestor = Requestor(local_api_key=self._api_key)
+102        url = self.instance_url()
+103        response, api_key = requestor.request(method=RequestMethod.DELETE, url=url, params=params)
+104        self.refresh_from(values=response, api_key=api_key)
+105        return self
+
+ + +

Delete an EasyPost object.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/scanform.html b/docs/easypost/scanform.html new file mode 100644 index 00000000..4df63f60 --- /dev/null +++ b/docs/easypost/scanform.html @@ -0,0 +1,348 @@ + + + + + + + easypost.scanform API documentation + + + + + + + + + +
+
+

+easypost.scanform

+ + + + + + +
 1from typing import Optional
+ 2
+ 3from easypost.easypost_object import convert_to_easypost_object
+ 4from easypost.requestor import (
+ 5    RequestMethod,
+ 6    Requestor,
+ 7)
+ 8from easypost.resource import AllResource
+ 9
+10
+11class ScanForm(AllResource):
+12    @classmethod
+13    def create(cls, api_key: Optional[str] = None, **params):
+14        """Create a scanform."""
+15        requestor = Requestor(local_api_key=api_key)
+16        url = cls.class_url()
+17        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+18        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +
+
+ +
+ + class + ScanForm(easypost.resource.AllResource): + + + +
+ +
12class ScanForm(AllResource):
+13    @classmethod
+14    def create(cls, api_key: Optional[str] = None, **params):
+15        """Create a scanform."""
+16        requestor = Requestor(local_api_key=api_key)
+17        url = cls.class_url()
+18        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+19        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + + + +
+ +
+
@classmethod
+ + def + create(cls, api_key: Optional[str] = None, **params): + + + +
+ +
13    @classmethod
+14    def create(cls, api_key: Optional[str] = None, **params):
+15        """Create a scanform."""
+16        requestor = Requestor(local_api_key=api_key)
+17        url = cls.class_url()
+18        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+19        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Create a scanform.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/shipment.html b/docs/easypost/shipment.html new file mode 100644 index 00000000..c2314063 --- /dev/null +++ b/docs/easypost/shipment.html @@ -0,0 +1,906 @@ + + + + + + + easypost.shipment API documentation + + + + + + + + + +
+
+

+easypost.shipment

+ + + + + + +
  1from typing import (
+  2    Any,
+  3    Dict,
+  4    List,
+  5    Optional,
+  6)
+  7
+  8from easypost import Rate
+  9from easypost.easypost_object import convert_to_easypost_object
+ 10from easypost.error import Error
+ 11from easypost.requestor import (
+ 12    RequestMethod,
+ 13    Requestor,
+ 14)
+ 15from easypost.resource import AllResource
+ 16from easypost.util import get_lowest_object_rate
+ 17
+ 18
+ 19class Shipment(AllResource):
+ 20    @classmethod
+ 21    def create(cls, api_key: Optional[str] = None, with_carbon_offset: Optional[bool] = False, **params) -> "Shipment":
+ 22        """Create an Shipment object."""
+ 23        requestor = Requestor(local_api_key=api_key)
+ 24        url = cls.class_url()
+ 25        wrapped_params = {
+ 26            cls.snakecase_name(): params,
+ 27            "carbon_offset": with_carbon_offset,
+ 28        }
+ 29        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+ 30        return convert_to_easypost_object(response=response, api_key=api_key)
+ 31
+ 32    def regenerate_rates(self, with_carbon_offset: Optional[bool] = False) -> "Shipment":
+ 33        """Regenerate rates for a shipment."""
+ 34        requestor = Requestor(local_api_key=self._api_key)
+ 35        url = "%s/%s" % (self.instance_url(), "rerate")
+ 36        params = {
+ 37            "carbon_offset": with_carbon_offset,
+ 38        }
+ 39        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+ 40        self.refresh_from(values=response, api_key=api_key)
+ 41        return self
+ 42
+ 43    def get_smartrates(self) -> List[object]:
+ 44        """Get smartrates for a shipment."""
+ 45        requestor = Requestor(local_api_key=self._api_key)
+ 46        url = "%s/%s" % (self.instance_url(), "smartrate")
+ 47        response, _ = requestor.request(method=RequestMethod.GET, url=url)
+ 48        return response.get("result", [])
+ 49
+ 50    def buy(
+ 51        self, with_carbon_offset: Optional[bool] = False, end_shipper_id: Optional[str] = None, **params
+ 52    ) -> "Shipment":
+ 53        """Buy a shipment."""
+ 54        requestor = Requestor(local_api_key=self._api_key)
+ 55        url = "%s/%s" % (self.instance_url(), "buy")
+ 56        params["carbon_offset"] = with_carbon_offset
+ 57        if end_shipper_id:
+ 58            params["end_shipper_id"] = end_shipper_id
+ 59
+ 60        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+ 61        self.refresh_from(values=response, api_key=api_key)
+ 62        return self
+ 63
+ 64    def refund(self, **params) -> "Shipment":
+ 65        """Refund a shipment."""
+ 66        requestor = Requestor(local_api_key=self._api_key)
+ 67        url = "%s/%s" % (self.instance_url(), "refund")
+ 68        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+ 69        self.refresh_from(values=response, api_key=api_key)
+ 70        return self
+ 71
+ 72    def insure(self, **params) -> "Shipment":
+ 73        """Insure a shipment."""
+ 74        requestor = Requestor(local_api_key=self._api_key)
+ 75        url = "%s/%s" % (self.instance_url(), "insure")
+ 76        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+ 77        self.refresh_from(values=response, api_key=api_key)
+ 78        return self
+ 79
+ 80    def label(self, **params) -> "Shipment":
+ 81        """Convert the label format of a shipment."""
+ 82        requestor = Requestor(local_api_key=self._api_key)
+ 83        url = "%s/%s" % (self.instance_url(), "label")
+ 84        response, api_key = requestor.request(method=RequestMethod.GET, url=url, params=params)
+ 85        self.refresh_from(values=response, api_key=api_key)
+ 86        return self
+ 87
+ 88    def lowest_rate(self, carriers: List[str] = None, services: List[str] = None) -> Rate:
+ 89        """Get the lowest rate of this shipment."""
+ 90        lowest_rate = get_lowest_object_rate(self, carriers, services)
+ 91
+ 92        return lowest_rate
+ 93
+ 94    def lowest_smartrate(self, delivery_days: int, delivery_accuracy: str) -> Rate:
+ 95        """Get the lowest smartrate of this shipment."""
+ 96        smartrates = self.get_smartrates()
+ 97        lowest_smartrate = self.get_lowest_smartrate(smartrates, delivery_days, delivery_accuracy.lower())
+ 98
+ 99        return lowest_smartrate
+100
+101    def generate_form(self, form_type: str, form_options: Optional[Dict[str, Any]] = {}) -> "Shipment":
+102        """Generate a form for a Shipment."""
+103        params = {"type": form_type}
+104        params.update(form_options)  # type: ignore
+105        wrapped_params = {"form": params}
+106
+107        requestor = Requestor(local_api_key=self._api_key)
+108        url = "%s/%s" % (self.instance_url(), "forms")
+109        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+110        self.refresh_from(values=response, api_key=api_key)
+111        return self
+112
+113    @staticmethod
+114    def get_lowest_smartrate(smartrates, delivery_days: int, delivery_accuracy: str) -> Rate:
+115        """Get the lowest smartrate from a list of smartrates."""
+116        valid_delivery_accuracy_values = {
+117            "percentile_50",
+118            "percentile_75",
+119            "percentile_85",
+120            "percentile_90",
+121            "percentile_95",
+122            "percentile_97",
+123            "percentile_99",
+124        }
+125        lowest_smartrate = None
+126
+127        if delivery_accuracy.lower() not in valid_delivery_accuracy_values:
+128            raise Error(message=f"Invalid delivery_accuracy value, must be one of: {valid_delivery_accuracy_values}")
+129
+130        for rate in smartrates:
+131            if rate["time_in_transit"][delivery_accuracy] > delivery_days:
+132                continue
+133            elif lowest_smartrate is None or float(rate["rate"]) < float(lowest_smartrate["rate"]):
+134                lowest_smartrate = rate
+135
+136        if lowest_smartrate is None:
+137            raise Error(message="No rates found.")
+138
+139        return lowest_smartrate
+
+ + +
+
+ +
+ + class + Shipment(easypost.resource.AllResource): + + + +
+ +
 20class Shipment(AllResource):
+ 21    @classmethod
+ 22    def create(cls, api_key: Optional[str] = None, with_carbon_offset: Optional[bool] = False, **params) -> "Shipment":
+ 23        """Create an Shipment object."""
+ 24        requestor = Requestor(local_api_key=api_key)
+ 25        url = cls.class_url()
+ 26        wrapped_params = {
+ 27            cls.snakecase_name(): params,
+ 28            "carbon_offset": with_carbon_offset,
+ 29        }
+ 30        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+ 31        return convert_to_easypost_object(response=response, api_key=api_key)
+ 32
+ 33    def regenerate_rates(self, with_carbon_offset: Optional[bool] = False) -> "Shipment":
+ 34        """Regenerate rates for a shipment."""
+ 35        requestor = Requestor(local_api_key=self._api_key)
+ 36        url = "%s/%s" % (self.instance_url(), "rerate")
+ 37        params = {
+ 38            "carbon_offset": with_carbon_offset,
+ 39        }
+ 40        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+ 41        self.refresh_from(values=response, api_key=api_key)
+ 42        return self
+ 43
+ 44    def get_smartrates(self) -> List[object]:
+ 45        """Get smartrates for a shipment."""
+ 46        requestor = Requestor(local_api_key=self._api_key)
+ 47        url = "%s/%s" % (self.instance_url(), "smartrate")
+ 48        response, _ = requestor.request(method=RequestMethod.GET, url=url)
+ 49        return response.get("result", [])
+ 50
+ 51    def buy(
+ 52        self, with_carbon_offset: Optional[bool] = False, end_shipper_id: Optional[str] = None, **params
+ 53    ) -> "Shipment":
+ 54        """Buy a shipment."""
+ 55        requestor = Requestor(local_api_key=self._api_key)
+ 56        url = "%s/%s" % (self.instance_url(), "buy")
+ 57        params["carbon_offset"] = with_carbon_offset
+ 58        if end_shipper_id:
+ 59            params["end_shipper_id"] = end_shipper_id
+ 60
+ 61        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+ 62        self.refresh_from(values=response, api_key=api_key)
+ 63        return self
+ 64
+ 65    def refund(self, **params) -> "Shipment":
+ 66        """Refund a shipment."""
+ 67        requestor = Requestor(local_api_key=self._api_key)
+ 68        url = "%s/%s" % (self.instance_url(), "refund")
+ 69        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+ 70        self.refresh_from(values=response, api_key=api_key)
+ 71        return self
+ 72
+ 73    def insure(self, **params) -> "Shipment":
+ 74        """Insure a shipment."""
+ 75        requestor = Requestor(local_api_key=self._api_key)
+ 76        url = "%s/%s" % (self.instance_url(), "insure")
+ 77        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+ 78        self.refresh_from(values=response, api_key=api_key)
+ 79        return self
+ 80
+ 81    def label(self, **params) -> "Shipment":
+ 82        """Convert the label format of a shipment."""
+ 83        requestor = Requestor(local_api_key=self._api_key)
+ 84        url = "%s/%s" % (self.instance_url(), "label")
+ 85        response, api_key = requestor.request(method=RequestMethod.GET, url=url, params=params)
+ 86        self.refresh_from(values=response, api_key=api_key)
+ 87        return self
+ 88
+ 89    def lowest_rate(self, carriers: List[str] = None, services: List[str] = None) -> Rate:
+ 90        """Get the lowest rate of this shipment."""
+ 91        lowest_rate = get_lowest_object_rate(self, carriers, services)
+ 92
+ 93        return lowest_rate
+ 94
+ 95    def lowest_smartrate(self, delivery_days: int, delivery_accuracy: str) -> Rate:
+ 96        """Get the lowest smartrate of this shipment."""
+ 97        smartrates = self.get_smartrates()
+ 98        lowest_smartrate = self.get_lowest_smartrate(smartrates, delivery_days, delivery_accuracy.lower())
+ 99
+100        return lowest_smartrate
+101
+102    def generate_form(self, form_type: str, form_options: Optional[Dict[str, Any]] = {}) -> "Shipment":
+103        """Generate a form for a Shipment."""
+104        params = {"type": form_type}
+105        params.update(form_options)  # type: ignore
+106        wrapped_params = {"form": params}
+107
+108        requestor = Requestor(local_api_key=self._api_key)
+109        url = "%s/%s" % (self.instance_url(), "forms")
+110        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+111        self.refresh_from(values=response, api_key=api_key)
+112        return self
+113
+114    @staticmethod
+115    def get_lowest_smartrate(smartrates, delivery_days: int, delivery_accuracy: str) -> Rate:
+116        """Get the lowest smartrate from a list of smartrates."""
+117        valid_delivery_accuracy_values = {
+118            "percentile_50",
+119            "percentile_75",
+120            "percentile_85",
+121            "percentile_90",
+122            "percentile_95",
+123            "percentile_97",
+124            "percentile_99",
+125        }
+126        lowest_smartrate = None
+127
+128        if delivery_accuracy.lower() not in valid_delivery_accuracy_values:
+129            raise Error(message=f"Invalid delivery_accuracy value, must be one of: {valid_delivery_accuracy_values}")
+130
+131        for rate in smartrates:
+132            if rate["time_in_transit"][delivery_accuracy] > delivery_days:
+133                continue
+134            elif lowest_smartrate is None or float(rate["rate"]) < float(lowest_smartrate["rate"]):
+135                lowest_smartrate = rate
+136
+137        if lowest_smartrate is None:
+138            raise Error(message="No rates found.")
+139
+140        return lowest_smartrate
+
+ + + + +
+ +
+
@classmethod
+ + def + create( cls, api_key: Optional[str] = None, with_carbon_offset: Optional[bool] = False, **params) -> easypost.shipment.Shipment: + + + +
+ +
21    @classmethod
+22    def create(cls, api_key: Optional[str] = None, with_carbon_offset: Optional[bool] = False, **params) -> "Shipment":
+23        """Create an Shipment object."""
+24        requestor = Requestor(local_api_key=api_key)
+25        url = cls.class_url()
+26        wrapped_params = {
+27            cls.snakecase_name(): params,
+28            "carbon_offset": with_carbon_offset,
+29        }
+30        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+31        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Create an Shipment object.

+
+ + +
+
+ +
+ + def + regenerate_rates( self, with_carbon_offset: Optional[bool] = False) -> easypost.shipment.Shipment: + + + +
+ +
33    def regenerate_rates(self, with_carbon_offset: Optional[bool] = False) -> "Shipment":
+34        """Regenerate rates for a shipment."""
+35        requestor = Requestor(local_api_key=self._api_key)
+36        url = "%s/%s" % (self.instance_url(), "rerate")
+37        params = {
+38            "carbon_offset": with_carbon_offset,
+39        }
+40        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+41        self.refresh_from(values=response, api_key=api_key)
+42        return self
+
+ + +

Regenerate rates for a shipment.

+
+ + +
+
+ +
+ + def + get_smartrates(self) -> List[object]: + + + +
+ +
44    def get_smartrates(self) -> List[object]:
+45        """Get smartrates for a shipment."""
+46        requestor = Requestor(local_api_key=self._api_key)
+47        url = "%s/%s" % (self.instance_url(), "smartrate")
+48        response, _ = requestor.request(method=RequestMethod.GET, url=url)
+49        return response.get("result", [])
+
+ + +

Get smartrates for a shipment.

+
+ + +
+
+ +
+ + def + buy( self, with_carbon_offset: Optional[bool] = False, end_shipper_id: Optional[str] = None, **params) -> easypost.shipment.Shipment: + + + +
+ +
51    def buy(
+52        self, with_carbon_offset: Optional[bool] = False, end_shipper_id: Optional[str] = None, **params
+53    ) -> "Shipment":
+54        """Buy a shipment."""
+55        requestor = Requestor(local_api_key=self._api_key)
+56        url = "%s/%s" % (self.instance_url(), "buy")
+57        params["carbon_offset"] = with_carbon_offset
+58        if end_shipper_id:
+59            params["end_shipper_id"] = end_shipper_id
+60
+61        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+62        self.refresh_from(values=response, api_key=api_key)
+63        return self
+
+ + +

Buy a shipment.

+
+ + +
+
+ +
+ + def + refund(self, **params) -> easypost.shipment.Shipment: + + + +
+ +
65    def refund(self, **params) -> "Shipment":
+66        """Refund a shipment."""
+67        requestor = Requestor(local_api_key=self._api_key)
+68        url = "%s/%s" % (self.instance_url(), "refund")
+69        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+70        self.refresh_from(values=response, api_key=api_key)
+71        return self
+
+ + +

Refund a shipment.

+
+ + +
+
+ +
+ + def + insure(self, **params) -> easypost.shipment.Shipment: + + + +
+ +
73    def insure(self, **params) -> "Shipment":
+74        """Insure a shipment."""
+75        requestor = Requestor(local_api_key=self._api_key)
+76        url = "%s/%s" % (self.instance_url(), "insure")
+77        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=params)
+78        self.refresh_from(values=response, api_key=api_key)
+79        return self
+
+ + +

Insure a shipment.

+
+ + +
+
+ +
+ + def + label(self, **params) -> easypost.shipment.Shipment: + + + +
+ +
81    def label(self, **params) -> "Shipment":
+82        """Convert the label format of a shipment."""
+83        requestor = Requestor(local_api_key=self._api_key)
+84        url = "%s/%s" % (self.instance_url(), "label")
+85        response, api_key = requestor.request(method=RequestMethod.GET, url=url, params=params)
+86        self.refresh_from(values=response, api_key=api_key)
+87        return self
+
+ + +

Convert the label format of a shipment.

+
+ + +
+
+ +
+ + def + lowest_rate( self, carriers: List[str] = None, services: List[str] = None) -> easypost.rate.Rate: + + + +
+ +
89    def lowest_rate(self, carriers: List[str] = None, services: List[str] = None) -> Rate:
+90        """Get the lowest rate of this shipment."""
+91        lowest_rate = get_lowest_object_rate(self, carriers, services)
+92
+93        return lowest_rate
+
+ + +

Get the lowest rate of this shipment.

+
+ + +
+
+ +
+ + def + lowest_smartrate(self, delivery_days: int, delivery_accuracy: str) -> easypost.rate.Rate: + + + +
+ +
 95    def lowest_smartrate(self, delivery_days: int, delivery_accuracy: str) -> Rate:
+ 96        """Get the lowest smartrate of this shipment."""
+ 97        smartrates = self.get_smartrates()
+ 98        lowest_smartrate = self.get_lowest_smartrate(smartrates, delivery_days, delivery_accuracy.lower())
+ 99
+100        return lowest_smartrate
+
+ + +

Get the lowest smartrate of this shipment.

+
+ + +
+
+ +
+ + def + generate_form( self, form_type: str, form_options: Optional[Dict[str, Any]] = {}) -> easypost.shipment.Shipment: + + + +
+ +
102    def generate_form(self, form_type: str, form_options: Optional[Dict[str, Any]] = {}) -> "Shipment":
+103        """Generate a form for a Shipment."""
+104        params = {"type": form_type}
+105        params.update(form_options)  # type: ignore
+106        wrapped_params = {"form": params}
+107
+108        requestor = Requestor(local_api_key=self._api_key)
+109        url = "%s/%s" % (self.instance_url(), "forms")
+110        response, api_key = requestor.request(method=RequestMethod.POST, url=url, params=wrapped_params)
+111        self.refresh_from(values=response, api_key=api_key)
+112        return self
+
+ + +

Generate a form for a Shipment.

+
+ + +
+
+ +
+
@staticmethod
+ + def + get_lowest_smartrate( smartrates, delivery_days: int, delivery_accuracy: str) -> easypost.rate.Rate: + + + +
+ +
114    @staticmethod
+115    def get_lowest_smartrate(smartrates, delivery_days: int, delivery_accuracy: str) -> Rate:
+116        """Get the lowest smartrate from a list of smartrates."""
+117        valid_delivery_accuracy_values = {
+118            "percentile_50",
+119            "percentile_75",
+120            "percentile_85",
+121            "percentile_90",
+122            "percentile_95",
+123            "percentile_97",
+124            "percentile_99",
+125        }
+126        lowest_smartrate = None
+127
+128        if delivery_accuracy.lower() not in valid_delivery_accuracy_values:
+129            raise Error(message=f"Invalid delivery_accuracy value, must be one of: {valid_delivery_accuracy_values}")
+130
+131        for rate in smartrates:
+132            if rate["time_in_transit"][delivery_accuracy] > delivery_days:
+133                continue
+134            elif lowest_smartrate is None or float(rate["rate"]) < float(lowest_smartrate["rate"]):
+135                lowest_smartrate = rate
+136
+137        if lowest_smartrate is None:
+138            raise Error(message="No rates found.")
+139
+140        return lowest_smartrate
+
+ + +

Get the lowest smartrate from a list of smartrates.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/tax_identifier.html b/docs/easypost/tax_identifier.html new file mode 100644 index 00000000..696a0d7b --- /dev/null +++ b/docs/easypost/tax_identifier.html @@ -0,0 +1,295 @@ + + + + + + + easypost.tax_identifier API documentation + + + + + + + + + +
+
+

+easypost.tax_identifier

+ + + + + + +
1from easypost.resource import Resource
+2
+3
+4class TaxIdentifier(Resource):
+5    pass
+
+ + +
+
+ +
+ + class + TaxIdentifier(easypost.resource.Resource): + + + +
+ +
5class TaxIdentifier(Resource):
+6    pass
+
+ + + + + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/tracker.html b/docs/easypost/tracker.html new file mode 100644 index 00000000..2defd2b3 --- /dev/null +++ b/docs/easypost/tracker.html @@ -0,0 +1,362 @@ + + + + + + + easypost.tracker API documentation + + + + + + + + + +
+
+

+easypost.tracker

+ + + + + + +
 1from typing import (
+ 2    Any,
+ 3    Dict,
+ 4    List,
+ 5    Optional,
+ 6)
+ 7
+ 8from easypost.requestor import (
+ 9    RequestMethod,
+10    Requestor,
+11)
+12from easypost.resource import (
+13    AllResource,
+14    CreateResource,
+15)
+16
+17
+18class Tracker(AllResource, CreateResource):
+19    @classmethod
+20    def create_list(cls, trackers: List[Dict[str, Any]], api_key: Optional[str] = None) -> bool:
+21        """Create a list of trackers."""
+22        requestor = Requestor(local_api_key=api_key)
+23        url = "%s/%s" % (cls.class_url(), "create_list")
+24        new_params = {"trackers": trackers}
+25        _, _ = requestor.request(method=RequestMethod.POST, url=url, params=new_params)
+26        return True
+
+ + +
+
+ +
+ + class + Tracker(easypost.resource.AllResource, easypost.resource.CreateResource): + + + +
+ +
19class Tracker(AllResource, CreateResource):
+20    @classmethod
+21    def create_list(cls, trackers: List[Dict[str, Any]], api_key: Optional[str] = None) -> bool:
+22        """Create a list of trackers."""
+23        requestor = Requestor(local_api_key=api_key)
+24        url = "%s/%s" % (cls.class_url(), "create_list")
+25        new_params = {"trackers": trackers}
+26        _, _ = requestor.request(method=RequestMethod.POST, url=url, params=new_params)
+27        return True
+
+ + + + +
+ +
+
@classmethod
+ + def + create_list( cls, trackers: List[Dict[str, Any]], api_key: Optional[str] = None) -> bool: + + + +
+ +
20    @classmethod
+21    def create_list(cls, trackers: List[Dict[str, Any]], api_key: Optional[str] = None) -> bool:
+22        """Create a list of trackers."""
+23        requestor = Requestor(local_api_key=api_key)
+24        url = "%s/%s" % (cls.class_url(), "create_list")
+25        new_params = {"trackers": trackers}
+26        _, _ = requestor.request(method=RequestMethod.POST, url=url, params=new_params)
+27        return True
+
+ + +

Create a list of trackers.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/user.html b/docs/easypost/user.html new file mode 100644 index 00000000..fe2cc956 --- /dev/null +++ b/docs/easypost/user.html @@ -0,0 +1,624 @@ + + + + + + + easypost.user API documentation + + + + + + + + + +
+
+

+easypost.user

+ + + + + + +
 1from typing import (
+ 2    List,
+ 3    Optional,
+ 4)
+ 5
+ 6from easypost.easypost_object import convert_to_easypost_object
+ 7from easypost.requestor import (
+ 8    RequestMethod,
+ 9    Requestor,
+10)
+11from easypost.resource import (
+12    DeleteResource,
+13    UpdateResource,
+14)
+15
+16
+17class User(UpdateResource, DeleteResource):
+18    @classmethod
+19    def create(cls, api_key: Optional[str] = None, **params) -> "User":
+20        """Create a child user."""
+21        requestor = Requestor(local_api_key=api_key)
+22        url = cls.class_url()
+23        wrapped_params = {cls.snakecase_name(): params}
+24        response, api_key = requestor.request(
+25            method=RequestMethod.POST,
+26            url=url,
+27            params=wrapped_params,
+28        )
+29        return convert_to_easypost_object(response=response, api_key=api_key)
+30
+31    @classmethod
+32    def retrieve(cls, easypost_id: Optional[str] = None, api_key: Optional[str] = None, **params) -> "User":
+33        """Retrieve a user."""
+34        if not easypost_id:
+35            requestor = Requestor(local_api_key=api_key)
+36            response, api_key = requestor.request(method=RequestMethod.GET, url=cls.class_url())
+37            return convert_to_easypost_object(response=response, api_key=api_key)
+38        else:
+39            instance = cls(easypost_id=easypost_id, api_key=api_key, **params)
+40            instance.refresh()
+41            return instance
+42
+43    @classmethod
+44    def retrieve_me(cls, api_key: Optional[str] = None, **params) -> "User":
+45        """Retrieve the authenticated user."""
+46        requestor = Requestor(local_api_key=api_key)
+47        response, api_key = requestor.request(method=RequestMethod.GET, url=cls.class_url())
+48        return convert_to_easypost_object(response=response, api_key=api_key)
+49
+50    @classmethod
+51    def all_api_keys(cls, api_key: Optional[str] = None) -> "User":
+52        """Get all API keys including child user keys."""
+53        requestor = Requestor(local_api_key=api_key)
+54        url = "/api_keys"
+55        response, api_key = requestor.request(method=RequestMethod.GET, url=url)
+56        return convert_to_easypost_object(response=response, api_key=api_key)
+57
+58    def api_keys(self) -> List[str]:
+59        """Get the authenticated user's API keys."""
+60        api_keys = self.all_api_keys()
+61
+62        if api_keys.id == self.id:
+63            return api_keys.keys
+64        else:
+65            for child in api_keys.children:
+66                if child.id == self.id:
+67                    return child.keys
+68
+69        return []
+70
+71    def update_brand(self, api_key: Optional[str] = None, **params) -> "User":
+72        """Update the User's Brand."""
+73        requestor = Requestor(local_api_key=api_key)
+74        response, api_key = requestor.request(
+75            method=RequestMethod.PATCH, url=self.instance_url() + "/brand", params=params
+76        )
+77        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +
+
+ +
+ + class + User(easypost.resource.UpdateResource, easypost.resource.DeleteResource): + + + +
+ +
18class User(UpdateResource, DeleteResource):
+19    @classmethod
+20    def create(cls, api_key: Optional[str] = None, **params) -> "User":
+21        """Create a child user."""
+22        requestor = Requestor(local_api_key=api_key)
+23        url = cls.class_url()
+24        wrapped_params = {cls.snakecase_name(): params}
+25        response, api_key = requestor.request(
+26            method=RequestMethod.POST,
+27            url=url,
+28            params=wrapped_params,
+29        )
+30        return convert_to_easypost_object(response=response, api_key=api_key)
+31
+32    @classmethod
+33    def retrieve(cls, easypost_id: Optional[str] = None, api_key: Optional[str] = None, **params) -> "User":
+34        """Retrieve a user."""
+35        if not easypost_id:
+36            requestor = Requestor(local_api_key=api_key)
+37            response, api_key = requestor.request(method=RequestMethod.GET, url=cls.class_url())
+38            return convert_to_easypost_object(response=response, api_key=api_key)
+39        else:
+40            instance = cls(easypost_id=easypost_id, api_key=api_key, **params)
+41            instance.refresh()
+42            return instance
+43
+44    @classmethod
+45    def retrieve_me(cls, api_key: Optional[str] = None, **params) -> "User":
+46        """Retrieve the authenticated user."""
+47        requestor = Requestor(local_api_key=api_key)
+48        response, api_key = requestor.request(method=RequestMethod.GET, url=cls.class_url())
+49        return convert_to_easypost_object(response=response, api_key=api_key)
+50
+51    @classmethod
+52    def all_api_keys(cls, api_key: Optional[str] = None) -> "User":
+53        """Get all API keys including child user keys."""
+54        requestor = Requestor(local_api_key=api_key)
+55        url = "/api_keys"
+56        response, api_key = requestor.request(method=RequestMethod.GET, url=url)
+57        return convert_to_easypost_object(response=response, api_key=api_key)
+58
+59    def api_keys(self) -> List[str]:
+60        """Get the authenticated user's API keys."""
+61        api_keys = self.all_api_keys()
+62
+63        if api_keys.id == self.id:
+64            return api_keys.keys
+65        else:
+66            for child in api_keys.children:
+67                if child.id == self.id:
+68                    return child.keys
+69
+70        return []
+71
+72    def update_brand(self, api_key: Optional[str] = None, **params) -> "User":
+73        """Update the User's Brand."""
+74        requestor = Requestor(local_api_key=api_key)
+75        response, api_key = requestor.request(
+76            method=RequestMethod.PATCH, url=self.instance_url() + "/brand", params=params
+77        )
+78        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + + + +
+ +
+
@classmethod
+ + def + create(cls, api_key: Optional[str] = None, **params) -> easypost.user.User: + + + +
+ +
19    @classmethod
+20    def create(cls, api_key: Optional[str] = None, **params) -> "User":
+21        """Create a child user."""
+22        requestor = Requestor(local_api_key=api_key)
+23        url = cls.class_url()
+24        wrapped_params = {cls.snakecase_name(): params}
+25        response, api_key = requestor.request(
+26            method=RequestMethod.POST,
+27            url=url,
+28            params=wrapped_params,
+29        )
+30        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Create a child user.

+
+ + +
+
+ +
+
@classmethod
+ + def + retrieve( cls, easypost_id: Optional[str] = None, api_key: Optional[str] = None, **params) -> easypost.user.User: + + + +
+ +
32    @classmethod
+33    def retrieve(cls, easypost_id: Optional[str] = None, api_key: Optional[str] = None, **params) -> "User":
+34        """Retrieve a user."""
+35        if not easypost_id:
+36            requestor = Requestor(local_api_key=api_key)
+37            response, api_key = requestor.request(method=RequestMethod.GET, url=cls.class_url())
+38            return convert_to_easypost_object(response=response, api_key=api_key)
+39        else:
+40            instance = cls(easypost_id=easypost_id, api_key=api_key, **params)
+41            instance.refresh()
+42            return instance
+
+ + +

Retrieve a user.

+
+ + +
+
+ +
+
@classmethod
+ + def + retrieve_me(cls, api_key: Optional[str] = None, **params) -> easypost.user.User: + + + +
+ +
44    @classmethod
+45    def retrieve_me(cls, api_key: Optional[str] = None, **params) -> "User":
+46        """Retrieve the authenticated user."""
+47        requestor = Requestor(local_api_key=api_key)
+48        response, api_key = requestor.request(method=RequestMethod.GET, url=cls.class_url())
+49        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Retrieve the authenticated user.

+
+ + +
+
+ +
+
@classmethod
+ + def + all_api_keys(cls, api_key: Optional[str] = None) -> easypost.user.User: + + + +
+ +
51    @classmethod
+52    def all_api_keys(cls, api_key: Optional[str] = None) -> "User":
+53        """Get all API keys including child user keys."""
+54        requestor = Requestor(local_api_key=api_key)
+55        url = "/api_keys"
+56        response, api_key = requestor.request(method=RequestMethod.GET, url=url)
+57        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Get all API keys including child user keys.

+
+ + +
+
+ +
+ + def + api_keys(self) -> List[str]: + + + +
+ +
59    def api_keys(self) -> List[str]:
+60        """Get the authenticated user's API keys."""
+61        api_keys = self.all_api_keys()
+62
+63        if api_keys.id == self.id:
+64            return api_keys.keys
+65        else:
+66            for child in api_keys.children:
+67                if child.id == self.id:
+68                    return child.keys
+69
+70        return []
+
+ + +

Get the authenticated user's API keys.

+
+ + +
+
+ +
+ + def + update_brand(self, api_key: Optional[str] = None, **params) -> easypost.user.User: + + + +
+ +
72    def update_brand(self, api_key: Optional[str] = None, **params) -> "User":
+73        """Update the User's Brand."""
+74        requestor = Requestor(local_api_key=api_key)
+75        response, api_key = requestor.request(
+76            method=RequestMethod.PATCH, url=self.instance_url() + "/brand", params=params
+77        )
+78        return convert_to_easypost_object(response=response, api_key=api_key)
+
+ + +

Update the User's Brand.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/easypost/util.html b/docs/easypost/util.html new file mode 100644 index 00000000..e65394cb --- /dev/null +++ b/docs/easypost/util.html @@ -0,0 +1,319 @@ + + + + + + + easypost.util API documentation + + + + + + + + + +
+
+

+easypost.util

+ + + + + + +
 1from typing import List
+ 2
+ 3from easypost.easypost_object import EasyPostObject
+ 4from easypost.error import Error
+ 5
+ 6
+ 7def get_lowest_object_rate(
+ 8    easypost_object: EasyPostObject,
+ 9    carriers: List[str] = None,
+10    services: List[str] = None,
+11    rates_key: str = "rates",
+12):
+13    """Gets the lowest rate of an EasyPost object such as a Shipment, Order, or Pickup."""
+14    carriers = carriers or []
+15    services = services or []
+16    lowest_rate = None
+17
+18    carriers = [carrier.lower() for carrier in carriers]
+19    services = [service.lower() for service in services]
+20
+21    for rate in easypost_object.get(rates_key, []):
+22        if (carriers and rate.carrier.lower() not in carriers) or (services and rate.service.lower() not in services):
+23            continue
+24
+25        if lowest_rate is None or float(rate.rate) < float(lowest_rate.rate):
+26            lowest_rate = rate
+27
+28    if lowest_rate is None:
+29        raise Error(message="No rates found.")
+30
+31    return lowest_rate
+
+ + +
+
+ +
+ + def + get_lowest_object_rate( easypost_object: easypost.easypost_object.EasyPostObject, carriers: List[str] = None, services: List[str] = None, rates_key: str = 'rates'): + + + +
+ +
 8def get_lowest_object_rate(
+ 9    easypost_object: EasyPostObject,
+10    carriers: List[str] = None,
+11    services: List[str] = None,
+12    rates_key: str = "rates",
+13):
+14    """Gets the lowest rate of an EasyPost object such as a Shipment, Order, or Pickup."""
+15    carriers = carriers or []
+16    services = services or []
+17    lowest_rate = None
+18
+19    carriers = [carrier.lower() for carrier in carriers]
+20    services = [service.lower() for service in services]
+21
+22    for rate in easypost_object.get(rates_key, []):
+23        if (carriers and rate.carrier.lower() not in carriers) or (services and rate.service.lower() not in services):
+24            continue
+25
+26        if lowest_rate is None or float(rate.rate) < float(lowest_rate.rate):
+27            lowest_rate = rate
+28
+29    if lowest_rate is None:
+30        raise Error(message="No rates found.")
+31
+32    return lowest_rate
+
+ + +

Gets the lowest rate of an EasyPost object such as a Shipment, Order, or Pickup.

+
+ + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/version.html b/docs/easypost/version.html new file mode 100644 index 00000000..86b137e4 --- /dev/null +++ b/docs/easypost/version.html @@ -0,0 +1,241 @@ + + + + + + + easypost.version API documentation + + + + + + + + + +
+
+

+easypost.version

+ + + + + + +
1VERSION = "7.6.1"
+2
+3numbers = [str(number) for number in VERSION.split(".")]
+4VERSION_INFO = numbers
+
+ + +
+
+ + \ No newline at end of file diff --git a/docs/easypost/webhook.html b/docs/easypost/webhook.html new file mode 100644 index 00000000..0c4f118f --- /dev/null +++ b/docs/easypost/webhook.html @@ -0,0 +1,487 @@ + + + + + + + easypost.webhook API documentation + + + + + + + + + +
+
+

+easypost.webhook

+ + + + + + +
 1import hashlib
+ 2import hmac
+ 3import json
+ 4import unicodedata
+ 5from typing import (
+ 6    Any,
+ 7    Dict,
+ 8)
+ 9
+10from easypost.error import Error
+11from easypost.requestor import (
+12    RequestMethod,
+13    Requestor,
+14)
+15from easypost.resource import (
+16    AllResource,
+17    CreateResource,
+18    DeleteResource,
+19)
+20
+21
+22class Webhook(AllResource, CreateResource, DeleteResource):
+23    def update(self, **params) -> "Webhook":
+24        """Update a webhook."""
+25        requestor = Requestor(local_api_key=self._api_key)
+26        url = self.instance_url()
+27        response, api_key = requestor.request(method=RequestMethod.PATCH, url=url, params=params)
+28        self.refresh_from(values=response, api_key=api_key)
+29        return self
+30
+31    @staticmethod
+32    def validate_webhook(event_body: bytes, headers: Dict[str, Any], webhook_secret: str) -> Dict[str, Any]:
+33        """Validate a webhook by comparing the HMAC signature header sent from EasyPost to your shared secret.
+34        If the signatures do not match, an error will be raised signifying the webhook either did not originate
+35        from EasyPost or the secrets do not match. If the signatures do match, the `event_body` will be returned
+36        as JSON.
+37        """
+38        easypost_hmac_signature = headers.get("X-Hmac-Signature")
+39
+40        if easypost_hmac_signature:
+41            normalized_secret = unicodedata.normalize("NFKD", webhook_secret)
+42            encoded_secret = bytes(normalized_secret, "utf8")
+43
+44            expected_signature = hmac.new(
+45                key=encoded_secret,
+46                msg=event_body,
+47                digestmod=hashlib.sha256,
+48            )
+49
+50            digest = "hmac-sha256-hex=" + expected_signature.hexdigest()
+51
+52            if hmac.compare_digest(digest, easypost_hmac_signature):
+53                webhook_body = json.loads(event_body)
+54            else:
+55                raise Error(
+56                    message="Webhook received did not originate from EasyPost or had a webhook secret mismatch."
+57                )
+58        else:
+59            raise Error(message="Webhook received does not contain an HMAC signature.")
+60
+61        return webhook_body
+
+ + +
+
+ + + +
23class Webhook(AllResource, CreateResource, DeleteResource):
+24    def update(self, **params) -> "Webhook":
+25        """Update a webhook."""
+26        requestor = Requestor(local_api_key=self._api_key)
+27        url = self.instance_url()
+28        response, api_key = requestor.request(method=RequestMethod.PATCH, url=url, params=params)
+29        self.refresh_from(values=response, api_key=api_key)
+30        return self
+31
+32    @staticmethod
+33    def validate_webhook(event_body: bytes, headers: Dict[str, Any], webhook_secret: str) -> Dict[str, Any]:
+34        """Validate a webhook by comparing the HMAC signature header sent from EasyPost to your shared secret.
+35        If the signatures do not match, an error will be raised signifying the webhook either did not originate
+36        from EasyPost or the secrets do not match. If the signatures do match, the `event_body` will be returned
+37        as JSON.
+38        """
+39        easypost_hmac_signature = headers.get("X-Hmac-Signature")
+40
+41        if easypost_hmac_signature:
+42            normalized_secret = unicodedata.normalize("NFKD", webhook_secret)
+43            encoded_secret = bytes(normalized_secret, "utf8")
+44
+45            expected_signature = hmac.new(
+46                key=encoded_secret,
+47                msg=event_body,
+48                digestmod=hashlib.sha256,
+49            )
+50
+51            digest = "hmac-sha256-hex=" + expected_signature.hexdigest()
+52
+53            if hmac.compare_digest(digest, easypost_hmac_signature):
+54                webhook_body = json.loads(event_body)
+55            else:
+56                raise Error(
+57                    message="Webhook received did not originate from EasyPost or had a webhook secret mismatch."
+58                )
+59        else:
+60            raise Error(message="Webhook received does not contain an HMAC signature.")
+61
+62        return webhook_body
+
+ + + + +
+ +
+ + def + update(self, **params) -> easypost.webhook.Webhook: + + + +
+ +
24    def update(self, **params) -> "Webhook":
+25        """Update a webhook."""
+26        requestor = Requestor(local_api_key=self._api_key)
+27        url = self.instance_url()
+28        response, api_key = requestor.request(method=RequestMethod.PATCH, url=url, params=params)
+29        self.refresh_from(values=response, api_key=api_key)
+30        return self
+
+ + +

Update a webhook.

+
+ + +
+
+ +
+
@staticmethod
+ + def + validate_webhook( event_body: bytes, headers: Dict[str, Any], webhook_secret: str) -> Dict[str, Any]: + + + +
+ +
32    @staticmethod
+33    def validate_webhook(event_body: bytes, headers: Dict[str, Any], webhook_secret: str) -> Dict[str, Any]:
+34        """Validate a webhook by comparing the HMAC signature header sent from EasyPost to your shared secret.
+35        If the signatures do not match, an error will be raised signifying the webhook either did not originate
+36        from EasyPost or the secrets do not match. If the signatures do match, the `event_body` will be returned
+37        as JSON.
+38        """
+39        easypost_hmac_signature = headers.get("X-Hmac-Signature")
+40
+41        if easypost_hmac_signature:
+42            normalized_secret = unicodedata.normalize("NFKD", webhook_secret)
+43            encoded_secret = bytes(normalized_secret, "utf8")
+44
+45            expected_signature = hmac.new(
+46                key=encoded_secret,
+47                msg=event_body,
+48                digestmod=hashlib.sha256,
+49            )
+50
+51            digest = "hmac-sha256-hex=" + expected_signature.hexdigest()
+52
+53            if hmac.compare_digest(digest, easypost_hmac_signature):
+54                webhook_body = json.loads(event_body)
+55            else:
+56                raise Error(
+57                    message="Webhook received did not originate from EasyPost or had a webhook secret mismatch."
+58                )
+59        else:
+60            raise Error(message="Webhook received does not contain an HMAC signature.")
+61
+62        return webhook_body
+
+ + +

Validate a webhook by comparing the HMAC signature header sent from EasyPost to your shared secret. +If the signatures do not match, an error will be raised signifying the webhook either did not originate +from EasyPost or the secrets do not match. If the signatures do match, the event_body will be returned +as JSON.

+
+ + +
+ +
+
+ + \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..b6bf4bc1 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/search.js b/docs/search.js new file mode 100644 index 00000000..520b1ab6 --- /dev/null +++ b/docs/search.js @@ -0,0 +1,46 @@ +window.pdocSearch = (function(){ +/** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();o

\n"}, "easypost.address": {"fullname": "easypost.address", "modulename": "easypost.address", "type": "module", "doc": "

\n"}, "easypost.address.Address": {"fullname": "easypost.address.Address", "modulename": "easypost.address", "qualname": "Address", "type": "class", "doc": "

\n", "bases": "easypost.resource.AllResource"}, "easypost.address.Address.create": {"fullname": "easypost.address.Address.create", "modulename": "easypost.address", "qualname": "Address.create", "type": "function", "doc": "

Create an address.

\n", "signature": "(\tcls,\tapi_key: Optional[str] = None,\tverify: Union[Dict[str, Any], str, bool, NoneType] = None,\tverify_strict: Union[Dict[str, Any], str, bool, NoneType] = None,\t**params) -> easypost.address.Address:", "funcdef": "def"}, "easypost.address.Address.create_and_verify": {"fullname": "easypost.address.Address.create_and_verify", "modulename": "easypost.address", "qualname": "Address.create_and_verify", "type": "function", "doc": "

Create and verify an address.

\n", "signature": "(cls, api_key: Optional[str] = None, **params) -> easypost.address.Address:", "funcdef": "def"}, "easypost.address.Address.verify": {"fullname": "easypost.address.Address.verify", "modulename": "easypost.address", "qualname": "Address.verify", "type": "function", "doc": "

Verify an address.

\n", "signature": "(self) -> easypost.address.Address:", "funcdef": "def"}, "easypost.batch": {"fullname": "easypost.batch", "modulename": "easypost.batch", "type": "module", "doc": "

\n"}, "easypost.batch.Batch": {"fullname": "easypost.batch.Batch", "modulename": "easypost.batch", "qualname": "Batch", "type": "class", "doc": "

\n", "bases": "easypost.resource.AllResource, easypost.resource.CreateResource"}, "easypost.batch.Batch.create_and_buy": {"fullname": "easypost.batch.Batch.create_and_buy", "modulename": "easypost.batch", "qualname": "Batch.create_and_buy", "type": "function", "doc": "

Create and buy a Batch.

\n", "signature": "(cls, api_key: Optional[str] = None, **params) -> easypost.batch.Batch:", "funcdef": "def"}, "easypost.batch.Batch.buy": {"fullname": "easypost.batch.Batch.buy", "modulename": "easypost.batch", "qualname": "Batch.buy", "type": "function", "doc": "

Buy a batch.

\n", "signature": "(self, **params) -> easypost.batch.Batch:", "funcdef": "def"}, "easypost.batch.Batch.label": {"fullname": "easypost.batch.Batch.label", "modulename": "easypost.batch", "qualname": "Batch.label", "type": "function", "doc": "

Create a batch label.

\n", "signature": "(self, **params) -> easypost.batch.Batch:", "funcdef": "def"}, "easypost.batch.Batch.remove_shipments": {"fullname": "easypost.batch.Batch.remove_shipments", "modulename": "easypost.batch", "qualname": "Batch.remove_shipments", "type": "function", "doc": "

Remove shipments from a batch.

\n", "signature": "(self, **params) -> easypost.batch.Batch:", "funcdef": "def"}, "easypost.batch.Batch.add_shipments": {"fullname": "easypost.batch.Batch.add_shipments", "modulename": "easypost.batch", "qualname": "Batch.add_shipments", "type": "function", "doc": "

Add shipments from a batch.

\n", "signature": "(self, **params) -> easypost.batch.Batch:", "funcdef": "def"}, "easypost.batch.Batch.create_scan_form": {"fullname": "easypost.batch.Batch.create_scan_form", "modulename": "easypost.batch", "qualname": "Batch.create_scan_form", "type": "function", "doc": "

Create a scanform for a batch.

\n", "signature": "(self, **params) -> easypost.batch.Batch:", "funcdef": "def"}, "easypost.beta": {"fullname": "easypost.beta", "modulename": "easypost.beta", "type": "module", "doc": "

\n"}, "easypost.beta.referral": {"fullname": "easypost.beta.referral", "modulename": "easypost.beta.referral", "type": "module", "doc": "

\n"}, "easypost.beta.referral.Referral": {"fullname": "easypost.beta.referral.Referral", "modulename": "easypost.beta.referral", "qualname": "Referral", "type": "class", "doc": "

\n"}, "easypost.beta.referral.Referral.__init__": {"fullname": "easypost.beta.referral.Referral.__init__", "modulename": "easypost.beta.referral", "qualname": "Referral.__init__", "type": "function", "doc": "

\n", "signature": "()"}, "easypost.beta.referral.Referral.create": {"fullname": "easypost.beta.referral.Referral.create", "modulename": "easypost.beta.referral", "qualname": "Referral.create", "type": "function", "doc": "

Create a referral user.

\n\n

This function requires the Partner User's API key.

\n", "signature": "(api_key: Optional[str] = None, **params) -> Dict[str, Any]:", "funcdef": "def"}, "easypost.beta.referral.Referral.update_email": {"fullname": "easypost.beta.referral.Referral.update_email", "modulename": "easypost.beta.referral", "qualname": "Referral.update_email", "type": "function", "doc": "

Update a referral user.

\n\n

This function requires the Partner User's API key.

\n", "signature": "(email, user_id, api_key: Optional[str] = None) -> bool:", "funcdef": "def"}, "easypost.beta.referral.Referral.all": {"fullname": "easypost.beta.referral.Referral.all", "modulename": "easypost.beta.referral", "qualname": "Referral.all", "type": "function", "doc": "

Retrieve a list of referral users.

\n\n

This function requires the Partner User's API key.

\n", "signature": "(api_key: Optional[str] = None, **params) -> List:", "funcdef": "def"}, "easypost.beta.referral.Referral.add_credit_card": {"fullname": "easypost.beta.referral.Referral.add_credit_card", "modulename": "easypost.beta.referral", "qualname": "Referral.add_credit_card", "type": "function", "doc": "

Add credit card to a referral user.

\n\n

This function requires the Referral User's API key.

\n", "signature": "(\treferral_api_key: str,\tnumber: str,\texpiration_month: int,\texpiration_year: int,\tcvc: str,\tprimary_or_secondary: str = 'primary') -> Dict[str, Any]:", "funcdef": "def"}, "easypost.billing": {"fullname": "easypost.billing", "modulename": "easypost.billing", "type": "module", "doc": "

\n"}, "easypost.billing.Billing": {"fullname": "easypost.billing.Billing", "modulename": "easypost.billing", "qualname": "Billing", "type": "class", "doc": "

\n", "bases": "easypost.resource.Resource"}, "easypost.billing.Billing.fund_wallet": {"fullname": "easypost.billing.Billing.fund_wallet", "modulename": "easypost.billing", "qualname": "Billing.fund_wallet", "type": "function", "doc": "

Fund your EasyPost wallet by charging your primary or secondary payment method on file.

\n", "signature": "(\tcls,\tamount: str,\tprimary_or_secondary: str = 'primary',\tapi_key: Optional[str] = None) -> bool:", "funcdef": "def"}, "easypost.billing.Billing.delete_payment_method": {"fullname": "easypost.billing.Billing.delete_payment_method", "modulename": "easypost.billing", "qualname": "Billing.delete_payment_method", "type": "function", "doc": "

Delete a payment method.

\n", "signature": "(cls, primary_or_secondary: str, api_key: Optional[str] = None) -> bool:", "funcdef": "def"}, "easypost.billing.Billing.retrieve_payment_methods": {"fullname": "easypost.billing.Billing.retrieve_payment_methods", "modulename": "easypost.billing", "qualname": "Billing.retrieve_payment_methods", "type": "function", "doc": "

Retrieve payment methods.

\n", "signature": "(cls, api_key: Optional[str] = None, **params) -> Dict[str, Any]:", "funcdef": "def"}, "easypost.brand": {"fullname": "easypost.brand", "modulename": "easypost.brand", "type": "module", "doc": "

\n"}, "easypost.brand.Brand": {"fullname": "easypost.brand.Brand", "modulename": "easypost.brand", "qualname": "Brand", "type": "class", "doc": "

\n", "bases": "easypost.resource.Resource"}, "easypost.carrier_account": {"fullname": "easypost.carrier_account", "modulename": "easypost.carrier_account", "type": "module", "doc": "

\n"}, "easypost.carrier_account.CarrierAccount": {"fullname": "easypost.carrier_account.CarrierAccount", "modulename": "easypost.carrier_account", "qualname": "CarrierAccount", "type": "class", "doc": "

\n", "bases": "easypost.resource.AllResource, easypost.resource.CreateResource, easypost.resource.UpdateResource, easypost.resource.DeleteResource"}, "easypost.carrier_account.CarrierAccount.types": {"fullname": "easypost.carrier_account.CarrierAccount.types", "modulename": "easypost.carrier_account", "qualname": "CarrierAccount.types", "type": "function", "doc": "

Get the types of carrier accounts available to the user.

\n", "signature": "(cls, api_key: Optional[str] = None) -> List[str]:", "funcdef": "def"}, "easypost.constant": {"fullname": "easypost.constant", "modulename": "easypost.constant", "type": "module", "doc": "

\n"}, "easypost.customs_info": {"fullname": "easypost.customs_info", "modulename": "easypost.customs_info", "type": "module", "doc": "

\n"}, "easypost.customs_info.CustomsInfo": {"fullname": "easypost.customs_info.CustomsInfo", "modulename": "easypost.customs_info", "qualname": "CustomsInfo", "type": "class", "doc": "

\n", "bases": "easypost.resource.CreateResource"}, "easypost.customs_item": {"fullname": "easypost.customs_item", "modulename": "easypost.customs_item", "type": "module", "doc": "

\n"}, "easypost.customs_item.CustomsItem": {"fullname": "easypost.customs_item.CustomsItem", "modulename": "easypost.customs_item", "qualname": "CustomsItem", "type": "class", "doc": "

\n", "bases": "easypost.resource.CreateResource"}, "easypost.easypost_object": {"fullname": "easypost.easypost_object", "modulename": "easypost.easypost_object", "type": "module", "doc": "

\n"}, "easypost.easypost_object.convert_to_easypost_object": {"fullname": "easypost.easypost_object.convert_to_easypost_object", "modulename": "easypost.easypost_object", "qualname": "convert_to_easypost_object", "type": "function", "doc": "

Convert a response to an EasyPost object.

\n", "signature": "(\tresponse: Dict[str, Any],\tapi_key: Optional[str] = None,\tparent: object = None,\tname: Optional[str] = None):", "funcdef": "def"}, "easypost.easypost_object.EasyPostObject": {"fullname": "easypost.easypost_object.EasyPostObject", "modulename": "easypost.easypost_object", "qualname": "EasyPostObject", "type": "class", "doc": "

\n"}, "easypost.easypost_object.EasyPostObject.__init__": {"fullname": "easypost.easypost_object.EasyPostObject.__init__", "modulename": "easypost.easypost_object", "qualname": "EasyPostObject.__init__", "type": "function", "doc": "

\n", "signature": "(\teasypost_id: Optional[str] = None,\tapi_key: Optional[str] = None,\tparent: object = None,\tname: Optional[str] = None,\t**params)"}, "easypost.easypost_object.EasyPostObject.get": {"fullname": "easypost.easypost_object.EasyPostObject.get", "modulename": "easypost.easypost_object", "qualname": "EasyPostObject.get", "type": "function", "doc": "

\n", "signature": "(self, k, default: Any = None) -> Any:", "funcdef": "def"}, "easypost.easypost_object.EasyPostObject.setdefault": {"fullname": "easypost.easypost_object.EasyPostObject.setdefault", "modulename": "easypost.easypost_object", "qualname": "EasyPostObject.setdefault", "type": "function", "doc": "

\n", "signature": "(self, k, default: Any = None) -> Any:", "funcdef": "def"}, "easypost.easypost_object.EasyPostObject.construct_from": {"fullname": "easypost.easypost_object.EasyPostObject.construct_from", "modulename": "easypost.easypost_object", "qualname": "EasyPostObject.construct_from", "type": "function", "doc": "

Construct an object.

\n", "signature": "(\tcls,\tvalues: Dict[str, Any],\tapi_key: Optional[str] = None,\tparent: object = None,\tname: Optional[str] = None) -> object:", "funcdef": "def"}, "easypost.easypost_object.EasyPostObject.refresh_from": {"fullname": "easypost.easypost_object.EasyPostObject.refresh_from", "modulename": "easypost.easypost_object", "qualname": "EasyPostObject.refresh_from", "type": "function", "doc": "

Update local object with changes from the API.

\n", "signature": "(self, values: Dict[str, Any], api_key: Optional[str] = None) -> None:", "funcdef": "def"}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"fullname": "easypost.easypost_object.EasyPostObject.flatten_unsaved", "modulename": "easypost.easypost_object", "qualname": "EasyPostObject.flatten_unsaved", "type": "function", "doc": "

Return a dict of _unsaved_values values from the current object.

\n", "signature": "(self) -> Dict[str, Any]:", "funcdef": "def"}, "easypost.easypost_object.EasyPostObject.to_json": {"fullname": "easypost.easypost_object.EasyPostObject.to_json", "modulename": "easypost.easypost_object", "qualname": "EasyPostObject.to_json", "type": "function", "doc": "

Convert current object to json string.

\n", "signature": "(self, indent: int = None) -> str:", "funcdef": "def"}, "easypost.easypost_object.EasyPostObject.to_dict": {"fullname": "easypost.easypost_object.EasyPostObject.to_dict", "modulename": "easypost.easypost_object", "qualname": "EasyPostObject.to_dict", "type": "function", "doc": "

Convert current object to a dict.

\n", "signature": "(self) -> Dict[str, Any]:", "funcdef": "def"}, "easypost.easypost_object.EasyPostObjectEncoder": {"fullname": "easypost.easypost_object.EasyPostObjectEncoder", "modulename": "easypost.easypost_object", "qualname": "EasyPostObjectEncoder", "type": "class", "doc": "

Extensible JSON https://json.org encoder for Python data structures.

\n\n

Supports the following objects and types by default:

\n\n

+-------------------+---------------+\n| Python | JSON |\n+===================+===============+\n| dict | object |\n+-------------------+---------------+\n| list, tuple | array |\n+-------------------+---------------+\n| str | string |\n+-------------------+---------------+\n| int, float | number |\n+-------------------+---------------+\n| True | true |\n+-------------------+---------------+\n| False | false |\n+-------------------+---------------+\n| None | null |\n+-------------------+---------------+

\n\n

To extend this to recognize other objects, subclass and implement a\n.default() method with another method that returns a serializable\nobject for o if possible, otherwise it should call the superclass\nimplementation (to raise TypeError).

\n", "bases": "json.encoder.JSONEncoder"}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"fullname": "easypost.easypost_object.EasyPostObjectEncoder.default", "modulename": "easypost.easypost_object", "qualname": "EasyPostObjectEncoder.default", "type": "function", "doc": "

Convert easypost object to a dict.

\n", "signature": "(self, obj: Any) -> Any:", "funcdef": "def"}, "easypost.endshipper": {"fullname": "easypost.endshipper", "modulename": "easypost.endshipper", "type": "module", "doc": "

\n"}, "easypost.endshipper.EndShipper": {"fullname": "easypost.endshipper.EndShipper", "modulename": "easypost.endshipper", "qualname": "EndShipper", "type": "class", "doc": "

\n", "bases": "easypost.resource.AllResource"}, "easypost.endshipper.EndShipper.create": {"fullname": "easypost.endshipper.EndShipper.create", "modulename": "easypost.endshipper", "qualname": "EndShipper.create", "type": "function", "doc": "

Create an EndShipper.

\n", "signature": "(\tcls,\tapi_key: Optional[str] = None,\t**params) -> easypost.endshipper.EndShipper:", "funcdef": "def"}, "easypost.endshipper.EndShipper.save": {"fullname": "easypost.endshipper.EndShipper.save", "modulename": "easypost.endshipper", "qualname": "EndShipper.save", "type": "function", "doc": "

Update an EndShipper object.

\n\n

This function requires all parameters to be present for an EndShipper.

\n", "signature": "(self) -> easypost.endshipper.EndShipper:", "funcdef": "def"}, "easypost.error": {"fullname": "easypost.error", "modulename": "easypost.error", "type": "module", "doc": "

\n"}, "easypost.error.Error": {"fullname": "easypost.error.Error", "modulename": "easypost.error", "qualname": "Error", "type": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "builtins.Exception"}, "easypost.error.Error.__init__": {"fullname": "easypost.error.Error.__init__", "modulename": "easypost.error", "qualname": "Error.__init__", "type": "function", "doc": "

\n", "signature": "(\tmessage: Union[str, list, NoneType] = None,\thttp_status: Optional[int] = None,\thttp_body: Union[str, bytes, NoneType] = None,\toriginal_exception: Optional[Exception] = None)"}, "easypost.event": {"fullname": "easypost.event", "modulename": "easypost.event", "type": "module", "doc": "

\n"}, "easypost.event.Event": {"fullname": "easypost.event.Event", "modulename": "easypost.event", "qualname": "Event", "type": "class", "doc": "

\n", "bases": "easypost.resource.AllResource"}, "easypost.event.Event.receive": {"fullname": "easypost.event.Event.receive", "modulename": "easypost.event", "qualname": "Event.receive", "type": "function", "doc": "

\n", "signature": "(cls, values: str) -> easypost.event.Event:", "funcdef": "def"}, "easypost.insurance": {"fullname": "easypost.insurance", "modulename": "easypost.insurance", "type": "module", "doc": "

\n"}, "easypost.insurance.Insurance": {"fullname": "easypost.insurance.Insurance", "modulename": "easypost.insurance", "qualname": "Insurance", "type": "class", "doc": "

\n", "bases": "easypost.resource.AllResource, easypost.resource.CreateResource"}, "easypost.order": {"fullname": "easypost.order", "modulename": "easypost.order", "type": "module", "doc": "

\n"}, "easypost.order.Order": {"fullname": "easypost.order.Order", "modulename": "easypost.order", "qualname": "Order", "type": "class", "doc": "

\n", "bases": "easypost.resource.CreateResource"}, "easypost.order.Order.get_rates": {"fullname": "easypost.order.Order.get_rates", "modulename": "easypost.order", "qualname": "Order.get_rates", "type": "function", "doc": "

Get rates for an order.

\n", "signature": "(self) -> easypost.order.Order:", "funcdef": "def"}, "easypost.order.Order.buy": {"fullname": "easypost.order.Order.buy", "modulename": "easypost.order", "qualname": "Order.buy", "type": "function", "doc": "

Buy an order.

\n", "signature": "(self, **params) -> easypost.order.Order:", "funcdef": "def"}, "easypost.order.Order.lowest_rate": {"fullname": "easypost.order.Order.lowest_rate", "modulename": "easypost.order", "qualname": "Order.lowest_rate", "type": "function", "doc": "

Get the lowest rate of this order.

\n", "signature": "(self, carriers: List[str] = None, services: List[str] = None):", "funcdef": "def"}, "easypost.parcel": {"fullname": "easypost.parcel", "modulename": "easypost.parcel", "type": "module", "doc": "

\n"}, "easypost.parcel.Parcel": {"fullname": "easypost.parcel.Parcel", "modulename": "easypost.parcel", "qualname": "Parcel", "type": "class", "doc": "

\n", "bases": "easypost.resource.CreateResource"}, "easypost.pickup": {"fullname": "easypost.pickup", "modulename": "easypost.pickup", "type": "module", "doc": "

\n"}, "easypost.pickup.Pickup": {"fullname": "easypost.pickup.Pickup", "modulename": "easypost.pickup", "qualname": "Pickup", "type": "class", "doc": "

\n", "bases": "easypost.resource.CreateResource"}, "easypost.pickup.Pickup.buy": {"fullname": "easypost.pickup.Pickup.buy", "modulename": "easypost.pickup", "qualname": "Pickup.buy", "type": "function", "doc": "

Buy a pickup.

\n", "signature": "(self, **params) -> easypost.pickup.Pickup:", "funcdef": "def"}, "easypost.pickup.Pickup.cancel": {"fullname": "easypost.pickup.Pickup.cancel", "modulename": "easypost.pickup", "qualname": "Pickup.cancel", "type": "function", "doc": "

Cancel a pickup.

\n", "signature": "(self, **params) -> easypost.pickup.Pickup:", "funcdef": "def"}, "easypost.pickup.Pickup.lowest_rate": {"fullname": "easypost.pickup.Pickup.lowest_rate", "modulename": "easypost.pickup", "qualname": "Pickup.lowest_rate", "type": "function", "doc": "

Get the lowest rate of this pickup.

\n", "signature": "(self, carriers: List[str] = None, services: List[str] = None):", "funcdef": "def"}, "easypost.pickup_rate": {"fullname": "easypost.pickup_rate", "modulename": "easypost.pickup_rate", "type": "module", "doc": "

\n"}, "easypost.pickup_rate.PickupRate": {"fullname": "easypost.pickup_rate.PickupRate", "modulename": "easypost.pickup_rate", "qualname": "PickupRate", "type": "class", "doc": "

\n", "bases": "easypost.resource.Resource"}, "easypost.postage_label": {"fullname": "easypost.postage_label", "modulename": "easypost.postage_label", "type": "module", "doc": "

\n"}, "easypost.postage_label.PostageLabel": {"fullname": "easypost.postage_label.PostageLabel", "modulename": "easypost.postage_label", "qualname": "PostageLabel", "type": "class", "doc": "

\n", "bases": "easypost.resource.Resource"}, "easypost.rate": {"fullname": "easypost.rate", "modulename": "easypost.rate", "type": "module", "doc": "

\n"}, "easypost.rate.Rate": {"fullname": "easypost.rate.Rate", "modulename": "easypost.rate", "qualname": "Rate", "type": "class", "doc": "

\n", "bases": "easypost.resource.Resource"}, "easypost.referral": {"fullname": "easypost.referral", "modulename": "easypost.referral", "type": "module", "doc": "

\n"}, "easypost.referral.Referral": {"fullname": "easypost.referral.Referral", "modulename": "easypost.referral", "qualname": "Referral", "type": "class", "doc": "

\n"}, "easypost.referral.Referral.__init__": {"fullname": "easypost.referral.Referral.__init__", "modulename": "easypost.referral", "qualname": "Referral.__init__", "type": "function", "doc": "

\n", "signature": "()"}, "easypost.referral.Referral.create": {"fullname": "easypost.referral.Referral.create", "modulename": "easypost.referral", "qualname": "Referral.create", "type": "function", "doc": "

Create a referral user.

\n\n

This function requires the Partner User's API key.

\n", "signature": "(api_key: Optional[str] = None, **params) -> Dict[str, Any]:", "funcdef": "def"}, "easypost.referral.Referral.update_email": {"fullname": "easypost.referral.Referral.update_email", "modulename": "easypost.referral", "qualname": "Referral.update_email", "type": "function", "doc": "

Update a referral user.

\n\n

This function requires the Partner User's API key.

\n", "signature": "(email, user_id, api_key: Optional[str] = None) -> bool:", "funcdef": "def"}, "easypost.referral.Referral.all": {"fullname": "easypost.referral.Referral.all", "modulename": "easypost.referral", "qualname": "Referral.all", "type": "function", "doc": "

Retrieve a list of referral users.

\n\n

This function requires the Partner User's API key.

\n", "signature": "(api_key: Optional[str] = None, **params) -> List:", "funcdef": "def"}, "easypost.referral.Referral.add_credit_card": {"fullname": "easypost.referral.Referral.add_credit_card", "modulename": "easypost.referral", "qualname": "Referral.add_credit_card", "type": "function", "doc": "

Add credit card to a referral user.

\n\n

This function requires the Referral User's API key.

\n", "signature": "(\treferral_api_key: str,\tnumber: str,\texpiration_month: int,\texpiration_year: int,\tcvc: str,\tprimary_or_secondary: str = 'primary') -> Dict[str, Any]:", "funcdef": "def"}, "easypost.refund": {"fullname": "easypost.refund", "modulename": "easypost.refund", "type": "module", "doc": "

\n"}, "easypost.refund.Refund": {"fullname": "easypost.refund.Refund", "modulename": "easypost.refund", "qualname": "Refund", "type": "class", "doc": "

\n", "bases": "easypost.resource.CreateResource, easypost.resource.AllResource"}, "easypost.report": {"fullname": "easypost.report", "modulename": "easypost.report", "type": "module", "doc": "

\n"}, "easypost.report.Report": {"fullname": "easypost.report.Report", "modulename": "easypost.report", "qualname": "Report", "type": "class", "doc": "

\n", "bases": "easypost.resource.Resource"}, "easypost.report.Report.create": {"fullname": "easypost.report.Report.create", "modulename": "easypost.report", "qualname": "Report.create", "type": "function", "doc": "

Create a report.

\n", "signature": "(cls, api_key: Optional[str] = None, **params):", "funcdef": "def"}, "easypost.report.Report.all": {"fullname": "easypost.report.Report.all", "modulename": "easypost.report", "qualname": "Report.all", "type": "function", "doc": "

Retrieve all reports.

\n", "signature": "(cls, api_key: Optional[str] = None, **params):", "funcdef": "def"}, "easypost.requestor": {"fullname": "easypost.requestor", "modulename": "easypost.requestor", "type": "module", "doc": "

\n"}, "easypost.requestor.RequestMethod": {"fullname": "easypost.requestor.RequestMethod", "modulename": "easypost.requestor", "qualname": "RequestMethod", "type": "class", "doc": "

An enumeration.

\n", "bases": "enum.Enum"}, "easypost.requestor.Requestor": {"fullname": "easypost.requestor.Requestor", "modulename": "easypost.requestor", "qualname": "Requestor", "type": "class", "doc": "

\n"}, "easypost.requestor.Requestor.__init__": {"fullname": "easypost.requestor.Requestor.__init__", "modulename": "easypost.requestor", "qualname": "Requestor.__init__", "type": "function", "doc": "

\n", "signature": "(local_api_key: Optional[str] = None)"}, "easypost.requestor.Requestor.form_encode_params": {"fullname": "easypost.requestor.Requestor.form_encode_params", "modulename": "easypost.requestor", "qualname": "Requestor.form_encode_params", "type": "function", "doc": "

Form-encode a multi-layer dictionary to a one-layer dictionary.

\n", "signature": "(\tdata: Dict,\tparent_keys: List[str] = None,\tparent_dict: Dict = None) -> Dict:", "funcdef": "def"}, "easypost.requestor.Requestor.request": {"fullname": "easypost.requestor.Requestor.request", "modulename": "easypost.requestor", "qualname": "Requestor.request", "type": "function", "doc": "

Make a request to the EasyPost API.

\n", "signature": "(\tself,\tmethod: easypost.requestor.RequestMethod,\turl: str,\tparams: Optional[Dict[str, Any]] = None,\tapi_key_required: bool = True,\tbeta: bool = False) -> Tuple[dict, Optional[str]]:", "funcdef": "def"}, "easypost.requestor.Requestor.request_raw": {"fullname": "easypost.requestor.Requestor.request_raw", "modulename": "easypost.requestor", "qualname": "Requestor.request_raw", "type": "function", "doc": "

Internal logic required to make a request to the EasyPost API.

\n", "signature": "(\tself,\tmethod: easypost.requestor.RequestMethod,\turl: str,\tparams: Optional[Dict[str, Any]] = None,\tapi_key_required: bool = True,\tbeta: bool = False) -> Tuple[str, int, Optional[str]]:", "funcdef": "def"}, "easypost.requestor.Requestor.interpret_response": {"fullname": "easypost.requestor.Requestor.interpret_response", "modulename": "easypost.requestor", "qualname": "Requestor.interpret_response", "type": "function", "doc": "

Interpret the response body we receive from the API.

\n", "signature": "(self, http_body: str, http_status: int) -> Dict[str, Any]:", "funcdef": "def"}, "easypost.requestor.Requestor.requests_request": {"fullname": "easypost.requestor.Requestor.requests_request", "modulename": "easypost.requestor", "qualname": "Requestor.requests_request", "type": "function", "doc": "

Make a request by using the request library.

\n", "signature": "(\tself,\tmethod: easypost.requestor.RequestMethod,\tabs_url: str,\theaders: Dict[str, Any],\tparams: Dict[str, Any]) -> Tuple[str, int]:", "funcdef": "def"}, "easypost.requestor.Requestor.urlfetch_request": {"fullname": "easypost.requestor.Requestor.urlfetch_request", "modulename": "easypost.requestor", "qualname": "Requestor.urlfetch_request", "type": "function", "doc": "

Make a request by using the urlfetch library.

\n", "signature": "(\tself,\tmethod: easypost.requestor.RequestMethod,\tabs_url: str,\theaders: Dict[str, Any],\tparams: Dict[str, Any]) -> Tuple[str, int]:", "funcdef": "def"}, "easypost.requestor.Requestor.handle_api_error": {"fullname": "easypost.requestor.Requestor.handle_api_error", "modulename": "easypost.requestor", "qualname": "Requestor.handle_api_error", "type": "function", "doc": "

Handles API errors returned from EasyPost.

\n", "signature": "(self, http_status: int, http_body: str, response: Dict[str, Any]) -> None:", "funcdef": "def"}, "easypost.requestor.Requestor.encode_url_params": {"fullname": "easypost.requestor.Requestor.encode_url_params", "modulename": "easypost.requestor", "qualname": "Requestor.encode_url_params", "type": "function", "doc": "

Encode params for a URL.

\n", "signature": "(\tself,\tparams: Dict[str, Any],\tmethod: easypost.requestor.RequestMethod) -> Optional[str]:", "funcdef": "def"}, "easypost.requestor.Requestor.add_params_to_url": {"fullname": "easypost.requestor.Requestor.add_params_to_url", "modulename": "easypost.requestor", "qualname": "Requestor.add_params_to_url", "type": "function", "doc": "

Add params to the URL.

\n", "signature": "(\tself,\turl: str,\tparams: Dict[str, Any],\tmethod: easypost.requestor.RequestMethod) -> str:", "funcdef": "def"}, "easypost.resource": {"fullname": "easypost.resource", "modulename": "easypost.resource", "type": "module", "doc": "

\n"}, "easypost.resource.Resource": {"fullname": "easypost.resource.Resource", "modulename": "easypost.resource", "qualname": "Resource", "type": "class", "doc": "

\n", "bases": "easypost.easypost_object.EasyPostObject"}, "easypost.resource.Resource.retrieve": {"fullname": "easypost.resource.Resource.retrieve", "modulename": "easypost.resource", "qualname": "Resource.retrieve", "type": "function", "doc": "

Retrieve an object from the EasyPost API.

\n", "signature": "(cls, easypost_id: str, api_key: Optional[str] = None, **params) -> object:", "funcdef": "def"}, "easypost.resource.Resource.refresh": {"fullname": "easypost.resource.Resource.refresh", "modulename": "easypost.resource", "qualname": "Resource.refresh", "type": "function", "doc": "

Refresh the local object from the API response.

\n", "signature": "(self) -> object:", "funcdef": "def"}, "easypost.resource.Resource.snakecase_name": {"fullname": "easypost.resource.Resource.snakecase_name", "modulename": "easypost.resource", "qualname": "Resource.snakecase_name", "type": "function", "doc": "

Return the class name as snake_case.

\n", "signature": "(cls) -> str:", "funcdef": "def"}, "easypost.resource.Resource.class_url": {"fullname": "easypost.resource.Resource.class_url", "modulename": "easypost.resource", "qualname": "Resource.class_url", "type": "function", "doc": "

Generate a URL based on class name.

\n", "signature": "(cls) -> str:", "funcdef": "def"}, "easypost.resource.Resource.instance_url": {"fullname": "easypost.resource.Resource.instance_url", "modulename": "easypost.resource", "qualname": "Resource.instance_url", "type": "function", "doc": "

Generate an instance URL based on the ID of the object.

\n", "signature": "(self) -> str:", "funcdef": "def"}, "easypost.resource.AllResource": {"fullname": "easypost.resource.AllResource", "modulename": "easypost.resource", "qualname": "AllResource", "type": "class", "doc": "

\n", "bases": "Resource"}, "easypost.resource.AllResource.all": {"fullname": "easypost.resource.AllResource.all", "modulename": "easypost.resource", "qualname": "AllResource.all", "type": "function", "doc": "

Retrieve a list of records from the API.

\n", "signature": "(cls, api_key: Optional[str] = None, **params) -> List[Any]:", "funcdef": "def"}, "easypost.resource.CreateResource": {"fullname": "easypost.resource.CreateResource", "modulename": "easypost.resource", "qualname": "CreateResource", "type": "class", "doc": "

\n", "bases": "Resource"}, "easypost.resource.CreateResource.create": {"fullname": "easypost.resource.CreateResource.create", "modulename": "easypost.resource", "qualname": "CreateResource.create", "type": "function", "doc": "

Create an EasyPost object.

\n", "signature": "(cls, api_key: Optional[str] = None, **params) -> Any:", "funcdef": "def"}, "easypost.resource.UpdateResource": {"fullname": "easypost.resource.UpdateResource", "modulename": "easypost.resource", "qualname": "UpdateResource", "type": "class", "doc": "

\n", "bases": "Resource"}, "easypost.resource.UpdateResource.save": {"fullname": "easypost.resource.UpdateResource.save", "modulename": "easypost.resource", "qualname": "UpdateResource.save", "type": "function", "doc": "

Update an EasyPost object.

\n", "signature": "(self) -> Any:", "funcdef": "def"}, "easypost.resource.DeleteResource": {"fullname": "easypost.resource.DeleteResource", "modulename": "easypost.resource", "qualname": "DeleteResource", "type": "class", "doc": "

\n", "bases": "Resource"}, "easypost.resource.DeleteResource.delete": {"fullname": "easypost.resource.DeleteResource.delete", "modulename": "easypost.resource", "qualname": "DeleteResource.delete", "type": "function", "doc": "

Delete an EasyPost object.

\n", "signature": "(self, **params) -> Any:", "funcdef": "def"}, "easypost.scanform": {"fullname": "easypost.scanform", "modulename": "easypost.scanform", "type": "module", "doc": "

\n"}, "easypost.scanform.ScanForm": {"fullname": "easypost.scanform.ScanForm", "modulename": "easypost.scanform", "qualname": "ScanForm", "type": "class", "doc": "

\n", "bases": "easypost.resource.AllResource"}, "easypost.scanform.ScanForm.create": {"fullname": "easypost.scanform.ScanForm.create", "modulename": "easypost.scanform", "qualname": "ScanForm.create", "type": "function", "doc": "

Create a scanform.

\n", "signature": "(cls, api_key: Optional[str] = None, **params):", "funcdef": "def"}, "easypost.shipment": {"fullname": "easypost.shipment", "modulename": "easypost.shipment", "type": "module", "doc": "

\n"}, "easypost.shipment.Shipment": {"fullname": "easypost.shipment.Shipment", "modulename": "easypost.shipment", "qualname": "Shipment", "type": "class", "doc": "

\n", "bases": "easypost.resource.AllResource"}, "easypost.shipment.Shipment.create": {"fullname": "easypost.shipment.Shipment.create", "modulename": "easypost.shipment", "qualname": "Shipment.create", "type": "function", "doc": "

Create an Shipment object.

\n", "signature": "(\tcls,\tapi_key: Optional[str] = None,\twith_carbon_offset: Optional[bool] = False,\t**params) -> easypost.shipment.Shipment:", "funcdef": "def"}, "easypost.shipment.Shipment.regenerate_rates": {"fullname": "easypost.shipment.Shipment.regenerate_rates", "modulename": "easypost.shipment", "qualname": "Shipment.regenerate_rates", "type": "function", "doc": "

Regenerate rates for a shipment.

\n", "signature": "(\tself,\twith_carbon_offset: Optional[bool] = False) -> easypost.shipment.Shipment:", "funcdef": "def"}, "easypost.shipment.Shipment.get_smartrates": {"fullname": "easypost.shipment.Shipment.get_smartrates", "modulename": "easypost.shipment", "qualname": "Shipment.get_smartrates", "type": "function", "doc": "

Get smartrates for a shipment.

\n", "signature": "(self) -> List[object]:", "funcdef": "def"}, "easypost.shipment.Shipment.buy": {"fullname": "easypost.shipment.Shipment.buy", "modulename": "easypost.shipment", "qualname": "Shipment.buy", "type": "function", "doc": "

Buy a shipment.

\n", "signature": "(\tself,\twith_carbon_offset: Optional[bool] = False,\tend_shipper_id: Optional[str] = None,\t**params) -> easypost.shipment.Shipment:", "funcdef": "def"}, "easypost.shipment.Shipment.refund": {"fullname": "easypost.shipment.Shipment.refund", "modulename": "easypost.shipment", "qualname": "Shipment.refund", "type": "function", "doc": "

Refund a shipment.

\n", "signature": "(self, **params) -> easypost.shipment.Shipment:", "funcdef": "def"}, "easypost.shipment.Shipment.insure": {"fullname": "easypost.shipment.Shipment.insure", "modulename": "easypost.shipment", "qualname": "Shipment.insure", "type": "function", "doc": "

Insure a shipment.

\n", "signature": "(self, **params) -> easypost.shipment.Shipment:", "funcdef": "def"}, "easypost.shipment.Shipment.label": {"fullname": "easypost.shipment.Shipment.label", "modulename": "easypost.shipment", "qualname": "Shipment.label", "type": "function", "doc": "

Convert the label format of a shipment.

\n", "signature": "(self, **params) -> easypost.shipment.Shipment:", "funcdef": "def"}, "easypost.shipment.Shipment.lowest_rate": {"fullname": "easypost.shipment.Shipment.lowest_rate", "modulename": "easypost.shipment", "qualname": "Shipment.lowest_rate", "type": "function", "doc": "

Get the lowest rate of this shipment.

\n", "signature": "(\tself,\tcarriers: List[str] = None,\tservices: List[str] = None) -> easypost.rate.Rate:", "funcdef": "def"}, "easypost.shipment.Shipment.lowest_smartrate": {"fullname": "easypost.shipment.Shipment.lowest_smartrate", "modulename": "easypost.shipment", "qualname": "Shipment.lowest_smartrate", "type": "function", "doc": "

Get the lowest smartrate of this shipment.

\n", "signature": "(self, delivery_days: int, delivery_accuracy: str) -> easypost.rate.Rate:", "funcdef": "def"}, "easypost.shipment.Shipment.generate_form": {"fullname": "easypost.shipment.Shipment.generate_form", "modulename": "easypost.shipment", "qualname": "Shipment.generate_form", "type": "function", "doc": "

Generate a form for a Shipment.

\n", "signature": "(\tself,\tform_type: str,\tform_options: Optional[Dict[str, Any]] = {}) -> easypost.shipment.Shipment:", "funcdef": "def"}, "easypost.shipment.Shipment.get_lowest_smartrate": {"fullname": "easypost.shipment.Shipment.get_lowest_smartrate", "modulename": "easypost.shipment", "qualname": "Shipment.get_lowest_smartrate", "type": "function", "doc": "

Get the lowest smartrate from a list of smartrates.

\n", "signature": "(\tsmartrates,\tdelivery_days: int,\tdelivery_accuracy: str) -> easypost.rate.Rate:", "funcdef": "def"}, "easypost.tax_identifier": {"fullname": "easypost.tax_identifier", "modulename": "easypost.tax_identifier", "type": "module", "doc": "

\n"}, "easypost.tax_identifier.TaxIdentifier": {"fullname": "easypost.tax_identifier.TaxIdentifier", "modulename": "easypost.tax_identifier", "qualname": "TaxIdentifier", "type": "class", "doc": "

\n", "bases": "easypost.resource.Resource"}, "easypost.tracker": {"fullname": "easypost.tracker", "modulename": "easypost.tracker", "type": "module", "doc": "

\n"}, "easypost.tracker.Tracker": {"fullname": "easypost.tracker.Tracker", "modulename": "easypost.tracker", "qualname": "Tracker", "type": "class", "doc": "

\n", "bases": "easypost.resource.AllResource, easypost.resource.CreateResource"}, "easypost.tracker.Tracker.create_list": {"fullname": "easypost.tracker.Tracker.create_list", "modulename": "easypost.tracker", "qualname": "Tracker.create_list", "type": "function", "doc": "

Create a list of trackers.

\n", "signature": "(\tcls,\ttrackers: List[Dict[str, Any]],\tapi_key: Optional[str] = None) -> bool:", "funcdef": "def"}, "easypost.user": {"fullname": "easypost.user", "modulename": "easypost.user", "type": "module", "doc": "

\n"}, "easypost.user.User": {"fullname": "easypost.user.User", "modulename": "easypost.user", "qualname": "User", "type": "class", "doc": "

\n", "bases": "easypost.resource.UpdateResource, easypost.resource.DeleteResource"}, "easypost.user.User.create": {"fullname": "easypost.user.User.create", "modulename": "easypost.user", "qualname": "User.create", "type": "function", "doc": "

Create a child user.

\n", "signature": "(cls, api_key: Optional[str] = None, **params) -> easypost.user.User:", "funcdef": "def"}, "easypost.user.User.retrieve": {"fullname": "easypost.user.User.retrieve", "modulename": "easypost.user", "qualname": "User.retrieve", "type": "function", "doc": "

Retrieve a user.

\n", "signature": "(\tcls,\teasypost_id: Optional[str] = None,\tapi_key: Optional[str] = None,\t**params) -> easypost.user.User:", "funcdef": "def"}, "easypost.user.User.retrieve_me": {"fullname": "easypost.user.User.retrieve_me", "modulename": "easypost.user", "qualname": "User.retrieve_me", "type": "function", "doc": "

Retrieve the authenticated user.

\n", "signature": "(cls, api_key: Optional[str] = None, **params) -> easypost.user.User:", "funcdef": "def"}, "easypost.user.User.all_api_keys": {"fullname": "easypost.user.User.all_api_keys", "modulename": "easypost.user", "qualname": "User.all_api_keys", "type": "function", "doc": "

Get all API keys including child user keys.

\n", "signature": "(cls, api_key: Optional[str] = None) -> easypost.user.User:", "funcdef": "def"}, "easypost.user.User.api_keys": {"fullname": "easypost.user.User.api_keys", "modulename": "easypost.user", "qualname": "User.api_keys", "type": "function", "doc": "

Get the authenticated user's API keys.

\n", "signature": "(self) -> List[str]:", "funcdef": "def"}, "easypost.user.User.update_brand": {"fullname": "easypost.user.User.update_brand", "modulename": "easypost.user", "qualname": "User.update_brand", "type": "function", "doc": "

Update the User's Brand.

\n", "signature": "(self, api_key: Optional[str] = None, **params) -> easypost.user.User:", "funcdef": "def"}, "easypost.util": {"fullname": "easypost.util", "modulename": "easypost.util", "type": "module", "doc": "

\n"}, "easypost.util.get_lowest_object_rate": {"fullname": "easypost.util.get_lowest_object_rate", "modulename": "easypost.util", "qualname": "get_lowest_object_rate", "type": "function", "doc": "

Gets the lowest rate of an EasyPost object such as a Shipment, Order, or Pickup.

\n", "signature": "(\teasypost_object: easypost.easypost_object.EasyPostObject,\tcarriers: List[str] = None,\tservices: List[str] = None,\trates_key: str = 'rates'):", "funcdef": "def"}, "easypost.version": {"fullname": "easypost.version", "modulename": "easypost.version", "type": "module", "doc": "

\n"}, "easypost.webhook": {"fullname": "easypost.webhook", "modulename": "easypost.webhook", "type": "module", "doc": "

\n"}, "easypost.webhook.Webhook": {"fullname": "easypost.webhook.Webhook", "modulename": "easypost.webhook", "qualname": "Webhook", "type": "class", "doc": "

\n", "bases": "easypost.resource.AllResource, easypost.resource.CreateResource, easypost.resource.DeleteResource"}, "easypost.webhook.Webhook.update": {"fullname": "easypost.webhook.Webhook.update", "modulename": "easypost.webhook", "qualname": "Webhook.update", "type": "function", "doc": "

Update a webhook.

\n", "signature": "(self, **params) -> easypost.webhook.Webhook:", "funcdef": "def"}, "easypost.webhook.Webhook.validate_webhook": {"fullname": "easypost.webhook.Webhook.validate_webhook", "modulename": "easypost.webhook", "qualname": "Webhook.validate_webhook", "type": "function", "doc": "

Validate a webhook by comparing the HMAC signature header sent from EasyPost to your shared secret.\nIf the signatures do not match, an error will be raised signifying the webhook either did not originate\nfrom EasyPost or the secrets do not match. If the signatures do match, the event_body will be returned\nas JSON.

\n", "signature": "(\tevent_body: bytes,\theaders: Dict[str, Any],\twebhook_secret: str) -> Dict[str, Any]:", "funcdef": "def"}}, "docInfo": {"easypost": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.address": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.address.Address": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.address.Address.create": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 163, "bases": 0, "doc": 6}, "easypost.address.Address.create_and_verify": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 8}, "easypost.address.Address.verify": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 6}, "easypost.batch": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.batch.Batch": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 6, "doc": 3}, "easypost.batch.Batch.create_and_buy": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 8}, "easypost.batch.Batch.buy": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 6}, "easypost.batch.Batch.label": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 7}, "easypost.batch.Batch.remove_shipments": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 8}, "easypost.batch.Batch.add_shipments": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 8}, "easypost.batch.Batch.create_scan_form": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 9}, "easypost.beta": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.beta.referral": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.beta.referral.Referral": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.beta.referral.Referral.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 4, "bases": 0, "doc": 3}, "easypost.beta.referral.Referral.create": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 19}, "easypost.beta.referral.Referral.update_email": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 19}, "easypost.beta.referral.Referral.all": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 21}, "easypost.beta.referral.Referral.add_credit_card": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 104, "bases": 0, "doc": 22}, "easypost.billing": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.billing.Billing": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.billing.Billing.fund_wallet": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 75, "bases": 0, "doc": 17}, "easypost.billing.Billing.delete_payment_method": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 50, "bases": 0, "doc": 7}, "easypost.billing.Billing.retrieve_payment_methods": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 57, "bases": 0, "doc": 6}, "easypost.brand": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.brand.Brand": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.carrier_account": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.carrier_account.CarrierAccount": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 12, "doc": 3}, "easypost.carrier_account.CarrierAccount.types": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 13}, "easypost.constant": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.customs_info": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.customs_info.CustomsInfo": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.customs_item": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.customs_item.CustomsItem": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.easypost_object": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.easypost_object.convert_to_easypost_object": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 96, "bases": 0, "doc": 10}, "easypost.easypost_object.EasyPostObject": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.easypost_object.EasyPostObject.__init__": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 104, "bases": 0, "doc": 3}, "easypost.easypost_object.EasyPostObject.get": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "easypost.easypost_object.EasyPostObject.setdefault": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "easypost.easypost_object.EasyPostObject.construct_from": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 105, "bases": 0, "doc": 6}, "easypost.easypost_object.EasyPostObject.refresh_from": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 11}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 26, "bases": 0, "doc": 17}, "easypost.easypost_object.EasyPostObject.to_json": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 9}, "easypost.easypost_object.EasyPostObject.to_dict": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 26, "bases": 0, "doc": 9}, "easypost.easypost_object.EasyPostObjectEncoder": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 141}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 9}, "easypost.endshipper": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.endshipper.EndShipper": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.endshipper.EndShipper.create": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 58, "bases": 0, "doc": 6}, "easypost.endshipper.EndShipper.save": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 21}, "easypost.error": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.error.Error": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 11}, "easypost.error.Error.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 127, "bases": 0, "doc": 3}, "easypost.event": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.event.Event": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.event.Event.receive": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "easypost.insurance": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.insurance.Insurance": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 6, "doc": 3}, "easypost.order": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.order.Order": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.order.Order.get_rates": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 8}, "easypost.order.Order.buy": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 6}, "easypost.order.Order.lowest_rate": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 57, "bases": 0, "doc": 10}, "easypost.parcel": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.parcel.Parcel": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.pickup": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.pickup.Pickup": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.pickup.Pickup.buy": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 6}, "easypost.pickup.Pickup.cancel": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 6}, "easypost.pickup.Pickup.lowest_rate": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 57, "bases": 0, "doc": 10}, "easypost.pickup_rate": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.pickup_rate.PickupRate": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.postage_label": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.postage_label.PostageLabel": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.rate": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.rate.Rate": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.referral": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.referral.Referral": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.referral.Referral.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 4, "bases": 0, "doc": 3}, "easypost.referral.Referral.create": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 19}, "easypost.referral.Referral.update_email": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 19}, "easypost.referral.Referral.all": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 21}, "easypost.referral.Referral.add_credit_card": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 104, "bases": 0, "doc": 22}, "easypost.refund": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.refund.Refund": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 6, "doc": 3}, "easypost.report": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.report.Report": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.report.Report.create": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 42, "bases": 0, "doc": 6}, "easypost.report.Report.all": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 42, "bases": 0, "doc": 6}, "easypost.requestor": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.requestor.RequestMethod": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 5}, "easypost.requestor.Requestor": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.requestor.Requestor.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 3}, "easypost.requestor.Requestor.form_encode_params": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 64, "bases": 0, "doc": 14}, "easypost.requestor.Requestor.request": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 135, "bases": 0, "doc": 10}, "easypost.requestor.Requestor.request_raw": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 141, "bases": 0, "doc": 14}, "easypost.requestor.Requestor.interpret_response": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 48, "bases": 0, "doc": 12}, "easypost.requestor.Requestor.requests_request": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 106, "bases": 0, "doc": 13}, "easypost.requestor.Requestor.urlfetch_request": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 106, "bases": 0, "doc": 13}, "easypost.requestor.Requestor.handle_api_error": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 58, "bases": 0, "doc": 9}, "easypost.requestor.Requestor.encode_url_params": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 65, "bases": 0, "doc": 8}, "easypost.requestor.Requestor.add_params_to_url": {"qualname": 5, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 70, "bases": 0, "doc": 8}, "easypost.resource": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.resource.Resource": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 3}, "easypost.resource.Resource.retrieve": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 56, "bases": 0, "doc": 10}, "easypost.resource.Resource.refresh": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 11}, "easypost.resource.Resource.snakecase_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 10}, "easypost.resource.Resource.class_url": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 10}, "easypost.resource.Resource.instance_url": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 14}, "easypost.resource.AllResource": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "easypost.resource.AllResource.all": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 11}, "easypost.resource.CreateResource": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "easypost.resource.CreateResource.create": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 45, "bases": 0, "doc": 7}, "easypost.resource.UpdateResource": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "easypost.resource.UpdateResource.save": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 7}, "easypost.resource.DeleteResource": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 3}, "easypost.resource.DeleteResource.delete": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 7}, "easypost.scanform": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.scanform.ScanForm": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.scanform.ScanForm.create": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 42, "bases": 0, "doc": 6}, "easypost.shipment": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.shipment.Shipment": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.shipment.Shipment.create": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 84, "bases": 0, "doc": 7}, "easypost.shipment.Shipment.regenerate_rates": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 8}, "easypost.shipment.Shipment.get_smartrates": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 8}, "easypost.shipment.Shipment.buy": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 85, "bases": 0, "doc": 6}, "easypost.shipment.Shipment.refund": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 6}, "easypost.shipment.Shipment.insure": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 6}, "easypost.shipment.Shipment.label": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 10}, "easypost.shipment.Shipment.lowest_rate": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 73, "bases": 0, "doc": 10}, "easypost.shipment.Shipment.lowest_smartrate": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 10}, "easypost.shipment.Shipment.generate_form": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 72, "bases": 0, "doc": 9}, "easypost.shipment.Shipment.get_lowest_smartrate": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 49, "bases": 0, "doc": 12}, "easypost.tax_identifier": {"qualname": 0, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.tax_identifier.TaxIdentifier": {"qualname": 1, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 3, "doc": 3}, "easypost.tracker": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.tracker.Tracker": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 6, "doc": 3}, "easypost.tracker.Tracker.create_list": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 67, "bases": 0, "doc": 8}, "easypost.user": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.user.User": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 6, "doc": 3}, "easypost.user.User.create": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 7}, "easypost.user.User.retrieve": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 83, "bases": 0, "doc": 6}, "easypost.user.User.retrieve_me": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 7}, "easypost.user.User.all_api_keys": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 48, "bases": 0, "doc": 11}, "easypost.user.User.api_keys": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 10}, "easypost.user.User.update_brand": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 55, "bases": 0, "doc": 8}, "easypost.util": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.util.get_lowest_object_rate": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 100, "bases": 0, "doc": 18}, "easypost.version": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.webhook": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "easypost.webhook.Webhook": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 9, "doc": 3}, "easypost.webhook.Webhook.update": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 6}, "easypost.webhook.Webhook.validate_webhook": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 68, "bases": 0, "doc": 60}}, "length": 157, "save": true}, "index": {"qualname": {"root": {"docs": {"easypost.beta.referral.Referral.__init__": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.error.Error.__init__": {"tf": 1}, "easypost.referral.Referral.__init__": {"tf": 1}, "easypost.requestor.Requestor.__init__": {"tf": 1}}, "df": 5, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"easypost.batch.Batch.add_shipments": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}}, "df": 4, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"easypost.address.Address": {"tf": 1}, "easypost.address.Address.create": {"tf": 1}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.address.Address.verify": {"tf": 1}}, "df": 4}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.report.Report.all": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}}, "df": 5, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.AllResource": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}}, "df": 2}}}}}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {"easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}}, "df": 3}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.address.Address.create": {"tf": 1}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.batch.Batch.create_scan_form": {"tf": 1}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.report.Report.create": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.user.User.create": {"tf": 1}}, "df": 13, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.CreateResource": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}}, "df": 2}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.carrier_account.CarrierAccount": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"easypost.pickup.Pickup.cancel": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"easypost.customs_info.CustomsInfo": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"easypost.customs_item.CustomsItem": {"tf": 1}}, "df": 1}}}}}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.convert_to_easypost_object": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"easypost.resource.Resource.class_url": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.address.Address.verify": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"easypost.batch.Batch": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.batch.Batch.buy": {"tf": 1}, "easypost.batch.Batch.label": {"tf": 1}, "easypost.batch.Batch.remove_shipments": {"tf": 1}, "easypost.batch.Batch.add_shipments": {"tf": 1}, "easypost.batch.Batch.create_scan_form": {"tf": 1}}, "df": 7}}}}, "u": {"docs": {}, "df": 0, "y": {"docs": {"easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.batch.Batch.buy": {"tf": 1}, "easypost.order.Order.buy": {"tf": 1}, "easypost.pickup.Pickup.buy": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}}, "df": 5}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"easypost.billing.Billing": {"tf": 1}, "easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}}, "df": 4}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"easypost.brand.Brand": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"easypost.batch.Batch.label": {"tf": 1}, "easypost.shipment.Shipment.label": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 6}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.tracker.Tracker.create_list": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"easypost.batch.Batch.remove_shipments": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"easypost.beta.referral.Referral": {"tf": 1}, "easypost.beta.referral.Referral.__init__": {"tf": 1}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral": {"tf": 1}, "easypost.referral.Referral.__init__": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 12}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.resource.Resource.refresh": {"tf": 1}}, "df": 2}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"easypost.refund.Refund": {"tf": 1}, "easypost.shipment.Shipment.refund": {"tf": 1}}, "df": 2}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1}, "easypost.user.User.retrieve_me": {"tf": 1}}, "df": 4}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"easypost.event.Event.receive": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"easypost.report.Report": {"tf": 1}, "easypost.report.Report.create": {"tf": 1}, "easypost.report.Report.all": {"tf": 1}}, "df": 3}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}}, "df": 4, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"easypost.requestor.RequestMethod": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"easypost.requestor.Requestor": {"tf": 1}, "easypost.requestor.Requestor.__init__": {"tf": 1}, "easypost.requestor.Requestor.form_encode_params": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.interpret_response": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}}, "df": 11}}, "s": {"docs": {"easypost.requestor.Requestor.requests_request": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"easypost.requestor.Requestor.interpret_response": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.Resource": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.Resource.refresh": {"tf": 1}, "easypost.resource.Resource.snakecase_name": {"tf": 1}, "easypost.resource.Resource.class_url": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1}}, "df": 6}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.shipment.Shipment.regenerate_rates": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.rate.Rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 5, "s": {"docs": {"easypost.order.Order.get_rates": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}}, "df": 2}}}, "w": {"docs": {"easypost.requestor.Requestor.request_raw": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.shipment.Shipment": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}, "easypost.shipment.Shipment.get_smartrates": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}, "easypost.shipment.Shipment.refund": {"tf": 1}, "easypost.shipment.Shipment.insure": {"tf": 1}, "easypost.shipment.Shipment.label": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}}, "df": 12, "s": {"docs": {"easypost.batch.Batch.remove_shipments": {"tf": 1}, "easypost.batch.Batch.add_shipments": {"tf": 1}}, "df": 2}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"easypost.batch.Batch.create_scan_form": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"easypost.scanform.ScanForm": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject.setdefault": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.resource.UpdateResource.save": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.Resource.snakecase_name": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}}, "df": 2, "s": {"docs": {"easypost.shipment.Shipment.get_smartrates": {"tf": 1}}, "df": 1}}}}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"easypost.batch.Batch.create_scan_form": {"tf": 1}, "easypost.requestor.Requestor.form_encode_params": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1}}, "df": 3}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"easypost.beta.referral.Referral.__init__": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.error.Error.__init__": {"tf": 1}, "easypost.referral.Referral.__init__": {"tf": 1}, "easypost.requestor.Requestor.__init__": {"tf": 1}}, "df": 5}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.insurance.Insurance": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {"easypost.shipment.Shipment.insure": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.Resource.instance_url": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"easypost.requestor.Requestor.interpret_response": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}, "easypost.webhook.Webhook.update": {"tf": 1}}, "df": 4, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.UpdateResource": {"tf": 1}, "easypost.resource.UpdateResource.save": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "l": {"docs": {"easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}, "easypost.resource.Resource.class_url": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1}}, "df": 4, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"easypost.requestor.Requestor.urlfetch_request": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.user.User": {"tf": 1}, "easypost.user.User.create": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1}, "easypost.user.User.retrieve_me": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}}, "df": 7}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.convert_to_easypost_object": {"tf": 1}}, "df": 1, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.easypost_object.EasyPostObject.get": {"tf": 1}, "easypost.easypost_object.EasyPostObject.setdefault": {"tf": 1}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.endshipper.EndShipper": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.endshipper.EndShipper.save": {"tf": 1}}, "df": 3}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"easypost.requestor.Requestor.form_encode_params": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"easypost.error.Error": {"tf": 1}, "easypost.error.Error.__init__": {"tf": 1}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}}, "df": 3}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.event.Event": {"tf": 1}, "easypost.event.Event.receive": {"tf": 1}}, "df": 2}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {"easypost.webhook.Webhook": {"tf": 1}, "easypost.webhook.Webhook.update": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1.4142135623730951}}, "df": 3}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.resource.DeleteResource.delete": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.DeleteResource": {"tf": 1}, "easypost.resource.DeleteResource.delete": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"easypost.parcel.Parcel": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"easypost.requestor.Requestor.form_encode_params": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}}, "df": 3}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"easypost.pickup.Pickup": {"tf": 1}, "easypost.pickup.Pickup.buy": {"tf": 1}, "easypost.pickup.Pickup.cancel": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}}, "df": 4, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.pickup_rate.PickupRate": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"easypost.postage_label.PostageLabel": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"easypost.user.User.retrieve_me": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"easypost.billing.Billing.delete_payment_method": {"tf": 1}}, "df": 1, "s": {"docs": {"easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"easypost.carrier_account.CarrierAccount.types": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {"easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}}, "df": 4}, "a": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.tax_identifier.TaxIdentifier": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.tracker.Tracker": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}}, "df": 2}}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.order.Order": {"tf": 1}, "easypost.order.Order.get_rates": {"tf": 1}, "easypost.order.Order.buy": {"tf": 1}, "easypost.order.Order.lowest_rate": {"tf": 1}}, "df": 4}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject.get": {"tf": 1}, "easypost.order.Order.get_rates": {"tf": 1}, "easypost.shipment.Shipment.get_smartrates": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 5}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.shipment.Shipment.generate_form": {"tf": 1}}, "df": 1}}}}}}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"easypost.requestor.Requestor.handle_api_error": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.Resource.snakecase_name": {"tf": 1}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}}, "df": 2}}}}}}, "fullname": {"root": {"docs": {"easypost.beta.referral.Referral.__init__": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.error.Error.__init__": {"tf": 1}, "easypost.referral.Referral.__init__": {"tf": 1}, "easypost.requestor.Requestor.__init__": {"tf": 1}}, "df": 5, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost": {"tf": 1}, "easypost.address": {"tf": 1}, "easypost.address.Address": {"tf": 1}, "easypost.address.Address.create": {"tf": 1}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.address.Address.verify": {"tf": 1}, "easypost.batch": {"tf": 1}, "easypost.batch.Batch": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.batch.Batch.buy": {"tf": 1}, "easypost.batch.Batch.label": {"tf": 1}, "easypost.batch.Batch.remove_shipments": {"tf": 1}, "easypost.batch.Batch.add_shipments": {"tf": 1}, "easypost.batch.Batch.create_scan_form": {"tf": 1}, "easypost.beta": {"tf": 1}, "easypost.beta.referral": {"tf": 1}, "easypost.beta.referral.Referral": {"tf": 1}, "easypost.beta.referral.Referral.__init__": {"tf": 1}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.billing": {"tf": 1}, "easypost.billing.Billing": {"tf": 1}, "easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}, "easypost.brand": {"tf": 1}, "easypost.brand.Brand": {"tf": 1}, "easypost.carrier_account": {"tf": 1}, "easypost.carrier_account.CarrierAccount": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}, "easypost.constant": {"tf": 1}, "easypost.customs_info": {"tf": 1}, "easypost.customs_info.CustomsInfo": {"tf": 1}, "easypost.customs_item": {"tf": 1}, "easypost.customs_item.CustomsItem": {"tf": 1}, "easypost.easypost_object": {"tf": 1.4142135623730951}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.get": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.setdefault": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1.4142135623730951}, "easypost.endshipper": {"tf": 1}, "easypost.endshipper.EndShipper": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.error": {"tf": 1}, "easypost.error.Error": {"tf": 1}, "easypost.error.Error.__init__": {"tf": 1}, "easypost.event": {"tf": 1}, "easypost.event.Event": {"tf": 1}, "easypost.event.Event.receive": {"tf": 1}, "easypost.insurance": {"tf": 1}, "easypost.insurance.Insurance": {"tf": 1}, "easypost.order": {"tf": 1}, "easypost.order.Order": {"tf": 1}, "easypost.order.Order.get_rates": {"tf": 1}, "easypost.order.Order.buy": {"tf": 1}, "easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.parcel": {"tf": 1}, "easypost.parcel.Parcel": {"tf": 1}, "easypost.pickup": {"tf": 1}, "easypost.pickup.Pickup": {"tf": 1}, "easypost.pickup.Pickup.buy": {"tf": 1}, "easypost.pickup.Pickup.cancel": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.pickup_rate": {"tf": 1}, "easypost.pickup_rate.PickupRate": {"tf": 1}, "easypost.postage_label": {"tf": 1}, "easypost.postage_label.PostageLabel": {"tf": 1}, "easypost.rate": {"tf": 1}, "easypost.rate.Rate": {"tf": 1}, "easypost.referral": {"tf": 1}, "easypost.referral.Referral": {"tf": 1}, "easypost.referral.Referral.__init__": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.refund": {"tf": 1}, "easypost.refund.Refund": {"tf": 1}, "easypost.report": {"tf": 1}, "easypost.report.Report": {"tf": 1}, "easypost.report.Report.create": {"tf": 1}, "easypost.report.Report.all": {"tf": 1}, "easypost.requestor": {"tf": 1}, "easypost.requestor.RequestMethod": {"tf": 1}, "easypost.requestor.Requestor": {"tf": 1}, "easypost.requestor.Requestor.__init__": {"tf": 1}, "easypost.requestor.Requestor.form_encode_params": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.interpret_response": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}, "easypost.resource": {"tf": 1}, "easypost.resource.Resource": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.Resource.refresh": {"tf": 1}, "easypost.resource.Resource.snakecase_name": {"tf": 1}, "easypost.resource.Resource.class_url": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1}, "easypost.resource.AllResource": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.resource.CreateResource": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.resource.UpdateResource": {"tf": 1}, "easypost.resource.UpdateResource.save": {"tf": 1}, "easypost.resource.DeleteResource": {"tf": 1}, "easypost.resource.DeleteResource.delete": {"tf": 1}, "easypost.scanform": {"tf": 1}, "easypost.scanform.ScanForm": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}, "easypost.shipment": {"tf": 1}, "easypost.shipment.Shipment": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}, "easypost.shipment.Shipment.get_smartrates": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}, "easypost.shipment.Shipment.refund": {"tf": 1}, "easypost.shipment.Shipment.insure": {"tf": 1}, "easypost.shipment.Shipment.label": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.tax_identifier": {"tf": 1}, "easypost.tax_identifier.TaxIdentifier": {"tf": 1}, "easypost.tracker": {"tf": 1}, "easypost.tracker.Tracker": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.user": {"tf": 1}, "easypost.user.User": {"tf": 1}, "easypost.user.User.create": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1}, "easypost.user.User.retrieve_me": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}, "easypost.util": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}, "easypost.version": {"tf": 1}, "easypost.webhook": {"tf": 1}, "easypost.webhook.Webhook": {"tf": 1}, "easypost.webhook.Webhook.update": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 157, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.easypost_object.EasyPostObject.get": {"tf": 1}, "easypost.easypost_object.EasyPostObject.setdefault": {"tf": 1}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.endshipper": {"tf": 1}, "easypost.endshipper.EndShipper": {"tf": 1.4142135623730951}, "easypost.endshipper.EndShipper.create": {"tf": 1.4142135623730951}, "easypost.endshipper.EndShipper.save": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"easypost.requestor.Requestor.form_encode_params": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"easypost.error": {"tf": 1}, "easypost.error.Error": {"tf": 1.4142135623730951}, "easypost.error.Error.__init__": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}}, "df": 4}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.event": {"tf": 1}, "easypost.event.Event": {"tf": 1.4142135623730951}, "easypost.event.Event.receive": {"tf": 1.4142135623730951}}, "df": 3}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {"easypost.batch.Batch.add_shipments": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}}, "df": 4, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"easypost.address": {"tf": 1}, "easypost.address.Address": {"tf": 1.4142135623730951}, "easypost.address.Address.create": {"tf": 1.4142135623730951}, "easypost.address.Address.create_and_verify": {"tf": 1.4142135623730951}, "easypost.address.Address.verify": {"tf": 1.4142135623730951}}, "df": 5}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.report.Report.all": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}}, "df": 5, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.AllResource": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}}, "df": 2}}}}}}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.carrier_account": {"tf": 1}, "easypost.carrier_account.CarrierAccount": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}}, "df": 3}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {"easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}}, "df": 3}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.address.Address.create": {"tf": 1}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.batch.Batch.create_scan_form": {"tf": 1}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.report.Report.create": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.user.User.create": {"tf": 1}}, "df": 13, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.CreateResource": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}}, "df": 2}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.carrier_account": {"tf": 1}, "easypost.carrier_account.CarrierAccount": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.carrier_account.CarrierAccount": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"easypost.pickup.Pickup.cancel": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.constant": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.convert_to_easypost_object": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"easypost.customs_info": {"tf": 1}, "easypost.customs_info.CustomsInfo": {"tf": 1}, "easypost.customs_item": {"tf": 1}, "easypost.customs_item.CustomsItem": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"easypost.customs_info.CustomsInfo": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"easypost.customs_item.CustomsItem": {"tf": 1}}, "df": 1}}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"easypost.resource.Resource.class_url": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.address.Address.verify": {"tf": 1}}, "df": 2}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.version": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"easypost.batch": {"tf": 1}, "easypost.batch.Batch": {"tf": 1.4142135623730951}, "easypost.batch.Batch.create_and_buy": {"tf": 1.4142135623730951}, "easypost.batch.Batch.buy": {"tf": 1.4142135623730951}, "easypost.batch.Batch.label": {"tf": 1.4142135623730951}, "easypost.batch.Batch.remove_shipments": {"tf": 1.4142135623730951}, "easypost.batch.Batch.add_shipments": {"tf": 1.4142135623730951}, "easypost.batch.Batch.create_scan_form": {"tf": 1.4142135623730951}}, "df": 8}}}}, "u": {"docs": {}, "df": 0, "y": {"docs": {"easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.batch.Batch.buy": {"tf": 1}, "easypost.order.Order.buy": {"tf": 1}, "easypost.pickup.Pickup.buy": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}}, "df": 5}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"easypost.beta": {"tf": 1}, "easypost.beta.referral": {"tf": 1}, "easypost.beta.referral.Referral": {"tf": 1}, "easypost.beta.referral.Referral.__init__": {"tf": 1}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}}, "df": 8}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"easypost.billing": {"tf": 1}, "easypost.billing.Billing": {"tf": 1.4142135623730951}, "easypost.billing.Billing.fund_wallet": {"tf": 1.4142135623730951}, "easypost.billing.Billing.delete_payment_method": {"tf": 1.4142135623730951}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1.4142135623730951}}, "df": 5}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"easypost.brand": {"tf": 1}, "easypost.brand.Brand": {"tf": 1.4142135623730951}, "easypost.user.User.update_brand": {"tf": 1}}, "df": 3}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"easypost.batch.Batch.label": {"tf": 1}, "easypost.postage_label": {"tf": 1}, "easypost.postage_label.PostageLabel": {"tf": 1}, "easypost.shipment.Shipment.label": {"tf": 1}}, "df": 4}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 6}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.tracker.Tracker.create_list": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"easypost.batch.Batch.remove_shipments": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"easypost.beta.referral": {"tf": 1}, "easypost.beta.referral.Referral": {"tf": 1.4142135623730951}, "easypost.beta.referral.Referral.__init__": {"tf": 1.4142135623730951}, "easypost.beta.referral.Referral.create": {"tf": 1.4142135623730951}, "easypost.beta.referral.Referral.update_email": {"tf": 1.4142135623730951}, "easypost.beta.referral.Referral.all": {"tf": 1.4142135623730951}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}, "easypost.referral": {"tf": 1}, "easypost.referral.Referral": {"tf": 1.4142135623730951}, "easypost.referral.Referral.__init__": {"tf": 1.4142135623730951}, "easypost.referral.Referral.create": {"tf": 1.4142135623730951}, "easypost.referral.Referral.update_email": {"tf": 1.4142135623730951}, "easypost.referral.Referral.all": {"tf": 1.4142135623730951}, "easypost.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}}, "df": 14}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.resource.Resource.refresh": {"tf": 1}}, "df": 2}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"easypost.refund": {"tf": 1}, "easypost.refund.Refund": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.refund": {"tf": 1}}, "df": 3}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1}, "easypost.user.User.retrieve_me": {"tf": 1}}, "df": 4}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"easypost.event.Event.receive": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"easypost.report": {"tf": 1}, "easypost.report.Report": {"tf": 1.4142135623730951}, "easypost.report.Report.create": {"tf": 1.4142135623730951}, "easypost.report.Report.all": {"tf": 1.4142135623730951}}, "df": 4}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}}, "df": 4, "o": {"docs": {}, "df": 0, "r": {"docs": {"easypost.requestor": {"tf": 1}, "easypost.requestor.RequestMethod": {"tf": 1}, "easypost.requestor.Requestor": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.__init__": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.form_encode_params": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.request": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.request_raw": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.interpret_response": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.requests_request": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1.4142135623730951}}, "df": 13}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"easypost.requestor.RequestMethod": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"easypost.requestor.Requestor.requests_request": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"easypost.requestor.Requestor.interpret_response": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource": {"tf": 1}, "easypost.resource.Resource": {"tf": 1.4142135623730951}, "easypost.resource.Resource.retrieve": {"tf": 1.4142135623730951}, "easypost.resource.Resource.refresh": {"tf": 1.4142135623730951}, "easypost.resource.Resource.snakecase_name": {"tf": 1.4142135623730951}, "easypost.resource.Resource.class_url": {"tf": 1.4142135623730951}, "easypost.resource.Resource.instance_url": {"tf": 1.4142135623730951}, "easypost.resource.AllResource": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.resource.CreateResource": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.resource.UpdateResource": {"tf": 1}, "easypost.resource.UpdateResource.save": {"tf": 1}, "easypost.resource.DeleteResource": {"tf": 1}, "easypost.resource.DeleteResource.delete": {"tf": 1}}, "df": 15}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.shipment.Shipment.regenerate_rates": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.pickup_rate": {"tf": 1}, "easypost.pickup_rate.PickupRate": {"tf": 1}, "easypost.rate": {"tf": 1}, "easypost.rate.Rate": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 8, "s": {"docs": {"easypost.order.Order.get_rates": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}}, "df": 2}}}, "w": {"docs": {"easypost.requestor.Requestor.request_raw": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.shipment": {"tf": 1}, "easypost.shipment.Shipment": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.create": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.get_smartrates": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.buy": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.refund": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.insure": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.label": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.generate_form": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1.4142135623730951}}, "df": 13, "s": {"docs": {"easypost.batch.Batch.remove_shipments": {"tf": 1}, "easypost.batch.Batch.add_shipments": {"tf": 1}}, "df": 2}}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"easypost.batch.Batch.create_scan_form": {"tf": 1}}, "df": 1, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"easypost.scanform": {"tf": 1}, "easypost.scanform.ScanForm": {"tf": 1.4142135623730951}, "easypost.scanform.ScanForm.create": {"tf": 1.4142135623730951}}, "df": 3}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject.setdefault": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.resource.UpdateResource.save": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.Resource.snakecase_name": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}}, "df": 2, "s": {"docs": {"easypost.shipment.Shipment.get_smartrates": {"tf": 1}}, "df": 1}}}}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"easypost.batch.Batch.create_scan_form": {"tf": 1}, "easypost.requestor.Requestor.form_encode_params": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1}}, "df": 3}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}}, "df": 2}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"easypost.beta.referral.Referral.__init__": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.error.Error.__init__": {"tf": 1}, "easypost.referral.Referral.__init__": {"tf": 1}, "easypost.requestor.Requestor.__init__": {"tf": 1}}, "df": 5}}, "f": {"docs": {}, "df": 0, "o": {"docs": {"easypost.customs_info": {"tf": 1}, "easypost.customs_info.CustomsInfo": {"tf": 1}}, "df": 2}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.insurance": {"tf": 1}, "easypost.insurance.Insurance": {"tf": 1.4142135623730951}}, "df": 2}}}}, "e": {"docs": {"easypost.shipment.Shipment.insure": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.Resource.instance_url": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"easypost.requestor.Requestor.interpret_response": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"easypost.customs_item": {"tf": 1}, "easypost.customs_item.CustomsItem": {"tf": 1}}, "df": 2}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.tax_identifier": {"tf": 1}, "easypost.tax_identifier.TaxIdentifier": {"tf": 1}}, "df": 2}}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}, "easypost.webhook.Webhook.update": {"tf": 1}}, "df": 4, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.UpdateResource": {"tf": 1}, "easypost.resource.UpdateResource.save": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "l": {"docs": {"easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}, "easypost.resource.Resource.class_url": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1}}, "df": 4, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"easypost.requestor.Requestor.urlfetch_request": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.user": {"tf": 1}, "easypost.user.User": {"tf": 1.4142135623730951}, "easypost.user.User.create": {"tf": 1.4142135623730951}, "easypost.user.User.retrieve": {"tf": 1.4142135623730951}, "easypost.user.User.retrieve_me": {"tf": 1.4142135623730951}, "easypost.user.User.all_api_keys": {"tf": 1.4142135623730951}, "easypost.user.User.api_keys": {"tf": 1.4142135623730951}, "easypost.user.User.update_brand": {"tf": 1.4142135623730951}}, "df": 8}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"easypost.util": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 2}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {"easypost.webhook": {"tf": 1}, "easypost.webhook.Webhook": {"tf": 1.4142135623730951}, "easypost.webhook.Webhook.update": {"tf": 1.4142135623730951}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1.7320508075688772}}, "df": 4}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.resource.DeleteResource.delete": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.DeleteResource": {"tf": 1}, "easypost.resource.DeleteResource.delete": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"easypost.parcel": {"tf": 1}, "easypost.parcel.Parcel": {"tf": 1.4142135623730951}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"easypost.requestor.Requestor.form_encode_params": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}}, "df": 3}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"easypost.pickup": {"tf": 1}, "easypost.pickup.Pickup": {"tf": 1.4142135623730951}, "easypost.pickup.Pickup.buy": {"tf": 1.4142135623730951}, "easypost.pickup.Pickup.cancel": {"tf": 1.4142135623730951}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1.4142135623730951}, "easypost.pickup_rate": {"tf": 1}, "easypost.pickup_rate.PickupRate": {"tf": 1}}, "df": 7, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.pickup_rate.PickupRate": {"tf": 1}}, "df": 1}}}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"easypost.postage_label": {"tf": 1}, "easypost.postage_label.PostageLabel": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"easypost.postage_label.PostageLabel": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"easypost.user.User.retrieve_me": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"easypost.billing.Billing.delete_payment_method": {"tf": 1}}, "df": 1, "s": {"docs": {"easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"easypost.carrier_account.CarrierAccount.types": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {"easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}}, "df": 4}, "a": {"docs": {}, "df": 0, "x": {"docs": {"easypost.tax_identifier": {"tf": 1}, "easypost.tax_identifier.TaxIdentifier": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.tax_identifier.TaxIdentifier": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.tracker": {"tf": 1}, "easypost.tracker.Tracker": {"tf": 1.4142135623730951}, "easypost.tracker.Tracker.create_list": {"tf": 1.4142135623730951}}, "df": 3}}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object": {"tf": 1}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.easypost_object.EasyPostObject.get": {"tf": 1}, "easypost.easypost_object.EasyPostObject.setdefault": {"tf": 1}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 14}}}}}, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.order": {"tf": 1}, "easypost.order.Order": {"tf": 1.4142135623730951}, "easypost.order.Order.get_rates": {"tf": 1.4142135623730951}, "easypost.order.Order.buy": {"tf": 1.4142135623730951}, "easypost.order.Order.lowest_rate": {"tf": 1.4142135623730951}}, "df": 5}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject.get": {"tf": 1}, "easypost.order.Order.get_rates": {"tf": 1}, "easypost.shipment.Shipment.get_smartrates": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 5}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.shipment.Shipment.generate_form": {"tf": 1}}, "df": 1}}}}}}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"easypost.requestor.Requestor.handle_api_error": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.Resource.snakecase_name": {"tf": 1}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}}, "df": 2}}}}}}, "annotation": {"root": {"docs": {}, "df": 0}}, "default_value": {"root": {"docs": {}, "df": 0}}, "signature": {"root": {"3": {"9": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}, "easypost.billing.Billing.fund_wallet": {"tf": 1.4142135623730951}, "easypost.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}, "easypost.util.get_lowest_object_rate": {"tf": 1.4142135623730951}}, "df": 4}, "docs": {}, "df": 0}, "docs": {"easypost.address.Address.create": {"tf": 11.575836902790225}, "easypost.address.Address.create_and_verify": {"tf": 6.708203932499369}, "easypost.address.Address.verify": {"tf": 4.47213595499958}, "easypost.batch.Batch.create_and_buy": {"tf": 6.708203932499369}, "easypost.batch.Batch.buy": {"tf": 5.0990195135927845}, "easypost.batch.Batch.label": {"tf": 5.0990195135927845}, "easypost.batch.Batch.remove_shipments": {"tf": 5.0990195135927845}, "easypost.batch.Batch.add_shipments": {"tf": 5.0990195135927845}, "easypost.batch.Batch.create_scan_form": {"tf": 5.0990195135927845}, "easypost.beta.referral.Referral.__init__": {"tf": 2}, "easypost.beta.referral.Referral.create": {"tf": 6.557438524302}, "easypost.beta.referral.Referral.update_email": {"tf": 5.916079783099616}, "easypost.beta.referral.Referral.all": {"tf": 5.744562646538029}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 8.94427190999916}, "easypost.billing.Billing.fund_wallet": {"tf": 7.681145747868608}, "easypost.billing.Billing.delete_payment_method": {"tf": 6.244997998398398}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 6.855654600401044}, "easypost.carrier_account.CarrierAccount.types": {"tf": 6}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 8.94427190999916}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 9.273618495495704}, "easypost.easypost_object.EasyPostObject.get": {"tf": 5.477225575051661}, "easypost.easypost_object.EasyPostObject.setdefault": {"tf": 5.477225575051661}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 9.327379053088816}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 7}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 4.69041575982343}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 5.0990195135927845}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 4.69041575982343}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 4.47213595499958}, "easypost.endshipper.EndShipper.create": {"tf": 6.928203230275509}, "easypost.endshipper.EndShipper.save": {"tf": 4.47213595499958}, "easypost.error.Error.__init__": {"tf": 10.198039027185569}, "easypost.event.Event.receive": {"tf": 5.291502622129181}, "easypost.order.Order.get_rates": {"tf": 4.47213595499958}, "easypost.order.Order.buy": {"tf": 5.0990195135927845}, "easypost.order.Order.lowest_rate": {"tf": 6.928203230275509}, "easypost.pickup.Pickup.buy": {"tf": 5.0990195135927845}, "easypost.pickup.Pickup.cancel": {"tf": 5.0990195135927845}, "easypost.pickup.Pickup.lowest_rate": {"tf": 6.928203230275509}, "easypost.referral.Referral.__init__": {"tf": 2}, "easypost.referral.Referral.create": {"tf": 6.557438524302}, "easypost.referral.Referral.update_email": {"tf": 5.916079783099616}, "easypost.referral.Referral.all": {"tf": 5.744562646538029}, "easypost.referral.Referral.add_credit_card": {"tf": 8.94427190999916}, "easypost.report.Report.create": {"tf": 5.916079783099616}, "easypost.report.Report.all": {"tf": 5.916079783099616}, "easypost.requestor.Requestor.__init__": {"tf": 4.795831523312719}, "easypost.requestor.Requestor.form_encode_params": {"tf": 7.211102550927978}, "easypost.requestor.Requestor.request": {"tf": 10.488088481701515}, "easypost.requestor.Requestor.request_raw": {"tf": 10.723805294763608}, "easypost.requestor.Requestor.interpret_response": {"tf": 6.164414002968976}, "easypost.requestor.Requestor.requests_request": {"tf": 9.327379053088816}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 9.327379053088816}, "easypost.requestor.Requestor.handle_api_error": {"tf": 6.782329983125268}, "easypost.requestor.Requestor.encode_url_params": {"tf": 7.3484692283495345}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 7.615773105863909}, "easypost.resource.Resource.retrieve": {"tf": 6.708203932499369}, "easypost.resource.Resource.refresh": {"tf": 3.4641016151377544}, "easypost.resource.Resource.snakecase_name": {"tf": 3.4641016151377544}, "easypost.resource.Resource.class_url": {"tf": 3.4641016151377544}, "easypost.resource.Resource.instance_url": {"tf": 3.4641016151377544}, "easypost.resource.AllResource.all": {"tf": 6.48074069840786}, "easypost.resource.CreateResource.create": {"tf": 6.082762530298219}, "easypost.resource.UpdateResource.save": {"tf": 3.4641016151377544}, "easypost.resource.DeleteResource.delete": {"tf": 4.242640687119285}, "easypost.scanform.ScanForm.create": {"tf": 5.916079783099616}, "easypost.shipment.Shipment.create": {"tf": 8.246211251235321}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 6.4031242374328485}, "easypost.shipment.Shipment.get_smartrates": {"tf": 4.123105625617661}, "easypost.shipment.Shipment.buy": {"tf": 8.246211251235321}, "easypost.shipment.Shipment.refund": {"tf": 5.0990195135927845}, "easypost.shipment.Shipment.insure": {"tf": 5.0990195135927845}, "easypost.shipment.Shipment.label": {"tf": 5.0990195135927845}, "easypost.shipment.Shipment.lowest_rate": {"tf": 7.810249675906654}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 6}, "easypost.shipment.Shipment.generate_form": {"tf": 7.681145747868608}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 6.244997998398398}, "easypost.tracker.Tracker.create_list": {"tf": 7.416198487095663}, "easypost.user.User.create": {"tf": 6.708203932499369}, "easypost.user.User.retrieve": {"tf": 8.246211251235321}, "easypost.user.User.retrieve_me": {"tf": 6.708203932499369}, "easypost.user.User.all_api_keys": {"tf": 6.244997998398398}, "easypost.user.User.api_keys": {"tf": 4.123105625617661}, "easypost.user.User.update_brand": {"tf": 6.708203932499369}, "easypost.util.get_lowest_object_rate": {"tf": 8.94427190999916}, "easypost.webhook.Webhook.update": {"tf": 5.0990195135927845}, "easypost.webhook.Webhook.validate_webhook": {"tf": 7.416198487095663}}, "df": 86, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"easypost.address.Address.create": {"tf": 1}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.event.Event.receive": {"tf": 1}, "easypost.report.Report.create": {"tf": 1}, "easypost.report.Report.all": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.Resource.snakecase_name": {"tf": 1}, "easypost.resource.Resource.class_url": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.user.User.create": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1}, "easypost.user.User.retrieve_me": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}}, "df": 24}}, "v": {"docs": {}, "df": 0, "c": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 4}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.shipment.Shipment.create": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}}, "df": 3}}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"easypost.address.Address.create": {"tf": 1}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.report.Report.create": {"tf": 1}, "easypost.report.Report.all": {"tf": 1}, "easypost.requestor.Requestor.__init__": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.user.User.create": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1}, "easypost.user.User.retrieve_me": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}}, "df": 36}}, "n": {"docs": {}, "df": 0, "y": {"docs": {"easypost.address.Address.create": {"tf": 1.4142135623730951}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.get": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.setdefault": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1.4142135623730951}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.interpret_response": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.resource.UpdateResource.save": {"tf": 1}, "easypost.resource.DeleteResource.delete": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1.4142135623730951}}, "df": 29}}, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"easypost.address.Address.create": {"tf": 1.4142135623730951}, "easypost.address.Address.create_and_verify": {"tf": 1.4142135623730951}, "easypost.address.Address.verify": {"tf": 1.4142135623730951}}, "df": 3}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "s": {"docs": {"easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}}, "df": 2}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}}, "df": 2}}}}}}}}, "k": {"docs": {"easypost.easypost_object.EasyPostObject.get": {"tf": 1}, "easypost.easypost_object.EasyPostObject.setdefault": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "y": {"docs": {"easypost.address.Address.create": {"tf": 1}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.report.Report.create": {"tf": 1}, "easypost.report.Report.all": {"tf": 1}, "easypost.requestor.Requestor.__init__": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.user.User.create": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1}, "easypost.user.User.retrieve_me": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 37, "s": {"docs": {"easypost.requestor.Requestor.form_encode_params": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"easypost.address.Address.create": {"tf": 1}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.error.Error.__init__": {"tf": 1.4142135623730951}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.report.Report.create": {"tf": 1}, "easypost.report.Report.all": {"tf": 1}, "easypost.requestor.Requestor.__init__": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.request_raw": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.generate_form": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.user.User.create": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1.4142135623730951}, "easypost.user.User.retrieve_me": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}}, "df": 39}}, "s": {"docs": {"easypost.shipment.Shipment.generate_form": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"easypost.error.Error.__init__": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.order.Order.get_rates": {"tf": 1.4142135623730951}, "easypost.order.Order.buy": {"tf": 1.4142135623730951}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1.4142135623730951}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.Resource.refresh": {"tf": 1}, "easypost.shipment.Shipment.get_smartrates": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1.4142135623730951}}, "df": 7}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"easypost.shipment.Shipment.create": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}}, "df": 3}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"easypost.address.Address.create": {"tf": 2.23606797749979}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.beta.referral.Referral.create": {"tf": 1.4142135623730951}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 2.23606797749979}, "easypost.billing.Billing.fund_wallet": {"tf": 1.7320508075688772}, "easypost.billing.Billing.delete_payment_method": {"tf": 1.4142135623730951}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1.4142135623730951}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1.4142135623730951}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.error.Error.__init__": {"tf": 1.4142135623730951}, "easypost.event.Event.receive": {"tf": 1}, "easypost.order.Order.lowest_rate": {"tf": 1.4142135623730951}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1.4142135623730951}, "easypost.referral.Referral.create": {"tf": 1.4142135623730951}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 2.23606797749979}, "easypost.report.Report.create": {"tf": 1}, "easypost.report.Report.all": {"tf": 1}, "easypost.requestor.Requestor.__init__": {"tf": 1}, "easypost.requestor.Requestor.form_encode_params": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1.7320508075688772}, "easypost.requestor.Requestor.request_raw": {"tf": 2}, "easypost.requestor.Requestor.interpret_response": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.requests_request": {"tf": 2}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 2}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1.7320508075688772}, "easypost.resource.Resource.retrieve": {"tf": 1.4142135623730951}, "easypost.resource.Resource.snakecase_name": {"tf": 1}, "easypost.resource.Resource.class_url": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1.4142135623730951}, "easypost.user.User.create": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1.4142135623730951}, "easypost.user.User.retrieve_me": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1.7320508075688772}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1.7320508075688772}}, "df": 61, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.address.Address.create": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"easypost.error.Error.__init__": {"tf": 1}, "easypost.requestor.Requestor.interpret_response": {"tf": 1}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}}, "df": 3}}}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"easypost.address.Address.verify": {"tf": 1}, "easypost.batch.Batch.buy": {"tf": 1}, "easypost.batch.Batch.label": {"tf": 1}, "easypost.batch.Batch.remove_shipments": {"tf": 1}, "easypost.batch.Batch.add_shipments": {"tf": 1}, "easypost.batch.Batch.create_scan_form": {"tf": 1}, "easypost.easypost_object.EasyPostObject.get": {"tf": 1}, "easypost.easypost_object.EasyPostObject.setdefault": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1}, "easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.order.Order.get_rates": {"tf": 1}, "easypost.order.Order.buy": {"tf": 1}, "easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.pickup.Pickup.buy": {"tf": 1}, "easypost.pickup.Pickup.cancel": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.interpret_response": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}, "easypost.resource.Resource.refresh": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1}, "easypost.resource.UpdateResource.save": {"tf": 1}, "easypost.resource.DeleteResource.delete": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}, "easypost.shipment.Shipment.get_smartrates": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}, "easypost.shipment.Shipment.refund": {"tf": 1}, "easypost.shipment.Shipment.insure": {"tf": 1}, "easypost.shipment.Shipment.label": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}, "easypost.webhook.Webhook.update": {"tf": 1}}, "df": 44}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 4}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 4}}}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.shipment.Shipment.create": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.buy": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.refund": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.insure": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.label": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.generate_form": {"tf": 1.4142135623730951}}, "df": 7}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.shipment.Shipment.buy": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}}, "df": 1}}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"easypost.address.Address.create": {"tf": 1.7320508075688772}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 2}, "easypost.easypost_object.EasyPostObject.get": {"tf": 1}, "easypost.easypost_object.EasyPostObject.setdefault": {"tf": 1}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.error.Error.__init__": {"tf": 2}, "easypost.order.Order.lowest_rate": {"tf": 1.4142135623730951}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1.4142135623730951}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.report.Report.create": {"tf": 1}, "easypost.report.Report.all": {"tf": 1}, "easypost.requestor.Requestor.__init__": {"tf": 1}, "easypost.requestor.Requestor.form_encode_params": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1.4142135623730951}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.user.User.create": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1.4142135623730951}, "easypost.user.User.retrieve_me": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1.4142135623730951}}, "df": 45, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"easypost.address.Address.create": {"tf": 1.4142135623730951}, "easypost.error.Error.__init__": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}}, "df": 3}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"easypost.address.Address.create": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.event.Event.receive": {"tf": 1}}, "df": 3}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.address.Address.create": {"tf": 1.4142135623730951}, "easypost.error.Error.__init__": {"tf": 1.4142135623730951}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.user.User.create": {"tf": 1.4142135623730951}, "easypost.user.User.retrieve": {"tf": 1.4142135623730951}, "easypost.user.User.retrieve_me": {"tf": 1.4142135623730951}, "easypost.user.User.all_api_keys": {"tf": 1.4142135623730951}, "easypost.user.User.update_brand": {"tf": 1.4142135623730951}}, "df": 7}}}, "r": {"docs": {}, "df": 0, "l": {"docs": {"easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}}, "df": 5}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.address.Address.create": {"tf": 1.4142135623730951}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.requestor.Requestor.form_encode_params": {"tf": 2}, "easypost.requestor.Requestor.request": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.interpret_response": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1.4142135623730951}}, "df": 23}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject.get": {"tf": 1}, "easypost.easypost_object.EasyPostObject.setdefault": {"tf": 1}}, "df": 2}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"easypost.shipment.Shipment.lowest_smartrate": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"easypost.requestor.Requestor.form_encode_params": {"tf": 1}}, "df": 1}}, "y": {"docs": {}, "df": 0, "s": {"docs": {"easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}}, "df": 2}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"easypost.address.Address.create": {"tf": 1.4142135623730951}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.request_raw": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}}, "df": 11}}, "d": {"docs": {}, "df": 0, "y": {"docs": {"easypost.error.Error.__init__": {"tf": 1}, "easypost.requestor.Requestor.interpret_response": {"tf": 1}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 4}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"easypost.batch.Batch.create_and_buy": {"tf": 1.4142135623730951}, "easypost.batch.Batch.buy": {"tf": 1.4142135623730951}, "easypost.batch.Batch.label": {"tf": 1.4142135623730951}, "easypost.batch.Batch.remove_shipments": {"tf": 1.4142135623730951}, "easypost.batch.Batch.add_shipments": {"tf": 1.4142135623730951}, "easypost.batch.Batch.create_scan_form": {"tf": 1.4142135623730951}}, "df": 6}}}}, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"easypost.error.Error.__init__": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"easypost.address.Address.create": {"tf": 1}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.batch.Batch.buy": {"tf": 1}, "easypost.batch.Batch.label": {"tf": 1}, "easypost.batch.Batch.remove_shipments": {"tf": 1}, "easypost.batch.Batch.add_shipments": {"tf": 1}, "easypost.batch.Batch.create_scan_form": {"tf": 1}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.order.Order.buy": {"tf": 1}, "easypost.pickup.Pickup.buy": {"tf": 1}, "easypost.pickup.Pickup.cancel": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.report.Report.create": {"tf": 1}, "easypost.report.Report.all": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.resource.DeleteResource.delete": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}, "easypost.shipment.Shipment.refund": {"tf": 1}, "easypost.shipment.Shipment.insure": {"tf": 1}, "easypost.shipment.Shipment.label": {"tf": 1}, "easypost.user.User.create": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1}, "easypost.user.User.retrieve_me": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}, "easypost.webhook.Webhook.update": {"tf": 1}}, "df": 41}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.requestor.Requestor.form_encode_params": {"tf": 1.4142135623730951}}, "df": 4}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}, "easypost.billing.Billing.fund_wallet": {"tf": 1.4142135623730951}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}}, "df": 4}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"easypost.pickup.Pickup.buy": {"tf": 1.4142135623730951}, "easypost.pickup.Pickup.cancel": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.address.Address.create": {"tf": 1}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.address.Address.verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.batch.Batch.buy": {"tf": 1}, "easypost.batch.Batch.label": {"tf": 1}, "easypost.batch.Batch.remove_shipments": {"tf": 1}, "easypost.batch.Batch.add_shipments": {"tf": 1}, "easypost.batch.Batch.create_scan_form": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.event.Event.receive": {"tf": 1}, "easypost.order.Order.get_rates": {"tf": 1}, "easypost.order.Order.buy": {"tf": 1}, "easypost.pickup.Pickup.buy": {"tf": 1}, "easypost.pickup.Pickup.cancel": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}, "easypost.shipment.Shipment.refund": {"tf": 1}, "easypost.shipment.Shipment.insure": {"tf": 1}, "easypost.shipment.Shipment.label": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.user.User.create": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1.4142135623730951}, "easypost.user.User.retrieve_me": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1.7320508075688772}, "easypost.webhook.Webhook.update": {"tf": 1}}, "df": 41, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}}, "df": 2}}}}, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}, "easypost.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.error.Error.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"easypost.shipment.Shipment.buy": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.endshipper.EndShipper.create": {"tf": 1.4142135623730951}, "easypost.endshipper.EndShipper.save": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.event.Event.receive": {"tf": 1.4142135623730951}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1}}, "df": 6}, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.error.Error.__init__": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.interpret_response": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}}, "df": 11}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}, "easypost.error.Error.__init__": {"tf": 1}, "easypost.order.Order.lowest_rate": {"tf": 1.4142135623730951}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1.4142135623730951}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.requestor.Requestor.form_encode_params": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.shipment.Shipment.get_smartrates": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1.4142135623730951}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1.4142135623730951}}, "df": 13}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"easypost.requestor.Requestor.__init__": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}}, "df": 2}}}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}}, "df": 6}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}}, "df": 6}}}}}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.shipment.Shipment.lowest_rate": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"easypost.util.get_lowest_object_rate": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"easypost.error.Error.__init__": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}}, "df": 6}}}}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 2}}}}, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"easypost.error.Error.__init__": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.interpret_response": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1.4142135623730951}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 3}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"easypost.tracker.Tracker.create_list": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}}, "df": 4}}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"easypost.shipment.Shipment.generate_form": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}}, "df": 5}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"easypost.shipment.Shipment.generate_form": {"tf": 1.4142135623730951}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"easypost.shipment.Shipment.create": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {"easypost.webhook.Webhook.update": {"tf": 1.4142135623730951}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 2}}}}}}}}}, "bases": {"root": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.address.Address": {"tf": 1}, "easypost.batch.Batch": {"tf": 1.4142135623730951}, "easypost.billing.Billing": {"tf": 1}, "easypost.brand.Brand": {"tf": 1}, "easypost.carrier_account.CarrierAccount": {"tf": 2}, "easypost.customs_info.CustomsInfo": {"tf": 1}, "easypost.customs_item.CustomsItem": {"tf": 1}, "easypost.endshipper.EndShipper": {"tf": 1}, "easypost.event.Event": {"tf": 1}, "easypost.insurance.Insurance": {"tf": 1.4142135623730951}, "easypost.order.Order": {"tf": 1}, "easypost.parcel.Parcel": {"tf": 1}, "easypost.pickup.Pickup": {"tf": 1}, "easypost.pickup_rate.PickupRate": {"tf": 1}, "easypost.postage_label.PostageLabel": {"tf": 1}, "easypost.rate.Rate": {"tf": 1}, "easypost.refund.Refund": {"tf": 1.4142135623730951}, "easypost.report.Report": {"tf": 1}, "easypost.resource.Resource": {"tf": 1.4142135623730951}, "easypost.scanform.ScanForm": {"tf": 1}, "easypost.shipment.Shipment": {"tf": 1}, "easypost.tax_identifier.TaxIdentifier": {"tf": 1}, "easypost.tracker.Tracker": {"tf": 1.4142135623730951}, "easypost.user.User": {"tf": 1.4142135623730951}, "easypost.webhook.Webhook": {"tf": 1.7320508075688772}}, "df": 25, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.resource.Resource": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"easypost.requestor.RequestMethod": {"tf": 1.4142135623730951}}, "df": 1}}}, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.error.Error": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.address.Address": {"tf": 1}, "easypost.batch.Batch": {"tf": 1.4142135623730951}, "easypost.billing.Billing": {"tf": 1.4142135623730951}, "easypost.brand.Brand": {"tf": 1.4142135623730951}, "easypost.carrier_account.CarrierAccount": {"tf": 2}, "easypost.customs_info.CustomsInfo": {"tf": 1}, "easypost.customs_item.CustomsItem": {"tf": 1}, "easypost.endshipper.EndShipper": {"tf": 1}, "easypost.event.Event": {"tf": 1}, "easypost.insurance.Insurance": {"tf": 1.4142135623730951}, "easypost.order.Order": {"tf": 1}, "easypost.parcel.Parcel": {"tf": 1}, "easypost.pickup.Pickup": {"tf": 1}, "easypost.pickup_rate.PickupRate": {"tf": 1.4142135623730951}, "easypost.postage_label.PostageLabel": {"tf": 1.4142135623730951}, "easypost.rate.Rate": {"tf": 1.4142135623730951}, "easypost.refund.Refund": {"tf": 1.4142135623730951}, "easypost.report.Report": {"tf": 1.4142135623730951}, "easypost.resource.AllResource": {"tf": 1}, "easypost.resource.CreateResource": {"tf": 1}, "easypost.resource.UpdateResource": {"tf": 1}, "easypost.resource.DeleteResource": {"tf": 1}, "easypost.scanform.ScanForm": {"tf": 1}, "easypost.shipment.Shipment": {"tf": 1}, "easypost.tax_identifier.TaxIdentifier": {"tf": 1.4142135623730951}, "easypost.tracker.Tracker": {"tf": 1.4142135623730951}, "easypost.user.User": {"tf": 1.4142135623730951}, "easypost.webhook.Webhook": {"tf": 1.7320508075688772}}, "df": 28}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.address.Address": {"tf": 1}, "easypost.batch.Batch": {"tf": 1}, "easypost.carrier_account.CarrierAccount": {"tf": 1}, "easypost.endshipper.EndShipper": {"tf": 1}, "easypost.event.Event": {"tf": 1}, "easypost.insurance.Insurance": {"tf": 1}, "easypost.refund.Refund": {"tf": 1}, "easypost.scanform.ScanForm": {"tf": 1}, "easypost.shipment.Shipment": {"tf": 1}, "easypost.tracker.Tracker": {"tf": 1}, "easypost.webhook.Webhook": {"tf": 1}}, "df": 11}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.batch.Batch": {"tf": 1}, "easypost.carrier_account.CarrierAccount": {"tf": 1}, "easypost.customs_info.CustomsInfo": {"tf": 1}, "easypost.customs_item.CustomsItem": {"tf": 1}, "easypost.insurance.Insurance": {"tf": 1}, "easypost.order.Order": {"tf": 1}, "easypost.parcel.Parcel": {"tf": 1}, "easypost.pickup.Pickup": {"tf": 1}, "easypost.refund.Refund": {"tf": 1}, "easypost.tracker.Tracker": {"tf": 1}, "easypost.webhook.Webhook": {"tf": 1}}, "df": 11}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.carrier_account.CarrierAccount": {"tf": 1}, "easypost.user.User": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.carrier_account.CarrierAccount": {"tf": 1}, "easypost.user.User": {"tf": 1}, "easypost.webhook.Webhook": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"easypost.error.Error": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.resource.Resource": {"tf": 1}}, "df": 1}}}}}}}}, "doc": {"root": {"docs": {"easypost": {"tf": 1.7320508075688772}, "easypost.address": {"tf": 1.7320508075688772}, "easypost.address.Address": {"tf": 1.7320508075688772}, "easypost.address.Address.create": {"tf": 1.7320508075688772}, "easypost.address.Address.create_and_verify": {"tf": 1.7320508075688772}, "easypost.address.Address.verify": {"tf": 1.7320508075688772}, "easypost.batch": {"tf": 1.7320508075688772}, "easypost.batch.Batch": {"tf": 1.7320508075688772}, "easypost.batch.Batch.create_and_buy": {"tf": 1.7320508075688772}, "easypost.batch.Batch.buy": {"tf": 1.7320508075688772}, "easypost.batch.Batch.label": {"tf": 1.7320508075688772}, "easypost.batch.Batch.remove_shipments": {"tf": 1.7320508075688772}, "easypost.batch.Batch.add_shipments": {"tf": 1.7320508075688772}, "easypost.batch.Batch.create_scan_form": {"tf": 1.7320508075688772}, "easypost.beta": {"tf": 1.7320508075688772}, "easypost.beta.referral": {"tf": 1.7320508075688772}, "easypost.beta.referral.Referral": {"tf": 1.7320508075688772}, "easypost.beta.referral.Referral.__init__": {"tf": 1.7320508075688772}, "easypost.beta.referral.Referral.create": {"tf": 2.449489742783178}, "easypost.beta.referral.Referral.update_email": {"tf": 2.449489742783178}, "easypost.beta.referral.Referral.all": {"tf": 2.449489742783178}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 2.449489742783178}, "easypost.billing": {"tf": 1.7320508075688772}, "easypost.billing.Billing": {"tf": 1.7320508075688772}, "easypost.billing.Billing.fund_wallet": {"tf": 1.7320508075688772}, "easypost.billing.Billing.delete_payment_method": {"tf": 1.7320508075688772}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1.7320508075688772}, "easypost.brand": {"tf": 1.7320508075688772}, "easypost.brand.Brand": {"tf": 1.7320508075688772}, "easypost.carrier_account": {"tf": 1.7320508075688772}, "easypost.carrier_account.CarrierAccount": {"tf": 1.7320508075688772}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1.7320508075688772}, "easypost.constant": {"tf": 1.7320508075688772}, "easypost.customs_info": {"tf": 1.7320508075688772}, "easypost.customs_info.CustomsInfo": {"tf": 1.7320508075688772}, "easypost.customs_item": {"tf": 1.7320508075688772}, "easypost.customs_item.CustomsItem": {"tf": 1.7320508075688772}, "easypost.easypost_object": {"tf": 1.7320508075688772}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject.__init__": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject.get": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject.setdefault": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 2.449489742783178}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 8.426149773176359}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1.7320508075688772}, "easypost.endshipper": {"tf": 1.7320508075688772}, "easypost.endshipper.EndShipper": {"tf": 1.7320508075688772}, "easypost.endshipper.EndShipper.create": {"tf": 1.7320508075688772}, "easypost.endshipper.EndShipper.save": {"tf": 2.449489742783178}, "easypost.error": {"tf": 1.7320508075688772}, "easypost.error.Error": {"tf": 1.7320508075688772}, "easypost.error.Error.__init__": {"tf": 1.7320508075688772}, "easypost.event": {"tf": 1.7320508075688772}, "easypost.event.Event": {"tf": 1.7320508075688772}, "easypost.event.Event.receive": {"tf": 1.7320508075688772}, "easypost.insurance": {"tf": 1.7320508075688772}, "easypost.insurance.Insurance": {"tf": 1.7320508075688772}, "easypost.order": {"tf": 1.7320508075688772}, "easypost.order.Order": {"tf": 1.7320508075688772}, "easypost.order.Order.get_rates": {"tf": 1.7320508075688772}, "easypost.order.Order.buy": {"tf": 1.7320508075688772}, "easypost.order.Order.lowest_rate": {"tf": 1.7320508075688772}, "easypost.parcel": {"tf": 1.7320508075688772}, "easypost.parcel.Parcel": {"tf": 1.7320508075688772}, "easypost.pickup": {"tf": 1.7320508075688772}, "easypost.pickup.Pickup": {"tf": 1.7320508075688772}, "easypost.pickup.Pickup.buy": {"tf": 1.7320508075688772}, "easypost.pickup.Pickup.cancel": {"tf": 1.7320508075688772}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1.7320508075688772}, "easypost.pickup_rate": {"tf": 1.7320508075688772}, "easypost.pickup_rate.PickupRate": {"tf": 1.7320508075688772}, "easypost.postage_label": {"tf": 1.7320508075688772}, "easypost.postage_label.PostageLabel": {"tf": 1.7320508075688772}, "easypost.rate": {"tf": 1.7320508075688772}, "easypost.rate.Rate": {"tf": 1.7320508075688772}, "easypost.referral": {"tf": 1.7320508075688772}, "easypost.referral.Referral": {"tf": 1.7320508075688772}, "easypost.referral.Referral.__init__": {"tf": 1.7320508075688772}, "easypost.referral.Referral.create": {"tf": 2.449489742783178}, "easypost.referral.Referral.update_email": {"tf": 2.449489742783178}, "easypost.referral.Referral.all": {"tf": 2.449489742783178}, "easypost.referral.Referral.add_credit_card": {"tf": 2.449489742783178}, "easypost.refund": {"tf": 1.7320508075688772}, "easypost.refund.Refund": {"tf": 1.7320508075688772}, "easypost.report": {"tf": 1.7320508075688772}, "easypost.report.Report": {"tf": 1.7320508075688772}, "easypost.report.Report.create": {"tf": 1.7320508075688772}, "easypost.report.Report.all": {"tf": 1.7320508075688772}, "easypost.requestor": {"tf": 1.7320508075688772}, "easypost.requestor.RequestMethod": {"tf": 1.7320508075688772}, "easypost.requestor.Requestor": {"tf": 1.7320508075688772}, "easypost.requestor.Requestor.__init__": {"tf": 1.7320508075688772}, "easypost.requestor.Requestor.form_encode_params": {"tf": 1.7320508075688772}, "easypost.requestor.Requestor.request": {"tf": 1.7320508075688772}, "easypost.requestor.Requestor.request_raw": {"tf": 1.7320508075688772}, "easypost.requestor.Requestor.interpret_response": {"tf": 1.7320508075688772}, "easypost.requestor.Requestor.requests_request": {"tf": 2.23606797749979}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 2.23606797749979}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1.7320508075688772}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1.7320508075688772}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1.7320508075688772}, "easypost.resource": {"tf": 1.7320508075688772}, "easypost.resource.Resource": {"tf": 1.7320508075688772}, "easypost.resource.Resource.retrieve": {"tf": 1.7320508075688772}, "easypost.resource.Resource.refresh": {"tf": 1.7320508075688772}, "easypost.resource.Resource.snakecase_name": {"tf": 1.7320508075688772}, "easypost.resource.Resource.class_url": {"tf": 1.7320508075688772}, "easypost.resource.Resource.instance_url": {"tf": 1.7320508075688772}, "easypost.resource.AllResource": {"tf": 1.7320508075688772}, "easypost.resource.AllResource.all": {"tf": 1.7320508075688772}, "easypost.resource.CreateResource": {"tf": 1.7320508075688772}, "easypost.resource.CreateResource.create": {"tf": 1.7320508075688772}, "easypost.resource.UpdateResource": {"tf": 1.7320508075688772}, "easypost.resource.UpdateResource.save": {"tf": 1.7320508075688772}, "easypost.resource.DeleteResource": {"tf": 1.7320508075688772}, "easypost.resource.DeleteResource.delete": {"tf": 1.7320508075688772}, "easypost.scanform": {"tf": 1.7320508075688772}, "easypost.scanform.ScanForm": {"tf": 1.7320508075688772}, "easypost.scanform.ScanForm.create": {"tf": 1.7320508075688772}, "easypost.shipment": {"tf": 1.7320508075688772}, "easypost.shipment.Shipment": {"tf": 1.7320508075688772}, "easypost.shipment.Shipment.create": {"tf": 1.7320508075688772}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1.7320508075688772}, "easypost.shipment.Shipment.get_smartrates": {"tf": 1.7320508075688772}, "easypost.shipment.Shipment.buy": {"tf": 1.7320508075688772}, "easypost.shipment.Shipment.refund": {"tf": 1.7320508075688772}, "easypost.shipment.Shipment.insure": {"tf": 1.7320508075688772}, "easypost.shipment.Shipment.label": {"tf": 1.7320508075688772}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1.7320508075688772}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1.7320508075688772}, "easypost.shipment.Shipment.generate_form": {"tf": 1.7320508075688772}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1.7320508075688772}, "easypost.tax_identifier": {"tf": 1.7320508075688772}, "easypost.tax_identifier.TaxIdentifier": {"tf": 1.7320508075688772}, "easypost.tracker": {"tf": 1.7320508075688772}, "easypost.tracker.Tracker": {"tf": 1.7320508075688772}, "easypost.tracker.Tracker.create_list": {"tf": 1.7320508075688772}, "easypost.user": {"tf": 1.7320508075688772}, "easypost.user.User": {"tf": 1.7320508075688772}, "easypost.user.User.create": {"tf": 1.7320508075688772}, "easypost.user.User.retrieve": {"tf": 1.7320508075688772}, "easypost.user.User.retrieve_me": {"tf": 1.7320508075688772}, "easypost.user.User.all_api_keys": {"tf": 1.7320508075688772}, "easypost.user.User.api_keys": {"tf": 1.7320508075688772}, "easypost.user.User.update_brand": {"tf": 1.7320508075688772}, "easypost.util": {"tf": 1.7320508075688772}, "easypost.util.get_lowest_object_rate": {"tf": 1.7320508075688772}, "easypost.version": {"tf": 1.7320508075688772}, "easypost.webhook": {"tf": 1.7320508075688772}, "easypost.webhook.Webhook": {"tf": 1.7320508075688772}, "easypost.webhook.Webhook.update": {"tf": 1.7320508075688772}, "easypost.webhook.Webhook.validate_webhook": {"tf": 2.23606797749979}}, "df": 157, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.address.Address.create": {"tf": 1}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.batch.Batch.label": {"tf": 1}, "easypost.batch.Batch.create_scan_form": {"tf": 1}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.report.Report.create": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.user.User.create": {"tf": 1}}, "df": 14}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.carrier_account.CarrierAccount.types": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"easypost.pickup.Pickup.cancel": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.Resource.snakecase_name": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"easypost.user.User.create": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1}, "easypost.shipment.Shipment.label": {"tf": 1}}, "df": 5}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}}, "df": 1}}}}}}}, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.error.Error": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}}, "df": 3}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"easypost.error.Error": {"tf": 1}, "easypost.resource.Resource.snakecase_name": {"tf": 1}, "easypost.resource.Resource.class_url": {"tf": 1}}, "df": 3}}}}}, "a": {"docs": {"easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.batch.Batch.buy": {"tf": 1}, "easypost.batch.Batch.label": {"tf": 1}, "easypost.batch.Batch.remove_shipments": {"tf": 1}, "easypost.batch.Batch.add_shipments": {"tf": 1}, "easypost.batch.Batch.create_scan_form": {"tf": 1.4142135623730951}, "easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1}, "easypost.pickup.Pickup.buy": {"tf": 1}, "easypost.pickup.Pickup.cancel": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.report.Report.create": {"tf": 1}, "easypost.requestor.Requestor.form_encode_params": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.resource.Resource.class_url": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}, "easypost.shipment.Shipment.get_smartrates": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}, "easypost.shipment.Shipment.refund": {"tf": 1}, "easypost.shipment.Shipment.insure": {"tf": 1}, "easypost.shipment.Shipment.label": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1.4142135623730951}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.user.User.create": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}, "easypost.webhook.Webhook.update": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 46, "n": {"docs": {"easypost.address.Address.create": {"tf": 1}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.address.Address.verify": {"tf": 1}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.endshipper.EndShipper.save": {"tf": 1.4142135623730951}, "easypost.order.Order.get_rates": {"tf": 1}, "easypost.order.Order.buy": {"tf": 1}, "easypost.requestor.RequestMethod": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.resource.UpdateResource.save": {"tf": 1}, "easypost.resource.DeleteResource.delete": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 18, "d": {"docs": {"easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.4142135623730951}}, "df": 3}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"easypost.batch.Batch.add_shipments": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}}, "df": 4, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"easypost.address.Address.create": {"tf": 1}, "easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.address.Address.verify": {"tf": 1}}, "df": 3}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {"easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.interpret_response": {"tf": 1}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.Resource.refresh": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}}, "df": 18}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"easypost.carrier_account.CarrierAccount.types": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"easypost.carrier_account.CarrierAccount.types": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.error.Error": {"tf": 1}, "easypost.report.Report.all": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}}, "df": 4}}, "s": {"docs": {"easypost.resource.Resource.snakecase_name": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 3}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"easypost.user.User.retrieve_me": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}}, "df": 2}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"easypost.address.Address.create_and_verify": {"tf": 1}, "easypost.address.Address.verify": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1.4142135623730951}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}}}}}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "y": {"docs": {"easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.batch.Batch.buy": {"tf": 1}, "easypost.order.Order.buy": {"tf": 1}, "easypost.pickup.Pickup.buy": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}}, "df": 5}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"easypost.batch.Batch.create_and_buy": {"tf": 1}, "easypost.batch.Batch.buy": {"tf": 1}, "easypost.batch.Batch.label": {"tf": 1}, "easypost.batch.Batch.remove_shipments": {"tf": 1}, "easypost.batch.Batch.add_shipments": {"tf": 1}, "easypost.batch.Batch.create_scan_form": {"tf": 1}}, "df": 6}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"easypost.error.Error": {"tf": 1}}, "df": 1, "d": {"docs": {"easypost.resource.Resource.class_url": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1}}, "df": 2}}}}, "y": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 5}, "e": {"docs": {"easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1.4142135623730951}}, "df": 2}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"easypost.requestor.Requestor.interpret_response": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 2}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"easypost.user.User.update_brand": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"easypost.batch.Batch.label": {"tf": 1}, "easypost.shipment.Shipment.label": {"tf": 1}}, "df": 2}}}, "y": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.requestor.Requestor.form_encode_params": {"tf": 1.4142135623730951}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}}, "df": 6}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}}, "df": 2}}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.resource.Resource.refresh": {"tf": 1}}, "df": 2}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 6}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"easypost.requestor.Requestor.request_raw": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"easypost.batch.Batch.remove_shipments": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}}, "df": 8}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"easypost.resource.Resource.refresh": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"easypost.shipment.Shipment.refund": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 9}, "d": {"docs": {"easypost.requestor.Requestor.request_raw": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}}, "df": 4}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.report.Report.all": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1}, "easypost.user.User.retrieve_me": {"tf": 1}}, "df": 8}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.resource.Resource.snakecase_name": {"tf": 1}}, "df": 2, "s": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "d": {"docs": {"easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.requestor.Requestor.interpret_response": {"tf": 1}, "easypost.resource.Resource.refresh": {"tf": 1}}, "df": 3}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"easypost.resource.AllResource.all": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"easypost.requestor.Requestor.interpret_response": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"easypost.report.Report.create": {"tf": 1}}, "df": 1, "s": {"docs": {"easypost.report.Report.all": {"tf": 1}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.shipment.Shipment.regenerate_rates": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1, "d": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 4, "s": {"docs": {"easypost.order.Order.get_rates": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}}, "df": 2}}}}}, "s": {"docs": {"easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}}, "df": 10, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.shipment.Shipment.create": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}, "easypost.shipment.Shipment.get_smartrates": {"tf": 1}, "easypost.shipment.Shipment.buy": {"tf": 1}, "easypost.shipment.Shipment.refund": {"tf": 1}, "easypost.shipment.Shipment.insure": {"tf": 1}, "easypost.shipment.Shipment.label": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 11, "s": {"docs": {"easypost.batch.Batch.remove_shipments": {"tf": 1}, "easypost.batch.Batch.add_shipments": {"tf": 1}}, "df": 2}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"easypost.batch.Batch.create_scan_form": {"tf": 1}, "easypost.scanform.ScanForm.create": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1, "s": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 2}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}}}}, "b": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.Resource.snakecase_name": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}}, "df": 2, "s": {"docs": {"easypost.shipment.Shipment.get_smartrates": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1, "s": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}}}}}}}}, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"easypost.batch.Batch.remove_shipments": {"tf": 1}, "easypost.batch.Batch.add_shipments": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.requestor.Requestor.interpret_response": {"tf": 1}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.Resource.refresh": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1.4142135623730951}}, "df": 11}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"easypost.batch.Batch.create_scan_form": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.4142135623730951}, "easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.error.Error": {"tf": 1}, "easypost.order.Order.get_rates": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.shipment.Shipment.regenerate_rates": {"tf": 1}, "easypost.shipment.Shipment.get_smartrates": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1}}, "df": 9, "m": {"docs": {"easypost.requestor.Requestor.form_encode_params": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "t": {"docs": {"easypost.shipment.Shipment.label": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 9}}}}}, "d": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.beta.referral.Referral.create": {"tf": 1.4142135623730951}, "easypost.beta.referral.Referral.update_email": {"tf": 1.4142135623730951}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1.4142135623730951}, "easypost.referral.Referral.update_email": {"tf": 1.4142135623730951}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1.4142135623730951}, "easypost.user.User.create": {"tf": 1}, "easypost.user.User.retrieve": {"tf": 1}, "easypost.user.User.retrieve_me": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}}, "df": 15, "s": {"docs": {"easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.resource.UpdateResource.save": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}, "easypost.webhook.Webhook.update": {"tf": 1}}, "df": 7}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "l": {"docs": {"easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}, "easypost.resource.Resource.class_url": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1}}, "df": 4, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"easypost.requestor.Requestor.urlfetch_request": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}, "easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}}, "df": 14}}, "e": {"docs": {"easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.4142135623730951}, "easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.interpret_response": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.Resource.refresh": {"tf": 1.4142135623730951}, "easypost.resource.Resource.snakecase_name": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1.4142135623730951}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.shipment.Shipment.label": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.user.User.retrieve_me": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}, "easypost.user.User.update_brand": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 2.449489742783178}}, "df": 34}, "a": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}, "o": {"docs": {"easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.7320508075688772}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1}, "easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}, "easypost.requestor.Requestor.form_encode_params": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1.4142135623730951}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 14}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"easypost.carrier_account.CarrierAccount.types": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.4142135623730951}}, "df": 1}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"easypost.tracker.Tracker.create_list": {"tf": 1}}, "df": 1}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}}, "df": 6}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"easypost.endshipper.EndShipper.save": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {"easypost.requestor.Requestor.encode_url_params": {"tf": 1}, "easypost.requestor.Requestor.add_params_to_url": {"tf": 1}}, "df": 2}}}}, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}}, "df": 3}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.endshipper.EndShipper.save": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {"easypost.pickup.Pickup.buy": {"tf": 1}, "easypost.pickup.Pickup.cancel": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 4}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"easypost.beta.referral.Referral.create": {"tf": 1}, "easypost.beta.referral.Referral.update_email": {"tf": 1}, "easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.beta.referral.Referral.add_credit_card": {"tf": 1}, "easypost.referral.Referral.create": {"tf": 1}, "easypost.referral.Referral.update_email": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.referral.Referral.add_credit_card": {"tf": 1}}, "df": 8, "s": {"docs": {"easypost.user.User.all_api_keys": {"tf": 1.4142135623730951}, "easypost.user.User.api_keys": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1, "f": {"docs": {"easypost.beta.referral.Referral.all": {"tf": 1}, "easypost.carrier_account.CarrierAccount.types": {"tf": 1}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.referral.Referral.all": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1}, "easypost.resource.AllResource.all": {"tf": 1}, "easypost.shipment.Shipment.label": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.tracker.Tracker.create_list": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 14}, "r": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 3, "g": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.order.Order.get_rates": {"tf": 1}, "easypost.order.Order.buy": {"tf": 1}, "easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 4}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.resource.Resource.class_url": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1}}, "df": 3, "e": {"docs": {"easypost.requestor.Requestor.form_encode_params": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObject.construct_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.4142135623730951}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1}, "easypost.endshipper.EndShipper.save": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.Resource.refresh": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.resource.UpdateResource.save": {"tf": 1}, "easypost.resource.DeleteResource.delete": {"tf": 1}, "easypost.shipment.Shipment.create": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 17, "s": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}}}}}, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1.4142135623730951}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.easypost_object.convert_to_easypost_object": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1}, "easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.handle_api_error": {"tf": 1}, "easypost.resource.Resource.retrieve": {"tf": 1}, "easypost.resource.CreateResource.create": {"tf": 1}, "easypost.resource.UpdateResource.save": {"tf": 1}, "easypost.resource.DeleteResource.delete": {"tf": 1}, "easypost.util.get_lowest_object_rate": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1.4142135623730951}}, "df": 12}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"easypost.error.Error": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"easypost.error.Error": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"easypost.requestor.Requestor.form_encode_params": {"tf": 1}, "easypost.requestor.Requestor.encode_url_params": {"tf": 1}}, "df": 2, "r": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.endshipper.EndShipper.create": {"tf": 1}, "easypost.endshipper.EndShipper.save": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.requestor.RequestMethod": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1, "s": {"docs": {"easypost.requestor.Requestor.handle_api_error": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"easypost.easypost_object.EasyPostObject.refresh_from": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 2}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {"easypost.requestor.Requestor.interpret_response": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {"easypost.webhook.Webhook.update": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"easypost.billing.Billing.fund_wallet": {"tf": 1}, "easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"easypost.billing.Billing.retrieve_payment_methods": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {"easypost.requestor.Requestor.form_encode_params": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"easypost.requestor.Requestor.request": {"tf": 1}, "easypost.requestor.Requestor.request_raw": {"tf": 1}, "easypost.requestor.Requestor.requests_request": {"tf": 1}, "easypost.requestor.Requestor.urlfetch_request": {"tf": 1}}, "df": 4}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.billing.Billing.delete_payment_method": {"tf": 1}, "easypost.resource.DeleteResource.delete": {"tf": 1}}, "df": 2}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObject.flatten_unsaved": {"tf": 1}, "easypost.easypost_object.EasyPostObject.to_dict": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder.default": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"easypost.requestor.Requestor.form_encode_params": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "d": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}, "o": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1.7320508075688772}}, "df": 1}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"easypost.carrier_account.CarrierAccount.types": {"tf": 1}, "easypost.order.Order.get_rates": {"tf": 1}, "easypost.order.Order.lowest_rate": {"tf": 1}, "easypost.pickup.Pickup.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.get_smartrates": {"tf": 1}, "easypost.shipment.Shipment.lowest_rate": {"tf": 1}, "easypost.shipment.Shipment.lowest_smartrate": {"tf": 1}, "easypost.shipment.Shipment.get_lowest_smartrate": {"tf": 1}, "easypost.user.User.all_api_keys": {"tf": 1}, "easypost.user.User.api_keys": {"tf": 1}}, "df": 10, "s": {"docs": {"easypost.util.get_lowest_object_rate": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.Resource.class_url": {"tf": 1}, "easypost.resource.Resource.instance_url": {"tf": 1}, "easypost.shipment.Shipment.generate_form": {"tf": 1}}, "df": 3}}}}}}}}, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.easypost_object.EasyPostObject.to_json": {"tf": 1}, "easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1.4142135623730951}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 3}}}}, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"easypost.requestor.Requestor.handle_api_error": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"easypost.requestor.Requestor.request_raw": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"easypost.requestor.Requestor.interpret_response": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.Resource.instance_url": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"easypost.shipment.Shipment.insure": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"easypost.user.User.all_api_keys": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "f": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}, "easypost.webhook.Webhook.validate_webhook": {"tf": 1.4142135623730951}}, "df": 2}, "t": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}, "d": {"docs": {"easypost.resource.Resource.instance_url": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"easypost.error.Error": {"tf": 1}}, "df": 1, "e": {"docs": {"easypost.easypost_object.EasyPostObjectEncoder": {"tf": 1}}, "df": 1}}, "t": {"docs": {"easypost.webhook.Webhook.validate_webhook": {"tf": 1.7320508075688772}}, "df": 1}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"easypost.resource.Resource.snakecase_name": {"tf": 1}, "easypost.resource.Resource.class_url": {"tf": 1}}, "df": 2}}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; + + // mirrored in build-search-index.js (part 1) + // Also split on html tags. this is a cheap heuristic, but good enough. + elasticlunr.tokenizer.setSeperator(/[\s\-.;&_'"=,()]+|<[^>]*>/); + + let searchIndex; + if (docs._isPrebuiltIndex) { + console.info("using precompiled search index"); + searchIndex = elasticlunr.Index.load(docs); + } else { + console.time("building search index"); + // mirrored in build-search-index.js (part 2) + searchIndex = elasticlunr(function () { + this.pipeline.remove(elasticlunr.stemmer); + this.pipeline.remove(elasticlunr.stopWordFilter); + this.addField("qualname"); + this.addField("fullname"); + this.addField("annotation"); + this.addField("default_value"); + this.addField("signature"); + this.addField("bases"); + this.addField("doc"); + this.setRef("fullname"); + }); + for (let doc of docs) { + searchIndex.addDoc(doc); + } + console.timeEnd("building search index"); + } + + return (term) => searchIndex.search(term, { + fields: { + qualname: {boost: 4}, + fullname: {boost: 2}, + annotation: {boost: 2}, + default_value: {boost: 2}, + signature: {boost: 2}, + bases: {boost: 2}, + doc: {boost: 1}, + }, + expand: true + }); +})(); \ No newline at end of file diff --git a/setup.py b/setup.py index de53495a..ddf9ff96 100644 --- a/setup.py +++ b/setup.py @@ -16,10 +16,11 @@ "flake8==5.*", "isort==5.*", "mypy==0.971", + "pdoc==12.*", "pytest-cov==3.*", "pytest-vcr==1.*", "pytest==7.*", - "twine==3.8.*", # Twine 4.0+ drops support for Python 3.6 + "twine==3.8.*", # Twine 4.0 drops support for Python 3.6 "types-requests", "types-urllib3", "vcrpy==4.*", From 205ed15b9a581b825250fc988f1b84cd93cb10f5 Mon Sep 17 00:00:00 2001 From: Justintime50 <39606064+Justintime50@users.noreply.github.com> Date: Thu, 3 Nov 2022 11:11:20 -0600 Subject: [PATCH 2/2] fix: pdoc for python 3.7 or greater --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index ddf9ff96..119575eb 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ "flake8==5.*", "isort==5.*", "mypy==0.971", - "pdoc==12.*", + "pdoc==12.*;python_version>='3.7'", "pytest-cov==3.*", "pytest-vcr==1.*", "pytest==7.*",