# Source code for yarg.client

    # -*- coding: utf-8 -*-

    # (The MIT License)
    #
    # Copyright (c) 2014 Kura
    #
    # Permission is hereby granted, free of charge, to any person obtaining a copy
    # of this software and associated documentation files (the 'Software'), to deal
    # in the Software without restriction, including without limitation the rights
    # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    # copies of the Software, and to permit persons to whom the Software is
    # furnished to do so, subject to the following conditions:
    #
    # The above copyright notice and this permission notice shall be included in
    # all copies or substantial portions of the Software.
    #
    # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    # SOFTWARE.

    import requests

    from .exceptions import HTTPError
    from .package import json2package

    session = requests.Session()

    def get(package_name, pypi_server="https://pypi.python.org/pypi/"):
        """
        Construct a request to the PyPI server and returns an instance of
        :class:`yarg.package.Package`.

        :param package_name: case sensitive name of the package on the PyPI server.
        :param pypi_server: (option) URL to the PyPI server.

            >>> import yarg
            >>> package = yarg.get('yarg')
            <Package yarg>
        """
        if not pypi_server.endswith("/"):
            pypi_server = pypi_server + "/"
        response = session.get("{0}{1}/json".format(pypi_server,
                                                    package_name))
        if response.status_code >= 300:
            raise HTTPError(status_code=response.status_code,
                            reason=response.reason)
        if hasattr(response.content, 'decode'):
            return json2package(response.content.decode())
        else:
            return json2package(response.content)