Metadata-Version: 2.1
Name: easypost
Version: 5.1.3
Summary: EasyPost Shipping API Client Library for Python
Home-page: https://easypost.com/
Author: EasyPost
Author-email: support@easypost.com
License: UNKNOWN
Project-URL: Docs, https://www.easypost.com/docs/api
Project-URL: Tracker, https://github.com/EasyPost/easypost-python/issues
Project-URL: Source, https://github.com/EasyPost/easypost-python
Description: # EasyPost Python Client Library
        
        [![CI](https://github.com/EasyPost/easypost-python/workflows/CI/badge.svg)](https://github.com/EasyPost/easypost-python/actions?query=workflow%3ACI)
        [![PyPI version](https://badge.fury.io/py/easypost.svg)](https://badge.fury.io/py/easypost)
        
        EasyPost is the simple shipping API. You can sign up for an account at <https://easypost.com>.
        
        Requirements
        ------------
        
        * [Python](https://www.python.org) 2.7 or 3.3+ (or corresponding [PyPy](https://pypy.org) versions). Note that we only test on Python 2.7 and 3.5+; we strongly recommend against using 3.3.x or 3.4.x as they are no longer supported by many libraries.
        * [requests](http://docs.python-requests.org/en/latest/) (if not on Google App Engine)
        * [six](https://pythonhosted.org/six/)
        
        
        Looking for a client library for another language? Check out <https://www.easypost.com/docs/libraries>.
        
        
        Installation
        ------------
        
        You can install easypost via pip with:
        
        ```bash
        pip install easypost
        ```
        
        Alternatively, you can clone the EasyPost python client repository:
        
        ```bash
        git clone https://github.com/EasyPost/easypost-python
        ```
        
        Install:
        
        ```bash
        python setup.py install
        ```
        
        Import the EasyPost client:
        
        ```python
        import easypost
        ```
        
        Example
        -------
        
        ```python
        import easypost
        easypost.api_key = '<YOUR API KEY FROM https://www.easypost.com/account/api-keys>'
        
        # create and verify addresses
        to_address = easypost.Address.create(
            verify=["delivery"],
            name = "Dr. Steve Brule",
            street1 = "179 N Harbor Dr",
            street2 = "",
            city = "Redondo Beach",
            state = "CA",
            zip = "90277",
            country = "US",
            phone = "310-808-5243"
        )
        from_address = easypost.Address.create(
            verify=["delivery"],
            name = "EasyPost",
            street1 = "118 2nd Street",
            street2 = "4th Floor",
            city = "San Francisco",
            state = "CA",
            zip = "94105",
            country = "US",
            phone = "415-456-7890"
        )
        
        # create parcel
        try:
            parcel = easypost.Parcel.create(
                predefined_package = "Parcel",
                weight = 21.2
            )
        except easypost.Error as e:
            print(str(e))
            if e.param is not None:
                print('Specifically an invalid param: %r' % e.param)
        
        parcel = easypost.Parcel.create(
            length = 10.2,
            width = 7.8,
            height = 4.3,
            weight = 21.2
        )
        
        # create customs_info form for intl shipping
        customs_item = easypost.CustomsItem.create(
            description = "EasyPost t-shirts",
            hs_tariff_number = 123456,
            origin_country = "US",
            quantity = 2,
            value = 96.27,
            weight = 21.1
        )
        customs_info = easypost.CustomsInfo.create(
            customs_certify = 1,
            customs_signer = "Hector Hammerfall",
            contents_type = "gift",
            contents_explanation = "",
            eel_pfc = "NOEEI 30.37(a)",
            non_delivery_option = "return",
            restriction_type = "none",
            restriction_comments = "",
            customs_items = [customs_item]
        )
        
        # create shipment
        shipment = easypost.Shipment.create(
            to_address = to_address,
            from_address = from_address,
            parcel = parcel,
            customs_info = customs_info
        )
        
        # buy postage label with one of the rate objects
        shipment.buy(rate = shipment.rates[0])
        # alternatively: shipment.buy(rate = shipment.lowest_rate())
        
        print(shipment.tracking_code)
        print(shipment.postage_label.label_url)
        
        # Insure the shipment for the value
        shipment.insure(amount=100)
        
        print(shipment.insurance)
        ```
        
        Documentation
        -------------
        
        Up-to-date documentation is available at: <https://www.easypost.com/docs>
        
        
        Client Library Development
        -------------------------
        
        ### Releasing
        
           1. Add new features to [CHANGELOG.md](CHANGELOG.md)
           1. Bump the version in `easypost/version.py`
           1. Bump the version in `setup.py`
           1. Create and push a signed git tag
           1. Create a Release in Github based on the tag, with a human-readable summary of changes
           1. Build sdist and wheel: `rm -rf build/ dist/ ./*.egg-info; python3 setup.py sdist bdist_wheel`
           1. Push to PyPI with `twine upload dist/*`
        
        ### Running Tests
        
        To run tests:
        
           - Create a virtualenv for your version of Python (e.g., `python2.7 -m virtualenv venv`)
           - Install dependencies in that virtualenv (`./venv/bin/pip install requests six`)
           - Install test dependencies (`./venv/bin/pip install -r requirements-tests.txt`)
           - Export `$TEST_API_KEY` and `$PROD_API_KEY` appropriately (these are set automatically for CI)
           - Run the tests with `py.test` (`./venv/bin/py.test -vs tests`)
        
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, <4
Description-Content-Type: text/markdown
