Python client for `Helix Swarm <https://www.perforce.com/manuals/swarm/>`_
==========================================================================
|Build status|
|Docs status|
|Coverage status|
|Version status|
|Downloads status 1|
|Downloads status 2|
.. |Build status|
image:: https://github.com/pbelskiy/helix-swarm/workflows/Tests/badge.svg
.. |Docs status|
image:: https://readthedocs.org/projects/helix-swarm/badge/?version=latest
.. |Coverage status|
image:: https://img.shields.io/coveralls/github/pbelskiy/helix-swarm?label=Coverage
.. |Version status|
image:: https://img.shields.io/pypi/pyversions/helix-swarm?label=Python
.. |Downloads status 1|
image:: https://img.shields.io/pypi/dm/helix-swarm?color=1&label=Downloads
.. |Downloads status 2|
image:: https://img.shields.io/pypi/dm/helixswarm?color=1&label=Downloads
----
Package supports sync and async syntax with same code base.
.. code:: python
from helixswarm import SwarmAsyncClient, SwarmClient
Documentation
-------------
`Read the Docs <https://helix-swarm.readthedocs.io/en/latest/>`_
`Official REST API PDF <https://github.com/pbelskiy/helix-swarm/blob/master/docs/swarm.pdf>`_
Installation
------------
There are two identical packages: ``helix-swarm`` and alias ``helixswarm``, alias
was created one year later due name confusion, to be import name and package name will the same.
::
pip3 install helixswarm
Examples
--------
Get review info:
.. code:: python
from helixswarm import SwarmClient
client = SwarmClient('http://server/api/v9', 'user', 'password')
review = client.reviews.get_info(12345)
print(review['review']['author'])
Add comment to review in async way (be careful ``SwarmAsyncClient`` must be called inside async function):
.. code:: python
import asyncio
from helixswarm import SwarmAsyncClient
async def example():
client = SwarmAsyncClient('http://server/api/v5', 'user', 'password')
await client.comments.add('reviews/12345', 'my awesome comment')
asyncio.run(example())
Update credentials handler:
.. code:: python
import requests
from helixswarm import SwarmClient
def get_credentials():
response = requests.get(...).json()
return response['user'], response['password']
client = SwarmClient(
'http://server/api/v9',
'user',
'password',
auth_update_callback=get_credentials
)
# let's suppose credentials are valid now
review = client.reviews.get_info(12345)
print(review['review']['author'])
# now, after some time, password of user somehow changed, so our callback
# will be called, new credentials will be using for retry and future
# here we get also correct review data instead of SwarmUnauthorizedError
# exception
review = client.reviews.get_info(12345)
print(review['review']['author'])
Testing
-------
Prerequisites: `tox`
Then just run tox, all dependencies and checks will run automatically
::
tox
Contributing
------------
Feel free to any contributions.
Mirror repositories of review board source code:
- `2022.1 <https://github.com/dfrees/swarm>`_
- `2016.1 <https://github.com/stewartlord/swarm>`_
Latest version of code can be download from official page:
https://www.perforce.com/downloads/helix-swarm
`Official REST API documentation <https://www.perforce.com/manuals/swarm/Content/Swarm/swarm-apidoc.html>`_
-----------------------------------------------------------------------------------------------------------
+------------+----------------+-----------------------------------------------------------------------------+
| API | Date | Notes |
+============+================+=============================================================================+
| `v10`_ | October 2019 | Integration with CI tools |
+------------+----------------+-----------------------------------------------------------------------------+
| `v9`_ | April 2018 | Review append and replace changelist, 2fa, mark comment as read |
+------------+----------------+-----------------------------------------------------------------------------+
| `v8`_ | December 2017 | Default reviewers |
+------------+----------------+-----------------------------------------------------------------------------+
| `v7`_ | October 2017 | Groups as review participants, groups as moderators of project |
+------------+----------------+-----------------------------------------------------------------------------+
| `v6`_ | May 2017 | Activity dashboard, archiving reviews, cleaning reviews, for voting reviews |
+------------+----------------+-----------------------------------------------------------------------------+
| v5 | October 2016 | Limiting comments to a specific review version |
+------------+----------------+-----------------------------------------------------------------------------+
| `v4`_ | October 2016 | Private projects, file-level and line-level inline comments |
+------------+----------------+-----------------------------------------------------------------------------+
| v3 | September 2016 | Comments management |
+------------+----------------+-----------------------------------------------------------------------------+
| `v2`_ | May 2016 | Projects, groups |
+------------+----------------+-----------------------------------------------------------------------------+
| `v1.2`_ | October 2015 | Author filter to the list reviews endpoint |
+------------+----------------+-----------------------------------------------------------------------------+
| `v1.1`_ | January 201 | Required reviewers |
+------------+----------------+-----------------------------------------------------------------------------+
| `v1`_ | July 2014 | Initial |
+------------+----------------+-----------------------------------------------------------------------------+
.. _v10: https://www.perforce.com/manuals/swarm/Content/Swarm/swarm-apidoc_endpoints-v10.html
.. _v9: https://www.perforce.com/manuals/v19.1/swarm/Content/Swarm/swarm-apidoc.html
.. _v8: https://www.perforce.com/manuals/v17.4/swarm/#Swarm/swarm-apidoc.html
.. _v7: https://www.perforce.com/manuals/v17.3/swarm/index.html#Swarm/swarm-apidoc.html
.. _v6: https://www.perforce.com/manuals/v17.2/swarm/api.html
.. _v4: https://www.perforce.com/perforce/r16.2/manuals/swarm/api.html
.. _v2: https://www.perforce.com/perforce/r16.1/manuals/swarm/api.html
.. _v1.2: https://www.perforce.com/perforce/r15.3/manuals/swarm/api.html
.. _v1.1: https://www.perforce.com/perforce/r14.4/manuals/swarm/api.html
.. _v1: https://www.perforce.com/perforce/r14.3/manuals/swarm/api.html
Raw data
{
"_id": null,
"home_page": "https://github.com/pbelskiy/helix-swarm",
"name": "helix-swarm",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "helix,swarm,swarm review,perforce helix swarm",
"author": "Petr Belskiy",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/85/d9/3a2bfb0bd97d9124decba07c5703f3d88e71219d7863c12138b162cbbbdd/helix-swarm-0.7.4.tar.gz",
"platform": null,
"description": "Python client for `Helix Swarm <https://www.perforce.com/manuals/swarm/>`_\n==========================================================================\n\n|Build status|\n|Docs status|\n|Coverage status|\n|Version status|\n|Downloads status 1|\n|Downloads status 2|\n\n.. |Build status|\n image:: https://github.com/pbelskiy/helix-swarm/workflows/Tests/badge.svg\n.. |Docs status|\n image:: https://readthedocs.org/projects/helix-swarm/badge/?version=latest\n.. |Coverage status|\n image:: https://img.shields.io/coveralls/github/pbelskiy/helix-swarm?label=Coverage\n.. |Version status|\n image:: https://img.shields.io/pypi/pyversions/helix-swarm?label=Python\n.. |Downloads status 1|\n image:: https://img.shields.io/pypi/dm/helix-swarm?color=1&label=Downloads\n.. |Downloads status 2|\n image:: https://img.shields.io/pypi/dm/helixswarm?color=1&label=Downloads\n\n----\n\nPackage supports sync and async syntax with same code base.\n\n.. code:: python\n\n from helixswarm import SwarmAsyncClient, SwarmClient\n\nDocumentation\n-------------\n\n`Read the Docs <https://helix-swarm.readthedocs.io/en/latest/>`_\n\n`Official REST API PDF <https://github.com/pbelskiy/helix-swarm/blob/master/docs/swarm.pdf>`_\n\nInstallation\n------------\n\nThere are two identical packages: ``helix-swarm`` and alias ``helixswarm``, alias\nwas created one year later due name confusion, to be import name and package name will the same.\n\n::\n\n pip3 install helixswarm\n\nExamples\n--------\n\nGet review info:\n\n.. code:: python\n\n from helixswarm import SwarmClient\n\n client = SwarmClient('http://server/api/v9', 'user', 'password')\n review = client.reviews.get_info(12345)\n print(review['review']['author'])\n\nAdd comment to review in async way (be careful ``SwarmAsyncClient`` must be called inside async function):\n\n.. code:: python\n\n import asyncio\n from helixswarm import SwarmAsyncClient\n\n async def example():\n client = SwarmAsyncClient('http://server/api/v5', 'user', 'password')\n await client.comments.add('reviews/12345', 'my awesome comment')\n\n asyncio.run(example())\n\n\nUpdate credentials handler:\n\n.. code:: python\n\n import requests\n from helixswarm import SwarmClient\n\n def get_credentials():\n response = requests.get(...).json()\n return response['user'], response['password']\n\n client = SwarmClient(\n 'http://server/api/v9',\n 'user',\n 'password',\n auth_update_callback=get_credentials\n )\n\n # let's suppose credentials are valid now\n review = client.reviews.get_info(12345)\n print(review['review']['author'])\n\n # now, after some time, password of user somehow changed, so our callback\n # will be called, new credentials will be using for retry and future\n # here we get also correct review data instead of SwarmUnauthorizedError\n # exception\n review = client.reviews.get_info(12345)\n print(review['review']['author'])\n\nTesting\n-------\n\nPrerequisites: `tox`\n\nThen just run tox, all dependencies and checks will run automatically\n\n::\n\n tox\n\nContributing\n------------\n\nFeel free to any contributions.\n\nMirror repositories of review board source code:\n - `2022.1 <https://github.com/dfrees/swarm>`_\n - `2016.1 <https://github.com/stewartlord/swarm>`_\n\nLatest version of code can be download from official page:\nhttps://www.perforce.com/downloads/helix-swarm\n\n`Official REST API documentation <https://www.perforce.com/manuals/swarm/Content/Swarm/swarm-apidoc.html>`_\n-----------------------------------------------------------------------------------------------------------\n\n+------------+----------------+-----------------------------------------------------------------------------+\n| API | Date | Notes |\n+============+================+=============================================================================+\n| `v10`_ | October 2019 | Integration with CI tools |\n+------------+----------------+-----------------------------------------------------------------------------+\n| `v9`_ | April 2018 | Review append and replace changelist, 2fa, mark comment as read |\n+------------+----------------+-----------------------------------------------------------------------------+\n| `v8`_ | December 2017 | Default reviewers |\n+------------+----------------+-----------------------------------------------------------------------------+\n| `v7`_ | October 2017 | Groups as review participants, groups as moderators of project |\n+------------+----------------+-----------------------------------------------------------------------------+\n| `v6`_ | May 2017 | Activity dashboard, archiving reviews, cleaning reviews, for voting reviews |\n+------------+----------------+-----------------------------------------------------------------------------+\n| v5 | October 2016 | Limiting comments to a specific review version |\n+------------+----------------+-----------------------------------------------------------------------------+\n| `v4`_ | October 2016 | Private projects, file-level and line-level inline comments |\n+------------+----------------+-----------------------------------------------------------------------------+\n| v3 | September 2016 | Comments management |\n+------------+----------------+-----------------------------------------------------------------------------+\n| `v2`_ | May 2016 | Projects, groups |\n+------------+----------------+-----------------------------------------------------------------------------+\n| `v1.2`_ | October 2015 | Author filter to the list reviews endpoint |\n+------------+----------------+-----------------------------------------------------------------------------+\n| `v1.1`_ | January 201 | Required reviewers |\n+------------+----------------+-----------------------------------------------------------------------------+\n| `v1`_ | July 2014 | Initial |\n+------------+----------------+-----------------------------------------------------------------------------+\n\n.. _v10: https://www.perforce.com/manuals/swarm/Content/Swarm/swarm-apidoc_endpoints-v10.html\n.. _v9: https://www.perforce.com/manuals/v19.1/swarm/Content/Swarm/swarm-apidoc.html\n.. _v8: https://www.perforce.com/manuals/v17.4/swarm/#Swarm/swarm-apidoc.html\n.. _v7: https://www.perforce.com/manuals/v17.3/swarm/index.html#Swarm/swarm-apidoc.html\n.. _v6: https://www.perforce.com/manuals/v17.2/swarm/api.html\n.. _v4: https://www.perforce.com/perforce/r16.2/manuals/swarm/api.html\n.. _v2: https://www.perforce.com/perforce/r16.1/manuals/swarm/api.html\n.. _v1.2: https://www.perforce.com/perforce/r15.3/manuals/swarm/api.html\n.. _v1.1: https://www.perforce.com/perforce/r14.4/manuals/swarm/api.html\n.. _v1: https://www.perforce.com/perforce/r14.3/manuals/swarm/api.html\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python client for Perforce Helix Swarm (review board)",
"version": "0.7.4",
"split_keywords": [
"helix",
"swarm",
"swarm review",
"perforce helix swarm"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "d17faa5ae94a76799a9271a7e078f72f",
"sha256": "a91c50e7b3e5262b21cbf2b70c81689a14170ebef24f68883fa17820aa304492"
},
"downloads": -1,
"filename": "helix_swarm-0.7.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d17faa5ae94a76799a9271a7e078f72f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 38833,
"upload_time": "2023-01-01T11:55:25",
"upload_time_iso_8601": "2023-01-01T11:55:25.654114Z",
"url": "https://files.pythonhosted.org/packages/21/2f/dc3ae98d5d2720eea4d926ebe09a96e7ece27d658340a791c57f68440333/helix_swarm-0.7.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "b07f869079a761be150e9dd381501423",
"sha256": "405c7cd55bc4b32285c0a9c646176c223977eca5dc420e82572e23561593c528"
},
"downloads": -1,
"filename": "helix-swarm-0.7.4.tar.gz",
"has_sig": false,
"md5_digest": "b07f869079a761be150e9dd381501423",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 27635,
"upload_time": "2023-01-01T11:55:27",
"upload_time_iso_8601": "2023-01-01T11:55:27.469435Z",
"url": "https://files.pythonhosted.org/packages/85/d9/3a2bfb0bd97d9124decba07c5703f3d88e71219d7863c12138b162cbbbdd/helix-swarm-0.7.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-01-01 11:55:27",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "pbelskiy",
"github_project": "helix-swarm",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "helix-swarm"
}