A Python SDK/CLI for Lunar API
Project description
lunar-sdk
Contents
SDK for lunar microservices
Description
A Python based SDK & CLI for Lunar microservices
This python package includes
- Functions for lunar-rec
- CLI (Command Line Interface) named
lunar
Installation
Build package and wheel files with poetry
.
# installation
poetry install
poetry run lunar -h
How to use
Credentials
lunar
uses a credentials file to setup a config(env
, apikey
) with a init
file type.
The path for credentials file and format must be as follow:
[Path]
.lunar/credentials
[default]
env=local
apikey=ABCDEFG123
[dev]
env=dev
apikey=AERSDF123
[stg]
env=stg
apikey=HIJKLMNO456
[prd]
env=prd
apikey=PQRSTUV789
The first [default] is used when SDK / CLI is run without a specified profile.
To specify a profile, use AWS_PROFILE
to overrides the default profile for commands that run in that session.
export AWS_PROFILE=stg
SDK
lunar
package provides functions for using all lunar microservices.
For the detailed information related to each function, please refer to Docs.
Here is an example for CRUDing channels:
import lunar
# Environment for Lunar-rec is automatically set with credential file
client = lunar.client("channel")
# Get list of channels
channels = client.get_channels()
# Get a channel
channel = client.get_channel(id="test_channel")
# Create a channel
channel = client.create_channel(id="new_channel", experiment_id="new_experiment")
# Update(or partial) a channel
updated_channel = client.update_channel(id="test_channel", experiment_id="a")
partially_updated_channel = client.update_channel_partial(id="test_channel", experiment_id="ab")
# Delete a channel
client.delete_channel(channel.id)
All functions on the SDK also supports asyncio. If necessary, use an async version of each function.
- Naming rule: Suffix with _async. (e.g.
list_channels()
→list_channels_async()
)
CLI
lunar
also provides CLI (Command Line Interface) generated by click package.
poetry run lunar -h
should show something like the below:
Usage: lunar [OPTIONS] COMMAND [ARGS]...
Options:
-h, --help Show this message and exit.
Commands:
channel Channels on lunar-rec
experiment Experiments on lunar-rec
recommend Recommendation on lunar-rec
Each option also has its own usage instruction.
poetry run lunar experiments -h
Usage: lunar experiment [OPTIONS] {CREATE|LIST|READ|UPDATE|DELETE}
Experiments on lunar-rec
Send a request to Lunar Recommendation API (`/v1/experiemnts/`).
Return: dict or list(dict)
Options:
-i, --id TEXT Unique identifier of a channel
-b, --buckets <TEXT INTEGER>...
Bucket list
-s, --bucketing-seed TEXT Random seed for bucketing
-p, --partial Partial update or not (default: False)
-h, --help Show this message and exit.
Development
Requirements for development
- Python 3.8
- Poetry
Installing Python 3.8 with pyenv is recommended. Check this.
For zsh,
# Install Xcode command line tools (Only if you don't have it already)
xcode-select --install
# Install pyenv and its dependencies
brew update
brew install pyenv openssl readline sqlite3 xz zlib
echo 'eval "$(pyenv init --path)"' >> ~/.zshrc
eval '"$(pyenv init -)"' >> ~/.zshrc
# Restart the terminal
# Install Python 3.8
pyenv install 3.8.10
pyenv global 3.8.10
# Restart the terminal
# Check if the version is right
python -V
# Install Poetry
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
poetry config virtualenvs.in-project true
should work.
Python environment
poetry install
If you need additional deps,
# For production
poetry add package_name
# For development only
poetry add --dev package_name
Documents generation
rm -rf docs
pdoc --html --config show_source_code=False -f -o ./docs lunar
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for apollo_lunar-2023.6.14rc1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 22c10a2cfbf4ee9ee059b40a7952ce9828dbd6989c438719b955b1a206c5bb56 |
|
MD5 | 0c5741d2e21a71369714090edd09e2b3 |
|
BLAKE2b-256 | 197a6a434710e3f2532ac4533fda964b644f1137c05f6547c5c094afca13faa6 |
Hashes for apollo_lunar-2023.6.14rc1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03d81dfb645d46c706ea2edafdb7919836212fd662234a6520a7c2f384446da9 |
|
MD5 | e574857acfc90f97099fdf8b91e8a5b4 |
|
BLAKE2b-256 | 0cf77901d41dfe5545f1e6969e33018b3100b46c758741761c079e63a9546e87 |