dlo 0.2.1
A lightweight, dynamic Python client to pull NBA data from stats.nba.com.
Requires Python: >=2.6
Keywords: statistics data nba

dlo
========

``dlo`` is a lightweight, dynamic Python client to pull NBA data from stats.nba.com_.

Overview
____________________

This client utilizes error messages from the stats.nba.com API to:

* check whether parameter passed is valid
* check whether endpoint is valid or possibly deprecated
* return list of parameters for endpoint
* return list of possible values for any parameters and whether required for endpoint
* automatically pass required parameters with default value if not given

It is possible to build a documentation of the API given possible endpoints with this client.

Inspired by nba_py_.

Installation
____________________

.. code-block:: bash

    # stable version
    pip install dlo

    # latest version
    git clone https://github.com/avkondepudi/dlo.git
    cd ./dlo
    pip install .

Dependencies
____________________

* requests_ (required)
* pandas_ (recommended)

Usage
____________________

A list of endpoints can be found here_. IDs (PlayerID, GameID, etc.) can be found on stats.nba.com_.

.. code-block:: python

    >>> from dlo import Data                            # import module
    >>> LOCAL = {                                       # set local parameters
    ... "PlayerID": 1626156,                            
    ... "Season": "2018-19",
    ... "SeasonType": "Regular Season"
    ... }
    >>> d = Data(**LOCAL)                               # create instance of Data class with local parameters
    >>> d.local = LOCAL                                 # another way to pass local parameters (recommended; deletes previous local parameters)
    >>> d.local                                         # returns local parameters passed
    {"PlayerID": 1626156, "Season": "2018-19", "SeasonType": "Regular Season"}
    >>> d.endpoint = "playergamelog"                    # set endpoint
    >>> d.endpoint                                      # returns current endpoint
    "playergamelog" 
    >>> d.getEndpointParams()                           # returns list of parameters for current endpoint
    ['PlayerID', 'Season', 'SeasonType']
    >>> d.getParamInfo("SeasonType")                    # returns list of values for parameter and whether required
    {'regex': '^(Regular Season)|(Pre Season)|(Playoffs)|(All-Star)|(All Star)$', 'values': ['Regular Season', 'Pre Season', 'Playoffs', 'All-Star', 'All Star'], 'required': True}
    >>> d.getParam("Season")                            # returns parameter value if passed
    "2018-19"
    >>> d.removeParam("Season")                         # value for Season (2018-19) removed
    >>> d.setParam("Season", "2018-19")                 # two ways to set/add parameters
    >>> d.Season = "2018-19"
    >>> data = d.getData()                              # returns data (game log of D'Angelo Russell for the 2018-19 Regular Season)
    >>> data_in_pandas_format = d.getData(pandify=True)

.. _stats.nba.com: https://stats.nba.com/ 
.. _nba_py: https://github.com/seemethere/nba_py
.. _requests: https://github.com/psf/requests
.. _pandas: https://github.com/pandas-dev/pandas
.. _here: https://any-api.com/nba_com/nba_com/docs/API_Description