# Yandex Tracker Client (or Yet Another Tracker Client)
Async Yandex Tracker Client based on aiohttp and pydantic
[![Python](https://img.shields.io/badge/python-^3.10-blue)](https://www.python.org/)
[![Code linter: ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v1.json)](https://github.com/charliermarsh/ruff)
[![Linters](https://github.com/danfimov/ya_tracker_client/actions/workflows/code-check.yml/badge.svg)](https://github.com/danfimov/ya_tracker_client/actions/workflows/code-check.yml)
---
API docs: https://cloud.yandex.com/en/docs/tracker/about-api
## Installation
```shell
pip install ya_tracker_client
```
or
```shell
poetry add ya_tracker_client
```
## Usage
```python
import os
from asyncio import run
from dotenv import load_dotenv
from ya_tracker_client import YaTrackerClient
load_dotenv()
# from registered application at Yandex OAuth - https://oauth.yandex.ru/
API_TOKEN = os.getenv("API_TOKEN")
# from admin panel at Yandex Tracker - https://tracker.yandex.ru/admin/orgs
API_ORGANISATION_ID = os.getenv("API_ORGANISATION_ID")
async def main() -> None:
# init client
client = YaTrackerClient(
organisation_id=API_ORGANISATION_ID,
oauth_token=API_TOKEN,
)
# create issue
new_issue = await client.create_issue('New issue', 'TRACKER-QUEUE')
# get issue
issue = await client.get_issue('KEY-1')
# update issue (just pass kwargs)
issue = await client.edit_issue('KEY-1', description='Hello World')
# don't forget to close tracker on app shutdown
await client.stop()
if __name__ == "__main__":
run(main())
```
## Explanations about naming
- All `self` properties renamed to `url` cause it's incompatible with Python;
- All `camelCase` properties renamed to `pythonic_case`;
- All datetime values converted to python's `datetime.datetime` objects;
- Methods named by author, cause Yandex API has no clear method names.
## Current library capabilities
- Working with queues
- Getting information about issues, priorities and transitions
- Working with issue relationships
- Getting user information
More info about work status here: https://github.com/danfimov/ya_tracker_client/milestone/1
Raw data
{
"_id": null,
"home_page": "https://github.com/danfimov/ya_tracker_client/",
"name": "ya_tracker_client",
"maintainer": "\u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u0410\u043d\u0444\u0438\u043c\u043e\u0432",
"docs_url": null,
"requires_python": ">=3.10,<4.0",
"maintainer_email": "work@danfimov.ru",
"keywords": "Yandex,Tracker,API,async",
"author": "\u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u0410\u043d\u0444\u0438\u043c\u043e\u0432",
"author_email": "work@danfimov.ru",
"download_url": "https://files.pythonhosted.org/packages/b5/88/4ec1739ee8b27e1be70662f80f73f677026fba2468f3bb877a9460ff42c1/ya_tracker_client-0.0.3.tar.gz",
"platform": null,
"description": "# Yandex Tracker Client (or Yet Another Tracker Client)\n\nAsync Yandex Tracker Client based on aiohttp and pydantic\n\n[![Python](https://img.shields.io/badge/python-^3.10-blue)](https://www.python.org/)\n[![Code linter: ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v1.json)](https://github.com/charliermarsh/ruff)\n[![Linters](https://github.com/danfimov/ya_tracker_client/actions/workflows/code-check.yml/badge.svg)](https://github.com/danfimov/ya_tracker_client/actions/workflows/code-check.yml)\n\n---\n\nAPI docs: https://cloud.yandex.com/en/docs/tracker/about-api\n\n## Installation\n\n```shell\npip install ya_tracker_client\n```\n\nor \n\n```shell\npoetry add ya_tracker_client\n```\n\n\n## Usage\n\n```python\nimport os\nfrom asyncio import run\n\nfrom dotenv import load_dotenv\n\nfrom ya_tracker_client import YaTrackerClient\n\n\nload_dotenv()\n# from registered application at Yandex OAuth - https://oauth.yandex.ru/\nAPI_TOKEN = os.getenv(\"API_TOKEN\")\n# from admin panel at Yandex Tracker - https://tracker.yandex.ru/admin/orgs\nAPI_ORGANISATION_ID = os.getenv(\"API_ORGANISATION_ID\")\n\n\nasync def main() -> None:\n # init client\n client = YaTrackerClient(\n organisation_id=API_ORGANISATION_ID,\n oauth_token=API_TOKEN,\n )\n \n # create issue\n new_issue = await client.create_issue('New issue', 'TRACKER-QUEUE')\n \n # get issue\n issue = await client.get_issue('KEY-1')\n \n # update issue (just pass kwargs)\n issue = await client.edit_issue('KEY-1', description='Hello World')\n \n # don't forget to close tracker on app shutdown\n await client.stop()\n\n\nif __name__ == \"__main__\":\n run(main())\n```\n\n\n## Explanations about naming\n\n- All `self` properties renamed to `url` cause it's incompatible with Python;\n- All `camelCase` properties renamed to `pythonic_case`;\n- All datetime values converted to python's `datetime.datetime` objects;\n- Methods named by author, cause Yandex API has no clear method names.\n\n## Current library capabilities\n\n- Working with queues\n- Getting information about issues, priorities and transitions\n- Working with issue relationships\n- Getting user information\n\nMore info about work status here: https://github.com/danfimov/ya_tracker_client/milestone/1\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Async Yandex Tracker Client",
"version": "0.0.3",
"project_urls": {
"Bug Tracker": "https://github.com/danfimov/ya_tracker_client/issues",
"Homepage": "https://github.com/danfimov/ya_tracker_client/",
"Repository": "https://github.com/danfimov/ya_tracker_client/"
},
"split_keywords": [
"yandex",
"tracker",
"api",
"async"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "78cb97b292c9e292a227a28d034201fe735549c9cf151f4a083df7221e8a69b9",
"md5": "2bf885ed30f20c0b1eaae411df54c77a",
"sha256": "d9711681b9cb62eb3da697c778df9723ac90600ba187f4d3320136ddd5fcb759"
},
"downloads": -1,
"filename": "ya_tracker_client-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2bf885ed30f20c0b1eaae411df54c77a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10,<4.0",
"size": 41383,
"upload_time": "2023-10-07T14:36:06",
"upload_time_iso_8601": "2023-10-07T14:36:06.524464Z",
"url": "https://files.pythonhosted.org/packages/78/cb/97b292c9e292a227a28d034201fe735549c9cf151f4a083df7221e8a69b9/ya_tracker_client-0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b5884ec1739ee8b27e1be70662f80f73f677026fba2468f3bb877a9460ff42c1",
"md5": "02e257f7b40a94e4b6fb158b46c6acb1",
"sha256": "7a60dc60a432b0251e496ea6918b4935fbd2d3c6422586590bb354c02fabb759"
},
"downloads": -1,
"filename": "ya_tracker_client-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "02e257f7b40a94e4b6fb158b46c6acb1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10,<4.0",
"size": 21215,
"upload_time": "2023-10-07T14:36:08",
"upload_time_iso_8601": "2023-10-07T14:36:08.629514Z",
"url": "https://files.pythonhosted.org/packages/b5/88/4ec1739ee8b27e1be70662f80f73f677026fba2468f3bb877a9460ff42c1/ya_tracker_client-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-07 14:36:08",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "danfimov",
"github_project": "ya_tracker_client",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "ya_tracker_client"
}