Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/andrewthetechie/geekbot-api-py
A Geekbot (https://geekbot.com/) API client in python supporting async
https://github.com/andrewthetechie/geekbot-api-py
asyncio hacktoberfest python-library python3
Last synced: about 1 month ago
JSON representation
A Geekbot (https://geekbot.com/) API client in python supporting async
- Host: GitHub
- URL: https://github.com/andrewthetechie/geekbot-api-py
- Owner: andrewthetechie
- License: mit
- Created: 2021-08-26T02:45:26.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-04T23:24:09.000Z (3 months ago)
- Last Synced: 2024-10-06T07:38:18.241Z (3 months ago)
- Topics: asyncio, hacktoberfest, python-library, python3
- Language: Python
- Homepage:
- Size: 313 KB
- Stars: 1
- Watchers: 3
- Forks: 2
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# geekbot-api-py
[![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors-)
A Geekbot () API client in python supporting async and sync operations.
Implements the Geekbot API per
## Main Dependencies
- [Python +3.7](https://www.python.org)
- [pydantic](https://github.com/samuelcolvin/pydantic/)
- [httpx](https://www.python-httpx.org/)
- [requests](https://docs.python-requests.org/en/master/)## Getting Started
### Installation
Install the package
pip install geekbot-api
### Usage
Follow the directions on to get an API Token
#### Example
from geekbot_api.config import GeekbotAPIConfig
from geekbot_api.client import GeekbotAPIClientconfig = 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 GeekbotAPIClientconfig = 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 ReportInconfig = 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](./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
```{.sourceCode .bash}
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](https://github.com/pyenv/pyenv) to easily setup
multiple python environments on multiple versions.- Install the dependencies
```{.sourceCode .bash}
make setup
```### How to Run Tests
- Run the test command to run tests on only python 3.9
```{.sourceCode .bash}
pytest
```- Run Nox to run all python version tests
```{.sourceCode .bash}
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
```{.sourceCode .bash}
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](./LICENSE)
### Contributors
Thanks go to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
Andrew
💻 📖 ⚠️
David
💻 🐛
rmathew8-gh
💻 ⚠️
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!