Client version 2 is obsolete, please use Client version 3 instead.


Client represents API with two kinds of resources: Individuals and Collections. For example when we request all projects with name copr we would receive collection ProjectList resource:

>>> from copr import create_client2_from_params
# using dev server for test
>>> cl = create_client2_from_params(root_url="http://copr.stg.fedoraproject.org/")

>>> projects = cl.projects.get_list(name="copr", limit=3)
>>> for p in projects:
>>>    print(p)
<Project #1: msuchy/copr>
<Project #1503: vgologuz/copr>
<Project #2796: mosquito/copr>

Access to elements in collection is done through iterator interface. Since API limits number of elements retrieved in the one request, collections has method next_page() to retrieve more objects:

>>> more_projects = projects.next_page()
>>> for p in more_projects:
>>>    print(p)
<Project #2805: esmil/copr>
<Project #4266: frostyx/copr>

If we already knew project id we could get an individual Project resource:

>>> p = cl.projects.get_one(1835)

Individual resource allows to directly access entity properties and also provides some helper functions:

>>> print(p.owner, p.name)
(u'saltstack', u'salt')
# obtain active build chroots
>>> print("\n".join(map(str, p.get_project_chroot_list())))
<Project chroot: fedora-22-x86_64, additional packages: [], comps size if any: 0>
<Project chroot: fedora-22-i386, additional packages: [], comps size if any: 0>
# change project description (require auth)
>>> p.description = u"Hello world!"
>>> p.update()
# instead of cl.projects.update(p._entity)