fattmerchant 2.0.1
Python 3.x Client for Fattmerchant's Omni API
Requires Python: >=3.5

# Fattmerchant Python Client

This package aims to provide assitance while interacting with the
[Fattmerchant](https://fattmerchant.com/api-documentation/) rest API.

This is the official python client which is supported by fattmerchant and bugs/issues/feature-requests can be posted on the official [github](https://github.com/fattmerchantorg/fattmerchant_python_client) page.

## Python client documentation at [readthedocs](https://fattmerchant-python-sdk.readthedocs.io/en/latest/)

build status
[![Documentation Status](https://readthedocs.org/projects/fattmerchant-python-client/badge/?version=latest)](https://fattmerchant-python-client.readthedocs.io/en/latest/?badge=latest)

## Install

```
# pre-req, you need Xcode cli tools:
xcode-select --install

# THEN:
brew update
brew install pyenv
```

Now, follow this guide to set up your \$PATH.
https://github.com/pyenv/pyenv#homebrew-on-macos

Make sure you have a `.zshrc` OR `.bash_profile` file:

```
# zsh
vim ~/.zshrc

# bash
vim ~/.bash_profile
```

For either Zsh or Bash, paste into your rc file:

```
# Init Pyenv (if it exists) for all new shells
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi
```

```
source ~/.zshrc
# OR
source ~/.bash_profile
```

**Now Install The Python Binary**

```
cd path/to/project

# First check python version
`python --version`

If python version comes up to be 3.x.x then skip to creating virtualenv


# this is the current version we use
pyenv install 3.8

# so far it's installed but not used
# use it globally
pyenv global 3.8
source ~/.zshrc
# or ~/.bash_profile

# Create Virtualenv
pip install virtualenv

# do this anywhere you have a python project
virtualenv venv

# source the venv
# Note that virtualenv activates the python versoin ONLY for your current session, (your terminal Tab)
`source venv/bin/activate`

# this will install yapf and everything else in requirements.txt
pip install -r requirements.txt
```

_Note: If you get an error about zlib, then you may need to install with Homebrew before installing the python binary._

**When done using venv**

```
# within your venv session...
deactivate
```

### VSCode Settings

In VScode install [Python Extensions](https://github.com/Microsoft/vscode-python)

In `.vscode/settings.json` enter this:

```
{
  "python.pythonPath": "venv/bin/python",
  "editor.formatOnSave": true,
  "python.formatting.provider": "yapf",
  "python.linting.flake8Enabled": true,
  "python.linting.pylintEnabled": false,
  "python.linting.enabled": true,
  "restructuredtext.confPath": "${workspaceFolder}/docs/source"
}
```

Then, if VSCode asks you to install anything like flake8 just click "yes".

Then, Select the Python binary as `venv` in VSCode:

![select venv binary](./images/selectPython3.png)

## SDK Usage (For client)
Ensure that you have fattmerchant installed from pypi
create a new file fm_client.py
and put the following code 

```
from fattmerchant.client import FMClient	
fatt = FMClient(	
    "YOUR_API_KEY_HERE",	
    "local"	
)
```
API key can get requested from 

https://fattmerchant.com/omni-overview-lp/

## Test the package

Go to `tests/static_data` directory and create a file called "API_KEY" and 
paste your API Key in this file. 

(Sometimes this does not work as expected because of 1.Pasting the key with quotes 2.Having an extra line in the file.)

### This file is added to gitignore to make sure that you never accidentally commit it.

At the moment we jut have Basic_tests.py file working. 

To test the file you can run 
*Windows*
`python -m unittest tests\Basic_tests.py`

*Mac/Linux*

`python -m unittest tests/Basic_tests.py`


Developer should model their tests similar to what is written here.

Ideally there will be a separate file for each controller/module. 


## Update Read the Docs 

- If adding a model or controller, make sure you add the new `.rst` file too `controllers.rst` or `models.rst` 
- Then add a new `.rst` file within the controllers or models directory in this format :

```
My New Model/Controller
 ========
 .. automodule:: fattmerchant.controllers/model.my_new_model_or_controller
     :members:
```

- Deploy changes (to master)
- Get login credentials to Read the Docs 
- Once logged in, go into the `Fattmerchant Python SDK` project
- Go into the builds tab and click on the `Build Version` button, while `latest` is selected
- Verify docs are updated successfully.

## Release to PyPi

Increment version number in these files:

- ./setup.py
- ./docs/source/conf.py

```
source venv/bin/activate

# this will install yapf and everything else in requirements.txt
pip install -r requirements.txt

make upload
```

If you get an auth error, before you fix your password and try again, clear the `dist` folder: `rm -f dist/*.gz && rm -f dist/*.whl`

The project is released here: https://pypi.org/project/fattmerchant/