/geekbot-api-py

A Geekbot (https://geekbot.com/) API client in python supporting async

Primary LanguagePythonMIT LicenseMIT

geekbot-api-py

All Contributors

A Geekbot (https://geekbot.com/) API client in python supporting async and sync operations.

Implements the Geekbot API per https://geekbot.com/developers/

Latest Commit
Package version

Main Dependencies

Getting Started

Installation

Install the package

pip install geekbot-api

Usage

Follow the directions on https://geekbot.com/developers/ to get an API Token

Example

from geekbot_api.config import GeekbotAPIConfig
from geekbot_api.client import GeekbotAPIClient

config = GeekbotAPIConfig(api_key="api_YOURKEYGOESHERE")

client = GeekbotAPIClient(config=config)

for standup in client.standups.list():
    standups.append(standup)

    print(standups)

Async Example

import asyncio
from geekbot_api.config import GeekbotAPIConfig
from geekbot_api.client import GeekbotAPIClient

config = GeekbotAPIConfig(api_key="api_YOURKEYGOESHERE")

client = GeekbotAPIClient(config=config)

async def print_standups():
    standups = list()
    async for standup in client.async_standups.list():
        standups.append(standup)

    print(standups)

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(print_standups())

Reporting to a standup using schemas

import asyncio
from geekbot_api.config import GeekbotAPIConfig
from geekbot_api.client import GeekbotAPIClient
from geekbot_api.schemas import ReportIn

config = GeekbotAPIConfig(api_key="api_YOURKEYGOESHERE")

client = GeekbotAPIClient(config=config)
standup_id = "12345" # Your standup id
answers = dict() # keys are question ids, values are a dict responding to the question
answers['123'] = {'text': "My first answer"}
answers['234'] = {'text': "My second answer"}

report_in = ReportIn(standup_id=standup_id, answers=answers) # pydantic will validate your inputs
report = client.reports.create(report_in)
print(report)

Development

The Makefile has useful targets to help setup your development encironment. We suggest using pyenv to have access to multiple python versions easily.

Environment Setup

  • Clone the repo and enter its root folder

    git clone https://github.com/andrewthetechie/geekbot-api-py.git && cd geekbot-api-py
    
  • Create a python 3.11 virtual environment and activate it. We suggest using pyenv to easily setup multiple python environments on multiple versions.

  • Install the dependencies

    make setup
    

How to Run Tests

  • Run the test command to run tests on only python 3.9

    pytest
    
  • Run Nox to run all python version tests

    nox -s tests
    

Test Requirements

Prs should always have tests to cover the change being made. Code coverage goals for this project are 100% coverage.

Code Linting

Code is linted with ruff

You can run the linting manually with make

make lint

CI

CI is run via Github Actions on all PRs and pushes to the main branch.

Releases are automatically released by Github Actions to Pypi.

License

Licensed under the MIT License

Contributors

Thanks go to these wonderful people (emoji key):

Andrew
Andrew

💻 📖 ⚠️
David
David

💻 🐛
rmathew8-gh
rmathew8-gh

💻 ⚠️

Contributors ✨

Thanks goes to these wonderful people (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!