Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/doctormo/python-gitlab3
Python wrapper for the entire GitLab API
https://github.com/doctormo/python-gitlab3
gitlab gitlab-api python
Last synced: 2 months ago
JSON representation
Python wrapper for the entire GitLab API
- Host: GitHub
- URL: https://github.com/doctormo/python-gitlab3
- Owner: doctormo
- License: lgpl-3.0
- Created: 2013-08-23T03:43:51.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2020-02-06T15:02:04.000Z (almost 5 years ago)
- Last Synced: 2024-10-01T15:08:00.932Z (3 months ago)
- Topics: gitlab, gitlab-api, python
- Language: Python
- Homepage:
- Size: 246 KB
- Stars: 46
- Watchers: 5
- Forks: 25
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG
- License: LICENSE
Awesome Lists containing this project
README
# IMPORTANT!
Martin Owens (@doctormo) has kindly taken over maintenance of this project.
# python-gitlab3
A Python wrapper for GitLab API v3.
There are existing python wrappers (notably, http://github.com/gpocentek/python-gitlab and http://github.com/Itxaka/python-gitlab), but I'm not fond of their interface/usage. In addition, this provides complete coverage of the GitLab API (and is easily maintainable).
# Dependencies
* [python-requests](http://docs.python-requests.org/en/latest/)# Installation
```bash
$ sudo pip install gitlab3
```# Documentation
See http://alexvh.github.io/python-gitlab3/ for complete API information (also contained in the `doc` directory). Ancient-looking, Epydoc-generated html since it organizes this project more clearly than Sphinx does.# Example Usage
```python
import gitlab3gl = gitlab3.GitLab('http://example.com/', 'token')
# Alternatively:
gl = gitlab3.GitLab('http://example.com/')
if not gl.login('username_or_email', 'password'):
print "Login failed"#
# Example usage involving listing objects
#
for project in gl.projects(): # all of the current user's projects
print project.namefor event in gl.project(1).events(limit=10): # 10 most recent events
print event.action_namefor project in gl.projects(page=1, per_page=10): # pagination
print project.issues(limit=1)[0].title # (assume issue[0] exists...)#
# Sudo usage examples (GitLab v6.1+)
# All functions accept an optional, undocumented, 'sudo' argument
# specifiying a username or user id to act as.
#
gl.get_current_user(sudo='other_user') # => 'other_user' CurrentUser object
gl.projects(sudo=2) # => list of user 2's projects
# Alternatively, a 'with' statement can be used as follows:
with gl.sudo('other_user'):
gl.get_current_user() # => 'other_user' CurrentUser object
gl.projects() # => list of 'other_users's projects#
# Example usage involving users
#
user = gl.add_user('[email protected]', 'passwd', 'username',
'real name', project_limit=50, bio='bio')
print type(user) # => ''
print type(user.created_at) # => ''user = gl.user(1) # or gl.get_user(1) - get_() aliases ()
user.email = '[email protected]'
user.save() # or gl.update_user(user)user.delete() # or gl.delete_user(user)
#
# Example usage involving projects
#
project = gl.project(1) # or gl.get_project(1)
print project.description
project.events(limit=10)# Adding projects
gl.add_project('my project', description='description', public=True)
gl.add_project_for_user('user_id', 'test project', description='description')# Branches and tags
branch = project.branch('master')
branch.protect()
project.unprotect_branch('master')
tags = project.tags()# Members
member = project.add_member('user_id', gitlab3.ACCESS_LEVEL_GUEST)
member.access_level = gitlab3.ACCESS_LEVEL_DEVELOPER
member.save() # or project.update_member(member)
project.delete_member(member)# Issues
issues = project.issues(limit=10)
issue = project.add_issue('title', description='description')
issue.add_note('note body')
issue.close()
issue.reopen()# Snippets
snippet = project.add_snippet('title', 'file_name', 'code')
snippet.delete() # or project.delete_snippet(snippet)
snippet = project.snippet(1)
snippet_notes = snippet.notes()# Files and commits
project.commits() # list of commits in master branch
project.files() # list of files in master branch
project.files(ref_name='other_branch')
readme_contents = project.get_blob('master', 'README')#
# Example usage involving user teams
#
teams = gl.teams()team = gl.add_team('team name', 'path')
team.add_member('user_id', gitlab3.ACCESS_LEVEL_GUEST)
team.add_project('project_id', gitlab3.ACCESS_LEVEL_MASTER)#
# Find function examples
# All objects that can be listed and obtained by an id have find functions.
#
# The find functions are simple, o(n), mostly unoptimized, and will request a
# listing of objects on every call unless given a cached list.
#
gl.find_project(name='python-gitlab3') # params can be any property of objectprojects = gl.projects()
gl.find_project(cached=projects, name='python-gitlab3')
gl.find_project(cached=projects, find_all=True, public=True) # public projects
gl.find_project(cached=projects, find_all=True,
public=True, wiki_enabled=True) # public projects with wikisgl.find_user(email='[email protected]')
project = gl.project(1)
project.find_member(username='user')# The GitLab API has support for more efficient searching of projects by name:
gl.find_projects_by_name('name_query') # Server-side search
```